gpt4 book ai didi

javascript - NodeJS 中找不到另一个 .js 文件中定义的函数

转载 作者:行者123 更新时间:2023-12-03 05:07:35 25 4
gpt4 key购买 nike

我对 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/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com