组合javascript文件中的多个启动函数



由于性能原因,我的应用程序前端当前使用单个合并/缩小的javascript文件。这是一个方便的设置,但我遇到了一个问题。单个页面在$(function())中有自己的启动代码,但由于每个页面都引用了网站的组合javascript,所有的启动函数都在每个页面上执行,这是完全出乎意料的。

我提出的唯一解决方案是在每个启动函数中放置一个条件,只有在页面的容器中可以找到某些数据时才能执行。例如:

$(function() {
if($('title').text()=='some title') {
// do something
}
}

只有当页面的标题是"某个标题"时,才会运行上述函数,从而阻止它在其他页面上运行(当然,假设它们有不同的标题)。这种策略可能适用于整个网站,但它似乎很不安全。有人有更好的解决方案吗?

如果你有1000个页面,那么你下载的是999个函数,即使你不需要它们。将单个内容提取到它们自己的js文件中。然后,对于每个页面,您将只下拉两个js文件(上的核心文件和特定页面的文件)。然后我会更进一步,在imgs和js文件上实现缓存,这样它们就不会被拉下,甚至不会被检查是否被修改,从而节省了许多网络旅行。但是,当你推出更改时,你必须强制用户重新下载文件,通过每次"推送"或构建来改变目录结构

示例:yoursite/javascript/jan01build/allYourJsFiles

然后在顶级javascript文件夹上实现缓存(比如一年),如下所示。。。https://stackoverflow.com/a/16753140/3112803

现在,如果你在Chrome中使用F12查看网络流量,你应该会看到js文件的"状态200"one_answers"缓存大小"。这意味着甚至没有进行网络访问来查看它是否被修改(304状态)。

然后,当你更改代码并进行另一次"推送"或"构建"时,你必须强制用户获取新文件,只需将目录更改为…即可

示例:yoursite/javascript/feb01build/allYourJsFiles

(用图像重复所有这些)

最新更新