最近做的前端项目中发现引用的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的更多相关文章

  1. 《Gulp 入门指南》 : 使用 gulp 压缩 JS

    <Gulp 入门指南> : 使用 gulp 压缩 JS 请务必理解如下章节后阅读此章节: 安装 Node 和 gulp 访问论坛获取帮助 压缩 js 代码可降低 js 文件大小,提高页面打 ...

  2. 使用 gulp 压缩 JS

    使用 gulp 压缩 JS 请务必理解如下章节后阅读此章节: 安装 Node 和 gulp 压缩 js 代码可降低 js 文件大小,提高页面打开速度.在不利用 gulp 时我们需要通过各种工具手动完成 ...

  3. PHP动态压缩js,css

    PHP动态压缩js,css 列表项 标签: PHP 正式发布产品时,我们希望将项目里的js,css合并压缩,以减少http请求.防止轻易查看源代码. 使用 只需要在头部引入一下代码即可: <me ...

  4. gulp 对js\css进行md5 加密

    有的服务器为了网站加载速度,会做服务器缓存,这样就会出现代码出现引用地址没变,新代码不生效,而我们又希望新代码可以及时生效,这样我们就需要避免缓存,当然也有很多方法,本文只介绍使用gulp-rev(对 ...

  5. gulp 压缩 js 和 css 代码

    我们在写出来的代码都是非常规范的,改换行的时候就换行,改tab 的时候就有tab,还有这样做是为了后期维护方便,但是这也导致了内存占用量的增大,当把把代码发到线上,如果网速慢一点,可能很久都加载不出来 ...

  6. gulp入门-压缩js/css文件(windows)

    类似于grunt,都是基于Node.js的前端构建工具.不过gulp压缩效率更高. 工具/原料 nodejs/npm 方法/步骤 首先要确保pc上装有node,然后在global环境和项目文件中都in ...

  7. gulp打包js/css时合并成一个文件时的顺序解决

    1.可以使用插进gulp-order. 2.可以这样的写法: return gulp.src(['js/common.js','js/**/*.js']) .pipe(concat('build.js ...

  8. ASP.NET MVC 4使用Bundle的打包压缩JS/CSS

    打包(Bundling)及压缩(Minification)指的是将多个js文件或css文件打包成单一文件并压缩的做法,如此可减少浏览器需下载多个文件案才能完成网页显示的延迟感,同时通过移除JS/CSS ...

  9. MVC打包压缩JS&CSS文件调试时过滤了一些文件

    BundleTable.这个确实是比较好用,打包并压缩了CSS,使之加载时减少流量. 但是在调试的时候会疑问为何有很多JS,CSS文件无法打包,其实是因为调试时VS自动过滤了如下文件:   后台跟踪了 ...

随机推荐

  1. Yii2 中自定义实例名称

    Yii2高级模板中,以frontend 和backeend的模式来分离前后台,这样的优势是 工程可以独立开发和部署.很大程度上起到解耦作用. 如果我们希望再增加名为 [api]一个过程怎么办? 第一步 ...

  2. Couchbase N1QL

    Couchbase的 N1QL已经DP4了,在官方的文档中,Select * From like-table 这个like-table实际上指的是Couchbase中Bucket,那么对于早起版本Co ...

  3. SQL调优之降龙十八掌系列

    降龙十八掌是金庸小说的武功,招式名称取自<周易>,丐帮的镇帮绝学. 数据库性能优化是一门博大精深的学问.是一个大课题.本系列算是对数据库性能优化的一个总结,算是为2013年 划下一个句号. ...

  4. JavaScript使用DeviceOne开发实战(六)点墨真实案例

    qq群里的yan用户开发的App,基本完工大家可以看看 安装二维码是 QQ群:365443130

  5. java提高篇(十八)-----数组之一:认识JAVA数组

          噢,它明白了,河水既没有牛伯伯说的那么浅,也没有小松鼠说的那么深,只有自己亲自试过才知道!道听途说永远只能看到表明现象,只有亲自试过了,才知道它的深浅!!!!! 一.什么是数组      ...

  6. [ZigBee] 10、ZigBee之睡眠定时器

    0.概述 睡眠定时器用于设置系统进入和退出低功耗睡眠模式之间的周期.睡眠定时器还用于当进入低功耗睡眠模式时,维持定时器2 的定时. 睡眠定时器的主要功能如下: ● 24 位的定时器正计数器,运行在32 ...

  7. 使用ViwePager显示图片时如何防止内存泄露。

    内存泄露的检测. 1. 在Android Studio中运行你的应用,然后切换到输出窗口的Android tab. 2. 尽情的玩耍你的应用,最好各个功能都用到,如果是Viewpager,则多滑动一些 ...

  8. ASP.NET MVC 随想录—— 使用ASP.NET Identity实现基于声明的授权,高级篇

    在这篇文章中,我将继续ASP.NET Identity 之旅,这也是ASP.NET Identity 三部曲的最后一篇.在本文中,将为大家介绍ASP.NET Identity 的高级功能,它支持声明式 ...

  9. Senparc.Weixin.MP SDK 微信公众平台开发教程(六):了解MessageHandler

    上一篇<Senparc.Weixin.MP SDK 微信公众平台开发教程(五):使用Senparc.Weixin.MP SDK>我们讲述了如何使用Senparc.Weixin.MP SDK ...

  10. IOS 公共类-MyMBProgressUtil Progress显示

    IOS 公共类-MyMBProgressUtil Progress显示 此公共类用于显示提示框,对MBProgress的进一步封装.可以看下面的代码 接口: @interface MyMBProgre ...