我对 Javascript 和 NodeJS 非常陌生。
这是我网站的代码结构:
|source
| | stylesheets
| | | index.styl
| | templates
| | default.jade
| | homepage.jade
|static
| | [.css generated]
|
|server.js
|package.json
|file.js
这是server.js
:
var express = require('express')
, logger = require('morgan')
, app = express()
, templateHome = require('jade').compileFile(__dirname + '/source/templates/homepage.jade')
app.use(logger('dev'))
app.use(express.static(__dirname + '/static'))
app.get('/', function (req, res, next) {
try {
var html = templateHome({ title: 'Home' })
res.send(html)
} catch (e) {
next(e)
}
})
app.listen(process.env.PORT || 3000, function () {
console.log('Listening on http://localhost:' + (process.env.PORT || 3000))
})
我的第二个 .js
文件包含一个简单的函数,一旦我的用户单击 Jade
中定义的主页中的按钮,就应该访问该函数,如下所示:
block content
button(onclick='downloadFile()') Click me
但是该函数似乎没有在当前作用域中定义,即使它是在 file.js
中定义的。我必须添加什么才能考虑到我的其他 .js
文件?
最佳答案
您需要使用 <script>
加载脚本元素。使用 src
指定 JavaScript 文件的 URL属性。您需要为该文件提供一个 URL,最简单的方法可能是将其移动到 static/
目录,与 CSS 一起。
<script src="/file.js"></script>
<小时/>
请注意,在服务器上运行的程序和在浏览器中运行的程序是两个不同的程序,即使它们是用相同的编程语言编写的。如果file.js
包含预计在服务器上运行而不是在浏览器中运行的 JS,那么您将需要采取另一种方法。 This question解决了服务器和客户端之间传递值的问题。
另请注意 onclick
和其他内在事件属性有 nasty gotchas ,通常被认为小于 best practice ,通常应替换为 binding handlers with JS .
关于javascript - NodeJS 中找不到另一个 .js 文件中定义的函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41963377/