继续浏览精彩内容
慕课网APP
程序员的梦工厂
打开
继续
感谢您的支持,我会继续努力的
赞赏金额会直接到老师账户
将二维码发送给自己后长按识别
微信支付
支付宝支付

gulp学习

指甲盖
关注TA
已关注
手记 25
粉丝 2
获赞 41

Gulp

基于node平台开发的前端构建工具

将机械化操作编写成任务,想要执行机械化操作时执行一个命令行命令,任务就能自动执行了

用机械代替手工,提高开发效率


gulp的作用

1.项目上线,HTML,CSS,JS 文件压缩合并

2.语法转换(es6,less...)

3.公共文件抽离

4.修改文件浏览器自动刷新


Gulp使用方法

1.使用 npm install gulp 下载gulp库文件

2.在项目根目录下建立 gulpfile.js 文件

3.重构项目的文件夹结构 src目录放置源代码文件 dist目录放置构建后文件

4.在 gulpfile.js 文件中编写任务

5.在命令行工具中执行 gulp 任务


gulp 中提供的方法

1.gulp.src():获取任务要处理的文件

2.gulp.dest():输出文件

3.gulp.task():建立gulp任务

4.gulp.watch():监控文件的变化


安装gulp命令行工具 :npm install gulp-cli -g

gulp使用实例:

1.在gulpfile.js中引用gulp模块

const gulp = require('gulp');

2.使用gulp.task建立任务

//1.任务的名称
//2.任务的回调函数
gulp.task('first',() => {
  console.log("人生中的第一个gulp任务执行了");
  //1.使用gulp.src获取要处理的文件
  gulp.src('./src/css/index.css').pipe(gulp.dest('dist/css'));
})

注意:现在这样写会报下面的错误

http://img3.sycdn.imooc.com/5ec1dc58000174a807120087.jpg

原因:因为gulp不再支持同步任务.因为同步任务常常会导致难以调试的细微错误,例如忘记从任务(task)中返回 stream。

当你看到 "Did you forget to signal async completion?" 警告时,说明你并未使用前面提到的返回方式。你需要使用 callback 或返回 stream、promise、event emitter、child process、observable 来解决此问题。

修改成下面的样子就可以了:

gulp.task('first',(done) => {
  console.log("人生中的第一个gulp任务执行了");
  //1.使用gulp.src获取要处理的文件
  gulp.src('./src/css/index.css').pipe(gulp.dest('dist/css'));
  done()
})

gulp插件

    1.gulp-htmlmin:html文件压缩   https://www.npmjs.com/package/gulp-htmlmin

    2.gulp-csso:压缩css  https://www.npmjs.com/package/gulp-csso

    3.gulp-babel:JavaScript语法转化,es6转成es5

    4.gulp-less:less语法转化成css  https://www.npmjs.com/package/gulp-less

    5.gulp-uglify:压缩混淆JavaScript

    6.gulp-file-include:公共文件包含    https://www.npmjs.com/package/gulp-file-include

    7.browsersync:浏览器实时同步

插件使用:

1.下载插件

npm install gulp-htmlmin
npm install gulp-file-include

2.gulpfile.js中引用插件

const htmlmin = require('gulp-htmlmin');
const fileinclude = require('gulp-file-include');

3.编写任务,调用插件

//html任务
//1.html文件中代码的压缩操作
//2.抽取html文件中的公共代码
gulp.task('htmlmin',(done) => {
  gulp.src('./src/*.html')//*代表src下所有的HTML文件
          .pipe(fileinclude())//抽离公共代码
      //压缩HTML文件中的代码
      .pipe(htmlmin({ collapseWhitespace: true }))//collapseWhitespace:代表压缩html代码是否压缩空格
      .pipe(gulp.dest('dist'))
      done()
})

注意:虽然任务是压缩文件代码和抽离公共代码的顺序,但是我们做任务是要先抽离公共代码,再去压缩文件代码

我们把公共代码放在src目录下的common目录中

http://img1.sycdn.imooc.com/5ec3543b0001ef9607160479.jpg

公共代码抽离出来后,在原本的HTML文件中引入公共代码

@@include('./common/header.html')

这样执行了htmlmin这个任务后就会看到,压缩后的文件中也有了公共的头部

http://img1.sycdn.imooc.com/5ec35af90001fa1d13140472.jpg


打开App,阅读手记
0人推荐
发表评论
随时随地看视频慕课网APP