AJAX应用程序单个或多个JavaScript文件
AJAX Application Single or Multiple JavaScript Files
这是一个最佳实践类型的问题。我正在开发一个完整的AJAX应用程序。用户导航到应用程序的主页,从那里开始的所有内容都通过AJAX加载到主页的内容部分。是把我所有的javascript文件合并成一个加载在主页上的文件,还是把它们分割成每个加载页面所需的文件?
把它们放在一个文件中显然有一个好处,那就是只需要一个HTTP请求就可以加载网站所需的javascript,之后任何对页面的请求都只需要获取HTML。但是,这需要使用live或on函数将连接(使用jQuery)的每个事件附加到文档。所以所有内容看起来像:
$(document).on('click', '#SomeButton', function () { });
这样做会导致数百甚至可能超过1000个事件被绑定到单个元素文档上。
将它们放在单独的文件中需要发出多个HTTP请求来加载站点的各个页面,但限制了附加到文档的事件数量。
有什么最好的想法吗?
对于较大的项目,我会投票给每个页面单独的js文件,特别是如果你的项目使用任何js库,如jQuery和它的插件,如网格插件等。如果你有一个很大的单一javascript文件,你的第一页将加载缓慢,显然会给你的用户一个不好的第一印象。我们所做的是为每个页面创建单独的js文件,特别是当有ajax调用为页面加载数据时。此外,每个可插拔组件都有单独的文件,如自定义下拉或日期计数器等。这样就很容易管理代码并在以后进行定制。
在部署应用程序之前,我们可以合并相关文件并为单个页面创建单个文件。例如,如果一个名为editProfile.php的页面使用一个数据选择器、一个jquery验证插件和自定义js来加载用户数据,我们可以将它们组合在一个文件中,这样只会为一个页面加载一个文件。
所以我会为每个页面单独的文件投票,并在部署之前应用优化。
老实说,我不是这个领域的专家,但这是我对生产环境中这个主题的一点建议。
-
我会使用cdn库(如jquery)。它们提供了最大的可缓存性,并且很有可能在访问其他网站时已经缓存在客户端的浏览器中。
-
组和缩小您的常见javascript代码,如插件,实用程序,整个网站使用的东西。它将被一次性请求,然后将可用。
-
为动态加载的每个"页面"设置一个单独的、缩小的脚本文件,以便与内容一起加载。
加载内容页脚本:
使用jquery的.load()方法来加载页面的片段将不幸地删除片段中存在的任何<script>
标记。如jquery load()方法所述,这是为了避免IE中的"Permission denied"。
你可以做的是在你的基本页面中有一个<script id="contentScript"></script>
标签,并通过替换src来加载脚本和内容。
我不知道这是否是一个好的做法,但它对我来说是有意义的:-)
- 使用压缩的JavaScript文件(不是运行时压缩)
- 如何包含特定于每个视图angularjs的javascript文件
- 将数据从javascript文件导入VB.Net页面
- Chrome加载旧版本的Javascript文件
- 操作员”;新的“;根据我想在几个JavaScript文件中使用的类,在JavaScript中使用
- gulp-if-javascript文件,但不在gulp-useref的特定目录中
- 如何在visualstudio中调试web api时编辑javascript文件
- 关于引入外部javascript文件的问题&css通过https
- 有没有办法在tinymceiframe中加载一个外部javascript文件
- 什么'是在asp.net MVC中将本地化的resources.resx文件转换为javascript文件的有效
- 在一个javascript文件中为整个网站创建标签
- 如何在定义js文件后为外部javascript文件设置变量
- 显示IIS上javascript文件(SOAP请求)的XML响应
- ResolveUrl没有'我似乎不适合当链接到具有动态虚拟目录的外部javascript文件时
- 我应该将MVC视图特定的javascript文件放在哪个文件夹中
- Django'支持Javascript文件中的翻译
- MVC正在忽略我的Javascript文件
- 为什么不't我的ruby代码与javascript文件一起插入
- 在Javascript文件中获取PHP变量
- 如何在Windows中将Javascript文件编译成二进制文件