[英]Need to load and display HTML file before JS file, express.static not serving HTML file
[英]Why do I not need to reference the relative path in my html file to load a javascript file with express js?
我正在从头开始构建我的第一个项目,并且在设置它时我注意到,从我的 index.html 文件中使用到我的 javascript 文件的相对路径失败了,但是仅通过它的名称来引用它是否有效?
src/views
而我的脚本在src/jscript
。 这意味着我的路径应该是../jscript/index.js
从我index.ejs文件。Express JS文件代码
const express = require('express') const app = express() const port = 9900 app.use(express.static('src/img')) app.use(express.static('src/css')) app.use(express.static('src/jscript')) app.use(express.static('src/fonts')) app.set('views', 'src/views'); app.set('view engine', 'ejs'); app.get('/', (req, res) =>{ res.render('index') });
有效的 HTML
<script type="text/javascript" src="index.js"></script>
所以总结一下,我的问题是为什么上面的 html 脚本在没有正确路径的情况下引用了 js 文件。 我知道它可能是指向目录的 app.use 静态文件,但我只想仔细检查为什么会这样。 谢谢!
相对 URL 由浏览器而不是服务器解析。
浏览器没有请求/views/index.ejs
它正在请求/
。
你还说app.use(express.static('src/jscript'))
所以index.js
的 URL 是/index.js
。
/
(HTML 的 URL)+ index.js
(JS 的相对 URL)= /index.js
URL)。
它可能是指向目录的 app.use 静态文件
这是正确的答案。 另外,我建议在一个单行中重构这个 app.use:
app.use(express.static('src'));
并在视图中相应地更改引用。
请注意,通常架构有一个src
文件夹,可以编译为public
文件夹,因此您可以将public
文件夹放在 express.static 声明中。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.