開發(fā)一套小型響應(yīng)式項(xiàng)目流程

基本知識(shí)點(diǎn)

媒體查詢

  • 關(guān)鍵字
    • and
    • or
    • not(not 的范圍到逗號(hào)為止)
media = "only screen and (min-width:401px)"

使用媒體查詢的時(shí)候最好帶上 only 關(guān)鍵字誉察,因?yàn)榕f的瀏覽器不支持媒體查詢這樣反而不識(shí)別這段查詢代碼,不會(huì)響應(yīng)布局惹谐。如果不帶關(guān)鍵字 only 那么瀏覽器會(huì)只識(shí)別 `media = "screen..."持偏,就只會(huì)有一種布局。

  • 常用的屬性簡(jiǎn)介

    • width/height:視口寬度/布局視口
    • device-width/height:屏幕寬度/可視視口
    • 以上四個(gè)屬性都可以添加 min-/max- 前綴
    • orientation:設(shè)備方向
  • 理想視口
    <meta name="viewport" content="width=device-width" />

分析設(shè)計(jì)圖

  • 設(shè)計(jì)原則
    • 漸進(jìn)增強(qiáng)
    • 優(yōu)雅降級(jí)(推薦)
    • 先設(shè)計(jì)大屏還是小屏根據(jù)實(shí)際案例
    • 先在一個(gè)瀏覽器調(diào)試好(推薦谷歌)
    • 設(shè)置斷點(diǎn)(屏幕分辨率的分界點(diǎn))
      • 一般根據(jù)屏幕尺寸類別(大中胁虮恰)設(shè)置臨界點(diǎn)而不不是針對(duì)某個(gè)特定手機(jī)分辨率

一般小型項(xiàng)目的目錄結(jié)構(gòu)

- ResponsiveWeb(總項(xiàng)目)
    - doc(項(xiàng)目相關(guān)文檔文件夾)
    - .editorconfig(統(tǒng)一代碼風(fēng)格综液,編輯器會(huì)優(yōu)先按照里面的設(shè)置來(lái)格式化代碼)
    - .gitignore(git提交時(shí)要忽略的文件)
    - LICENSE.txt(保存版權(quán)聲明)
    - README.md(項(xiàng)目簡(jiǎn)介)
    - CHANGLOG.md(項(xiàng)目版本更新、修復(fù)內(nèi)容介紹)
    - src(源代碼)
        - css
            - main.css(通用)
            - normalize.css(重置)
            - login.css(對(duì)應(yīng)頁(yè)面)
        - js
            - main.js(通用頁(yè)面)
            - verdor(第三方庫(kù)文件夾)
                - jquery.js
        - img(圖片)
        - index.html
        - login.html(功能頁(yè)面)
        - 404.html(默認(rèn)錯(cuò)誤頁(yè))
        - robots.txt(搜索引擎查看的文件儒飒,確定可以抓取的內(nèi)容(非強(qiáng)制))
        - favicon.ico(網(wǎng)站logo)
        - humans.txt(保存網(wǎng)站團(tuán)隊(duì)信息等谬莹,給別人看的)

開始編寫代碼

  • 編碼格式
    <meta charset="utf-8">,要放在 title 之前桩了,否則會(huì)無(wú)效

  • 兼容模式(IE8后開始附帽,IE11后此文檔模式被棄用)

<meta http-equiv="x-ua-compatible" content="ie-edge">
<!-- equiv中的內(nèi)容表示對(duì) IE 瀏覽器開啟兼容模式,content 中的內(nèi)容表示渲染模式井誉,edge表示強(qiáng)制使用 IE 最新的渲染模式,content="ie=EmulateIE7"表示IE7渲染模式 -->
  • IE條件注釋
//IE hack gt(大于),lt(小于),gte(大于等于),lte蕉扮。IE8不支持H5和媒體查詢,注意IE 和版本號(hào)之間要有空格
<!--[if lte IE 8]>
    <p>您的瀏覽器版本過低,請(qǐng)更新<a >browsehappy</a></p>
<![endif]-->
  • 命名規(guī)范
    注意標(biāo)簽語(yǔ)義化颗圣,class 命名使用 - 分割喳钟,id 命名一般用于 js屁使,使用 _ 分割(或者駝峰命名法)。

    • section,article 最好有標(biāo)題奔则,沒有合適的標(biāo)題用 DIV 嵌套即可蛮寂。
  • 使用圖片
    必不可少的圖片使用 <img> 引入,而裝飾線的圖片可以使用 CSS 樣式引入易茬。

PC 端開發(fā)

  • CSS Resets(重置默認(rèn)樣式)
    推薦使用 Normalize.css酬蹋。

  • px,em,rem
    響應(yīng)式布局一般使用 em/rem,響應(yīng)式布局一般不要求百分百還原抽莱。

    • rem
      • 不建議使用 rem 設(shè)置行高范抓,因?yàn)楣雀铻g覽器有字體號(hào)下限

小技巧

  • 關(guān)于相鄰選擇符
    設(shè)置導(dǎo)航欄時(shí),有的時(shí)候第一個(gè)元素不需要設(shè)置樣式食铐,可以通過相鄰選擇符來(lái)設(shè)置匕垫,比如 li + li

  • 關(guān)于 inline-block 產(chǎn)生的間距解決方案

    • 可以給子元素設(shè)置 margin 負(fù)值
    • 刪除 html 中子元素的空白字符
    • 給父元素 font-size:0 子元素再設(shè)置 font-size
    • 給父元素和子元素設(shè)置不同的 letter-spacing
  • 雪碧圖 siprites

    • 利用 background-position 定位
  • 透明度

    • 只需要背景色透明,利用 RGBA
  • box-sizing

    • 可以改變盒模型的計(jì)算方式璃岳,對(duì)于inline-block 的布局可以簡(jiǎn)化計(jì)算
  • content 中的空格

    • 使用 content:'最新公告:\00a0\00a0';//\00a0即空格
  • 文字不換行并使用省略號(hào)

text-overflow:ellipsis;
overflow:hidden;
white-space:nowrap;
  • 相同圖片不同顏色

  • 清除浮動(dòng)

    • 父容器末尾添加一個(gè)子元素年缎,樣式 clear:both(不建議)

    • 給父容器添加 overflow:auto/hidden; 屬性

    • 給父元素也設(shè)置浮動(dòng)屬性(不建議悔捶,影響頁(yè)面布局)

    • 使用 :after 偽元素

      .clearfix:after {
          content: ".";
          display:block;
          height:0;
          clear:both;
          visibility:hidden;
      }
      .clearfix {
          zoom: 1;//為了兼容 IE6铃慷,IE7,觸發(fā) haslayout
      }
      
    • 觸發(fā) BFC(原理就是觸發(fā)BFC)

      • float
      • overflow:auto/hidden
      • display:table-cell/table-caption/inbline-block
      • position:fixed/absolute
    • 改進(jìn)方案

      .clearfix:before,
      .clearfix:after { //before防止頂部疊加
          content: " ";
          display: table;
      }
      
      .clearfix:after {
      clear: both;
      }
      

移動(dòng)端開發(fā)

  • 媒體查詢
    可以寫在樣式表最后或則每個(gè)變化元素之后蜕该。

  • 確定斷點(diǎn)

    • 根據(jù)設(shè)計(jì)稿來(lái)設(shè)計(jì)犁柜。利用谷歌開發(fā)者工具查看。最低寬度可以限制為 320px堂淡,低于這個(gè)就不需要適配了馋缅。
    • 寫媒體查詢的時(shí)候可以同屏顯示兩個(gè)窗口,方便寫樣式
  • CSS3選擇器

  • 表格響應(yīng)式處理(在小屏幕下的解決方案)

    • 隱藏表格不重要的列
    • 表格橫列倒置
    • 轉(zhuǎn)變成表單格式展示
  • 針對(duì)打印的 樣式

@media print {
   *,
   *:before,
   *:after { // 清除背景色
       background: transparent !important;
       color: #000 !important;
       box-shadow: none !important;
       text-shadow: none !important;
   }
   a,
   a:visited { // 加下劃線
       text-decoration: underline;
   }
   a[href]:after {
       content: "("attr"(href)")";
   }
   footer {
       width: 100%;
   }
   a[href^="#"]:after,
   a[href^="javascript:"]:after { // js調(diào)試的不用打
       content: "";
   }
   pre,
   blockquote {
       border: 1px solid #999;
       page-break-inside: avoid;
   }
   thead {
       display: table-header-group;
   }
   tr,
   img {
       page-break-inside: avoid;
   }
   img {
       max-width: 100% !important;
   }
   p,
   h2,
   h3 {
       orphans: 3; // 分頁(yè)時(shí)底部保留的最少行數(shù)
       widows: 3; // 分頁(yè)時(shí)頂部保留的最少行數(shù)
   }
   h2,
   h3 {
       page-break-after: avoid; //避免在元素后插入分頁(yè)符
   }
}
  • 響應(yīng)式廣告和圖片

    • 挑選第三方組件
      • 使用人數(shù)
      • 是否開源
      • 文檔是否齊全
      • 活躍性
      • 輕量級(jí)
      • OwlCarousel2(建議使用绢淀。201610)
  • 響應(yīng)式圖片

    • js 或服務(wù)端
      • 獲取客戶端尺寸后動(dòng)態(tài)更改圖片源或者服務(wù)器判斷后返回
    • srcset 屬性配合 sizes(實(shí)現(xiàn)在不同分辨率下顯示一張圖片的不同規(guī)格)
      • <img srcset="img/480.png 480w,img/800.png 800w" sizes="(min-width:800px) 800px, 100vw">
      • w 為圖片尺寸萤悴,vw 為視口寬度,sizes 告訴瀏覽器圖片的寬度占整個(gè)div的百分比皆的,瀏覽器也會(huì)根據(jù)此來(lái)設(shè)置圖片寬度覆履,可以設(shè)置媒體查詢 瀏覽器會(huì)用自己的規(guī)則(網(wǎng)絡(luò),尺寸等)綜合考慮后更改圖片源
    • picture(實(shí)現(xiàn)多組圖片匹配)
    <picture>
        <source media="(min-width:36em)" srcset="img/xxx.jpg 768w"/>
        <source media="(min-width:36em)" srcset="img/xxx.jpg 1800w"/>
        <source type="image/svg+xml" srcset="xxx.svg 800w,xxx.svg 1800w"/>//如果瀏覽器支持該格式的圖片就會(huì)顯示
        <img src="xxx.jpg">
    </picture>
    // 瀏覽器會(huì)匹配媒體查詢/或者條件查詢后的結(jié)果然后顯示對(duì)應(yīng)的圖片
    
  • 小工具

    • polyfill(填平瀏覽器兼容的坑费薄,解決兼容性的統(tǒng)稱硝全,腳本,可以放心的使用新特效)
      • picturefill 庫(kù)(可以使用上面提到的 picture srcset)
    • 圖片在線壓縮網(wǎng)站

設(shè)備兼容性調(diào)試

發(fā)布前需要進(jìn)行兼容性測(cè)試楞抡,虛擬機(jī)伟众。

安卓虛擬機(jī)
iOS虛擬機(jī)可以用 XCode

  • 兼容性解決

    • 使用新特性前去 caniuse 查看
    • 瀏覽器hacks
    • 使用庫(kù)
      • polyfill
        • resopnd(IE678 媒體查詢)
      • shiv
        • html5shiv(HTML5新標(biāo)簽)
      • Modernizr(檢測(cè)新特性的兼容性,再做不同情況的樣式處理)
  • 在多個(gè)設(shè)備進(jìn)行測(cè)試

    • browsersync
      可以多個(gè)瀏覽器同時(shí)查看網(wǎng)頁(yè)召廷。http://www.browsersync.cn/凳厢≌穗剩可以通過 npm 安裝

    • 啟動(dòng)服務(wù)

      • `browser-sync start --server "目錄" --files "監(jiān)聽的文件,可以通配符或者文件夾先紫,寫目錄也行"

Node.js簡(jiǎn)介

是一個(gè)基于 Chrome V8 引擎的 JS 運(yùn)行環(huán)境找爱。可以在非 JS 環(huán)境下運(yùn)行 JS 代碼泡孩。npm 是其中一個(gè)功能车摄。

npm 的使用

  • install xx

    在當(dāng)前文件目錄下執(zhí)行 npm install jquery 就會(huì)安裝插件

  • node_modules 文件夾

    使用 npm 安裝的第三方庫(kù)會(huì)統(tǒng)一安裝到這個(gè)目錄下,沒有必要進(jìn)行 git,svn 版本管理仑鸥,使用 package.json 進(jìn)行統(tǒng)一的包管理即可吮播。

  • package.json

    運(yùn)行命令 npm init,向?qū)渲煤笊梢粋€(gè) json 文件

{
  "name": "nodetest",
  "version": "1.0.0",
  "description": "readme.txt",
  "main": "test.js",
  "dependencies": {
    "jquery": "^3.1.1"
  },
  "devDependencies": {},
  "scripts": {
    "test": "echo \"Error: no test specified\" && exit 1"
  }
  "author": "",
  "license": "ISC"
}
  • dependencies眼俊,生產(chǎn)環(huán)境(上線)所需要的包

  • devDependencies意狠,開發(fā)項(xiàng)目時(shí)需要的包寫在這里

  • "jquery": "^3.1.1"

    • ^ 表示大版本號(hào)要一致,總的版本號(hào)要大于等于該版本
    • ~ 表示前幾位要一致疮胖,后一位可以不同
    • 如果無(wú)前綴則是精確版本
  • 利用 npm 安裝依賴包

    直接運(yùn)行 npm install 即可环戈,會(huì)根據(jù) package.json 安裝依賴的包

    • npm install xx --production 安裝到生產(chǎn)包
    • npm install xx --dev 安裝到開發(fā)環(huán)境包
    • npm install -g jquery 安裝后全部本地項(xiàng)目不需要安裝
  • 更新 package.json

    安裝包的時(shí)候加上后綴。

    • --save-dev 開發(fā)環(huán)境
    • --save 生產(chǎn)環(huán)境
  • 卸載包

    uninstall澎灸,要更新 package.json 也要加上 save 后綴

  • 更新包

    update 包

局域網(wǎng)訪問(遠(yuǎn)程訪問)

  • 使用 http-server

    npm install http-server -g

  • 設(shè)定根目錄

    • http-server [path][options]//path 即文件路徑院塞。啟動(dòng)后會(huì)提供兩個(gè)地址,一個(gè)本地一個(gè)局域網(wǎng)
    • http-server [path] -p [端口號(hào)]指定端口

Ctrl+C結(jié)束服務(wù)性昭。

打包發(fā)布

發(fā)布前的代碼優(yōu)化

  • 壓縮/合并/增加版本號(hào)
    • 手動(dòng)在線壓縮
    • 使用工具
      • Grunt/自動(dòng)化構(gòu)建工具
      • Gulp/自動(dòng)化構(gòu)建工具拦止,推薦
      • Webpack/靜態(tài)資源打包工具

Gulp 介紹

npm 安裝,一般作為開發(fā)依賴項(xiàng)安裝糜颠,生產(chǎn)環(huán)境不需要使用汹族。npm install gulp --save-dev
注意:該包全局安裝后還需要在項(xiàng)目安裝一次。繼續(xù)安裝插件(可以在gulp官網(wǎng)查詢功能)
npm install gulp-rev gulp-rev-replace gulp-useref gulp-filter gulp-uglify gulp-csso --save-dev

  • gulp-rev 添加版本號(hào)其兴,給文件名添加哈希碼顶瞒,內(nèi)容更新后哈希碼會(huì)改變,告訴客戶端的緩存需要更新元旬。減少人工維護(hù)
  • gulp-rev-replace 添加哈希碼后榴徐,更新文件中的引用名
  • gulp-useref 可以在HTML里通過注釋的形式寫方法,告訴 gulp 應(yīng)該如何操作注釋里面的內(nèi)容
<!-- build:css css/combined.css -->
引用CSS//把全部CSS壓縮為 combined.css
<!-- endbuild -->
<!-- build:js js/combined.js -->
引用js
<!-- endbuild -->
  • gulp-filter 過濾器法绵,比如篩選出全部js文件壓縮后放回箕速,再選擇其他文件操作
  • gulp-uglify 壓縮 js 代碼
  • gulp-csso 壓縮 css 代碼

創(chuàng)建 gulpfile.js 定義 gulp 的任務(wù),在里面定義好任務(wù)朋譬,然后通過 gulp taskName//若名字為 default 即默認(rèn)任務(wù) 執(zhí)行任務(wù)盐茎。

// 簡(jiǎn)單的一個(gè)打包壓縮代碼,gulpfile.js
var gulp = require('gulp');
var rev = require('gulp-rev');
var revReplace = require('gulp-rev-replace');
var useref = require('gulp-useref');
var filter = require('gulp-filter');
var uglify = require('gulp-uglify');
var csso = require('gulp-csso');
// 如果是default任務(wù)名徙赢,執(zhí)行時(shí)可不聲明
gulp.task('default',function(){
    var jsFilter = filter('**/*.js',{restore: true});
    var cssFilter = filter('**/*.css',{restore: true});
    var indexHtmlFilter = filter(['**/*','!**/index.html'],{restore: true})//抓取全部文件但排除index.html(為了保留默認(rèn)首頁(yè)文件名);

    return gulp.src('src/index.html')//這里src設(shè)置要操作的文件
        .pipe(useref())//抓取注釋后需要操作的代碼到“水流中”
        .pipe(jsFilter)//篩選出JS
        .pipe(uglify())//進(jìn)行壓縮操作
        .pipe(jsFilter.restore)//操作完JS后扔回流里
        .pipe(cssFilter)
        .pipe(csso())
        .pipe(cssFilter.restore)
        .pipe(indexHtmlFilter)
        .pipe(rev())//生成哈希號(hào)版本名
        .pipe(indexHtmlFilter.restore)
        .pipe(revReplace())//更新引用
        .pipe(gulp.dest('dist'));//扔入到該目錄
});
//注意:注釋中 `/*! 這樣寫的注釋不會(huì)被壓縮  */ `

壓縮完改動(dòng)后生成的舊版本 css 不要去刪除字柠,因?yàn)榭赡苡杏脩粼谠L問探越,除非過去很多個(gè)版本了。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末窑业,一起剝皮案震驚了整個(gè)濱河市钦幔,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌常柄,老刑警劉巖鲤氢,帶你破解...
    沈念sama閱讀 212,884評(píng)論 6 492
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場(chǎng)離奇詭異西潘,居然都是意外死亡卷玉,警方通過查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,755評(píng)論 3 385
  • 文/潘曉璐 我一進(jìn)店門喷市,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)相种,“玉大人,你說(shuō)我怎么就攤上這事品姓∏薏ⅲ” “怎么了?”我有些...
    開封第一講書人閱讀 158,369評(píng)論 0 348
  • 文/不壞的土叔 我叫張陵腹备,是天一觀的道長(zhǎng)衬潦。 經(jīng)常有香客問我,道長(zhǎng)馏谨,這世上最難降的妖魔是什么别渔? 我笑而不...
    開封第一講書人閱讀 56,799評(píng)論 1 285
  • 正文 為了忘掉前任,我火速辦了婚禮惧互,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘喇伯。我一直安慰自己喊儡,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 65,910評(píng)論 6 386
  • 文/花漫 我一把揭開白布稻据。 她就那樣靜靜地躺著艾猜,像睡著了一般。 火紅的嫁衣襯著肌膚如雪捻悯。 梳的紋絲不亂的頭發(fā)上匆赃,一...
    開封第一講書人閱讀 50,096評(píng)論 1 291
  • 那天,我揣著相機(jī)與錄音今缚,去河邊找鬼算柳。 笑死,一個(gè)胖子當(dāng)著我的面吹牛姓言,可吹牛的內(nèi)容都是我干的瞬项。 我是一名探鬼主播蔗蹋,決...
    沈念sama閱讀 39,159評(píng)論 3 411
  • 文/蒼蘭香墨 我猛地睜開眼,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼囱淋!你這毒婦竟也來(lái)了猪杭?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 37,917評(píng)論 0 268
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤妥衣,失蹤者是張志新(化名)和其女友劉穎皂吮,沒想到半個(gè)月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體税手,經(jīng)...
    沈念sama閱讀 44,360評(píng)論 1 303
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡涮较,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,673評(píng)論 2 327
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了冈止。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片狂票。...
    茶點(diǎn)故事閱讀 38,814評(píng)論 1 341
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖熙暴,靈堂內(nèi)的尸體忽然破棺而出闺属,到底是詐尸還是另有隱情,我是刑警寧澤周霉,帶...
    沈念sama閱讀 34,509評(píng)論 4 334
  • 正文 年R本政府宣布掂器,位于F島的核電站,受9級(jí)特大地震影響俱箱,放射性物質(zhì)發(fā)生泄漏国瓮。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 40,156評(píng)論 3 317
  • 文/蒙蒙 一狞谱、第九天 我趴在偏房一處隱蔽的房頂上張望乃摹。 院中可真熱鬧,春花似錦跟衅、人聲如沸孵睬。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,882評(píng)論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)掰读。三九已至,卻和暖如春叭莫,著一層夾襖步出監(jiān)牢的瞬間蹈集,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 32,123評(píng)論 1 267
  • 我被黑心中介騙來(lái)泰國(guó)打工雇初, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留拢肆,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 46,641評(píng)論 2 362
  • 正文 我出身青樓,卻偏偏與公主長(zhǎng)得像善榛,于是被迫代替她去往敵國(guó)和親辩蛋。 傳聞我的和親對(duì)象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 43,728評(píng)論 2 351

推薦閱讀更多精彩內(nèi)容

  • 前言 本文默認(rèn)你已經(jīng)安裝好node環(huán)境移盆,并且熟悉node命令悼院,和window cd命令。 gulp簡(jiǎn)介 基于nod...
    9I閱讀 1,979評(píng)論 4 50
  • gulpjs是一個(gè)前端構(gòu)建工具咒循,與gruntjs相比据途,gulpjs無(wú)需寫一大堆繁雜的配置參數(shù),API也非常簡(jiǎn)單叙甸,學(xué)...
    井皮皮閱讀 1,293評(píng)論 0 10
  • gulpjs是一個(gè)前端構(gòu)建工具颖医,與gruntjs相比,gulpjs無(wú)需寫一大堆繁雜的配置參數(shù)裆蒸,API也非常簡(jiǎn)單熔萧,學(xué)...
    依依玖玥閱讀 3,150評(píng)論 7 55
  • gulpjs是一個(gè)前端構(gòu)建工具,與gruntjs相比僚祷,gulpjs無(wú)需寫一大堆繁雜的配置參數(shù)佛致,API也非常簡(jiǎn)單,學(xué)...
    小裁縫sun閱讀 923評(píng)論 0 3
  • gulpjs是一個(gè)前端構(gòu)建工具辙谜,與gruntjs相比俺榆,gulpjs無(wú)需寫一大堆繁雜的配置參數(shù),API也非常簡(jiǎn)單装哆,學(xué)...
    build1024閱讀 527評(píng)論 0 0