国产xxxx99真实实拍_久久不雅视频_高清韩国a级特黄毛片_嗯老师别我我受不了了小说

資訊專欄INFORMATION COLUMN

gulp基礎和常用插件介紹

Lsnsh / 968人閱讀

摘要:前提前端工程化是如今前端團隊規范化管理項目和代碼的概念,而前端工程化中往往是離不開前端自動化或打包工具這兩種工具。參數介紹可以理解成一種類似于正則表達式的匹配模式,其值可以為匹配形式,文件路徑,或者文件路徑數組。

前提:前端工程化是如今前端團隊規范化管理項目和代碼的概念,而前端工程化中往往是離不開前端自動化或打包工具這兩種工具。本文將詳細介紹其中一種常用的前端自動化工具---gulp.js

- 入門:

安裝方式:

  全局安裝: npm install --g gulp
  局部(項目安裝): npm install --save-dev gulp

gulp配置文件:

在項目根目錄下創建一個gulpfile.js文件,其中default任務為主任務,其他為功能任務;
語法:

var gulp = require("gulp");
gulp.task("default",function(){...});

運行方式:

在命令行中直接輸入gulp運行,或者在webstorm中在對應的gulpfile.js點中,然后右鍵,選擇show gulp task方式就能運行;

- gulp的API:

一)gulp.src方法:

定義:該方法會匹配對應的文件,并以虛擬文件流(包含路徑,文件名,內容)的形式返回;

語法:gulp.src(globs [,option])

特點:因為返回的文件流是類似于Readable Streams的形式,所以可以利用pipe管道的方式傳輸,處理文件流。

參數介紹:

a)globs:可以理解成一種類似于正則表達式的匹配模式,其值可以為匹配形式,文件路徑,或者文件路徑數組。
*:匹配任何字符串但不識別路徑分隔符(‘/’)

eg: gulp.src("./build/*.js")   匹配build文件中所有js文件

**:匹配任何字符串包括‘/’

eg:gulp.src("**.js")  匹配任何路徑下的js文件

[...] : 枚舉

eg:  gulp.src("[abc].js")     匹配a.js或者b.js或者c.js

[!...] : 枚舉中括號中以外的一切字符串

eg:gulp.src("[!abc].js")    匹配d.js等等js文件

? : 職匹配一個字符串

eg:gulp.src("?.js")   匹配a.js等等js文件

b)option:里面有buffer,read,base配置項,其中base項是關于文件流保存的路徑相關(具體放在dest方式中闡述)

二)gulp.dest方法:

定義:將文件流寫入到指定的路徑文件中,并繼續輸出該文件流;
語法:gulp.dest(path [,option])
注意事項:
a)文件流寫入的文件名只能由流入的文件流定義;
b)path是路徑,不能是文件名;
c)src中base項默認是匹配符之前的字符串路徑,但也可以人為設置,例子闡述:

gulp.src("a/b/*/[ab].js")
    .pipe(gulp.dest("./build"))

解釋:默認base為a/b,塞進文件流的文件名為*/[ab].js,所以新建的文件的路徑為./build/*/[ab].js
gulp.src("a/b/*/c/d.js",{base:"a"})
    .pipe(gulp.dest("./build"))

解釋:base現是a,塞進文件流的文件名為b/*/c/d.js,所以新建的文件路徑為./build/b/*/c/d.js

d)dest方法輸出的文件流也可以被pipe傳輸;

三)gulp.task方法:

定義: 在gulp中定義一個任務,其中主任務為default;
語法: gulp.task(name [,deps] ,fn)
參數:

  name是任務名;
  deps是依賴的任務數組,是在當前任務之前執行的;
  fn:當前任務內容;

情景:
a) gulp.task("default",function(){...}):最簡單模式;
b)gulp.task("default",["A1","A2"]):default是由A1,A2兩個任務組成的;
c)gulp.task("default", ["A1","A2"],function(){...}):先執行完A1,A2,再執行default任務;

question: 若任務列表A1,A2中,A1存在異步操作,則執行A2時,A1還很可能未執行完;
resolve:
A) fn任務函數可以引進一個回調函數參數,該參數可以告訴外界該任務是否執行完;

eg:   gulp.task("A1",function(cb){
           setTime(function(){
           console.log(1);
           cb();
           },2000);
        })
        gulp.task("A2",function(){console.log(2);})
        gulp.task("default",["A1","A2"],function(){
             console.log(3)
        })
        輸出結果為:2 1 3

B)任務函數返回一個流對象,適用于gulp.src方法;

gulp.task("A",function(){
             return gulp.src("./a.js")
                        .pipe(插件)
          })
gulp.task("deafult",["A"],function(){...})

C)返回一個Promise對象;

gulp.task("A",function(){
            return new Promise( (res,rej) => {
            })
          })
gulp.task("default",["A"]);

四)gulp.watch方法:

定義:該方法是用來監聽文件的變化;
語法一:gulp.watch(glob [,opts] , tasks)
語法二:gulp.watch(glob [,opts] , function(event){...})
event是一個事件對象;
event.type為added(添加類型);changed(改變類型);deleted(刪除類型)
event.path:變化的文件路徑;

- 常用gulp插件:

gulp有很多插件,而本文列舉出一些常用的插件

gulp-uglify插件

用途:用來壓縮js文件
用法:

var uglify = require("gulp-uglify");
gulp.task("uglifyJS",function(cb){
    gulp.src("./demo/*.js")
        .pipe(uglify())
        .pipe(gulp.dest("build"));
    cb();
});

gulp-minify-css插件

用途:用來壓縮css文件
用法:

var minifyCss = require("gulp-minify-css");
gulp.task("minifyCss",function(cb){
    gulp.src("./demo/*.css")
        .pipe(minifyCss())
        .pipe(gulp.dest("./build"));
    cb();
});

gulp-minify-html插件

用途:合并html文件
用法:

var miniHtml = require("gulp-minify-html");
gulp.task("miniHtml",function(cb){
    gulp.src("./src/*.html")
        .pipe(miniHtml())
        .pipe(gulp.dest("./build"));
});

gulp-connect插件

用途:自動刷新頁面
用法:

var connect = require("gulp-connect");
gulp.task("connect",function(){
    connect.server({
        root:"src",
        livereload:true,
    })
});
gulp.task("watchHtml",function(){
    gulp.watch("./src/*.html",function(){
        gulp.src("./src/*.html")
            .pipe(connect.reload());
    })
});

gulp-jshint插件

用途:用來檢查js語法
用法:

var jshint = require("gulp-jshint");
gulp.task("checkJs",()=>{
    gulp.src("./src/*.js")
        .pipe(jshint())
        .pipe(jshint.reporter())
});

gulp-concat插件

用途:合并多個js或者css文件
用法:

var concat = require("gulp-concat");
gulp.task("concat",()=>{
    gulp.src("./*/*.js")
        .pipe(concat("all.js"))
        .pipe(gulp.dest("./build"));
});

gulp-rename:

定義;將文件改名;
語法:
a)rename(filename):將文件直接改為指定文件名;
b)rename({dirname:"A" ,basename:"B" ,prefix:"C-",suffix:"-D", extname:".txt"}):將文件名改為A/C-B-D.txt;
C)rename(function(path){}):path為一個對象,包含B)中所有屬性;

var rename =require("gulp-rename");   
gulp.task("rename",()=>{              
    gulp.src("./demo/*.css")          
        .pipe(rename({                
            suffix:".min",            
            extname:".less"           
        }))                           
        .pipe(gulp.dest("./build"));  
})                                    

參考文檔:
gulp文檔

文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。

轉載請注明本文地址:http://m.specialneedsforspecialkids.com/yun/89250.html

相關文章

  • gulp自動化打包(上)

    摘要:自動化打包上文章概述本文分為上下兩篇,上篇主要介紹一些常用的插件也是此次打包主要用的插件,而下篇主要以一個項目為例,從本地出合適的版本,壓縮合并到最后打成包,發送至指定目錄,做一個全面的演示。 gulp自動化打包(上) 文章概述 本文分為上下兩篇,上篇主要介紹一些常用的gulp插件(也是此次打包主要用的gulp插件),而下篇主要以一個demo項目為例,從本地checkout出合適的g...

    roland_reed 評論0 收藏0
  • gulp詳細基礎教程

    摘要:核心概念流流,簡單來說就是建立在面向對象基礎上的一種抽象的處理數據的工具。類型,設置輸出路徑以某個路徑的某個組成部分為基礎向后拼接。 一、gulp簡介 1.gulp是什么? gulp是前端開發過程中一種基于流的代碼構建工具,是自動化項目的構建利器;它不僅能對網站資源進行優化,而且在開發過程中很多重復的任務能夠使用正確的工具自動完成;使用它,不僅可以很愉快的編寫代碼,而且大大提高我們的工...

    xuhong 評論0 收藏0
  • gulp詳細基礎教程

    摘要:核心概念流流,簡單來說就是建立在面向對象基礎上的一種抽象的處理數據的工具。類型,設置輸出路徑以某個路徑的某個組成部分為基礎向后拼接。 一、gulp簡介 1.gulp是什么? gulp是前端開發過程中一種基于流的代碼構建工具,是自動化項目的構建利器;它不僅能對網站資源進行優化,而且在開發過程中很多重復的任務能夠使用正確的工具自動完成;使用它,不僅可以很愉快的編寫代碼,而且大大提高我們的工...

    vibiu 評論0 收藏0
  • gulp詳細基礎教程

    摘要:核心概念流流,簡單來說就是建立在面向對象基礎上的一種抽象的處理數據的工具。類型,設置輸出路徑以某個路徑的某個組成部分為基礎向后拼接。 一、gulp簡介 1.gulp是什么? gulp是前端開發過程中一種基于流的代碼構建工具,是自動化項目的構建利器;它不僅能對網站資源進行優化,而且在開發過程中很多重復的任務能夠使用正確的工具自動完成;使用它,不僅可以很愉快的編寫代碼,而且大大提高我們的工...

    張金寶 評論0 收藏0
  • gulpwebpack入門介紹

    摘要:介紹說明的包管理器,用于插件管理包括安裝卸載管理依賴等使用安裝插件命令提示符執行插件名稱。總結安裝新建文件全局和本地安裝安裝插件新建文件通過命令提示符運行任務。 showImg(https://segmentfault.com/img/remote/1460000010873466); 前言 眾所周知目前比較火的工具就是gulp和webpack,但webpack和gulp卻有所不同,本...

    hsluoyz 評論0 收藏0

發表評論

0條評論

Lsnsh

|高級講師

TA的文章

閱讀更多
最新活動
閱讀需要支付1元查看
<