组合JS文件的最佳实践
Best practice to combine JS files
我一直都有这个问题。说到JS优化,现在大多数人都使用Less、Sass或其他方法将所有CSS组合到一个文件中。但到了JS,我对方法有点犹豫,因为这里有插件、框架和您自己的代码。只是想知道是否有一条规则或最佳实践可以接近。
因此,我应该将我所有的JS组合成一个JS,包括插件、框架、库和我自己的代码,还是相应地将它们模块化。
我知道这可能取决于项目的规模,但衡量标准是什么,以及何时应该将所有内容合并为一个或模块化。我应该遵守什么规则吗。
欢迎提出任何建议。
组合和缩小自己的开发JavaScript通常是个好主意。如果请求太多(尤其是有多个小文件的情况下),拥有多个HTTP请求可能会降低加载速度。Google PageSpeed Insights在这里给出了一些关于如何做到这一点的指导方针。
正如@veroxii所说,大多数人最终都会使用"构建",因为手动缩小和组合所有内容将是巨大的时间浪费。对于我工作的那些没有内置缩小系统的小网站,我喜欢使用gulljs以及gull-uglify和gull-concat来缩小和组合javascript资源。
不过,在组合时必须小心,因为通常情况下,脚本将依赖于其他脚本。假设您将两个脚本组合在一起,其中scriptB依赖于scriptA。如果浏览器在scriptA之前加载并运行scriptB,因为它是组合文件中的第一个,那么就会发生不好的事情。要么小心脚本组合,要么使用requirejs之类的东西。
当使用从CDN加载的第三方脚本(如jQuery)时,除了使用他们提供的生产script.min.js资源外,在缩小或组合方面你真的做不了什么。你可能会下载他们的脚本并将其放入你的缩小过程中,但大多数用户更有可能已经在浏览器中缓存了CDN版本。
当涉及到JavaScript时,最重要的事情是确保脚本的加载不会阻碍页面的呈现。如果没有内容,大多数JavaScript都是无用的,那么为什么不让内容先加载,然后再加载到脚本中呢?用户将首先看到内容,然后进行交互,因此按此顺序加载这些资源可能是个好主意。点击此处了解更多信息。将脚本标记放在页面底部,使用async
属性,或者使用异步javascript加载程序,如loadJS或requirejs。
您在服务器端使用哪个框架?大多数框架都有一个已经内置或作为插件的"资产管道"。
例如djangohttps://django-pipeline.readthedocs.org/en/latest/grailshttp://grails.org/plugin/asset-pipeline
这可以满足您的所有要求,甚至更多。我相信,无论你在服务后端使用什么,都有类似的东西。
编辑:澄清一下——我不认为这是人们手动做的事情。他们有一个工具可以在运行中或在构建/部署时执行此操作。
- 有条件更新d3.js力图中节点的最佳方法
- 与运行长作业(javascript,node.js)的第三方API同步的最佳实践
- 什么's是连接供应商js文件的最佳方式
- 在node.js中编写单元测试的最佳方式是什么
- 节点:'最佳实践'使用其他js文件的js文件
- PHP和JS中表单验证的最佳方式
- ExtJS类的最佳实践最终导致了太多的.JS文件.性能怎么样
- Ember.js:接受的子组件和父组件之间通信的最佳实践
- 在企业应用程序框架中包含js/css文件的最佳实践是什么
- 展示纯js应用程序前端的最佳架构是什么
- 主干.js事件处理程序命名的最佳做法
- 在 ember.js 中自定义输入字段的最佳实践
- HTML + JS:设置文本区域内容样式的最佳方式
- 将参数传递到外部 JS 脚本的最佳方法
- 在下划线.js中扩展对象的最佳实践
- Ext JS - 将面板绑定到数据存储的最佳方法
- 在angular js中,每次应用程序进入状态时,重新加载状态的最佳方式是什么
- infinity.js的最佳实践
- 什么'是HTML中框架集的最佳JS替换
- 检查未定义变量的最佳JS实践是什么