zoukankan      html  css  js  c++  java
  • 前端js,css文件合并三种方式,bat命令

    前端js,css文件合并三种方式,bat命令

    前端js文件该如何合并三个方式如下:
    1. 一个大文件,所有js合并成一个大文件,所有页面都引用它。
    2. 各个页面大文件,各自页面合并生成自己所需js的大文件。
    3. 合并多个共用大文件,根据实践情况合并出多个共用js文件,每个页面引用多个共用大文件。

    合并两个目的:
    1. 为了减少请求数。
    2. 代码安全考虑(文件分得越多,越容易被人看清)。
    PS:不是压缩混淆,只是合并
    windows 系统下的 cmd 里的 copy 命令,它虽然是个复制的功能,但实则也是可以实现合并文件的需求,下面就看下这句代码:
    copy a.js+b.js+c.js abc.js /b
    通过 copy 命令将 a.js b.js c.js 合并为一个 abc.js,最后的 /b 表示文件为二进位文件,copy 命令的其它参数可以在 cmd 里输入 copy /? 学习。
    windows 本身就可以完成我们的需求,也不用安装什么其它工具了,下面我们要做的就是将这一切操作更简单。
    在项目存放 JS 的文件夹下新建一个txt文件,将代码复制进去,并修改需要合并哪些文件,最后保存并将tex修改为 bat 后缀,
    如:
    del common-all.js
    copy jquery-2.1.4.min.js+bootstrap.min.js+common.min.js common-all.js /b
    合并前把之前的先删了才能更新
    保存为mergejs.bat,双击bat文件,就会生成一个新的common-all.js文件,这就是我们想要的。
    以后每次上线前,只需双击下这个文件,系统就会自动合并生成,比起其它什么工具,这个的效率简直无法直视。

    同理,css文件也一样处理。

    -----------------------------------
    COPY [/D] [/V] [/N] [/Y | /-Y] [/Z] [/L] [/A | /B ] source [/A | /B]
    [+ source [/A | /B] [+ ...]] [destination [/A | /B]]

    source 指定要复制的文件。
    /A 表示一个 ASCII 文本文件。
    /B 表示一个二进位文件。
    /D 允许解密要创建的目标文件
    destination 为新文件指定目录和/或文件名。
    /V 验证新文件写入是否正确。
    /N 复制带有非 8dot3 名称的文件时,
    尽可能使用短文件名。
    /Y 不使用确认是否要覆盖现有目标文件
    的提示。
    /-Y 使用确认是否要覆盖现有目标文件
    的提示。
    /Z 用可重新启动模式复制已联网的文件。
    /L 如果源是符号链接,请将链接复制
    到目标而不是源链接指向的实际文件。

    命令行开关 /Y 可以在 COPYCMD 环境变量中预先设定。
    这可能会被命令行上的 /-Y 替代。除非 COPY

    =======================================
    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),合并的方式也就以上三种,也取决于我们实践需要。
    合并很重要,但不是提倡所有文件都合并起来,有不能合并的,有些单独文件更优的,还是要看具体场景。

  • 相关阅读:
    分层图最短路(DP思想) BZOJ2662 [BeiJing wc2012]冻结
    动态规划 BZOJ1925 地精部落
    线性DP SPOJ Mobile Service
    线性DP codevs2185 最长公共上升子序列
    数位DP POJ3208 Apocalypse Someday
    线性DP POJ3666 Making the Grade
    杨氏矩阵 线性DP? POJ2279 Mr.Young's Picture Permutations
    tarjan强连通分量 洛谷P1262 间谍网络
    树链剖分 BZOJ3589 动态树
    二分图 BZOJ4554 [Tjoi2016&Heoi2016]游戏
  • 原文地址:https://www.cnblogs.com/zdz8207/p/js-css-merge.html
Copyright © 2011-2022 走看看