亚洲中字慕日产2020,大陆极品少妇内射AAAAAA,无码av大香线蕉伊人久久,久久精品国产亚洲av麻豆网站

資訊專欄INFORMATION COLUMN

用gulp構(gòu)建一個(gè)簡(jiǎn)單常用的的環(huán)境

Shimmer / 3339人閱讀

摘要:簡(jiǎn)單做點(diǎn)通俗的講解。如果你想要?jiǎng)?chuàng)建一個(gè)序列化的隊(duì)列,并以特定的順序執(zhí)行,嗯,戳文檔文檔。自然是表示任意,全部。到這里,其實(shí)就是一個(gè)小規(guī)模的調(diào)試環(huán)境,接下來(lái),讓我們升級(jí)一下,開(kāi)始構(gòu)造簡(jiǎn)單的發(fā)布環(huán)境壓縮采用的是插件。做一個(gè)的就好,只需要。

gulp作為一個(gè)自動(dòng)化構(gòu)建工具,在前端開(kāi)發(fā)中大大的提高了開(kāi)發(fā)效率,前端開(kāi)發(fā)者們可以利用他減少許多繁復(fù)無(wú)腦的操作。
這里簡(jiǎn)單構(gòu)建一個(gè)小環(huán)境,就可以在以后的學(xué)習(xí)中,直接新建各種test.html測(cè)試我們新學(xué)習(xí)的知識(shí)點(diǎn)啦~
【看不明白的,有疏漏的,歡迎指出,我更改措辭或者bug】

入門安裝

入門就不講了,會(huì)用npm的同學(xué)應(yīng)該都清楚,這里貼一個(gè)既有的官方指南。gulp入門指南

一些小基礎(chǔ)

詳細(xì)的配置我就不講了,api文檔戳進(jìn)去看。簡(jiǎn)單做點(diǎn)通俗的講解。

gulp.task(name[, deps], fn)

gulp是由每個(gè)小task組成的,我們可以類似函數(shù)一樣,把我們需要的一個(gè)個(gè)小功能以各種task分開(kāi)寫,然后可以在cmd里使用gulp 方式來(lái)執(zhí)行。

當(dāng)然任務(wù)多了,我們就需要一鍵執(zhí)行所有操作,所以一般情況下,我們只運(yùn)行 gulp 命令,則會(huì)執(zhí)行所注冊(cè)的名為 default 的 task,然后在default這個(gè)任務(wù)后面,添加我們寫好的其它task名的數(shù)組,則會(huì)挨個(gè)執(zhí)行我們寫好的各種task。不然只執(zhí)行function。
如果沒(méi)有default這個(gè) task,那么gulp命令會(huì)報(bào)錯(cuò)。

gulp.task("default", function() {
  // 將你的默認(rèn)的任務(wù)代碼放在這
});

注意: 默認(rèn)的,task 將以最大的并發(fā)數(shù)執(zhí)行,也就是說(shuō),gulp 會(huì)一次性運(yùn)行所有的 task 并且不做任何等待。如果你想要?jiǎng)?chuàng)建一個(gè)序列化的 task 隊(duì)列,并以特定的順序執(zhí)行,嗯,戳文檔api文檔。

gulp.src(globs[, options])

其實(shí)說(shuō)白了就是匹配我們要處理的文件,src就是路徑。

gulp.src("client/templates/*.jade")

*自然是表示任意,全部。
glob 請(qǐng)參考 node-glob 語(yǔ)法 或者,你也可以直接寫文件的路徑。

gulp.pipe

其實(shí)就是把src匹配到的文件傳遞到后面來(lái)執(zhí)行。括號(hào)里就是我們要進(jìn)行的各種操作。

有點(diǎn)類似js語(yǔ)法,不難理解,用.接起來(lái),一步步執(zhí)行。
一般我們會(huì)一行行寫,可讀性好點(diǎn),寫一行不友好。

gulp.src("client/templates/*.jade")
  .pipe(jade())
  .pipe(minify())
  .pipe(gulp.dest("build/minified_templates"));
gulp.dest(path[, options])

生成處理好的文件。
你可以將它 pipe 到多個(gè)文件夾。如果某文件夾不存在,將會(huì)自動(dòng)創(chuàng)建它。

gulp.src("./client/templates/*.jade")
  .pipe(jade())
  .pipe(gulp.dest("./build/templates"))
  .pipe(minify())
  .pipe(gulp.dest("./build/minified_templates"));
gulp.watch(glob[, opts], tasks)

監(jiān)視文件,并且可以在文件發(fā)生改動(dòng)時(shí)候做一些事情。

gulp.watch(glob [, opts], tasks) 
或
gulp.watch(glob [, opts, cb])

需要在文件變動(dòng)后執(zhí)行的一個(gè)或者多個(gè)通過(guò) gulp.task() 創(chuàng)建的 task 的名字,

var watcher = gulp.watch("js/**/*.js", ["uglify","reload"]);
watcher.on("change", function(event) {
  console.log("File " + event.path + " was " + event.type + ", running tasks...");
});

也可以直接執(zhí)行function,一樣的。

gulp.watch("js/**/*.js", function(event) {
  console.log("File " + event.path + " was " + event.type + ", running tasks...");
});

gulp的很多操作都是用插件執(zhí)行的,當(dāng)然,詳細(xì)操作自然是每個(gè)插件看作者文檔了!而且同一個(gè)功能的插件也層出不窮,大家可以根據(jù)需要自行選擇。好了,開(kāi)始我們的構(gòu)建,注意,提到的每一個(gè)插件都要npm安裝

注意:每一個(gè)插件都存在可配置的空間,所以關(guān)于最大化利用好每個(gè)插件,也是參照文檔來(lái)的,這里我們?nèi)∫恍┩ㄓ门渲?,具體視項(xiàng)目情況而定。

開(kāi)服務(wù),自動(dòng)刷新

無(wú)可厚非,代碼實(shí)時(shí)保存,瀏覽器實(shí)時(shí)刷新,是前端最想要的功能,手動(dòng)刷新瀏覽器相信是每一個(gè)前端新手要吐的操作。

開(kāi)服務(wù)

采用gulp-connect插件。
根目錄下開(kāi)啟服務(wù),端口號(hào)為2323,開(kāi)啟實(shí)時(shí)刷新,局域網(wǎng)內(nèi)可用。

var connect = require("gulp-connect");
var serverConfig = {
root: "./",
port: 2323,
livereload: true,
host: "::"
}
gulp.task("server",function(){
    connect.server(serverConfig);
});
配置自動(dòng)刷新

采用gulp-livereload。
開(kāi)啟刷新,監(jiān)聽(tīng)html變化,并實(shí)時(shí)刷新。

var livereload = require("gulp-livereload")
gulp.task("watch", function () {
    livereload.listen();
    gulp.watch(["*.html"],function(event){
        livereload.changed(event.path);
    })
});

其實(shí)到這里,一個(gè)微型的服務(wù)就搭建起來(lái)了,最后別忘了最根本的一句

var gulp = require("gulp");

不然是起不來(lái)的。
為了簡(jiǎn)便,可以在gulpfiles.js里添加一行,

gulp.task("default",["server","watch"]);

直接運(yùn)行gulp就好,讓他們依次執(zhí)行。

到這里,其實(shí)就是一個(gè)小規(guī)模的調(diào)試環(huán)境,接下來(lái),讓我們升級(jí)一下,開(kāi)始構(gòu)造簡(jiǎn)單的發(fā)布環(huán)境

壓縮html

采用的是gulp-htmlmin插件。
抽取src目錄下的所有html文件,導(dǎo)入到htmlmin插件進(jìn)行處理,并將結(jié)果輸出到public目錄,最后重新刷新已開(kāi)啟的服務(wù)。

var htmlmin = require("gulp-htmlmin");
gulp.task("html", function(){
    gulp.src("src/*.html")
        .pipe(htmlmin({
            collapseWhitespace: true,
              removeComments: true
        }))
        .pipe(gulp.dest("public"))
        .pipe(connect.reload());
});
壓縮js

采用的是gulp-uglify插件,但同時(shí),我們也用到了另一個(gè)插件gulp-concat,這個(gè)是用來(lái)連接各個(gè)文件組成一個(gè)文件。
抽取src/js下的所有js文件,將其合并,然后壓縮,輸出到public/js目錄,最后服務(wù)重載。

var uglify = require("gulp-uglify");
var concat = require("gulp-concat");
gulp.task("script",function(){
    gulp.src("src/js/*.js")
        .pipe(concat("main.js"))
        .pipe(uglify({mangle:false}))
        .pipe(gulp.dest("public/js"))
    .pipe(connect.reload());
});
壓縮css

采用的是gulp-cssnano插件。類似js,不解釋了。

var cssnano = require("gulp-cssnano");
gulp.task("css",function(){
gulp.src("src/css/*.css")
    .pipe(concat("animate.css"))
    .pipe(cssnano())
    .pipe(gulp.dest("public/css"))
    .pipe(connect.reload());
})
壓縮圖片

采取的是gulp-smushit插件,類似js,不解釋。

var smushit = require("gulp-smushit");
gulp.task("imagemin",function(){
    gulp.src(["src/images/*.png","src/images/*.jpg"])
        .pipe(smushit({
            verbose:true
        }))
        .pipe(gulp.dest("public/images"))
        .pipe(connect.reload());
});
gulp-watch監(jiān)聽(tīng)文件變動(dòng),自動(dòng)重載

這個(gè)gulp-watch在前面有講到,其實(shí)就是開(kāi)啟監(jiān)聽(tīng),并重新執(zhí)行各個(gè)html
,js,css,imagemin壓縮任務(wù)。
相信大家對(duì)比前面的gulp-livereload能夠看的出來(lái),這里兩者是有沖突的,一個(gè)只是調(diào)試下刷新頁(yè)面,一個(gè)卻每次都要壓縮。
所以其實(shí)實(shí)際項(xiàng)目中是不會(huì)把壓縮任務(wù)配置到watch里,會(huì)造成資源浪費(fèi),你每保存一次,就會(huì)壓縮。只會(huì)在最后調(diào)試完成,執(zhí)行壓縮一次。

gulp.task("watch", function () {
  gulp.watch(["src/*.html"], ["html"]);
  gulp.watch(["src/js/*.js"], ["script"]);
  gulp.watch(["src/css/*.css"], ["css"]);
  gulp.watch(["src/images/*.*"], ["imagemin"]);
});

做一個(gè)min的task就好,只需要gulp min

gulp.task("min",["html","script","css","imagemin"]);

文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請(qǐng)注明本文地址:http://www.ezyhdfw.cn/yun/95004.html

相關(guān)文章

  • 使 Gulp 自動(dòng)化構(gòu)建工具快速搭建項(xiàng)目

    摘要:通過(guò)本文,我們將學(xué)習(xí)如何使用來(lái)改變開(kāi)發(fā)流程,從而使開(kāi)發(fā)更加快速高效。中文網(wǎng)站詳細(xì)入門教程使用是基于的,需要要安裝為了確保依賴環(huán)境正確,我們先執(zhí)行幾個(gè)簡(jiǎn)單的命令檢查。詳盡使用參見(jiàn)官方文檔,中文文檔項(xiàng)目地址 為了UED前端團(tuán)隊(duì)更好的協(xié)作開(kāi)發(fā)同時(shí)提高項(xiàng)目編碼質(zhì)量,我們需要將Web前端使用工程化方式構(gòu)建; 目前需要一些簡(jiǎn)單的功能: 1. 壓縮HTML 2. 檢查JS 3. 編譯SA...

    glumes 評(píng)論0 收藏0
  • gulp和webpack入門介紹

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

    hsluoyz 評(píng)論0 收藏0
  • 帶你了解webpack

    摘要:根據(jù)依賴關(guān)系,按照配置文件把模塊函數(shù)分組打包成若干個(gè)。會(huì)隨著自身的的修改,而發(fā)生變化。只需要在命令行運(yùn)行時(shí)帶上參數(shù)就搞定一些插件的廢除和替換廢棄了頂替者用屬性變化壓縮優(yōu)化代碼分割,下面詳解還有一些新的插件,。 1. 前端工程化項(xiàng)目打包歷史 前端工程化之前的時(shí)代略過(guò) 1. 半自動(dòng)執(zhí)行腳本來(lái)壓縮合并文件 自從xmlhttprequest被挖掘出來(lái),網(wǎng)頁(yè)能夠和服務(wù)端通訊,js能做的事越來(lái)越多...

    senntyou 評(píng)論0 收藏0
  • 帶你了解webpack

    摘要:根據(jù)依賴關(guān)系,按照配置文件把模塊函數(shù)分組打包成若干個(gè)。會(huì)隨著自身的的修改,而發(fā)生變化。只需要在命令行運(yùn)行時(shí)帶上參數(shù)就搞定一些插件的廢除和替換廢棄了頂替者用屬性變化壓縮優(yōu)化代碼分割,下面詳解還有一些新的插件,。 1. 前端工程化項(xiàng)目打包歷史 前端工程化之前的時(shí)代略過(guò) 1. 半自動(dòng)執(zhí)行腳本來(lái)壓縮合并文件 自從xmlhttprequest被挖掘出來(lái),網(wǎng)頁(yè)能夠和服務(wù)端通訊,js能做的事越來(lái)越多...

    Tamic 評(píng)論0 收藏0

發(fā)表評(píng)論

0條評(píng)論

最新活動(dòng)
閱讀需要支付1元查看
<