javascript - 仅使用 EJS 和 res.render 加载 JS 文件一次
问题描述
我有一个 Node.js SPA,在 JS 文件中有很多全局变量和计算,我曾经像这样为网站提供服务:
app.get('/', function(req,res) {
res.sendFile(path.join(__dirname + '/index.html'));
});
一个带有 JS 文件的 HTML 文件加载一次,当用户单击菜单时,我使用 HTML 模板和 JS 重新渲染视图,这意味着存储所有数据的全局对象始终可用。
但是现在我想添加路由以便人们可以访问 /about 等,所以我使用 EJS 来呈现页面,唯一的问题是每次用户单击菜单项时都会加载 JS 文件,因为该文件包含在EJS 页面的脚本标签。它确实减慢了网站的速度。
应用程序.js:
router.get("/", function(req,res,next) {
res.render("index", { page: "home" });
});
router.get("/about", function(req,res,next) {
res.render("about", { page: "about" });
});
索引.ejs:
...
<% include partials/scripts %>
</body>
</html>
脚本.ejs:
...
<script src="js/main.js"></script>
主.js:
let WebApp = (function() {
// global variables here
...
return {
init: function() {
// init and calculate variables here
// display view depending on variables
}
};
})();
window.onload = WebApp.init();
有什么方法可以轻松防止这种情况发生,还是我需要重组我的网站?
解决方案
推荐阅读
- python - 只有最后 25 个来自抓取数据的对象被传输到 CSV 文件
- stanford-nlp - stanford corenlp中的自然语言逻辑
- javascript - 如何与 Angular 2 容器应用程序进行通信和外部 HTML
- r - 选择 R 中重复采样站点数量最多的年份
- c# - 从 C# 调用具有 LPStr 返回值的 C++ 函数
- python - 将列表列表创建到字典中
- python-3.x - python3 - 如何从跨度中抓取数据
- php - php探针的blackfire配置问题
- html - 如何验证仅以 +966 开头的电话号码的输入?
- c# - Twilio:开始会议并拨出