我正在学习 Express/Node/Jade,现在我想在 Jade 文件中包含一个来自公共(public)文件夹的 javascript 文件,只用于该页面。 例如,在 jade 文件中我输入:
script(src='/javascripts/test.js')
在 test.js 里面我有一个函数
function check_test(){
return "It's working!"
}
然后我尝试通过以下方式调用 Jade 中的函数
- var test_response = check_test()
比我得到的错误说“undefined is not a function”和 test.js 根本没有加载。 显然 Jade 不会加载文件,它们只会转换为 HTML 代码。
我看了别人的问题,这是我能找到的最接近的问题,但它没有提供明确的答案来说明该怎么做。 In Jade, how can you call a function in an external Javascript
所以我的问题是:在这种情况下,我应该怎么做才能让它发挥作用?
我不想在 layout.js 中加载文件,因为我只希望 test.js 仅供此页面使用。
最佳答案
嗯...首先,浏览器中发生的事情与服务器上发生的事情是不同的。所以 Jade 是 HTML 的呈现,因此如果您在浏览器中。这就是 ExpressJS 的运输方式,即渲染 Jade。如果你想调用,你的 HTML Javascript (Rendering of Jade),应该告诉你 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”从不在服务器中运行。
关于javascript - Jade : load external javascript and call function,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26702006/