博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
前端js文件合并三种方式
阅读量:6718 次
发布时间:2019-06-25

本文共 1418 字,大约阅读时间需要 4 分钟。

最近在思考前端js文件该如何合并,当然不包括不能合并文件,而是我们能合并的文件,想了想应该也只有三种方式。

三个方式如下:

1. 一个大文件,所有js合并成一个大文件,所有页面都引用它。

2. 各个页面大文件,各自页面合并生成自己所需js的大文件。

3. 合并多个共用大文件,根据实践情况合并出多个共用js文件,每个页面引用多个共用大文件。

另外在我看来,合并有两个目的:

1. 为了减少请求数。

2. 代码安全考虑(文件分得越多,越容易被人看清)。

PS:注意我说的不是压缩混淆,只是合并

1. 一个大文件

这种方式就是不管三七二十一,所有js合并成一个大文件,所有页面都引用它,即使某些代码可能不会用到。

优点:

(1). 合并简单,使用也简单。

(2). 其他页面可利用缓存优化加载。

缺点:

(1). 页面可能会加载到本页面不使用的代码。

不适用场景:

(1). 这种方式肯定不适用于大型的Web应用,且不论单文件代码量,业务的复杂性也不允许我们这样干(我没见过那个网站这样做的)。

适用场景:

(1). Hybrid应用,无论是Mobile的Hybrid应用,还是PC的Hybrid应用(桌面应用,类似有道团队开发框架hex+chromium +nodejs),都非常适合,本身就不会有请求速度问题,这种位于客户端代码的应用的代码安全更为重要。

PS:当然最重要的还是后端的安全,无论前端是否被破解,后端是否完善输入校验,是否防止越权,后端才是关键,也就是常说一句话“不要相信用户的任何输入”。

2. 各个页面大文件

各个页面合并生成自己所需js的大文件,生成多份js合并。

优点:

(1). 每个页面都用到最精确的js,不会有不相关代码。

缺点:

(1). 有多少个页面,就会生成多个js,导致存在大量共同js代码的冗余。

(2). 共用部分无法使用缓存优化加载。

(3). 合并和使用会相对比较复杂。

这种方式我始终觉得不对劲,小应用直接单个大文件搞定,而大应用更不会这样去做,更不能用在Hybrid应用上,在这样讲究安装包大小的情形下,不能容忍冗余代码。我在思考各种场景时候,都发现能用上面或下面方式解决,而且是更优,所以我觉得这种方式是个鸡肋。

3. 合并多个共用大文件

根据实践情况合并多个共用大文件(例如依赖库分类),再合并本页面所需js文件(例如以业务分类),每个页面引用一个或多个共用大文件和本页面的js文件。

优点:

(1). 共用部分得到加载优化,每个页面引用的也尽可能的做到了不冗余。

缺点:

(1). 多多少少还是会存在某些页面会引用到不需要的代码,共用不并不是完完全全的共用。

适用场景:

(1). 大小型应用都比较适用,每个页面可能存在许多共用部分,合理的分文件合并将非常关键。

总结

这一篇文件只是思考,也只算泛泛之谈。文件合并方法挺多,由后端动态生成或工具直接生成(grunt+requirejs),合并的方式也就以上三种,也取决于我们实践需要。

合并很重要,但不是提倡所有文件都合并起来,有不能合并的,有些单独文件更优的,还是要看具体场景。

 

本文为原创文章,转载请保留原出处,方便溯源,如有错误地方,谢谢指正。

本文地址 :

本文转自 海角在眼前 博客园博客,原文链接: http://www.cnblogs.com/lovesong/p/5068025.html  ,如需转载请自行联系原作者

你可能感兴趣的文章
面试官:请手写一个webpack4.0配置
查看>>
有关getter 和 setter的使用
查看>>
JavaScript面向对象中的Function类型个人分享
查看>>
记录一次Webpack插件优化的经历
查看>>
【跃迁之路】【505天】程序员高效学习方法论探索系列(实验阶段262-2018.06.25)...
查看>>
ubuntu16.04 搭建java 环境
查看>>
关于 try 和 finally 中的 return
查看>>
JS 1-数据类型
查看>>
(Google I/O '17) Speeding Up Your Android Gradle Builds 在本地的实践
查看>>
最大似然法与似然函数
查看>>
SAPGUI里实现自定义的语法检查
查看>>
快速创建 HTML5 Canvas 电信网络拓扑图
查看>>
JS动画之定时器详解
查看>>
利用Tomcat发布基于Maven所构建的Jersey RESTful Web Service
查看>>
PHP之string之wordwrap()函数使用
查看>>
ABAP OPEN SQL里OPEN CURSOR和SELECT的比较
查看>>
【348天】我爱刷题系列107(2018.01.19)
查看>>
四谈快速排序(含尾递归)
查看>>
WPF 下的自定义控件以及 Grid 中控件的自适应
查看>>
来一场轰轰烈烈的HTTP协议扫盲革命
查看>>