gulp 学习1(一)

安装

$ npm install --global gulp-cli
$ npm install --save-dev gulp

具体新建项目步骤:https://gulpjs.com/docs/en/getting-started/quick-start

配置文件

文件名称 gulpfile.js (或者Gulpfile.js)

如果需要不同模块化打包?

  • 对于TypeScript,重命名gulpfile.ts并安装ts节点模块。
  • 对于Babel,重命名gulpfile.babel.js并安装@ babel / register模块。

大多数新版本的节点都支持TypeScript或Babel提供的大多数功能,但importexportsyntax 除外。如果只需要该语法,请重命名gulpfile.esm.js并安装esm模块。

提示:  每个任务都可以拆分成自己的文件,然后导入到gulpfile中进行合成。允许您将gulpfile.js文件替换为名为gulpfile.js包含index.js被视为a 的文件的目录gulpfile.js

创建任务 

  • 公共任务从gulpfile导出,允许它们由 gulp 命令运行。
  • 私人任务在内部使用,通常用作部分 series() 或 parallel() 组合。

 

series():要按顺序执行任务,请使用该series()方法。

parallel()​​ :对于以最大并发性运行的任务,请将它们与parallel()方法结合使用。

const { series, parallel } = require('gulp');

function clean(cb) {
  // body omitted
  cb();
}

function css(cb) {
  // body omitted
  cb();
}

function javascript(cb) {
  // body omitted
  cb();
}

/**
*1.先执行clean
*2.并发执行css,js任务
**/
exports.build = series(clean, parallel(css, javascript));

异步

gulp中task都是的异步任务

 error-first callbacks (callback回调函数)

如果您的任务没有返回任何内容,则必须使用错误优先回调来表示完成, cb的参数只有一个Error

function callbackTask(cb) {
  // `cb()` should be called by some async work
  cb(new Error('kamoo'));
}

exports.default = callbackTask;

Returning a stream(stream流)

const { src, dest } = require('gulp');

function streamTask() {
  return src('*.js')
    .pipe(dest('output'));
}

exports.default = streamTask;

Returning a promise (promise 异步)

function promiseTask() {
  return Promise.resolve('the value is ignored');
}

exports.default = promiseTask;

Returning a child process (子进程)

const { exec } = require('child_process');

function childProcessTask() {
  return exec('date');
}

exports.default = childProcessTask;

Returning an observable (rxjs 结合使用)

const { Observable } = require('rxjs');

function observableTask() {
  return Observable.of(1, 2, 3);
}

exports.default = observableTask;

Using async/await

const fs = require('fs');

async function asyncAwaitTask() {
  const { version } = fs.readFileSync('package.json');
  console.log(version);
  await Promise.resolve('some result');
}

exports.default = asyncAwaitTask;

文件操作 

src() : 读取 匹配规则的文件转换成 stream

dest() : 输出的目录

三种模式

 

文件匹配符号

无论操作系统如何\\。在glob中,\\保留为转义字符

  1. 默认模式,并将文件内容加载到内存中。插件通常以默认模式运行,许多插件不支持流模式。
  2. Stream模式主要用于操作无法容纳在内存中的大文件,如图片或电影。Stream模式主要用于操作无法容纳在内存中的大文件,如巨型图像或电影。
  3. 空模式不包含任何内容,仅在处理文件元数据时很有用.
'glob_with_uncommon_\\*_character.js'

避免使用Node.js的path.join、__dirname、__filename、process.cwd()处理 

*(单星号) :  匹配0~n个字符

匹配文件index.js,但不匹配scripts/index.js或像scripts/nested/index.js

'*.js'

**(多星号) : 匹配0~n个字符,支持跨段

会匹配文件scripts/index.jsscripts/nested/index.jsscripts/nested/twice/index.js

'scripts/**/*.js'

!(取反) :不匹配规则

匹配文件scripts/**/*.js,但不匹配scripts/vendor/**/*.js

['scripts/**/*.js', '!scripts/vendor/**']

删除重复匹配的规则

 

使用插件

  •  gulp-rename : 修改文件名
  • gulp-uglify :压缩代码
  • gulp-if : 插件的使用中加入判断条件
  • through2:再修改第三方插件请客下,使用自定义插件(inline plugin)

实时转换

 watch()

const { watch, series } = require('gulp');

function clean(cb) {
  // body omitted
  cb();
}

function javascript(cb) {
  // body omitted
  cb();
}

function css(cb) {
  // body omitted
  cb();
}

exports.default = function() {
  // You can use a single task
  watch('src/*.css', css);
  // Or a composed task
  watch('src/*.js', series(clean, javascript));
};

配置参数 

  • events: 监听变化事件

  • ignoreInitial :忽略初始化状态

  • queue :保证不会同时执行task
  • delay : 延迟执行

详细案例:  https://gulpjs.com/docs/en/getting-started/watching-files 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
### 回答1: 我的学习前端路线计划如下:1. 学习 HTML 和 CSS:学习 HTML 和 CSS 的基本知识,以及相关的技术,例如 Flexbox 和 Bootstrap。2. 学习 JavaScript:学习 JavaScript 核心语法,如变量、数组、函数、等等,以及 JavaScript 框架,如 React 或 Vue。3. 学习后端:学习后端编程语言,如 Python、Java、PHP 等,以及相关的技术,如 Node.js、MySQL 等。4. 用前端和后端技术结合:用学到的技术来构建一些简单的应用程序,例如网页、博客、社交网络等。5. 学习新的技术:不断学习新的技术,以保持对前端开发的技术领先。 ### 回答2: 学习前端的路线计划可以分为以下几个阶段: 阶段一:初级前端基础知识 1. 学习HTML和CSS的基础知识,掌握标签的使用和样式的设置。 2. 学习JavaScript的基本语法,了解变量、条件语句、循环等基本概念。 3. 学习DOM操作,掌握JavaScript中对网页元素的增删改查操作。 阶段二:进阶前端技术 1. 学习jQuery库的使用,了解其选择器、动画效果等特性。 2. 学习响应式设计,了解移动设备适配和响应式布局的原理与实践。 3. 学习CSS预处理器(如Sass或Less)的使用,提高CSS的开发效率。 阶段三:构建前端单页应用 1. 学习前端框架,如React、Angular或Vue.js,理解组件化开发的概念。 2. 学习使用Webpack等构建工具,进行代码模块化、打包和优化。 3. 学习前端路由管理,实现前端路由的跳转和页面切换。 阶段四:前端工程化和性能优化 1. 学习代码版本控制工具,如Git,掌握分支管理和团队协作。 2. 学习前端自动化工具,如Grunt、Gulp或Webpack,提升开发效率。 3. 学习性能优化的相关技术,如懒加载、CDN加速等,提高网站的加载速度。 阶段五:持续学习与实践 1. 关注前端技术的最新动态,参与各类技术社区和论坛的交流与分享。 2. 阅读优秀的前端开发博客和书籍,提升自己的技术能力。 3. 不断通过实践项目来巩固与提升技术水平。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

今天又懒得加班

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值