javascript - Jade : load external javascript and call function

标签 javascript node.js express pug

我正在学习 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/

相关文章:

javascript - React Native 按日期排序数组

javascript - sails.js 在 View 中从配置中获取环境值

node.js - connect-redis - 如何保护 session 对象免受竞争条件的影响

javascript - 在桌面上向下滚动但不是在移动设备上向下滚动的三个 js 动画?

javascript - Ember 快速入门 : could not find module `@glimmer/component` when adding JS file to first component

javascript - 当我拖动光标时动画会卡住

node.js - Mongoose 不会将文档保存到本地数据库

node.js - 如何从 Firebase 的云功能获取 strip 付款费用 'success'?

url-rewriting - 使用 ExpressJS 重写 URL

javascript - 删除 httpOnly cookies - Express