组合JS文件的最佳实践

Best practice to combine JS files

本文关键字:最佳 JS 文件 组合      更新时间:2023-09-26

我一直都有这个问题。说到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

这可以满足您的所有要求,甚至更多。我相信,无论你在服务后端使用什么,都有类似的东西。

编辑:澄清一下——我不认为这是人们手动做的事情。他们有一个工具可以在运行中或在构建/部署时执行此操作。