gulp+jsp初探

gulp

gulp簡介

gulp是前端開發過程中對代碼進行構建的工具,是自動化項目的構建利器;她不僅能對網站資源進行優化,而且在開發過程中很多重複的任務能夠使用正確的工具自動完成;使用她,我們不僅可以很愉快的編寫代碼,而且大大提高我們的工作效率。

gulp是基於Nodejs的自動任務運行器, 她能自動化地完成 javascript/coffee/sass/less/html/image/css/jsp 等文件的的測試、檢查、合併、壓縮、格式化、瀏覽器自動刷新、部署文件生成,並監聽文件在改動後重復指定的這些步驟。在實現上,她借鑑了Unix操作系統的管道(pipe)思想,前一級的輸出,直接變成後一級的輸入,使得在操作上非常簡單。

入門

安裝gulp

1.安裝node.js

gulp是基於nodejs的,必須安裝nodejs。windows直接去官網下載安裝即可。

2.安裝gulp

  • 全局安裝

    打開命令行窗口,執行命令 npm install -g gulp

  • 局部安裝

    命令行進入項目目錄,執行命令 npm install –save-dev gulp

npm是nodejs的包管理器,管理插件的安裝、卸載、升級等。

我們全局安裝了gulp,項目也安裝了gulp,全局安裝gulp是爲了執行gulp任務,本地安裝gulp則是爲了調用gulp插件的功能。

3.使用taobao鏡像
使用npm安裝node插件,連接國外網站有時會因爲網絡問題而安裝失敗。我們可以npm的淘寶鏡像,每10分鐘同步與官方同步一次

npm config set registry http://registry.npm.taobao.org/

運行gulp

1.創建package.json

package.json是nodejs配置文件。可以按照格式手動創建。也可以在項目目錄中執行命令npm init 按照提示一步一步輸入創建。

2.創建gulpfile.js

gulpfile.js是gulp項目的gulp配置文件,手動創建即可。

簡單示例:

 var gulp = require('gulp');

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

 });

3.運行gulp

在項目目錄執行命令gulp

4.插件下載及使用

在項目目錄使用npm命令下載,如下載合併文件的插件gulp-concat:

npm install –save-dev gulp-concat

使用時如下:

在gulpfile.js中添加 var concat = require(‘gulp-concat’);

var gulp = require('gulp');
var concat = require('gulp-concat');

gulp.task('default',function(){
  gulp.src('src/js/*.js')
  .pipe(concat('all.js'))
  .pipe(gulp.dest('dist/js'));
});
`````







<div class="se-preview-section-delimiter"></div>

## demo示例
**注:gulp生成了新的目標文件,與源文件進行了隔離**


1.css文件添加md5後綴






<div class="se-preview-section-delimiter"></div>

```javascript
var gulp = require('gulp');
var rev = require('gulp-rev');//生成md5後綴
var notify = require('gulp-notify');

gulp.task('css',function(){//css處理
    gulp.src('src/main/webapp/static/css/*.css')//加載匹配的文件獲取流
    .pipe(rev())//文件名稱家md5後綴
    .pipe(gulp.dest('src/main/webapp/dest/css'))//輸出目錄
    .pipe(rev.manifest({//將文件名稱後綴一json形式保存
        merge:true
    }))
    .pipe(gulp.dest('src/main/webapp/dest/rev/css'))//json文件目錄
    .pipe(notify({
        message:'css done !'    //通知執行結果
    }))
    ;
});

gulp.task("default", ['css']);

在項目目錄,執行gulp 或者 gulp css

2.合併及壓縮css

gulp.task('cssmin',function(){//合併css
    gulp.src('src/main/webapp/static/css/merge/*.css')
    .pipe(concat('merge.css'))//合併文件名稱
    .pipe(cssmin())//壓縮
    .pipe(rev())//添加md5後綴
    .pipe(gulp.dest('src/main/webapp/dest/css'))//輸出處理後文件
    .pipe(rev.manifest({//將文件信息已json形式保存至rev-manifest.json
        merge:true
    }))
    .pipe(gulp.dest('src/main/webapp/dest/rev/merge'))//json文件輸出目錄
    .pipe(notify({
        message:'merge done !'
    }))
    ;
});

3.替換

gulp.task('cssmin',function(){//合併css
    gulp.src('src/main/webapp/static/css/merge/*.css')
    .pipe(concat('merge.css'))//合併文件名稱
    .pipe(cssmin())//壓縮
    .pipe(rev())//添加md5後綴
    .pipe(gulp.dest('src/main/webapp/dest/css'))//輸出處理後文件
    .pipe(rev.manifest({//將文件信息已json形式保存至rev-manifest.json
        merge:true
    }))
    .pipe(gulp.dest('src/main/webapp/dest/rev/merge'))//json文件輸出目錄
    .pipe(notify({
        message:'merge done !'
    }))
    ;
});```


4.使用外部文件

```javascript
var config = require('./src/main/webapp/config/config.json');//引用外部配置文件

//處理css或者js文件
function doStuff(src,dest){
    return gulp.src(src)
    .pipe(rev())
    .pipe(gulp.dest(dest))
    .pipe(rev.manifest({
        merge:true
    }))
    .pipe(gulp.dest(dest))
    .pipe(notify({
        message:'doStuff done !'
    }))
    ;
}

//處理jsp
function doJsp(manifest,src,dest){
    return gulp.src([manifest+'/*.json',src])
            .pipe(revCollector({
                replaceReved:false,
                 dirReplacements: {
                'static/css': '../css'
         }
        }))
        .pipe(gulp.dest(dest))
        .pipe(notify({
            message:'doJsp done !'
        }))
        ;
}

gulp.task('appcss',function(){
    return doStuff(config.app.cssSrc,config.app.cssDest);
});
gulp.task('appreplace',['appcss'],function(){
    return doJsp(config.app.cssDest,config.app.jspSrc,config.app.jspDest);
});






<div class="se-preview-section-delimiter"></div>

5.按順序執行任務


var runSequence = require('run-sequence');//task順序執行

gulp.task('build',function(done){
    runSequence(
        ['js'],
        ['css'],
        ['cssmin'],
        ['replace'],
        done
    );

});

點此下載demo

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章