gulp学习整理

使用gulp:

1.解决Javascript和CSS的版本问题.

2.解决Javascript和CSS的依赖,在加载顺序上的问题,构建工具可以大大的减少此类问题.
3.在性能优化上,当项目有大量的JS文件时,请求的文件越多耗时越大,这样无疑拖慢了网页的速度,而gulp能够通过:文件合并,文件压缩进行解决。
4.在效率的提升上gulp能够做到:
  vendor前缀:在CSS3使用越来越多的时候,我们都知道一些CSS的特性,不同的浏览器CSS有不同的前缀,如果我们手工添加将会很繁琐,而如果使用构建工具,很多构建工具可以自动给我添加CSS的Vendor前缀.
  单元测试:JavaScript的单元测试在使用MVC或者MVVM的框架后,变得越来越容易,而单元测试是质量保证的一个很重要的手段,所以在提交之前,使用构建工具自动跑一遍我们的单元测试是非常重要的
  代码分析:我们写的JavaScript很多时候会有一些潜在的bug, 比如忘了添加分号,某个变量没有等等,使用一些JavaScript的代码分析工具,可以很好的帮我们检查一些常见的问题。
  HTML引用JavaScript或者CSS文件:比如我们需要使用Bower之类来引用前端JavaScript和CSS的第三方库,那么如果版本升级,添加移除等都用手工来修改HTML的话,第一比较耗时,第二比较容易疏漏,尤其是在我们需要切换Debug和production版本时将会有很多额外的工作,那么使用前端构建工具可以很好的解决这些问题。

gulp和grunt的比较?

grunt:

配置过于复杂
插件职责不单一 (就是不SRP)
临时文件目录多
性能慢 (因为临时文件多,自然读IO多)

gulp:
代码优先.并且相对grunt代码更加的简洁明了
基于流
1000+的插件

gulp的安装和使用:

1.Gulp安装:

首先我们需要安装nodejs,通过 -v 检查是否安装成功和版本 node -v ,npm -v

进行全局安装:npm install gulp -g

全局安装后,还需要切换到项目的根目录下,单独为单个项目进行安装下;安装如下:npm install gulp

如果想在安装的时候把gulp写进package.json文件的依赖中,则可以加上 –save-dev  例:npm install gulp --save-dev

2.gulp的4个API:

1.gulp.task:
gulp.task(name [, deps, fn])
注册一个task, name 是task的名字,deps是可选项,就是这个task依赖的tasks, fn是task要执行的函数

2.gulp.src:
gulp.src(globs[, options])
与globs 匹配的文件,可以是string或者一个数组

3.gulp.dest

定义gulp.dest(path[, options]) 就是最终文件要输出的路径,options一般不用

4.gulp.watch

gulp.watch(glob [, opts], tasks) or gulp.watch(glob [, opts, cb]) 就是监视文件的变化,然后运行指定的Tasks或者函数,这个相比Grunt需要使用插件,gulp本身就支持的很好。

3.使用gulp:

1.通过gulp init来创建并且配置package.config文件
2.手动创建gulpfile.js文件,gulp默认是调用该文件的
3.在DOS命令下下载需要的用插件如:npm install gulp-concat --save-dev
                  npm install gulp-strip-debug --save-dev
                  npm install gulp-uglify --save-dev
                  npm install gulp-jshint --save-dev
                  npm install gulp-rename --save-dev

在gulpfile中首先需要声明:var gulp = require(‘gulp‘);
             var jshint = require(‘gulp-jshint‘);
             gulp.task(‘jshint‘, function() {
               gulp.src(‘./src/scripts/*.js‘)
               .pipe(jshint())
               .pie(jshint.reporter(‘default‘));
            });
在DOS命令中执行:gulp jshint

    

理解gulp.watch()的使用:

var gulp = require(‘gulp‘);
var concat = require(‘gulp-concat‘);
var uglify = require(‘gulp-uglify‘);

var paths = {
  scripts: [‘src/js/**/*.js‘],
  css: [‘src/css/**/*.css‘],
  // 把源文件html放在src下,会自动打包到指定目录下
  html: [‘src/html/**/*.html‘]
};

gulp.task(‘scripts‘, function() {

  return gulp.src(paths.scripts)
    .pipe(concat(‘all.js‘))
    .pipe(uglify())
    .pipe(gulp.dest(‘build/js‘));
});

gulp.task(‘css‘, function() {

  return gulp.src(paths.css)
    .pipe(concat(‘all.css‘))
    .pipe(gulp.dest(‘build/css‘));
});

// 监听html文件的改变
gulp.task(‘html‘,function(){
    return gulp.src(paths.html)
        .pipe(gulp.dest(‘html/‘));
});

// Rerun the task when a file changes
gulp.task(‘watch‘, function() {
  gulp.watch(paths.scripts, [‘scripts‘]);
  gulp.watch(paths.css, [‘css‘]);
  gulp.watch(paths.html, [‘html‘]);
});

// The default task (called when you run `gulp` from cli)
gulp.task(‘default‘, [‘scripts‘, ‘css‘, ‘html‘,‘watch‘]);
时间: 2024-08-01 02:14:58

gulp学习整理的相关文章

ijwmh1-2-以前学习整理出来的学习内容--什么是变量1整型变量

崧闱旭 ijwmh1-2-以前学习整理出来的学习内容--什么是变量1整型变量

java中反射学习整理

转载请注明:http://blog.csdn.net/j903829182/article/details/38405735 反射主要是指程序可以访问,检测和修改它本身的状态或行为的一种能力. java中反射是一种强大的工具,它能够创建灵活的代码,这些代码可以在运行时装载,无须在组件之间进行链接.反射允许在编写与执行时,使程序能够接入到jvm中的类的内部信息,而不是源代码中选定的类协作的代码.这使反射成为构建灵活应用代码的主要工具.需要注意的是,如果使用不当,反射的成本会很高. package

AJAX学习整理二之简单实例

做了几个简单的实例,加载txt文本内容.加载xml文件内容,把xml文本内容转换成html表格显示.废话不多说,直接贴代码: <!DOCTYPE html> <html xmlns="http://www.w3.org/1999/html"> <head>     <title>通过ajax获取文本内容</title>     <meta charset="utf-8">     <scr

java密码学学习整理--对称加密(着重描述3des)

1.对称加密要点 对称加密算法的核心是加密和解密操作使用同一套密钥.加密的安全性不仅取决于加密算法本身,密钥管理的安全性更是重要.因为加密和解密都使用同一个密钥,如何把密钥安全地传递到解密者手上就成了必须要解决的问题. 2.des(参考自:http://baike.baidu.com/view/878529.htm?from_id=210508&type=syn&fromtitle=DES&fr=aladdin) DES 使用一个 56 位的密钥以及附加的 8 位奇偶校验位(每组的

2017年 1月 15日 指针 学习整理

有关指针的概念: 指针是一个特殊的变量,它里面存储的数值被解释为内存里的一个地址. FIrst of all:我们需要明确目标 关于指针的学习以及使用我们需要搞清楚有关指针的四个内容:指针的类型,指针所指向的类型,指针的值(或者说叫指针所指向的内存区),还有指针本身所占用的内存区(指针也是一个特殊的变量吗,它肯定也是占据内存的).接下来让我们分别进行学习. 我们先来申明几个指针的例子: 1 int *ptr; 2 char *ptr; 3 int **ptr; 4 int (*ptr)[3];

TweenMax学习整理--特有属性

TweenMax学习整理--特有属性 构造函数:TweenMax(target:Object, duration:Number, vars:Object) target:Object -- 需要缓动的对象 duration:Number -- 缓动持续时间 vars:Object -- 其它参数(特有属性29个,插件17个,公共属性10个,公共方法20个) TweenMax提供的方法大多都会返回一个TweenMax Object实例 [特有属性(29个)] 这29个参数可以直接传入第三个obje

linux学习 整理(1)

ls目录文件 uname 现实当前系统信息 clear 清理 history 历史记录 ctrl + R 搜索历史记录 ESC按完之后按. 补齐上次参数 切换root用户 su - 使用管理员权限运行命令 sudo 现实当前用户信息 id 修改当前用户密码 passwd 命令 + & 在后台运行进程 jobs查看后台作业 ctrl + Z 暂停某个程序 bg 控制进程继续在后台运行 fg 控制进程在前台运行 ctrl + C 结束当前命令 linux学习 整理(1),布布扣,bubuko.com

锋利jQuery 学习整理之 第六章 jQuery 与Ajax 的应用

1.Ajax 的XMLHttpRequest 对象 XMLHttpRequest 是Ajax 的核心,它是Ajax 实现的关键---发送异步请求.接受响应及执行回调都是通过它来完成的.XMLHttpRequest最早是在Microsoft Internet Explorer  5.0  ActiveX 组件中被引用的. 2.JQuery 中的Ajax jQuery 对Ajax 进行了封装,在jQuery中$.ajax()方法属于最底层的方法,第二层是load().$.load()和$.post(

HttpClient学习整理

HttpClient简介 HttpClient 功能介绍     1. 读取网页(HTTP/HTTPS)内容     2.使用POST方式提交数据(httpClient3)     3. 处理页面重定向     4. 模拟登录开心网     5. 提交XML格式参数     6. 访问启用认证的页面     7. 多线程模式下使用httpclient httpClient完整封装 HttpClient简介 HTTP 协议可能是现在 Internet 上使用得最多.最重要的协议了,越来越多的 Ja