节点,Express +翡翠加载脚本一次
Node, Express + Jade load script once
我使用Node, Express和Jade来渲染一个网站的3页。我只是将这些页面作为:
router.get('/', function (req, res, next) {
res.render('home');
});
router.get('/mid', function (req, res, next) {
res.render('mid');
});
router.get('/final', function (req, res, next) {
res.render('final');
});
我计划在'/mid'和'/final'页面上使用jQuery,所以我只是在mid.jade和final.jade的末尾添加了以下内容:
script(type='text/javascript' src='jquery-min.js')
我的问题:如果用户打开'/mid'和'/final/,那么用户下载jQuery两次。是否有可能设置类似的东西,而不需要jQuery加载两次?我可以想到多个客户端解决方案,但我很好奇我是否可以做一些类似于当前的代码?
编辑:jQuery不是一个很好的例子,让我们以一个场景为例,在'/mid'和'/final'我有相同的脚本:
var a = [];
在'/mid'上,我将一些项推入数组,然后在'/final'上,我想使用这些值,所以重新加载脚本并不好,因为它会清空它
一个普通的脚本标签src文件将被浏览器缓存,这样它就不会在第二页上重新加载。
内容嵌入到页面中的自定义脚本标签不能被浏览器独立缓存,因为它嵌入在页面中,浏览器只能缓存整个文件。
如果您想在两个不同的模板中填充相同的数组,那么您只需要将相同的代码连接到两个模板,以便相同的代码在两个模板中填充它们。你不能"保存"一个模板的结果,然后在另一个模板中使用。
你可以把你的javascript数组放入一个子模板(或部分或包括或任何jade叫他们),以便在两个页面中使用相同的子模板。然后,您只需要在子模板中配置该数组的呈现一次,并且两个页面将使用相同的代码。
请记住,没有任何Javascript状态可以从一个页面保存到下一个页面-每个新页面都创建了一个全新的环境,所以无论您希望Javascript环境在给定页面中是什么,您都必须自己初始化它-它不会"保留"任何来自前一个页面的状态。您可以有意识地将状态从一个页面保存到下一个页面,可以在服务器端保存到数据库中,也可以在客户端保存到cookie或LocalStorage中,但是为了利用这一点,您必须专门编写代码将状态保存到存储位置,然后在适用时从那里读取它。
但是,听起来你想要的只是在两个页面中初始化相同的数组,这应该与子模板一起工作,或者只是在两个页面中引用相同的模板代码。
- 更改路由后,运行一次js脚本
- 只运行一次提取的脚本
- 在谷歌应用程序脚本中,如何在满足条件的情况下只发送一次电子邮件
- 是否有脚本/代码可以一次将链接属性添加到多个链接
- Ajax发布到PHP脚本,每5秒查询一次MySQL数据库的性能/问题
- 为什么这个脚本只工作一次?只替换元素一次,然后再也不替换
- 控制不止一次跳水的风格's风格使用java脚本动态,使用类
- 始终在chrome/ffirefox中工作的脚本在IE中只能工作一次
- 显示弹出脚本,使其在每个浏览器会话中只弹出一次
- 每 1 分钟在 chrome 中运行一次脚本
- Chrome 扩展程序,每分钟刷新一次页面,并在每次刷新时运行 (javascript) 脚本
- 如何使我的Chrome扩展只注入一次脚本
- Javascript每300秒运行一次脚本
- 每3小时在服务器上运行一次脚本
- 每个浏览器会话运行一次脚本,但在结束时冻结脚本
- 如何在Chrome扩展中每天只运行一次脚本
- 执行javascript,然后每60秒刷新一次脚本
- 油脂猴子每天运行一次脚本
- Javascript-在只运行一次脚本之前等待一段时间
- 如何阻止jquery为每个类成员运行一次脚本?