繁体   English   中英

为什么我不需要在我的 html 文件中引用相对路径来加载带有 express js 的 javascript 文件?

[英]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 文件的相对路径失败了,但是仅通过它的名称来引用它是否有效?

  1. 附上目录结构。 如您所见, index.ejs 在src/views而我的脚本在src/jscript 这意味着我的路径应该是../jscript/index.js从我index.ejs文件。

在此处输入图片说明

  1. 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') });
  2. 有效的 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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM