Jade:加载外部javascript和调用函数

我正在学习Express / Node / Jade,现在在Jade文件中,我只想为公共文件夹包含一个JavaScript文件。 例如,在玉文件中我input:

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

和里面test.js我有一个function

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

然后我尝试通过调用Jade中的函数

 - var test_response = check_test() 

比我得到的错误说,“undefined不是一个函数”和test.js根本不加载。 显然Jade不加载文件,它们只能转换成HTML代码。

我看着别人的问题,这是我能find的最接近的问题,但是没有提供明确的答案。 在翡翠,你怎么能在一个外部的Javascript调用一个函数

所以我的问题是:在这种情况下,我应该怎么做才能使它工作?

我不想在layout.js中加载文件,因为我只希望test.js只能被这个页面使用。

那么……在第一个例子中,浏览器中发生的事情与服务器上发生的事情不同。 所以,如果你在浏览器中,Jade是HTML的呈现。 这就是ExpressJS的运送,即渲染翡翠。 如果你想打电话,你的HTML Javascript(翡翠的渲染),应该告诉你在哪里的Javascript。 例如

在Server.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.jade中

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

在“./outJavascripts/test.js”

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

如果你这样做,你会意识到它是运行的,浏览器中的文件“./outJavascripts/test.js”。 并且函数“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,例如:

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