欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

如何編寫(xiě)javascript的gulp插件

 更新時(shí)間:2017年02月07日 08:37:29   作者:猴子  
本文主要介紹了使用PMD進(jìn)行代碼審查的方法,具有很好的參考價(jià)值,下面跟著小編一起來(lái)看下吧

很久以前,我們?cè)?細(xì)說(shuō)gulp"隨筆中,以壓縮JavaScript為例,詳細(xì)地講解了如何利用gulp來(lái)完成前端自動(dòng)化。

再來(lái)短暫回顧下,當(dāng)時(shí)除了借助gulp之外,我們還利用了第三方gulp插件”gulp-uglify”,來(lái)達(dá)到壓縮JavaScript文件的目的。

代碼如下:

今兒,我們的重點(diǎn)就是,自己也來(lái)實(shí)現(xiàn)一個(gè)gulp插件。

正文

其實(shí),如果只是單純地想要編寫(xiě)一個(gè)gulp插件不難,可以借助through2或者through-gulp來(lái)編寫(xiě)(through-gulp是基于through2開(kāi)發(fā)的)。

例如,我們想要接下來(lái)即將編寫(xiě)的插件(暫取名為modify),實(shí)現(xiàn)這樣的功能:將指定html文件中的{{…}},全部替換成'Monkey 2 Dorie'。

如下:

下面我們將利用through2以及through-gulp一一道來(lái)。

**through2**

'use strict'
var through2 = require('through2');
module.exports = modify;
function modify(){
 return through2.obj(function(file, encoding, cb){
 //如果文件為空,不做任何操作,轉(zhuǎn)入下一個(gè)操作,即下一個(gè)pipe
 if(file.isNull()){
 console.log('isNull');
 this.push(file);
 return cb();
 }
 //插件不支持對(duì)stream直接操作,拋出異常
 if(file.isStream()){
 console.log('isStream');
 this.emit('error');
 return cb();
 }
 //內(nèi)容轉(zhuǎn)換,處理好后,再轉(zhuǎn)成Buffer形式
 var content = versionFun(file.contents.toString());
 file.contents = new Buffer(content);
 //下面這兩句基本是標(biāo)配,可參考through2的API
 this.push(file);
 cb();
 });
}
function versionFun(data){
 return data.replace(/{{something}}/, ' Monkey 2 Dorie ');
}

**through-gulp**

'use strict'
var through = require('through-gulp');
module.exports = modify;
function modify(){
 var stream = through(function(file, encoding, callback){
 //如果文件為空,不做任何操作,轉(zhuǎn)入下一個(gè)操作,即下一個(gè)pipe
 if(file.isNull()){
 console.log('file is null!');
 this.push(file);
 return callback(); 
 }
 //插件不支持對(duì)stream直接操作,拋出異常
 if(file.isStream()){
 console.log('file is stream!');
 this.emit('error');
 return callback(); 
 }
 //內(nèi)容轉(zhuǎn)換,處理好后,再轉(zhuǎn)成Buffer形式
 var content = versionFun(file.contents.toString('utf-8'));
 file.contents = new Buffer(content, 'utf-8');
 this.push(file);
 callback();
 }, function(callback){
 console.log('處理完畢!');
 callback();
 });
 return stream;
}
function versionFun(data){
 return data.replace(/{{something}}/, ' Monkey 2 Dorie ');
}

詳情代碼見(jiàn)github.

拓展閱讀

[1]、through-gulp

[2]、gulp規(guī)范

[3]、gulp高級(jí)技巧

以上就是本文的全部?jī)?nèi)容,希望本文的內(nèi)容對(duì)大家的學(xué)習(xí)或者工作能帶來(lái)一定的幫助,同時(shí)也希望多多支持腳本之家!

相關(guān)文章

  • Spring中的HandlerMapping執(zhí)行流程詳解

    Spring中的HandlerMapping執(zhí)行流程詳解

    這篇文章主要介紹了Spring中的HandlerMapping執(zhí)行流程詳解,HandlerMapping在Spring MVC框架的jar包下面,他是處理映射器,為用戶發(fā)送的請(qǐng)求找到合適的Handler Adapter,它將會(huì)把請(qǐng)求映射為HandlerExecutionChain對(duì)象,需要的朋友可以參考下
    2023-08-08
  • java使用Jsoup連接網(wǎng)站超時(shí)的解決方法

    java使用Jsoup連接網(wǎng)站超時(shí)的解決方法

    jsoup是一個(gè)非常好的解析網(wǎng)頁(yè)的包,用java開(kāi)發(fā)的,提供了類似DOM,CSS選擇器的方式來(lái)查找和提取文檔中的內(nèi)容,提取文檔內(nèi)容時(shí)會(huì)出現(xiàn)超時(shí)的情況,解決方法可看下文
    2013-11-11
  • java基礎(chǔ)之Collection與Collections和Array與Arrays的區(qū)別

    java基礎(chǔ)之Collection與Collections和Array與Arrays的區(qū)別

    這篇文章主要介紹了java基礎(chǔ)之Collection與Collections和Array與Arrays的區(qū)別的相關(guān)資料,本文主要說(shuō)明兩者的區(qū)別以防大家混淆概念,需要的朋友可以參考下
    2017-08-08
  • java Lombok之@Accessors用法及說(shuō)明

    java Lombok之@Accessors用法及說(shuō)明

    這篇文章主要介紹了java Lombok之@Accessors用法及說(shuō)明,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2023-03-03
  • Spring?框架中的?Bean?作用域(Scope)使用詳解

    Spring?框架中的?Bean?作用域(Scope)使用詳解

    Spring框架中的Bean作用域(Scope)決定了在應(yīng)用程序中創(chuàng)建和管理的Bean對(duì)象的生命周期和可見(jiàn)性。本文將詳細(xì)介紹Spring框架中的Bean作用域的不同類型,包括Singleton、Prototype、Request、Session和Application,并解釋它們的特點(diǎn)和適用場(chǎng)景。
    2023-09-09
  • 最新評(píng)論