1、Gulp

  • 基于node平台开发的前端构建工具
  • 将机械化操作编写成任务,想要执行机械化操作时执行一个命令行命令任务就能自动执行力,用机械代替手工,提高开发效率

2、Gulp能做什么

  • 项目上线,HTML,CSS,JS文件压缩合并
  • 语法转换(es6,less...)
  • 公共文件抽离
  • 修改文件浏览器自动刷新

3、Gulp使用步骤

1.使用 npm install gulp命令下载gulp库文件
2.在项目根目录下建立gulpfile.js文件
3.重构项目的文件夹结构src目录放置源代码文件,dist目录放置构建文件
4.在gulpfile.js文件中编写任务
5.在命令行工具中执行gulp任务

4、Gulp中提供的方法

  • gulp.src():获取任务要处理的文件
  • gulp.dest():输出文件
  • gulp.task():建立gulp任务
  • gulp.watch():监控文件的变化
//gulpfile.js文件中引用gulp模块
const gulp = require('gulp');

//建立任务
//两个参数,1.任务名称 2.回调函数
gulp.task('first',() => {
    console.log('第一个gulp执行了');
    //1.使用gulp.src获取要处理的文件
    gulp.src('./src/css/index.css')
    //2.将获取的文件传出到dist目录
        .pipe(gulp.dest('./dist/css'));
});

1.安装一个命令行工具

npm install gulp-cli -g

2.使用下面命令执行任务(gulp 任务名)

gulp first

3.此时dist目录下面就有传进去的文件了

5、Gulp常用插件

  • gulp-htmlmin:html文件压缩
  • gulp-csso:压缩css
  • gulp-babel:JavaScript语法转化
  • gulp-less:less语法转化
  • gulp-uglify:压缩混淆JavaScript
  • gulp-file-include:公共文件包含
  • browsersync:浏览器实时同步

例如,我们对html代码进行压缩
1.运用下面命令下载gulp-htmlmin插件

npm install gulp-htmlmin

2.gulpfile.js中进行编辑

const gulp = require('gulp');
const htmlmin = require('gulp-htmlmin');

gulp.task('htmlmin',() => {
    gulp.src('./src/*.html')
        .pipe(htmlmin({ collapseWhitespace: true}))
        .pipe(gulp.dest('dist'));
});

3.运行以下命令,之后dist目录下就会出现压缩了的html的文件

gulp htmlmin

6、package.js文件

6.1 node_modules文件夹的问题

  • 文件夹以及文件过多过碎,当我们项目整体拷贝给别人的时候,传输速度会很慢
  • 复杂的模块依赖关系需要被记录,确保模块的版本和当前一致,否则会导致当前项目运行报错

6.2 package.json文件的作用

  • 项目描述文件,记录了当前项目信息,例如项目名称、版本、作者、github地址、当前项目依赖哪些第三方模块等,使用 npm init -y命令生成
  • 当我们将项目整体拷贝给别人的时候,不需要拷贝 node_modules文件夹,只需要在当前目录下执行 npm install命令,该文件夹就会自动生成,这样我们就能解决第一个问题了

6.3 项目依赖

  • 在项目开发阶段和线上运营阶段,都需要依赖的第三方包,称为项目依赖
  • 使用npm install 包名下载的文件会默认添加到package.json文件的dependencies字段中
{
    "dependencies": {
        "jquery": "^3.3.1"
    }
}

6.4开发依赖

  • 在项目的开发阶段需要依赖,线上运营的阶段不需要依赖的第三方包,称为开发依赖
  • 使用npm install 包名 --save-dev命令将包添加到package.json文件的devDependencies字段中
{
    "devDependencies":{
        "gulp":"^3.9.1"
    }
}

6.5 package-lock.json文件

  • 锁定包的版本,确保再次下载不会因为包版本不同而产生问题
  • 加快下载速度

7、Node.js模块加载机制

7.1 模块查找规则-当模块拥有路径但没有后缀时

require('./find.js');
require('/find');
  • require方法根据路径查找模块,如果是完整路径,直接引入模块
  • 如果模块后缀省略,先找同名js文件再找同名js文件夹
  • 如果找到同名文件夹,找同名文件夹中的index.js
  • 如果文件夹中没有index.js就会去当前文件夹中的package.js文件中查找main选项中的入口文件
  • 如果指定的入口文件不存在或者没有指定入口文件就会报错,模块没有找到

7.2 模块查找规则-当模块没有路径且没有后缀时

require('find');
  • Node.js会假设它是系统模块
  • Node.js会去node_modules文件夹中
  • 首先看是否有改名字的js文件
  • 再看是都有改名字的文件夹
  • 如果是文件夹看里面是否有index.js文件
  • 如果没有index.js查看该文件夹中的package.json中的main选项确定模块入口文件
  • 否则找不到会报错
Last modification:March 30th, 2020 at 01:20 am
如果觉得我的文章对你有用,请随意赞赏