gulp 压缩js,css
最近做的前端项目中发现引用的js包太多,导致页面加载时反应很慢,所以首先想到的是将js和css压缩,提高加载速度。
我们先来看看抓到的当前页面响应时间:

页面异步加载,需要响应时间 7.41秒,这也太慢了,实在受不了了。
下面我们引入gulp 对js做压缩,gulp是基于Node.js的前端构建工具。所以首先需要安装nodejs ,因为我的项目本身就是node项目,所以直接装gulp就好。全局安装gulp,命令如下
npm install -g gulp
需要安装的依赖项下面这些,依次安装就好了:

安装好所有插件都会放到node_modules目录下。接下来我们准备压缩处理js
在项目的本目录下新建gulpfile.js文件,并添加以下代码:
var gulp = require('gulp'),
cleanCSS = require('gulp-clean-css'),
concat = require('gulp-concat'),
uglify = require('gulp-uglify'),
rename = require('gulp-rename'),
jshint=require('gulp-jshint');
//语法检查
gulp.task('jshint', function () {
return gulp.src('client/assets/js/*.js')
.pipe(jshint())
.pipe(jshint.reporter('default'));
});
//压缩,合并 js
gulp.task('minifyjs', function() {
return gulp.src([
'client/assets/js/angular-route.js',
'client/assets/js/angular-animate.js',
'client/assets/js/angular-cookies.js',
'client/assets/js/angular-touch.js',
'client/assets/js/ngStorage.js',
'client/assets/js/angular-ui-bootstrap.js',
'client/assets/js/angularui.js',
'client/assets/js/toaster/toaster.js',
'client/assets/js/iit/loading.js',
'client/assets/js/iit/router.js',
'client/assets/js/moment.js',
'client/assets/js/mbdatepicker.js',
'client/assets/js/jquery.js',
'client/assets/js/jquery-cookies.js',
'assets/js/bootstrap/js/bootstrap.min.js',
]) //需要操作的文件
.pipe(concat('main.js')) //合并所有js到main.js
.pipe(gulp.dest('client/assets/css/dist')) //输出到文件夹
.pipe(rename({suffix: '.min'})) //rename压缩后的文件名
.pipe(uglify()) //压缩
.pipe(gulp.dest('client/assets/js/dist')); //输出
});
//压缩css
gulp.task('minifycss', function() {
return gulp.src('client/assets/css/*.css') //需要操作的文件
.pipe(rename({suffix: '.min'})) //rename压缩后的文件名
.pipe(cleanCSS({compatibility: 'ie7'})) //执行压缩
.pipe(gulp.dest('client/assets/css/dist')); //输出文件夹
});
//默认命令,在cmd中输入gulp后,执行的就是这个任务(压缩js需要在检查js之后操作)
gulp.task('default',['jshint'],function() {
gulp.start('minifycss','minifyjs');
});
配置之后然后会到根目录执行cmd 命令 : gulp(gulp命令参考 : https://github.com/gulpjs/gulp/blob/master/docs/API.md)

然后我们在指定的目录下就看到了已经压缩好的js文件

现在我们只需要将html中js引用的路径修改成压缩的新路径即可。
然后我们再次访问页面的时候就可以看到引用的js明显变少了,速度也快了不少

但是这个速度还是很慢的,影响用户体验的,但是我们发现目前影响速度的主要原因已经不是js的了,图片同样也比较大,影响页面加载速度。
gulp 对js,css,img等都是可以压缩的。
需要注意的是js相互之间有依赖,压缩之后依赖就没有了,所以的压缩的时候要注意,有些js是不能压缩到一起的,否则依赖找不到就报错了,所以上面的压缩中angularjs和其他的几个我并没有一起压进去。还有就是css压缩的时候因为命名规范的原因,压缩之后有些元素的样式id会重复,也会导致界面上样式乱掉的情况,很不幸我在做的就遇到了,所以这个地方我没有压缩css。
现在图片是影响加载的原因,但是因为目前我们的图片是放在阿里云上的,所以的即使我们想在服务端做压缩处理也没办法,后期迁到我们自己服务器的时候就可以考虑在服务端先做一次压缩,然后再返回。
欢迎关注微信公众平台:上帝派来改造世界的人

gulp 压缩js,css的更多相关文章
- 《Gulp 入门指南》 : 使用 gulp 压缩 JS
<Gulp 入门指南> : 使用 gulp 压缩 JS 请务必理解如下章节后阅读此章节: 安装 Node 和 gulp 访问论坛获取帮助 压缩 js 代码可降低 js 文件大小,提高页面打 ...
- 使用 gulp 压缩 JS
使用 gulp 压缩 JS 请务必理解如下章节后阅读此章节: 安装 Node 和 gulp 压缩 js 代码可降低 js 文件大小,提高页面打开速度.在不利用 gulp 时我们需要通过各种工具手动完成 ...
- PHP动态压缩js,css
PHP动态压缩js,css 列表项 标签: PHP 正式发布产品时,我们希望将项目里的js,css合并压缩,以减少http请求.防止轻易查看源代码. 使用 只需要在头部引入一下代码即可: <me ...
- gulp 对js\css进行md5 加密
有的服务器为了网站加载速度,会做服务器缓存,这样就会出现代码出现引用地址没变,新代码不生效,而我们又希望新代码可以及时生效,这样我们就需要避免缓存,当然也有很多方法,本文只介绍使用gulp-rev(对 ...
- gulp 压缩 js 和 css 代码
我们在写出来的代码都是非常规范的,改换行的时候就换行,改tab 的时候就有tab,还有这样做是为了后期维护方便,但是这也导致了内存占用量的增大,当把把代码发到线上,如果网速慢一点,可能很久都加载不出来 ...
- gulp入门-压缩js/css文件(windows)
类似于grunt,都是基于Node.js的前端构建工具.不过gulp压缩效率更高. 工具/原料 nodejs/npm 方法/步骤 首先要确保pc上装有node,然后在global环境和项目文件中都in ...
- gulp打包js/css时合并成一个文件时的顺序解决
1.可以使用插进gulp-order. 2.可以这样的写法: return gulp.src(['js/common.js','js/**/*.js']) .pipe(concat('build.js ...
- ASP.NET MVC 4使用Bundle的打包压缩JS/CSS
打包(Bundling)及压缩(Minification)指的是将多个js文件或css文件打包成单一文件并压缩的做法,如此可减少浏览器需下载多个文件案才能完成网页显示的延迟感,同时通过移除JS/CSS ...
- MVC打包压缩JS&CSS文件调试时过滤了一些文件
BundleTable.这个确实是比较好用,打包并压缩了CSS,使之加载时减少流量. 但是在调试的时候会疑问为何有很多JS,CSS文件无法打包,其实是因为调试时VS自动过滤了如下文件: 后台跟踪了 ...
随机推荐
- mono for android学习过程系列教程(7)
首先说个抱歉,这段时候由于个人原因未及时更新博客.故此今天先给大家来个小料. 以后会及时更新我自己的学习过程. 不多说,终于私人生活安定下来了,可以安心学习.直接进入主体: 今天咱们摒弃所有的前面的知 ...
- 算法:POJ1007 DNA sorting
这题比较简单,重点应该在如何减少循环次数. package practice; import java.io.BufferedInputStream; import java.util.Map; im ...
- 图解集合2:LinkedList
初识LinkedList 上一篇中讲解了ArrayList,本篇文章讲解一下LinkedList的实现. LinkedList是基于链表实现的,所以先讲解一下什么是链表.链表原先是C/C++的概念,是 ...
- 使用XtraReport的CalculatedFiled(计算字段)实现RDLC报表中表达式
DevExpress报表确实强大,花样繁多,眼花缭乱. 这次使用XtraReport开发报表,很多问题在官方的文档中并没有详细的说明,特此记录. 1.XtraReport中FormattingRule ...
- 修改nw.js的exe文件使其请求管理员权限
修改nw.js的exe文件使其请求管理员权限 默认情况下,nw.js发布的nw.exe文件请求的是普通权限,当我们的应用需要访问一些特殊目录或者注册表等,就需要程序启动的时候以管理员权限运行.那么此时 ...
- Nim教程【十一】
引用类型和指针类型 不同的引用可以只想和修改相同的内存单元 在nim中有两种引用方式,一种是追踪引用,另一种是非追踪引用 非追踪引用也就是指针,指向手动在内存中分配的对象: 追踪引用指向一个垃圾收集的 ...
- Unity3D热更新全书-脚本(二) 两级分化
上篇明确了我们探讨的脚本是什么:是写在文本文件里面的代码,可以作为资源加载,取得字符串再执行. 可是为什么世界上会有那么多的脚本?而其使用方法完全看起来不一样呢?这是因为每种脚本都有自己的定位,在不同 ...
- 如何为编程爱好者设计一款好玩的智能硬件(七)——LCD1602点阵字符型液晶显示模块驱动封装(上)
当前进展: 一.我的构想:如何为编程爱好者设计一款好玩的智能硬件(一)——即插即用.积木化.功能重组的智能硬件模块构想 二.别人家的孩子:如何为编程爱好者设计一款好玩的智能硬件(二)——别人是如何设计 ...
- Canny算子边缘检测(cvCanny)
Canny是常用的边缘检测方法,其特点是试图将独立边的候选像素拼装成轮廓. John Canny于1986年提出Canny算子,它与Marr(LoG)边缘检测方法类似,也属于是先平滑后求导数的方法. ...
- MVVM架构~mvc,mvp,mvvm大话开篇
返回目录 百度百科的定义: MVP 是从经典的模式MVC演变而来,它们的基本思想有相通的地方:Controller/Presenter负责逻辑的处理,Model提供数据,View负 责显示.作为一种新 ...