[js高手之路]gulp教程-從入門到項目中快速上手使用

来源:http://www.cnblogs.com/ghostwu/archive/2017/09/13/7516133.html
-Advertisement-
Play Games

在這之前,我已經分享過一個webpack的全系列,相對於webpack, gulp使用和配置起來非常的簡單. gulp是什麼? gulp 是基於 node 實現 Web 前端自動化開發的工具,利用它能夠極大的提高開發效率。在 Web 前端開發工作中有很多“重覆工作”,比如壓縮CSS/JS文件。而這些 ...


在這之前,我已經分享過一個webpack的全系列,相對於webpack, gulp使用和配置起來非常的簡單.

gulp是什麼?

gulp 是基於 node 實現 Web 前端自動化開發的工具,利用它能夠極大的提高開發效率。在 Web 前端開發工作中有很多“重覆工作”,比如壓縮CSS/JS文件。而這些工作都是有規律的。找到這些規律,並編寫 gulp 配置代碼,讓 gulp 自動執行這些“重覆工作”

一、安裝gulp與壓縮js文件

命令:

 npm install gulp -g

 npm install gulp --save-dev

初始化項目package.json的配置:npm init --yes

創建項目的目錄結構

1 demo2
2 -----dist
3 -----src
4         -css
5         -img
6         -js
7 -----gulpfile.js
8 -----package.json

在js目錄下新建文件( lib.js )

1 var Oper = {
2     add : function( n1, n2 ){
3         return n1 + n2;
4     },
5     sbb : function( n1, n2 ){
6         return n1 - n2;
7     }
8 }

安裝壓縮js的插件: npm install gulp-uglify --save-dev,

然後在gulpfile.js中,輸入任務處理代碼

1 var gulp = require( 'gulp' );
2 var uglify = require( 'gulp-uglify' );
3 
4 gulp.task('min-js', function() {
5     gulp.src('src/js/*.js')
6         .pipe( uglify() )
7         .pipe( gulp.dest('dist/js') );
8 });
  • gulp.task(name, fn) - 定義任務,第一個參數是任務名,第二個參數是任務內容。
  • gulp.src(path) - 選擇文件,傳入參數是文件路徑。
  • gulp.dest(path) - 輸出文件
  • gulp.pipe() - 管道,你可以暫時將 pipe 理解為將操作加入執行隊列

在命令行執行任務: gulp min-js

就會在 dist/js/lib.js 生成壓縮文件

var Oper={add:function(n,r){return n+r},sbb:function(n,r){return n-r}};

在demo2目錄下創建index.html,輸入以下測試代碼

1 <script src="./dist/js/lib.js"></script>
2     <script>
3         alert( Oper.add( 100, 200 ) );
4     </script>

發現壓縮好的lib.js文件是可以正常使用的

二、壓縮css文件

安裝插件: npm install gulp-clean-css --save-dev

demo2/src/css下新建文件style.css

 1 html,body {
 2     margin:0;
 3     padding:0;
 4 }
 5 li {
 6     list-style-type:none;
 7 }
 8 a{
 9     text-decoration: none;
10     color:#666;
11 }

在gulpfile.js文件中添加壓縮css的任務

 1 var gulp = require( 'gulp' );
 2 var uglify = require( 'gulp-uglify' );
 3 var cleanCSS = require( 'gulp-clean-css' );
 4 
 5 gulp.task('min-js', function() {
 6     gulp.src('src/js/*.js')
 7         .pipe( uglify() )
 8         .pipe( gulp.dest('dist/js') );
 9 });
10 
11 gulp.task('min-css', function() {
12     gulp.src('src/css/*.css')
13         .pipe( cleanCSS() )
14         .pipe( gulp.dest('dist/css') );
15 });

然後在命令行執行gulp min-css任務 就會在dist/css生成style.css壓縮文件

1 body,html{margin:0;padding:0}li{list-style-type:none}a{text-decoration:none;color:#666}

三、編譯less文件

安裝插件:npm install gulp-less --save-dev

在src/css下麵新建style.less文件

 1 @c1 : green;
 2 @c2 : red;
 3 div {
 4     width:200px;
 5     height:200px;
 6     background:@c1;
 7     div {
 8         background:@c2;
 9         transition:all ease 1s;
10     }
11 }

gulpfile.js中添加任務:

 1 var gulp = require( 'gulp' );
 2 var uglify = require( 'gulp-uglify' );
 3 var cleanCSS = require( 'gulp-clean-css' );
 4 var less = require('gulp-less');
 5 
 6 gulp.task('min-js', function() {
 7     gulp.src('src/js/*.js')
 8         .pipe( uglify() )
 9         .pipe( gulp.dest('dist/js') );
10 });
11 
12 gulp.task('min-css', function() {
13     gulp.src('src/css/*.css')
14         .pipe( cleanCSS() )
15         .pipe( gulp.dest('dist/css') );
16 });
17 
18 gulp.task( 'compile-less', function(){
19     gulp.src( 'src/css/*.less' )
20         .pipe( less() )
21         .pipe( gulp.dest( 'dist/less' ) );
22 } );

執行任務: gulp compile-less,在dist/less中生成style.css文件

1 div {
2   width: 200px;
3   height: 200px;
4   background: green;
5 }
6 div div {
7   background: red;
8   transition: all ease 1s;
9 }

四、合併js文件

安裝插件:npm install gulp-concat --save-dev

demo2/src/js新建lib2.js文件:

1 function $( id ){
2     return document.getElementById( id );
3 }

在gulpfile.js中新增任務:

 1 var gulp = require( 'gulp' );
 2 var uglify = require( 'gulp-uglify' );
 3 var cleanCSS = require( 'gulp-clean-css' );
 4 var less = require('gulp-less');
 5 var concat = require('gulp-concat');
 6 
 7 gulp.task('min-js', function() {
 8     gulp.src('src/js/*.js')
 9         .pipe( uglify() )
10         .pipe( gulp.dest('dist/js') );
11 });
12 
13 gulp.task( 'concat-file', function(){
14     gulp.src( 'src/js/*.js' )
15         .pipe( concat('all.min.js') )
16         .pipe( uglify() )
17         .pipe( gulp.dest( 'dist/js' ) );
18 } );
19 
20 gulp.task('min-css', function() {
21     gulp.src('src/css/*.css')
22         .pipe( cleanCSS() )
23         .pipe( gulp.dest('dist/css') );
24 });
25 
26 gulp.task( 'compile-less', function(){
27     gulp.src( 'src/css/*.less' )
28         .pipe( less() )
29         .pipe( gulp.dest( 'dist/less' ) );
30 } );

執行任務:gulp concat-file

在dist/js下麵生成all.min.js文件

1 function $(n){return document.getElementById(n)}var Oper={add:function(n,t){return n+t},sbb:function(n,t){return n-t}};

五、自動監測文件變化,執行任務

1 gulp.task( 'auto', function(){
2     gulp.watch( 'src/js/*.js', ['min-js'] );
3     gulp.watch( 'src/css/*.css', ['min-css'] );
4 } );
5 gulp.task( 'default', ['auto'] );

這裡添加了一個預設任務default: 執行auto任務,auto裡面自動監測壓縮js和壓縮css任務

在命令行直接執行gulp.

要執行其他任務,只需要按照這幾步就可以了:

1,安裝相應的插件

2,添加相應的任務

3,執行任務


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

-Advertisement-
Play Games
更多相關文章
  • gitHub地址 https://github.com/Webxiaoyaun/vue-book/tree/master/vue-book 點擊去Github下載 ## 一個書城## 有增加,修改,緩存,懶載入,node.js寫的後臺,動畫過渡,輪播圖 等功能 ...
  • 前面的話 Vue 的過渡系統提供了非常多簡單的方法設置進入、離開和列表的動效。那麼對於數據元素本身的動效呢?包括數字和運算、顏色的顯示、SVG 節點的位置、元素的大小和其他的屬性等。所有的原始數字都被事先存儲起來,可以直接轉換到數字。做到這一步,我們就可以結合 Vue 的響應式和組件系統,使用第三方 ...
  • html界面 css代碼 靜態網頁效果圖 jQuery實現 實現定時器效果 實現懸浮效果 實現移開效果 JS腳本實現 實現定時器效果 懸浮效果 移開效果 效果圖 ...
  • 什麼是cookie? cookie 是存儲於訪問者的電腦中的變數。每當同一臺電腦通過瀏覽器請求某個頁面時,就會發送這個 cookie。你可以使用 JavaScript 來創建和取回 cookie 的值。 設置cookie 每個cookie都是一個名/值對,可以把下麵這樣一個字元串賦值給docum ...
  • 本文記錄的是筆者最近抽私下時間給朋友做的一個時時彩自動下註系統,比較簡單,主要也是為了學習一下node.js。 其實邏輯沒什麼可以深談的,主要是想說說這套代碼結構。結構如下圖: js的代碼比較難以維護,不清楚大家對於這點是否認同,但這裡筆者只說自己的感受,筆者的朋友一開始找到筆者,說玩時時彩,一直盯 ...
  • 適用:h5+jquery,移動網頁最佳 最近在寫個簡單的公眾號頁面,前端驗證時有些信息要提示,很簡單的需求實在不想找啥現成的輪子,又不至於用alert這麼粗暴,遂寫了個非常簡單的消息框,效果如圖: 特點: 有黑層遮罩 點擊消失,無論是點消息框還是外面 用法: 歡迎吐槽或推薦更好的方案。 -end- ...
  • 在面試的時候,vue生命周期被考察的很頻繁。 什麼是vue生命周期呢? Vue實例有一個完整的生命周期,也就是從開始創建、初始化數據、編譯模板、掛載Dom、渲染→更新→渲染、卸載等一系列過程,我們稱這是Vue的生命周期。通俗說就是Vue實例從創建到銷毀的過程,就是生命周期。 在Vue的整個生命周期中 ...
  • 不太擅長總結挺早的東西了,突然覺得都記錄下來,小demo也比較簡單,歡迎討論指正。 之前 ui的設計稿選擇框不想要預設樣式,預設樣式改起來也是太心塞,有的還改不了,所以乾脆自己寫了一個div模擬的選擇框 先看效果吧: 代碼實現不多,也都很簡單,js部分是純原聲的所以不需要引用其他框架就可以用: 先H ...
一周排行
    -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.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...