最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

如何編寫javascript的gulp插件

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

很久以前,我們在"細說gulp"隨筆中,以壓縮JavaScript為例,詳細地講解了如何利用gulp來完成前端自動化。

再來短暫回顧下,當時除了借助gulp之外,我們還利用了第三方gulp插件”gulp-uglify”,來達到壓縮JavaScript文件的目的。

代碼如下:

今兒,我們的重點就是,自己也來實現(xiàn)一個gulp插件。

正文

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

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

如下:

下面我們將利用through2以及through-gulp一一道來。

**through2**

'use strict'
var through2 = require('through2');
module.exports = modify;
function modify(){
 return through2.obj(function(file, encoding, cb){
 //如果文件為空,不做任何操作,轉(zhuǎn)入下一個操作,即下一個pipe
 if(file.isNull()){
 console.log('isNull');
 this.push(file);
 return cb();
 }
 //插件不支持對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);
 //下面這兩句基本是標配,可參考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)入下一個操作,即下一個pipe
 if(file.isNull()){
 console.log('file is null!');
 this.push(file);
 return callback(); 
 }
 //插件不支持對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 ');
}

詳情代碼見github.

拓展閱讀

[1]、through-gulp

[2]、gulp規(guī)范

[3]、gulp高級技巧

以上就是本文的全部內(nèi)容,希望本文的內(nèi)容對大家的學習或者工作能帶來一定的幫助,同時也希望多多支持腳本之家!

相關文章

  • Spring Boot外部化配置實戰(zhàn)解析

    Spring Boot外部化配置實戰(zhàn)解析

    這篇文章主要介紹了Spring Boot外部化配置實戰(zhàn)解析,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2019-06-06
  • Mybatis插入數(shù)據(jù)后自增id獲取方式

    Mybatis插入數(shù)據(jù)后自增id獲取方式

    在MyBatis中,獲取自增主鍵可以通過useGeneratedKeys屬性或selectKey節(jié)點實現(xiàn),useGeneratedKeys設置時,需設置keyProperty指定主鍵字段,數(shù)據(jù)庫表也要相應設置,selectKey節(jié)點可在插入操作后,通過特定SQL查詢獲得主鍵
    2024-09-09
  • JXLS根據(jù)模板導出Excel實例教程

    JXLS根據(jù)模板導出Excel實例教程

    這篇文章主要為大家詳細介紹了JXLS根據(jù)模板導出Excel實例教程,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2018-12-12
  • SpringBoot中webSocket實現(xiàn)即時聊天

    SpringBoot中webSocket實現(xiàn)即時聊天

    這篇文章主要介紹了SpringBoot中webSocket實現(xiàn)即時聊天,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2021-04-04
  • spring聲明式事務@Transactional底層工作原理

    spring聲明式事務@Transactional底層工作原理

    這篇文章主要為大家介紹分析spring聲明式事務@Transactional底層工作原理,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步早日升職加薪
    2022-02-02
  • Java實現(xiàn)的求逆矩陣算法示例

    Java實現(xiàn)的求逆矩陣算法示例

    這篇文章主要介紹了Java實現(xiàn)的求逆矩陣算法,涉及java基于數(shù)組的矩陣遍歷與運算相關操作技巧,需要的朋友可以參考下
    2017-09-09
  • javaWeb使用驗證碼實現(xiàn)簡單登錄

    javaWeb使用驗證碼實現(xiàn)簡單登錄

    這篇文章主要為大家詳細介紹了javaWeb使用驗證碼實現(xiàn)簡單登錄,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2019-08-08
  • 深入淺出Java mvc_動力節(jié)點Java學院整理

    深入淺出Java mvc_動力節(jié)點Java學院整理

    這篇文章主要為大家詳細介紹了MVC的基礎知識,MVC是一個框架模式,它強制性的使應用程序的輸入、處理和輸出分開,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2017-08-08
  • SpringBoot啟動訪問localhost:8080報錯404的解決操作

    SpringBoot啟動訪問localhost:8080報錯404的解決操作

    這篇文章主要介紹了SpringBoot啟動訪問localhost:8080報錯404的解決操作,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2020-10-10
  • Java利用iTextPDF庫實現(xiàn)制作PDF表格模板并填充數(shù)據(jù)

    Java利用iTextPDF庫實現(xiàn)制作PDF表格模板并填充數(shù)據(jù)

    這篇文章主要為大家詳細介紹了如何通過Java的iTextPDF庫制作一個PDF表格模板并填充數(shù)據(jù),文中的示例代碼講解詳細,感興趣的小伙伴快跟隨小編一起學習一下吧
    2023-12-12

最新評論

庆阳市| 溆浦县| 五莲县| 会宁县| 健康| 温泉县| 朝阳县| 九江县| 朝阳县| 甘洛县| 龙山县| 曲阳县| 云南省| 邢台市| 日土县| 正阳县| 青海省| 双牌县| 达尔| 东海县| 晋江市| 通渭县| 肥西县| 开江县| 周至县| 龙岩市| 义马市| 东莞市| 额尔古纳市| 民乐县| 临沭县| 手游| 平山县| 无极县| 盐亭县| 孟村| 米脂县| 浪卡子县| 惠水县| 定陶县| 普格县|