Web前端构建工具---Gulp

Posted IT综合技术服务

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Web前端构建工具---Gulp相关的知识,希望对你有一定的参考价值。

前言 

  现在的前端开发已经不再仅仅只是静态网页的开发了,日新月异的前端技术已经让前端代码的逻辑和交互效果越来越复杂,更加的不易于管理,模块化开发和预处理框架把项目分成若干个小模块,增加了最后发布的困难,没有一个统一的标准,让前端的项目结构千奇百怪。前端自动化构建在整个项目开发中越来越重要。

        前端自动化构建工具有很多,我知道的就有Bower、Gulp、Grunt、WebPack等。本文将介绍使用Gulp来完成js、css、压缩及文件合并、浏览器同步(即修改了页面代码或者css立马在浏览器中呈现)。


实现

        要想实现以上的功能需要安装几个组件,组件的安装依赖node.js、npm;

所以事先请安装好Node.js、npm是 Node 的包管理器。安装其它组件必须要用到npm命令。


程序目录结构



node_modules:使用npm安装的所有依赖的node包全下载在这个文件夹中。

web:站点的根目录

webuild:js、css文件压缩后的输出目录

websrc:静态文件目录

websrcless:预处理Less文件目录

webindex.html:初始页面

gulpfile.js:运行gulp的配置文件。

package-lock.json:node包管理器的模块依赖关系配置文件


安装Gulp

        假设您已安装好node和npm,本文不再描述如何安装Node和npm。可自行去官方网站下载安装。

win+r 打开命令行,cd到项目的根目录。依次执行下面的步骤。

1、全局安装gulp

     npm install --global gulp 

2、在项目中安装gulp。(注:这是将该组件安装在项目根据目录,并在        package-lock.json中自动配置好依赖)

     npm install gulp --save-dev

3、在项目根目录下创建一个名为 gulpfile.js 的文件

    var gulp = require('gulp');

    gulp.task('default', function() {

      // 将你的默认的任务代码放在这

    });

4、运行gulp。将执行默认的task。


至此gulp已安装完成。为后续的使用打好基础了。


代码编写

1、index.html 在根目录新建index.html

Web前端构建工具---Gulp

2、测试less文件编写

在websrcless目录新建一个less文件命名为myapp.less;名称随意

less文件中内容如下:

@base: #EDEDED;
.menu{
color:@base;
font-size:16px;
background-color: @base;
}

3、新建测试压缩的css文件 app.css和index.css

index.css

body{
font-size: 12px;
color: #333;
}
ul>li{
display: inline-block;
height: 30px;
padding: 10px;
line-height: 30px;
}
a{
text-decoration: blink;
color: #333333;
}


app.css

*{
margin: 0;
padding: 0;
}
.container{
width: 70%;
background-color: #fff;
}

4、新建测试压缩js文件

app.js

!function(){
var app={
show:function(mes){
console.log(mes);
console.log('123');
}
};
window.app = app;
}();

index.js

(function($app){
var Page = function(){};
Page.prototype.Say=function(mes){
$app.show(mes);
};
var myPage = new Page();
myPage.Say('Hello Gulp 1232');
}(window.app))

5、在index.html页面中引用压缩过后的js和css

<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Hello Gulp</title>
<link href="build/styles/myStyle.min.css" rel="stylesheet">
</head>
<body>
<div class="container" style="height: 300px" >
<ul>
<li class="menu">
<a href="http://www.baidu.com" target="_blank">百度</a>
</li>
<li class="menu">
<a href="http://www.sina.com.cn" target="_blank">新浪</a>
</li>
<li class="menu">
<a href="http://www.163.com" target="_blank">网易</a>
</li>
</ul>
</div>
<script src="build/js/app.min.js"></script>
<script src="build/js/index.min.js"></script>
</body>
</html>

6、安装Gulp所依赖的组件

a)、npm install gulp-connect --save-dev  该组件相当于一个web服务器

b)、npm install gulp-less --save-dev gulp利用该组件将less文件编译成css文件

c)、npm install gulp-minify-css --save-dev css文件进行压缩组件

d)、npm install gulp-concat --save-dev 文件合并组件

e)、npm install gulp-uglify --save-dev js文件压缩组件

f)、npm install gulp-rename --save-dev 文件重命名组件


7、编写gulpfile.js

gulpfile.js是gulp的运行时任务配置js文件,gulp会根据我们配置的任务,来执行。

以下代码逻辑解释如下:

首先引入gulp基础库,然后再引入 了我们在上一节讲到的几个需要用到的组件。

接下来,给gulp添加了一个任务servers ,在该任务中会创建一个服务器端口并监听。gulp.watch() 是监听某个目录下文件发生变化时,会执行里面的任务,此处为 当文件发生变化将执行less、minifycss、minifyjs、reload任务。

最后面是各任务的内部配置,相对比较简单,不再赘述!


// 引入 gulp及组件
var gulp=require('gulp'), //gulp基础库
   gulp_connect = require('gulp-connect'),//服务器连接监听组件
   gulp_less = require('gulp-less'),//less编译器组件
   minifycss=require('gulp-minify-css'),//css压缩
   concat=require('gulp-concat'), //合并文件
   uglify=require('gulp-uglify'), //js压缩
   rename=require('gulp-rename'); //文件重命名
   
var    notify=require('gulp-notify'); //提示
gulp.task('servers',function(){
//创建一个服务器端口 默认8080
   gulp_connect.server({
root:'web',
livereload:true
   });
//
gulp.watch('web/**/*.*',
['less','minifycss','minifyjs','reload']);
//监听web目录下的文件变化,当有变化时候执行[]中的任务
});
//部署浏览器自动刷新任务
gulp.task('reload',function(){
gulp.src('web/**/*.*')
.pipe(gulp_connect.reload());
});
//部署less编译任务
gulp.task('less',function(){
gulp.src('web/src/less/*.less')
.pipe(gulp_less()).pipe(minifycss())
.pipe(gulp.dest('web/src/css/'));
});
//css处理任务
gulp.task('minifycss',function(){
return gulp.src('web/src/css/*.css') //设置css
       .pipe(concat('myStyle.css')) //合并css文件到"myStyle"
       .pipe(gulp.dest('web/build/styles')) //设置输出路径
     .pipe(rename({suffix:'.min'}))//修改文件名
     .pipe(minifycss()) //压缩文件
     .pipe(gulp.dest('web/build/styles'))//输出文件目录
     .pipe(notify({message:'css task ok'})); //提示成功
});

//JS处理任务
gulp.task('minifyjs',function(){
return gulp.src(['web/src/js/index.js',
'web/src/js/app.js']) //选择合并的JS
       .pipe(rename({suffix:'.min'})) //重命名
       .pipe(uglify()) //压缩
       .pipe(gulp.dest('web/build/js')) //输出
       .pipe(notify({message:"js task ok"})); //提示
});





以上是关于Web前端构建工具---Gulp的主要内容,如果未能解决你的问题,请参考以下文章

前端构建工具gulp

19前端 | 前端构建工具Gulp

前端构建工具gulp

前端构建工具gulp

前端自动构建工具-gulp

前端进阶之路-二如何用gulp搭建一套web前端开发框架