天天看點

工作記錄:Stylus基礎教程及應用

前言

傳統CSS的缺陷

css的可重用性差、代碼備援量大、不支援語言特性如變量循環及方法等(雖然css也在慢慢支援,比如現在的css變量等,但明顯這些遠遠不夠)。

三大預處理

于是預處理器出現了:

  • 2007年,第一款預處理器Sass誕生。Sass是迄今為止最成熟的預處理器,擁有ruby社群的支援和compass這一最強大的css架構,目前受LeSS影響,已經進化到了全面相容CSS的SCSS。
  • 2009年,受Sass的影響,Less出現了。與Sass相比,他更簡單但可程式設計性不足。
  • 2010年,Stylus自Node.js社群誕生,主要用于Node項目的預處理支援。因為誕生自Node社群,Stylus看起來更加的“程式設計化”,他支援變量運算、方法、剩餘參數、疊代、條件判斷、繼承、混入等JS特性,看起來很“JavaScript”。

預處理器趨勢對比

npm近五年的下載下傳趨勢:

GitHub近五年的活躍狀态:

雖然Sass是最早誕生的預處理器,但是最受歡迎的處理器确實Less;同時關注度和社群活躍度最好的也是Less,其次是Stylus,Sass最末。

我們的選擇

其實之前已經透露過,我們預處理器選擇使用和我們團隊同樣年輕的Stylus,其原因如下:

  • 功能強大,文法非常“JavaScript”。
  • 文法精簡靈活
  • 隻需要依賴NodeJS
  • 友善易用
  • 高效

如果你習慣了pug的文法,Stylus使用起來會感覺極度舒适。Stylus的文法和pug一樣:基于縮進、省去重複的符号(

{

}

;

:

),這讓代碼看起來很簡潔(他倆絕對是抄了Python的作業)

Stylus教程

思來想去,還是決定不做無意義的搬磚了,關于教程這一塊張旭鑫大佬已經寫得很好的(畢竟是css領域的大佬),相關教程可以參考:

Stylus中文版參考文檔

Stylus官網

風格限制

核心思想是,能少按一個鍵就少按,一個鍵,畢竟:

是以,代碼風格應該是:

  • 不寫任何無意義的符号(簡潔性)
  • 層級基于嵌套(層次感)
  • 備援代碼抽離成子產品或者寫成混入(Mixins)
  • 極其相似又有規律可循的代碼寫成循環或者混入

一個小而不全的例子,例如我頁面中有這樣的結構:

<template lang="pug">
  div(:class="$style.inner")
    div(:class="$style.box")
</template>      

那麼我的樣式應該這麼寫:

<style lang="stylus" rel="stylesheet/stylus" module>
.inner
  position relative
  color=#41b883
  .box
    position absolute
    left 50%
    top 50%
    width 200px
    height @width
    margin-left -(@width/2)
    margin-top -(@height/2)
    background color
    ear(direction=left)
      breadth=40px
      position absolute
      content ''
      width breadth
      height breadth
      {direction} 25%
      transform-origin center
      transform translate(direction is left?-50%:50%,-50%) rotate(-45deg)
      background @background
    &::after
      ear()
    &::before
      ear(right)
</style>      

Vue項目中使用

建立項目

在Vue項目中使用其實非常簡單,直接Vue-ui一把梭

使用Vueui最大的好處是,我們隻需要點點滑鼠輸入必要的内容,VueCli會自動幫我們完成:

完成上面操作建立項目之後,就可以在項目中使用Stylus了;當然,你的标簽也要改成下面格式:

<style lang="stylus" rel="stylesheet/stylus" module>

</style>      

修改檔案模闆以擷取建立檔案支援

以webstrom為例,setting>Editor>File and Code Templates,選中Vue Single File Component,将

<style>

</style>      

改為:

<style  lang="stylus" rel="stylesheet/stylus" module>

</style>      

此時,建立的Vue元件中預設使用Stylus。

老項目中使用

老項目中使用Stylus隻需要下載下傳

stylus

stylus-loader

即可,使用下面的指令安裝

yarn add stylus stylus-loader
npm i stylus stylus-loader      

然後修改<style>标簽

小程式中使用

因為微信小程式一個頁面或元件對應wxss、wxml、js三個檔案(有時候覺得挺蛋疼的),是以如果想要在小程式項目中使用Stylus,則必須将

Stylus

檔案編譯成

wxss

檔案(TypeScript支援也是這麼做的)。

解決方法其實也很多,如:webpack、glup等等。但是我們不需要這麼麻煩,webstrom已幫你搞定,這也是我推崇webstrom的原因之一。

隻需要在webstrom中稍微置一下即可:

當然,前提是你需要全局下載下傳Stylus:

npm install stylus -g      

如果對您有所幫助,歡迎您點個關注,我會定時更新技術文檔,大家一起讨論學習,一起進步。

工作記錄:Stylus基礎教程及應用