一、文件操作方式—缓冲方式
缓冲方式就是源文件从内存缓冲中操作,最终得到目标文件,那么有个缺点就是例如我们看一部电影,这个电影的内存大小是10G,那么我们的内存存不下10个G,这时候我们的目标文件会出现错误。
二、文件操作方式—流方式
流方式就是将一个大的文件,拆分成一个个小的文件,中间通过管道进行传输,一个接一个的进行传输,这样的话,就不是基于内存啦,基于内存还需要考虑内存是否够用的问题。 那么Gulp 就是基于 流 的构建系统。
三、工作流程图
首先读取流会读取我们输入的内容,也就是源代码
然后转换流进行加工,就相当于我们的源代码是less/sass代码的话,需要进行编译压缩
最后写入流输出内容,就是我们的编译压缩完成后的结果,是我们的目标文件
四、Gulp文件操作
src()是读取流,源文件
pipe()是转换流,管道
dest() 是写入流,目标文件
五、Gulp的管道流
将源代码读取,然后通过多个管道(多个操作,1个管道1个操作)进行传输,然后最终成为目标文件。
六、示例
1.初始化项目(npm init --yes)
2.安装gulp包(npm i gulp -D)
3.再src目录下新建一个less文件,编写less代码
4.新建gulpfile.js文件(创建任务)
// 导入模块方式1 //const gulp = require('gulp') //导入模块方式2 通过ES6解构的方式导入 将输入和输出流的方法写到{}大括号中 const {src,dest} = require('gulp') //声明gulp任务 const style = () => { //流就是异步操作,无需再写回调函数 //return返回流 //通过gulp.src方法进行读取流操作,然后通过pipe方法进行管道传输,传输后通过dest方法进行输出 //return gulp.src('src/main.less').pipe(gulp.dest('dist')) //通过es6解构方式简写 这里的base是拓展参数,这里指定src说明是将输出的文件以src目录的结构展示 //这里src下,还有一个styles文件,所以我们生成的dist目录,它也有tyles目录,文件在styles下。 return src('src/styles/main.less',{ base: 'src'}).pipe(dest('dist')) } //导出任务 module.exports = { style }
5.执行任务(gulp 任务名)
通过执行任务后,我们发现我们src读取输入的less文件,通过执行后,写入输出到了dist目录下。