grunt 压缩 html,如何使用 grunt 插件压缩合并 js ?减少页面请求数的秘诀
本博客不欢迎:各种镜像采集行为,请尊重知识产权法律法规。大家都是程序员,不要闹得不开心。
安装好grunt后,苏南大叔下一步的计划就是配置Gruntfile.js这个配置文件。在这个文件中,苏南大叔采用的是一种比较简单易懂的方案。处理的文件目标是:把很多个分散的js文件,合并为一个all.min.js文件。这样做的好处是:可以有效的减少浏览器的并发数,加快网页浏览。
安装grunt构建工具
grunt构建工具的安装,是有些奇怪的。需要全局安装grunt-cli,然后本地安装grunt。本篇文章里面,不做详细描述。可以参考下面这个链接:
安装grunt插件
要使用grunt压缩合并js文件,需要的插件是:grunt-contrib-uglify和grunt-contrib-concat。grunt-contrib-uglify是负责压缩处理js文件的,背后就是大名鼎鼎的uglifyjs。
grunt-contrib-concat是负责合并所有的.min.js文件的。
所以,需要的命令行是:npm install grunt-contrib-uglify grunt-contrib-concat --save
如何使用 grunt 插件压缩合并 js ?减少页面请求数的秘诀(图3-1)
设置Gruntfile.js配置压缩js方案
Gruntfile.js的外部套路部分,这里就不额外讲述了。下面仅仅给出Gruntfile.js的核心代码。module.exports = function (grunt) {
pkg: grunt.file.readJSON('package.json');
grunt.initConfig({
uglify: {
// 这里是uglify任务的配置信息
options: {
},
static_mappings: {
files: [{
src: 'js/jquery-2.1.4.min.js',
dest: 'build/jquery.min.js'
},{
src: 'lib/bootstrap-3.3.7/js/bootstrap.min.js',
dest: 'build/bootstrap.min.js'
},{
src: 'js/jquery.pjax.js',
dest: 'build/jquery.pjax.min.js'
}],
}
},
concat: {
js: {
src: ["build/*.js"],
dest: 'dest/all.min.js',
options :{
separator: ';',//分割符
stripBanners: true//去掉代码中的块注释
},
},
},
});
grunt.loadNpmTasks('grunt-contrib-uglify');
grunt.loadNpmTasks('grunt-contrib-concat');
grunt.registerTask('default', ['uglify', 'concat']);
}
上述文件配置好之后,在Gruntfile.js所在目录执行grunt命令即可完成js文件的合并与压缩。压缩后的.min.js文件位于build目录之中。而合并的all.min.js文件位于dest目录。
如何使用 grunt 插件压缩合并 js ?减少页面请求数的秘诀(图3-2)
可能存在的问题
all.min.js文件是生成了,但是并不代表着这事就万事大吉了。因为正常页面的原来分散的js之间是有先后依赖顺序的。而合并(concat)的过程里面,src设置为build/*.js。这样的话,就没有先后顺序的说法了。
所以,很有可能发生的情况就是:你删除了各个分散的js文件,换成all.min.js后,页面会报js错误,比如某某没有定义,某某没有某属性之类的。
设置合并js的顺序
定义合并js顺序的办法也很简单,就是:设置contact.[name].src数组,顺序写入各个要合并的js即可,就是说不用通配符*,而是顺序写入文件。比如:concat: {
js: {
options :{
separator: ';',//分割符
stripBanners: true//去掉代码中的块注释
},
src:["build/jquery.min.js",
"build/bootstrap.min.js",
"build/jquery.pjax.min.js" ],
dest: 'dest/all.min.js'
},
},
这个conact的配置就是说,把src所配置的build目录下面的.min.js文件,按顺序合并成dest/all.min.js文件。而build目录下面的.min.js文件,则是uglify这个任务里面,执行获得的。
Gruntfile.js配置文件描述
下面对本文涉及的Gruntfile.js进行一下总结。共涉及两个插件grunt-contrib-uglify和grunt-contrib-concat。两者使用grunt.loadNpmTasks()定义的。
uglify任务(去掉了grunt-contrib-字样),负责把每个单独的js压缩(混淆)成多个.min.js文件。
concat任务里面,可以定义多个合并任务。这里就定义了一个分支任务js。在这个分支任务里面,通过src数组,顺序定义了已经压缩好的.min.js文件,最终合并得到了all.min.js文件。
如何使用 grunt 插件压缩合并 js ?减少页面请求数的秘诀(图3-3)
使用方式
得到了最终的合并顺序可控的all.min.js文件后,就可以把页面内所有的js引用都删除掉,然后再只加载这个最终的all.min.js即可。
这个合并的得到的js,因为毕竟有js的路径变化。那么理论上来说,可能会发生附带资源的加载失败风险。所以,请记得测试后再使用。
如果本文对您有帮助,或者节约了您的时间,欢迎打赏瓶饮料,建立下友谊关系。
本博客不欢迎:各种镜像采集行为。请尊重原创文章内容,转载请保留作者链接。
grunt 压缩 html,如何使用 grunt 插件压缩合并 js ?减少页面请求数的秘诀相关推荐
- 使用GRUNT压缩和合并js文件
目标 Grunt是一个简单好用的js文件压缩和合并工具,当一个页面需要加载过个js文件时,合并多个js文件可以减少http请求次数,提高页面加载速度.另外,Grunt的uglify功能可以起到混淆和隐 ...
- Grunt的配置及使用(压缩合并js/css)
Grunt的配置及使用(压缩合并js/css) 安装 前提是你已经安装了nodejs和npm. 你能够在 nodejs.org 下载安装包安装.也能够通过包管理器(比方在 Mac 上用 homebre ...
- webpack项目css插件压缩等步骤
webpack项目css插件压缩等步骤 minicssextractplugin css插件防止闪屏 首先安装npm i mini-css-extract-plugin -S 要求webpack5 这 ...
- YUI Compressor插件压缩后war中的js/css文件未压缩的解决方法(被maven打包顶替了)
YUI Compressor Maven插件可以压缩/合并js或css文件,经常用在Maven项目中,但最近发现在wabapp中执行了 mvn install 命令进行发布之后,终端中显示插件已经执行 ...
- 使用Egret插件压缩代码包体积,减少请求数量的实战教程
在白鹭引擎发布了5.2.7版本中新增加了命令行,增加自动合图插件TextureMergerPlugin功能.今天,我们以一个EUI案例来展示自动合图插件的具体使用方法和注意事项. 此外,我们在本文还融 ...
- grunt入门讲解1:grunt的基本概念和使用
Grunt和 Grunt 插件是通过 npm 安装并管理的,npm是 Node.js 的包管理器. Grunt 0.4.x 必须配合Node.js >= 0.8.0版本使用.老版本的 Node. ...
- 前端性能优化--合并压缩js,减少http请求次数
在我之前写的性能优化中,推荐大家使用雪碧图,压缩图片大小是一个方面,还有一个比较重要的方面就是,将图片放到一起了,降低了http的请求次数.今天这里我主要介绍大家在网站发布的时候,可以利用一些在线的合 ...
- hadoop中MapReduce中压缩的使用及4种压缩格式的特征的比较
在比较四中压缩方法之前,先来点干的,说一下在MapReduce的job中怎么使用压缩. MapReduce的压缩分为map端输出内容的压缩和reduce端输出的压缩,配置很简单,只要在作业的conf中 ...
- 压缩命令_Linux环境下文件压缩打包命令详解
你好,我是goldsunC 让我们一起进步吧! 前言 我们知道,在面向对象的程序设计中,一切皆对象.而在Linux操作系统中,一切皆文件,因此我们总会跟文件打交道. Linux文件系统很庞大复杂,不过 ...
最新文章
- SpringSecurity权限表达式
- HTTP协议和几种常见的状态码
- 关于inet_ntop、inet_pton中的n和p分别代表的意义
- 2019年低延迟直播技术展望
- 学习 Message(3): 响应 WM_LBUTTONDOWN 消息
- 了解Spring Web初始化
- 【M1兼容】阿里云盘小白羊版 Mac版(支持满速)
- s8050三极管经典电路_电路板维修基本经验分享。
- HDU 1565 方格取数(简单状态压缩DP)
- 初一网络计算机基础知识,初一计算机基础知识复习题da.docx
- 高新技术企业认定中科技成果转化数量的认定
- php pdo mysql 超时_为 PDO 增加读写超时
- Python操作Excel表格(二)
- easyui treegrid php,jQuery中关于EasyUI的TreeGrid查询功能的实现
- 概率论 1 随机试验 样本空间 随机事件事件间的运算
- Codeforces Round #614 (Div. 1) C.Xenon's Attack on the Gangs(树形dp)
- 图的建立——邻接矩阵
- 【mysql】mysql利用mysqldump导出表结构或者表数据
- qps、tps、吞吐量
- 利用swagger组件测试excel下载,打开文件乱码。