Jade: загрузите внешний javascript и вызовите функцию

Я изучал Express / Node / Jade, и теперь в файле Jade я хочу включить файл javascript из общей папки только для страницы. Например, в файле jade я набираю следующее:

script(src='/javascripts/test.js')

и внутри теста.js у меня есть функция

function check_test(){
    return "It's working!"
}

затем я пытаюсь вызвать функцию в Jade по

- var test_response = check_test()

чем я получил ошибку, сказав, что" undefined не является функцией " и тест.js вообще не загружается. По-видимому, Jade не загружает файл, они только преобразование в HTML-код.

Я смотрю чужой вопрос, и это самый близкий, который я могу найти, но он не дает четкого ответа на то, что делать. в Jade, как вы можете вызвать функцию во внешнем Javascript

Итак, мой вопрос: в таком случае что я должен сделать, чтобы заставить его работать?

Я не хочу загружать файл в макет.js, так как я хочу только тест.js используется только этой страницей.

3 ответов


хорошо... В первом случае это отличается от того, что происходит в браузере от того, что происходит на сервере. Таким образом, Jade-это рендеринг HTML, поэтому, если вы находитесь в браузере. Это то, что ExpressJS shipping, то есть рендеринг нефрита. Если вы хотите позвонить, ваш HTML Javascript (рендеринг Jade) должен показать вам, где Javascript. Например

в сервер.js

// Get the Javascript in the browser
app.use("/javascripts", express.static("./outJavascripts"));
// Get the URL
app.all("/", function(req, res){
  // Render the Jade and Send for the client (Browser)
  req.render("myTemplate.jade");
});

в myTemplate.Джейд!--4-->

script(src='/javascripts/test.js')

In "./ outJavascripts / test.js"

function check_test(){
    console.log("It's working! :D");
    return "It's working!";
}

Если вы это сделаете, вы поймете, что он запущен, файл "./ outJavascripts / test.АО" в браузере. И функция "check_test" никогда не запускается на сервере.


или поместите все папки в общую папку, например public

public -javascripts -stylesheets -images

а затем выставить эту общую папку

app.use(express.static(path.join(__dirname, 'public')));

что означает, что вы можете

script(src='/javascripts/script.js') link(rel='stylesheet', href='/stylesheets/style.css')


сохраните файл JS и свяжите его в файле Jade как:

script(src="filepath/yourJSfile.js")

затем вызовите функцию, я использую кнопку здесь, например:

button(class="btn", onclick='functionName()')