【发布时间】:2018-11-08 23:47:54
【问题描述】:
我知道这是一个成熟的问题,但我已经尝试了所有类型的教程并遵循堆栈和其他地方的所有建议,我的问题没有解决。
我正在尝试使用 node.js 和 express 构建一个简单的静态网站,以利用添加的服务器端功能,如 fs、数据库集成等,但使用旧式 css、html 和 js。
我知道 node.js 喜欢使用模板引擎(jade,ejs),但这不是我的情况,我需要一个简单的 index.html 文件,底部有一个脚本标签,用于存储在静态文件夹中的 javascript 逻辑/public(分离关注点)。 目前 init.js 只包含一个用于测试的 console.log。
<script type="text/javascript" scr="/public/init.js" charset="utf-8"></script>
我遵循了有关 express 使用静态文件的指南,并尝试了以下方法的所有可能组合(为清楚起见,该方法位于名为 server.js 的文件中,该文件是我项目的 node.js 主文件):
app.use("/public", express.static(__dirname + '/public'));
这解决了加载 css 文件的问题,因为现在我的页面可以正确加载 css,如下:
<link rel="stylesheet" href="/public/style.css">
我也试过很多脚本标签的组合,像这样:
<script type="text/javascript" scr="/init.js" charset="utf-8"></script>
<script type="text/javascript" scr="/public/init.js" charset="utf-8"></script>
<script type="text/javascript" scr="./public/init.js" charset="utf-8"></script>
<script type="text/javascript" scr="../public/init.js" charset="utf-8"></script>
<script type="text/javascript" scr="init.js" charset="utf-8"></script>
我的问题是为什么我的 /public/init.js 没有加载?我可以通过输入地址清楚地指向它,它将以文本形式显示文件的内容:
http://localhost:9000/public/init.js
我检查了浏览器开发工具中的网络选项卡,init.js 完全被忽略了。 是否有任何安全策略阻止它加载? 谢谢。
【问题讨论】:
-
在你的脚本标签中,你写的是
scr而不是src,你的真实文件中也是这样吗? -
是的,很抱歉打扰你们了!谢谢你们!在我们讨论的过程中,您对如何在不使用模板引擎的情况下将变量和数据发送到纯 html 有任何建议吗?我了解jade/ejs 如何处理变量和数据,并且我也知道我可以构建一个REST API 来用纯html(旧样式)的http 请求重现相同的东西,但是还有其他方法吗?
标签: javascript html node.js express template-engine