gulp入門學習教程(入門學習記錄)

来源:https://www.cnblogs.com/lfhy/archive/2018/03/01/8488667.html
-Advertisement-
Play Games

前言 最近在通過教學視頻學習angularjs,其中有gulp的教學部分,對其的介紹為可以對文件進行合併,壓縮,格式化,監聽,測試,檢查等操作時,看到前三種功能我的心理思想是,網上有很多線上壓縮,線上解壓,css格式化,js格式化類似的工具,為什麼還需要學習一項新技術呢。當學完了之後,被自己見識短淺 ...


前言

  最近在通過教學視頻學習angularjs,其中有gulp的教學部分,對其的介紹為可以對文件進行合併,壓縮,格式化,監聽,測試,檢查等操作時,看到前三種功能我的心理思想是,網上有很多線上壓縮,線上解壓,css格式化,js格式化類似的工具,為什麼還需要學習一項新技術呢。當學完了之後,被自己見識短淺而羞愧。

1 gulp的優點

  在做一個項目是,如果這個項目比較大,文件比較多,那這些文件的合併,壓縮,格式化,監聽,測試,檢查等操作該怎麼完成呢?如果像上面我所說的那樣通過一些線上功能進行操作的話,任務量比較大,而且當我們對多個文件進行改動的話,又得重新一個個的手動線上壓縮等操作,顯然不是很高效,那麼此時gulp就能幫我們高效的完成這些工作。反正當我學完了之後有一種 近視眼帶上了眼鏡的感覺(哈哈,這個比喻不知道有沒有人能領悟到是什麼感覺)。

  類似於gulp,還有grunt,因為我只學過gulp,而且在github上gulp的使用更多,所以我選擇這個,具體用哪個,各憑喜好。

2 安裝gulp

  首先應確保已經安裝了nodejs環境和npm(檢驗是否安裝的方法:node -v,npm -v)。然後以全局的方式安裝gulp

    npm gulp -g     安裝完成後可以通過gulp -v 檢驗是否安裝成功及gulp的版本號

    -g global  全局安裝

    --save將配置信息保存在package.json中(package.json在項目的根目錄中),這樣做的一個好處是,別人拿到這個項目即使沒有node_modules文件夾時,只要在命令行輸入 npm install name項目所需要的插件都會被下載下來

    -dev 保存至package.json的devDependencies節點,不指定的話保存至dependencies節點

3 如何在項目中使用gulp

  1. 新建一個項目目錄:demo_gulp
  2. 在這個目錄下本地安裝gulp  npm install gulp  如果想在安裝的時候把gulp寫進項目package.json文件的依賴中,則可以加上--save-dev: npm install --save-dev gulp  為什麼要安裝兩次,點這裡
  3. 新建package.json配置文件:npm init 

   紅色的框是npm init後需要填寫的配置信息 如果預設,按回車即可,藍色的框是,配置完成後的確認信息

   配置完成後,在根目錄下會自動新建一個package.json的文件,文件的信息就是配置文件時填寫的信息

    

  4.在根目錄新建gulpfile.js文件,將以下代碼複製到gulpfile.ls中

   

var gulp = require('gulp');
gulp.task('default',function(){
    console.log('hello gulp');
});

  在命令行中輸入 gulp default,輸出如下圖:

  

  到這裡就已經實現了gulp的一個簡單的應用,

4.gulp的4個屬性  src,dest , watch , task

  gulp.task(task_name,fn)  定義一個任務,在命令行中執行這個任務,如上面輸出“hello gulp”的代碼就是一個名為“default”的任務

  gulp.src('XX/XX/XX.js/css/less/...')   匹配文件並輸出。括弧裡面的參數可以是文件的路徑,也可以是文件路徑組成的數組

  gulp.dest() 將傳入的文件寫進來,如果文件夾不存在會自動創建文件夾

  gulp.watch('XX/XX/XX.js/css/less/...',[task_name])   監聽文件;第一個參數可以是某一個文件,也可以是多個文件組成的數組,第二個參數是多個任務的名字組成的數組

  pipe()字面意思:管道;此方法是把一個文件流輸入,通過pipe管道輸出(下一個處理程式可以把上一級輸出的流文件當做輸入)

  下麵這個例子是將src文件夾下麵的demo.css複製到src 文件夾下麵的style文件夾下麵的css文件夾下,代碼寫好後在命令行執行 gulp copy任務即可,如下圖命令行截圖

gulp.task('copy',function(){
	gulp.src('./src/demo.css')  //匹配src文件夾下的demo.css文件並輸出
		.pipe(gulp.dest('./src/style/css'));
});

  

  下麵是文件監聽的代碼和命令行截圖:

  

gulp.task('watch',function(){
	gulp.watch('./src/demo.css',['copy']);
})

  

  當src文件下的demo.css發生改變時,就會執行copy任務,如下圖,每一次對src下麵的demo.css的改變進行保存操作,,命令行都會自動的執行copy任務

  

 

 5.gulp的一些常用插件

  gulp的屬性就只有以上四個,name文件的合併,壓縮,格式化等等這些處理都有gulp的插件來完成,剛好看了一篇博客,我覺得他已經講得挺詳細的了,夠新手入門了,我在這裡只做一個簡單的例子

  css的壓縮

  首先要下載gulp-caanano的插件,在命令行輸入npm install gulp-cssnano --save-dev  ;然後再gulpfile.js中輸入以下代碼:

    

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

gulp.src('.src/demo.css')
    .pipe(cssnano())  //壓縮demo.css文件
    .pipe(gulp.dest('./src/style/css'))

  對src下的demo.css的修改完成並保存後,再在命令行執行任務gulp watch,即可自動化的完成css的壓縮。

   

  最後在記錄一個瀏覽器自動化的例子

  下載browser-sync插件,操作同上面相同,npm install browser-sync --save-dev,然後將下麵的代碼複製到gulpfile.js中

  

// 瀏覽器自動化
var browserSync=require('browser-sync').create();
gulp.task('serve',function(){
	browserSync.init({
		server:{
			baseDir:'./'  //以package.json為同一目錄
		}
	})
})

  再執行serve任務,如下圖   地址  http://localhost:3001  是設置自動化的設置, 地址 http://localhost:3000/src/index.html是我的網頁地址,當在不同的瀏覽器同時打開這個網頁,或者在同一瀏覽器不同視窗打開這一個網頁,對其中一個網頁操作(如input的輸入,頁面的滾動),另一個網頁也會進行同樣的操作;對css文件改變後進行保存操作,網頁立刻會做出改變,不用再手動刷新,等等還有其他功能,完成了網頁的自動化,大大的提高了工作效率。

  

  至於其他的插件,我在上面有一個推薦的博客鏈接,講的挺好的了,可以直接的移步哪裡。

 

 

 

 

 

  

 


您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • 一、何為cookie 由於http協議是無狀態的,所以沒法知道當前訪問的客戶端是誰,所以有了cookie這個東西,通過cookie來讓服務端知道當前是誰訪問我,可以看做是一個身份牌 二、cookie的工作流程 (1) 第一次用戶登錄的時候,輸入用戶名和密碼信息,服務端接收後進行用戶認證。 (2)服務 ...
  • 一、水平居中: (1). 行內元素的水平居中? 如果被設置元素為文本、圖片等行內元素時,在父元素中設置text-align:center實現行內元素水平居中,將子元素的display設置為inline-block,使子元素變成行內元素 (2)塊狀元素的水平居中(定寬) 當被設置元素為定寬塊級元素時用 ...
  • 前言: 考慮自己網站的圖片展示,而且要支持移動端和PC端。自己寫的代碼也不盡如意,要寫好的話也需要時間,於是就想到了使用相關插件。 準備: PhotoSwipe 官網地址:http://photoswipe.com/ 英語還可以的同學可以看官方文檔學習:http://photoswipe.com/d ...
  • 數據流向 數據的改變發生通常是通過用戶交互行為或者瀏覽器行為(如路由跳轉等)觸發的,當此類行為會改變數據的時候可以通過 dispatch 發起一個 action,如果是同步行為會直接通過 Reducers 改變 State ,如果是非同步行為(副作用)會先觸發 Effects 然後流向 Reducer ...
  • [1]打包公共代碼 [2]動態導入 [3]懶載入 [4]剔除無用代碼 [5]長緩存優化 [6]公用代碼內聯 ...
  • 請點擊相應的步驟查看詳情 我們首先搭建一個 dva Demo 項目(請參考react快速構建一個應用項目),然後逐步完成以下內容: 第一步,我們會劃分一下整體的項目結構,熟悉每一部分是什麼概念;接下來我們會說如何抽離 model,以及 model 設計的一些思路;然後我們會根據項目的情況說明如何合理 ...
  • Paradise_追逐者的es6(二) 1.es6三種聲明方式 2.變數的解構賦值 3.擴展運算符和rest運算符 ...
  • 第一階段: HTML+CSS: HTML進階、CSS進階、div+css佈局、HTML+css整站開發、 JavaScript基礎: Js基礎教程、js內置對象常用方法、常見DOM樹操作大全、ECMAscript、DOM、BOM、定時器和焦點圖。 JS基本特效: 常見特效、例如:tab、導航、整頁滾 ...
一周排行
    -Advertisement-
    Play Games
  • 移動開發(一):使用.NET MAUI開發第一個安卓APP 對於工作多年的C#程式員來說,近來想嘗試開發一款安卓APP,考慮了很久最終選擇使用.NET MAUI這個微軟官方的框架來嘗試體驗開發安卓APP,畢竟是使用Visual Studio開發工具,使用起來也比較的順手,結合微軟官方的教程進行了安卓 ...
  • 前言 QuestPDF 是一個開源 .NET 庫,用於生成 PDF 文檔。使用了C# Fluent API方式可簡化開發、減少錯誤並提高工作效率。利用它可以輕鬆生成 PDF 報告、發票、導出文件等。 項目介紹 QuestPDF 是一個革命性的開源 .NET 庫,它徹底改變了我們生成 PDF 文檔的方 ...
  • 項目地址 項目後端地址: https://github.com/ZyPLJ/ZYTteeHole 項目前端頁面地址: ZyPLJ/TreeHoleVue (github.com) https://github.com/ZyPLJ/TreeHoleVue 目前項目測試訪問地址: http://tree ...
  • 話不多說,直接開乾 一.下載 1.官方鏈接下載: https://www.microsoft.com/zh-cn/sql-server/sql-server-downloads 2.在下載目錄中找到下麵這個小的安裝包 SQL2022-SSEI-Dev.exe,運行開始下載SQL server; 二. ...
  • 前言 隨著物聯網(IoT)技術的迅猛發展,MQTT(消息隊列遙測傳輸)協議憑藉其輕量級和高效性,已成為眾多物聯網應用的首選通信標準。 MQTTnet 作為一個高性能的 .NET 開源庫,為 .NET 平臺上的 MQTT 客戶端與伺服器開發提供了強大的支持。 本文將全面介紹 MQTTnet 的核心功能 ...
  • Serilog支持多種接收器用於日誌存儲,增強器用於添加屬性,LogContext管理動態屬性,支持多種輸出格式包括純文本、JSON及ExpressionTemplate。還提供了自定義格式化選項,適用於不同需求。 ...
  • 目錄簡介獲取 HTML 文檔解析 HTML 文檔測試參考文章 簡介 動態內容網站使用 JavaScript 腳本動態檢索和渲染數據,爬取信息時需要模擬瀏覽器行為,否則獲取到的源碼基本是空的。 本文使用的爬取步驟如下: 使用 Selenium 獲取渲染後的 HTML 文檔 使用 HtmlAgility ...
  • 1.前言 什麼是熱更新 游戲或者軟體更新時,無需重新下載客戶端進行安裝,而是在應用程式啟動的情況下,在內部進行資源或者代碼更新 Unity目前常用熱更新解決方案 HybridCLR,Xlua,ILRuntime等 Unity目前常用資源管理解決方案 AssetBundles,Addressable, ...
  • 本文章主要是在C# ASP.NET Core Web API框架實現向手機發送驗證碼簡訊功能。這裡我選擇是一個互億無線簡訊驗證碼平臺,其實像阿裡雲,騰訊雲上面也可以。 首先我們先去 互億無線 https://www.ihuyi.com/api/sms.html 去註冊一個賬號 註冊完成賬號後,它會送 ...
  • 通過以下方式可以高效,並保證數據同步的可靠性 1.API設計 使用RESTful設計,確保API端點明確,並使用適當的HTTP方法(如POST用於創建,PUT用於更新)。 設計清晰的請求和響應模型,以確保客戶端能夠理解預期格式。 2.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...