玉石:加载外部JavaScript并调用函数

9

我可以帮您进行翻译,以下是需要翻译的内容:

我正在学习 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不是函数”,test.js根本没有加载。 显然,Jade并没有加载文件,只将其转换为HTML代码。

我看了其他人的问题,这是我能找到的最接近的一个,但它没有清晰地说明该怎么做。 在Jade中,如何调用外部JavaScript中的函数

所以我的问题是:在这种情况下,我应该怎么做才能让它起作用? 我不想在layout.js中加载文件,因为我只想让test.js在这个页面上使用。

3个回答

4

首先,浏览器中发生的事情与服务器上发生的事情是不同的。因此Jade是HTML的渲染方式,因此如果您在浏览器中,则是ExpressJS提供的,即渲染Jade。如果您想调用您的HTML Javascript(即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");
});

在我的模板.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"没有在服务器端运行。

1

保存你的JS文件,并在Jade文件中链接它:

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

然后调用函数,这里以按钮为例:

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

1
或者将所有文件夹放在一个公共文件夹中,例如 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')

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接