Stylus @import

2023-09-11 16:05 更新

導入(@import)

導入

Stylus支持字面@import CSS, 也支持其他Stylus樣式的動態(tài)導入。

字面CSS

任何.css擴展的文件名將作為字面量。例如:

@import "reset.css"

渲染如下:

@import "reset.css"
Stylus導入

當使用@import沒有.css擴展,會被認為是Stylus片段(如:@import "mixins/border-radius")。

@import工作原理為:遍歷目錄隊列,并檢查任意目錄中是否有該文件(類似node的require.paths)。該隊列默認為單一路徑,從filename選項的dirname衍生而來。 因此,如果你的文件名是/tmp/testing/stylus/main.styl,導入將顯現(xiàn)為/tmp/testing/stylus/。

@import也支持索引形式。這意味著當你@import blueprint, 則會理解成blueprint.styl或blueprint/index.styl. 對于庫而言,這很有用,既可以展示所有特征與功能,同時又能導入特征子集。

如下很常見的庫結(jié)構(gòu):

./tablet
  |-- index.styl 
  |-- vendor.styl 
  |-- buttons.styl 
  |-- images.styl 

下面這個例子中,我們設(shè)置paths選項用來為Stylus提供額外路徑。在./test.styl中,我們可以@import "mixins/border-radius"或@import "border-radius"(因為./mixins 暴露給了Stylus)。

  /**
   * 依賴模塊
   */

  var stylus = require('../')
    , str = require('fs').readFileSync(__dirname + '/test.styl', 'utf8');

  var paths = [
      __dirname
    , __dirname + '/mixins'
  ];

  stylus(str)
    .set('filename', __dirname + '/test.styl')
    .set('paths', paths)
    .render(function(err, css){
      if (err) throw err;
      console.log(css);
    });
JavaScript導入API

當使用.import(path)方法,這些導入是被推遲的,直到賦值。

var stylus = require('../')
  , str = require('fs').readFileSync(__dirname + '/test.styl', 'utf8');

stylus(str)
  .set('filename', __dirname + '/test.styl')
  .import('mixins/vendor')
  .render(function(err, css){
  if (err) throw err;
  console.log(css);
});

下面語句:

@import 'mixins/vendor'

等同于:

.import('mixins/vendor')


以上內(nèi)容是否對您有幫助:
在線筆記
App下載
App下載

掃描二維碼

下載編程獅App

公眾號
微信公眾號

編程獅公眾號