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()')