gulp learning note
为啥写这一片文章呢?
主要是为了温故而知新和分享,也是为了更加促进自己的学习!
前端自动化工具很多 有grunt gulp webpack 等
这次主要分享下gulp的学习经验,让自己更好的总结和学习,好了下面开始啦哈哈。
首先说一个问题是我们为啥要使用自动化工具也叫构建工具,看名字应该就猜的差不多了吧,之所以叫做工具肯定是要用它了,用它可以简化流程操作,帮助我们更好的完成项目。
在没有自动化工具甚至是编辑器的时候我们是怎样工作的呢,相信大家可能都是一样的,比如你要 新建一个css images 和一个js文件夹,然后开始你的html结构的编写
写结构从头部写到底部 然后开始写样式 一个个类名的写 一个类名套另一个类名 层层的套 以防止 类名的重复 造成样式的错误 还可能有很长很长的 兼容的css样式 比如一下-webkit -ms -o 等
前缀
可能你在工作中 还有 时长更改的时候 比如某某某跟你说 这个一系列的字大了全部 减小2像素 或者某颜色加深 或者某一个地方宽度减少 或者你需要一个服务器,想减少手动刷新次数等等 可能 这时候 就会比较麻烦,牵一发而动全身,可能你需要将 类名全部提出来 然后覆盖以前的样式 来达到效果
而且 写代码的时候 难免会错误啊 比如 掉了一个div或者div嵌套错了 又或者 css样式里面有些错误等 这时候 你的救星就来了 前端自动化工具来了!
扩展阅读 http://www.cnblogs.com/ihardcoder/p/5378290.html(浅谈前端工程化)
他可能会跟你说 你安心做你 的技术活 我来处理这些流程啊 检测代码校验 打包压缩等工作.ok 说干就干,let's do it!!!
gulpjs使用的是nodejs中stream来读取和操作数据
1.安装好Node (tip: 你需要去简单去学习一下node 包管理工具和 一下node 的命令行)
$ npm install --global gulp
(ps: $ 符号并不是 要输入到cmd 控制台里的符号。。。我刚开始的时候 装的时候把 $号打进去 怎么都报错。。。。好蠢。。。 )
2.安装项目目录下的Gulp
$ npm install --save-dev gulp
3.文件结构 首先你需要package.json ,gulpfile.js(前2个文件都在根目录) 和src文件
package.json 里面是一个json对象, 文件件中所列出的每个依赖来自动安装适当版本的依赖; 如果package.json 里面 有依赖信息可以直接通过 npm install 安装相应的包 如果没有 package.json 文件可以通过使用 npm init 来创建 package.json 文件
gulpfile.js gulp里定义的任务都在这里
src文件 这里就是开放环境的文件目录了 主要就是你的 sass,js,images,css,html 等文件
dist 生产环境的文件目录 主要就是打包压缩后 最后准备上线的文件都放这里面
4.gulp的API介绍
你只需要知道四个 方法你就应该 会了哈哈 是不是很容易 gulp.task(),gulp.src(),gulp.dest(),gulp.watch()
Gulp中,使用的是Nodejs中的stream(流),首先获取到需要的stream,然后可以通过stream的pipe()方法把流导入到你想要的地方来做一些操作;
gulp.src()方法正是用来获取流的
gulp.dest()方法是用来写文件的
gulp.task方法用来定义任务
gulp.task('mytask', ['array', 'of', 'task', 'names'], function() { //定义一个有依赖的任务
// Do something
});
gulp.watch()用来监视文件的变化,当文件发生变化后,我们可以利用它来执行相应的任务
好了 打个简单的比分 gulp是这么工作的 首先你需要新建一个任务 gulp.task('任务名',function(){做任务怎么做任务}),建立了任务后要告诉他怎么做任务
首先gulp是stream流嘛,可以这么理解首先你要有水源(原材料) 这个时候你继续用获取他用 gulp.src() 然后你需要处理好多好多的操作加工你的水源(原材料),使用一个个管子
pipe()方法 利用插件进行一些加工一个管子就做一件事,事情做完了你需要 把加工好的东西放到另一个储藏罐子里 用gulp.dest()来导出到罐子里(写文件);这就是一个任务具体是怎么写的抽象思考了
知道了这些,我们还差一些 加工解决 的方法 这时候就需要插件了
分享一个有常用插件的清单列表 http://www.cnblogs.com/-ding/p/5972162.html
有了插件我们就可以 简化我们的工作流程了 比如
搭建本地web服务器
编译Sass
代码校验
css加前缀
tinypng
代码美化
每当保存更改,自动刷新浏览器
优化&压缩资源
生成雪碧图
等等一系列的功能 来解放我们的生产力了
简直太棒了!!!(插件的介绍就不在这里分享了,可以去插件的github或者 npm上看看虽然大多数是英文但是 还是可以看的差不多的)
好了这次的分享及到这里,欢迎大家多多指导交流,谢谢大家。
gulp learning note的更多相关文章
- Learning note for Binding and validation
Summary of my learning note for WPF Binding Binding to DataSet. when we want to add new record, we s ...
- Learning Note: SQL Server VS Oracle–Database architecture
http://www.sqlpanda.com/2013/07/learning-note-sql-server-vs.html This is my learning note base on t ...
- Course Machine Learning Note
Machine Learning Note Introduction Introduction What is Machine Learning? Two definitions of Machine ...
- shell learning note
shell learning note MAIN="/usr/local/" # 变量大写 STATUS="$MAIN/status" # 美元符加字符串是 ...
- 2014/09/30 Learning Note
Vbird Linux: Vim Learning: http://linux.vbird.org/linux_basic/0310vi.php Bash Shell: http://linux.vb ...
- [Angular2] @Ngrx/store and @Ngrx/effects learning note
Just sharing the learning experience related to @ngrx/store and @ngrx/effects. In my personal opinio ...
- Machine Learning Note Phase 1( Done!)
Machine Learning 这是第一份机器学习笔记,创建于2019年7月26日,完成于2019年8月2日. 该笔记包括如下部分: 引言(Introduction) 单变量线性回归(Linear ...
- Inheritance Learning Note
好几天没来学习了,昨晚把继承的又整理了一下.想把整理后的东西发到hexo博客上来,却发现命令行又失效了.前几天明明是好的,这几天又没有进行任何操作,网上搜了一下也没有招到合适的解决办法,无奈只能重装了 ...
- Machine Learning Note
[Andrew Ng NIPS2016演讲]<Nuts and Bolts of Applying Deep Learning (Andrew Ng) 中文详解:https://mp.weixi ...
随机推荐
- .Net Core2.0 + Nginx + CentOS 部署
准备把项目往Linux上迁移,整个流程跑了一下,也遇到无数个坑...以下为亲测并修改后的完整流程... 安装ZIP yum install -y unzip zip Putty:WINDOWS上传文件 ...
- Go语言备忘录:基本数据结构
本文内容是本人对Go语言的变量.常量.数组.切片.映射.结构体的备忘录,记录了关键的相关知识点,以供翻查. 文中如有错误的地方请大家指出,以免误导!转摘本文也请注明出处,多谢! 参考书籍<Go语 ...
- CentOS6.x服务器OpenSSH平滑7.3p版本——拒绝服务器漏洞攻击
对于新安装的Linux服务器,默认OpenSSH及OpenSSL都不是最新的,需要进行升级以拒绝服务器漏洞攻击.本次介绍的是升级生产环境下CentOS6.x系列服务器平滑升级OpenSSL及OpenS ...
- Net知识图谱
对于Web系统开发来说,Net其实也是有好多知识点需要学的,虽然目前JAVA是主流,就业市场比较大,但Net也在积极的拥抱开源,大Net Core 2 出来了,这无疑给Net开发者带来更大的希望,好了 ...
- Relocation 状态压缩DP
Relocation Time Limit:1000MS Memory Limit:65536KB 64bit IO Format:%I64d & %I64u Submit ...
- uva11401
题目大意:计算从1,2,3,...,n中选出3个不同的整数,使得以它们为边长可以构成三角形的个数. 思路:用一般的方法需要三重循环,时间复杂度为O(n^3),肯定超时,因此可用数学的方法对问题进行分析 ...
- Jmeter脚本录制方法(一)——分别使用Badboy录制和Jmeter自带的代理服务器录制
Jmeter录制方式分三种,分别是:使用Badboy录制.Jmeter自带的代理服务器录制和手工录制,今天先介绍前两种录制方法. Badboy录制 Badboy是用C++开发的动态应用测试工具, 其拥 ...
- 21.Linux-写USB键盘驱动(详解)
本节目的: 根据上节写的USB鼠标驱动,来依葫芦画瓢写出键盘驱动 1.首先我们通过上节的代码中修改,来打印下键盘驱动的数据到底是怎样的 先来回忆下,我们之前写的鼠标驱动的id_table是这样: 所以 ...
- Hadoop(四)HDFS集群详解
前言 前面几篇简单介绍了什么是大数据和Hadoop,也说了怎么搭建最简单的伪分布式和全分布式的hadoop集群.接下来这篇我详细的分享一下HDFS. HDFS前言: 设计思想:(分而治之)将大文件.大 ...
- ImageSharp一个专注于NetCore平台图像处理的开源项目
今天大家分享的是一个专注于NetCore平台图像处理的开源项目,老实说为这篇文章取名字想了5分钟,可能是词穷亦或是想更好的表达出这款开源项目的作用:这个项目在图像处理方面有很多功能,如:缩放,裁剪,绘 ...