前端學習之stylus+babel+gulp

前言

嗨擎椰,還在老老實實的書寫CSS代碼么?還在為javascript語句的有些兼容性而苦惱么创肥?想提高開發(fā)速度嗎达舒?讓我們沐浴在知識的陽光下,愉快的敲代碼吧叹侄。好了巩搏,我要講話了,接下來跟著我進入stylus趾代,babel塔猾,lgulp的世界吧。

一稽坤、stylus

Stylus 是一個CSS的預處理框架丈甸,2010年產(chǎn)生糯俗,來自Node.js社區(qū),主要用來給Node項目進行CSS預處理支持睦擂,所以 Stylus 是一種新型語言得湘,可以創(chuàng)建健壯的、動態(tài)的顿仇、富有表現(xiàn)力的CSS淘正。比較年輕,其本質(zhì)上做的事情與 SASS/LESS 等類似臼闻,應(yīng)該是有很多借鑒鸿吆,所以近似腳本的方式去寫CSS代碼。

Stylus默認使用 .styl 的作為文件擴展名述呐,支持多樣性的CSS語法惩淳。Stylus功能上更為強壯,和js聯(lián)系更加緊密乓搬。

stylus安裝
$ yarn global add stylus  
stylus應(yīng)用

stylus

body,html
    margin:0
    padding:0

編譯成

body,
html {
  margin: 0;
  padding: 0;
}

Nesting(嵌套)
stylus

header
    #logo
        border:1px solid red
    ul
    li a
        display: block
        color: blue
        padding: 5px
        html.ie &
            padding: 6px
        &:hover
            color: red

編譯成

header #logo {
  border: 1px solid #f00;
}
ul li a {
  display: block;
  color: #00f;
  padding: 5px;
}
html.ie ul li a {
  padding: 6px;
}
ul li a:hover {
  color: #f00;
}

Functions 方法
返回值

stylus

/* 帶參數(shù) */
border-radius(val)
    -webkit-border-radius: val
    -moz-border-radius: val
    border-radius: val
button 
    border-radius(5px);

/* 不帶參數(shù) */

border-radius()
    -webkit-border-radius: arguments
    -moz-border-radius: arguments
    border-radius: arguments

button 
    border-radius: 5px 10px;

編譯成

button {
  -webkit-border-radius: 5px;
  -moz-border-radius: 5px;
  border-radius: 5px;
}
/* 不帶參數(shù) */
button {
  -webkit-border-radius: 5px 10px;
  -moz-border-radius: 5px 10px;
  border-radius: 5px 10px;
}

Variables(變量)
stylus

font-size = 14px
body
    font font-size Arial, sans-seri

編譯成

body {
  font: 14px Arial, sans-seri;
}

變量放在屬性中
stylus

#prompt
    position: absolute
    top: 150px
    left: 50%
    width: w = 200px
    margin-left: -(w / 2)

編譯成

#prompt {
  position: absolute;
  top: 150px;
  left: 50%;
  width: 200px;
  margin-left: -100px;
}

塊屬性訪問引用
stylus

#prompt
    position: absolute
    width: 200px
    margin-left: -(@width / 2)

編譯成

#prompt {
  position: absolute;
  width: 200px;
  margin-left: -100px;
}

命令行(進入指定文件夾 依據(jù)已創(chuàng)建的common.styl 文件 創(chuàng)建common.css文件)stylus common.styl -o common.css
stylus -w common.styl -o common.css (加-w 一直監(jiān)聽.styl樣式轉(zhuǎn)變思犁,自動編譯成css文件)
stylus中文版

二、babel

Babel是一個廣泛使用的轉(zhuǎn)碼器进肯,可以將ES6代碼轉(zhuǎn)為ES5代碼激蹲,從而在現(xiàn)有環(huán)境執(zhí)行。


這意味著江掩,你可以現(xiàn)在就用ES6編寫程序学辱,而不用擔心現(xiàn)有環(huán)境是否支持。

配置babel

命令

        $ yarn add babel-cli
        $ yarn add babel-plugin-transform-object-assign
        $ yarn add babel-preset-es2015

配置文件.babelrc

Babel的配置文件是.babelrc环形,存放在項目的根目錄下策泣。使用Babel的第一步,就是配置這個文件斟赚。
該文件用來設(shè)置轉(zhuǎn)碼規(guī)則和插件着降,基本格式如下。

{
    "presets": ["es2015"],
    "plugins": ["transform-object-assign"]
}

生成的package.json

{
    "dependencies": {
        "babel-cli": "^6.24.1",
        "babel-plugin-transform-object-assign": "^6.22.0",
        "babel-preset-es2015": "^6.24.1"
    }
}

栗子:(index.js)

var obj = { a: 1 };
let objA = { b: 2 };
var obj1 = Object.assign({}, obj, objA);
console.log(obj1);

經(jīng)過babel轉(zhuǎn)換后的代碼(babel.js)

$ index.js -o babel.js
```js
"use strict";

var _extends = Object.assign || function(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; };

var obj = { a: 1 };
var objA = { b: 2 };
var obj1 = _extends({}, obj, objA);
console.log(obj1);

三拗军、gulp

gulp是前端開發(fā)過程中對代碼進行構(gòu)建的工具任洞,是自動化項目的構(gòu)建利器;她不僅能對網(wǎng)站資源進行優(yōu)化发侵,而且在開發(fā)過程中很多重復的任務(wù)能夠使用正確的工具自動完成交掏;使用她,我們不僅可以很愉快的編寫代碼刃鳄,而且大大提高我們的工作效率盅弛。
安裝

初始化node項目:
 $ npm init -y
本地安裝glup:
 $ yarn add gulp
本地安裝browser-sync: 
$ yarn add browser-sync
本地安裝gulp-stylus: 
$ yarn add glup-stylus
本地安裝gulp-minify-css: 
$ yarn add gulp-minify-css  (css文件壓縮)
本地安裝gulp-uglify: 
$ yarn add gulp-uglify (js文件壓縮)

gulp 任務(wù)配置browser-sync

// 定義工作流
var gulp  = require('gulp');
// 配合gulp 有一些配合插件
var browserSync = require('browser-sync').create();
var reload = browserSync.reload;
gulp.task('watch', function() {
    // 啟動browser-sync
    browserSync.init({
        server: './'
    });
    var temlateFiles = [
    '*.html'
    ];
    gulp.watch(temlateFiles).on('change', reload);
});

gulp 任務(wù)配置 stylus

var stylusPath = './src/stylus/*.styl';
var stylus = require('gulp-stylus');
var minifyCss = require('gulp-minify-css');

gulp.task('stylus', function() {
    return      
gulp.src(stylusPath)
.pipe(stylus()).
pipe(minifyCss())
.pipe(gulp.dest('dist/css'))
.pipe(browserSync.stream());
});

gulp詳細入門教程

結(jié)語

站在巨人的肩膀上。學習是一個漫長的過程,如本文中有不合適的部分挪鹏,還請您指教见秽,歡迎一起交流學習,共同進步讨盒。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末解取,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子返顺,更是在濱河造成了極大的恐慌禀苦,老刑警劉巖,帶你破解...
    沈念sama閱讀 211,290評論 6 491
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件遂鹊,死亡現(xiàn)場離奇詭異振乏,居然都是意外死亡,警方通過查閱死者的電腦和手機秉扑,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,107評論 2 385
  • 文/潘曉璐 我一進店門慧邮,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人邻储,你說我怎么就攤上這事赋咽【稍耄” “怎么了吨娜?”我有些...
    開封第一講書人閱讀 156,872評論 0 347
  • 文/不壞的土叔 我叫張陵,是天一觀的道長淘钟。 經(jīng)常有香客問我宦赠,道長,這世上最難降的妖魔是什么米母? 我笑而不...
    開封第一講書人閱讀 56,415評論 1 283
  • 正文 為了忘掉前任勾扭,我火速辦了婚禮,結(jié)果婚禮上铁瞒,老公的妹妹穿的比我還像新娘妙色。我一直安慰自己,他們只是感情好慧耍,可當我...
    茶點故事閱讀 65,453評論 6 385
  • 文/花漫 我一把揭開白布身辨。 她就那樣靜靜地躺著,像睡著了一般芍碧。 火紅的嫁衣襯著肌膚如雪煌珊。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 49,784評論 1 290
  • 那天泌豆,我揣著相機與錄音定庵,去河邊找鬼。 笑死,一個胖子當著我的面吹牛蔬浙,可吹牛的內(nèi)容都是我干的猪落。 我是一名探鬼主播,決...
    沈念sama閱讀 38,927評論 3 406
  • 文/蒼蘭香墨 我猛地睜開眼畴博,長吁一口氣:“原來是場噩夢啊……” “哼许布!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起绎晃,我...
    開封第一講書人閱讀 37,691評論 0 266
  • 序言:老撾萬榮一對情侶失蹤蜜唾,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后庶艾,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體袁余,經(jīng)...
    沈念sama閱讀 44,137評論 1 303
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 36,472評論 2 326
  • 正文 我和宋清朗相戀三年咱揍,在試婚紗的時候發(fā)現(xiàn)自己被綠了颖榜。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 38,622評論 1 340
  • 序言:一個原本活蹦亂跳的男人離奇死亡煤裙,死狀恐怖掩完,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情硼砰,我是刑警寧澤且蓬,帶...
    沈念sama閱讀 34,289評論 4 329
  • 正文 年R本政府宣布,位于F島的核電站题翰,受9級特大地震影響恶阴,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜豹障,卻給世界環(huán)境...
    茶點故事閱讀 39,887評論 3 312
  • 文/蒙蒙 一冯事、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧血公,春花似錦昵仅、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,741評論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至薛夜,卻和暖如春籍茧,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背梯澜。 一陣腳步聲響...
    開封第一講書人閱讀 31,977評論 1 265
  • 我被黑心中介騙來泰國打工寞冯, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留渴析,地道東北人。 一個月前我還...
    沈念sama閱讀 46,316評論 2 360
  • 正文 我出身青樓吮龄,卻偏偏與公主長得像俭茧,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子漓帚,可洞房花燭夜當晚...
    茶點故事閱讀 43,490評論 2 348

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

  • Pines Cheng’s Blog awesome-gulp中文版 一份gulp的資源母债,插件和使用實例清單, 致...
    大前端之路閱讀 2,301評論 0 12
  • awesome-gulp中文版 一份gulp的資源搅荞,插件和使用實例清單红氯, 致力于打造更好的前端工程構(gòu)建流程。 被老...
    Pines_Cheng閱讀 5,517評論 10 117
  • 在現(xiàn)在的前端開發(fā)中咕痛,前后端分離痢甘、模塊化開發(fā)、版本控制茉贡、文件合并與壓縮塞栅、mock數(shù)據(jù)等等一些原本后端的思想開始...
    Charlot閱讀 5,433評論 1 32
  • gulpjs是一個前端構(gòu)建工具,與gruntjs相比块仆,gulpjs無需寫一大堆繁雜的配置參數(shù)构蹬,API也非常簡單王暗,學...
    依依玖玥閱讀 3,149評論 7 55
  • 寫在開頭 先說說為什么要寫這篇文章, 最初的原因是組里的小朋友們看了webpack文檔后, 表情都是這樣的: (摘...
    Lefter閱讀 5,276評論 4 31