如何在項(xiàng)目中使用Sass

想想學(xué)習(xí)Sass時(shí)間也有差不多一年的光景了。在這一年來(lái)的時(shí)間中,在GitHub不斷閱讀Sass相關(guān)的源碼。也在國(guó)外涉獵了相關(guān)的知識(shí),也讓自己初步掌握了一些Sass一些基礎(chǔ)知識(shí)與技能,當(dāng)然也讓自己喜歡上了Sass,并且在國(guó)內(nèi)致力于Sass的推廣。希望各多的前端開發(fā)者喜歡上Sass,也希望Sass能真正為前端人員帶來(lái)好處。
最近看到越來(lái)越多的同學(xué)在學(xué)習(xí)和使用Sass,感到非常的高興,終于有更多的同行朋友加入到這個(gè)行列。同時(shí)也看到了很多同學(xué)了解了Sass,掌握了一些Sass技術(shù),但就是不知道如何結(jié)合到項(xiàng)目中。那么今天,我就想和大家一起探討一下如何在項(xiàng)目中使用Sass。

為什么要在項(xiàng)目中使用Sass

聽到最多的一句話就是我會(huì)CSS,我能使用CSS寫項(xiàng)目,為什么我要花時(shí)間去學(xué)習(xí)Sass,一個(gè)自己并不了解的東西,一個(gè)對(duì)于自己來(lái)說(shuō)是全新的東西?看到這樣的問(wèn)題,讓我想起了2010年討論CSS3的時(shí)候,很多同學(xué)同樣有這樣的凝問(wèn),CSS3真的會(huì)來(lái)?我真的要學(xué)習(xí)CSS3?現(xiàn)在,時(shí)間證明了一切。我還是想說(shuō),很多東西并不是需要的時(shí)候才去學(xué),機(jī)會(huì)是給有準(zhǔn)備的同學(xué)。
似乎有些離題了,我們還是回到今天的話題中來(lái),為什么要在項(xiàng)目中使用Sass?在此,我僅想說(shuō)說(shuō)我個(gè)人的一些看法。
首先,CSS能完成的事情,Sass一樣能完成,而且可能更好的完成,另外CSS做不到的事情,卻有很多Sass能做到,比如:

  • Sass可以定義變量,混合宏,%placeholder;
  • Sass可以定義函數(shù);
  • Sass可以使用@if、@fore、@while這樣的控制指令;
  • Sass可以使用JSON數(shù)據(jù)(map);

當(dāng)然,除了這些基本功能之外,在項(xiàng)目中使用Sass,還可以讓你更好的維護(hù)項(xiàng)目,擴(kuò)展項(xiàng)目,復(fù)用項(xiàng)目等。還能讓你的代碼更簡(jiǎn)潔。
說(shuō)到這里,還有一種聲音在說(shuō),小項(xiàng)目有必要使用Sass?試問(wèn),項(xiàng)目有大小之分嗎?既然Sass能幫助我們更好的開發(fā)、管理、維護(hù)項(xiàng)目,那么為什么只允許在大項(xiàng)目中使用Sass,而不能在小項(xiàng)目中使用呢?難道小項(xiàng)目就需要維護(hù)嗎?不需要管理嗎?帶著這樣的問(wèn)題,往下閱讀,或許你會(huì)有些改觀。

怎么在項(xiàng)目中使用Sass

說(shuō)了這么多,同學(xué)們更為關(guān)心的是怎么在項(xiàng)目中使用Sass。并不太在意Sass有多好。因?yàn)檫@樣的爭(zhēng)論也實(shí)在是沒有太多的意義。那么我們就不說(shuō)其他的,就說(shuō)怎么在項(xiàng)目中使用Sass吧。
經(jīng)過(guò)在項(xiàng)目中使用Sass,我自身有一些看法,或者說(shuō)我的操作方式吧。也當(dāng)是經(jīng)驗(yàn)吧,希望對(duì)初學(xué)者有所幫助。

創(chuàng)建運(yùn)行Sass的環(huán)境

要想在項(xiàng)目中正常使用Sass,你得先保證你的電腦上能運(yùn)行Sass的環(huán)境。這也是Sass受限,也是不被大家愛戴的原因之一。很多人討論使用Sass,需要先安裝Ruby環(huán)境。對(duì)于不喜歡命令編譯的同學(xué),還需要安裝GUI編譯器。
其實(shí)安裝Sass環(huán)境也并不是件難事,就好比配Wamp環(huán)境,整完一次就OK了。但就是這么第一次的安裝,給初學(xué)者帶來(lái)很多的障礙,也成了同學(xué)們學(xué)習(xí)Sass和使用Sass的攔路虎。如果你只是想學(xué)習(xí)或者了解Sass的話,可以不用在本機(jī)上安裝Sass,你可以借助在線編輯器,比如:SassMeisterCodePen。而且他們都支持即寫即所得。如果你對(duì)Sass已有一定的基礎(chǔ),想在項(xiàng)目中使用,已是蠢蠢欲動(dòng)了,那你還是離不開在電腦中安裝Sass環(huán)境。至于如何在電腦上安裝Sass,在這篇文章中就不做過(guò)多的闡述,感興趣的同學(xué)可以閱讀下面的文章:

我想根據(jù)上面的教程介紹,在你的電腦上安裝Sass不會(huì)是件難事。不過(guò)在我們天朝,有些東西被墻了,時(shí)常讓你安裝Sass不成功。在這里給大家介紹一個(gè)簡(jiǎn)單的方法:
假設(shè)你已成功安裝好了Ruby。先將Sass下載到本地。并打開你的命令終端:

gem install

此時(shí)先不要回車,將你下載下來(lái)的Sass安裝包,用鼠標(biāo)拖到"install"后面,此時(shí)你在命令終端,可以看到:

gem install /Users/airen/Downloads/sass-3.3.14.gem

這個(gè)時(shí)候再回車,這樣就OK了。為了確認(rèn)是否安裝成功,只面要輸入:

sass -v

如果能看到Sass版本號(hào),就表示你已成功安裝了。接下來(lái)你就可以做你想做的事情了。
注:不同的系統(tǒng),不同的用戶和版本,對(duì)應(yīng)相關(guān)路徑和信息都會(huì)不一樣“/Users/airen/Downloads/sass-3.3.14.gem”。

創(chuàng)建公用的Sass項(xiàng)目模板

在做項(xiàng)目時(shí),不管什么項(xiàng)目,他們之間總是有一些可以共用的部分。比如說(shuō)重置樣式、公用樣式、模塊組件、UI庫(kù)等。那么在Sass項(xiàng)目中也是如此。為了避免在每個(gè)項(xiàng)目中做一些相同的事情,那么你可以在你的電腦上創(chuàng)建一個(gè)公用的Sass項(xiàng)目模板。比如我創(chuàng)建的:


如何在項(xiàng)目中使用Sass

在這樣的一個(gè)模板中,每個(gè)Sass目錄下的文件夾都對(duì)應(yīng)著各種分類的_xxx.scss
文件:

  • base: 放置一些基本樣式的SCSS文件,比如重置樣式_normalize.scss,基本樣式_base.scss,文本排版樣式_typography.scss等
  • components:放置一些公用組件,比如:按鈕_buttons.scss、表單_form.scss、表格_tables.scss、選項(xiàng)卡_tabs.scss等
  • helps:放置一些輔助功能性文件,比如:_css3.scss、_variables.scss、_mixins.scss、_helpers.scss和_function.scss等
  • layout:放置一些跟頁(yè)面布局相關(guān)的,比如:_layout.scss、_header.scss、_footer.scss、_sidbar.scss等
  • pages:放置跟具體項(xiàng)目頁(yè)面相關(guān)的樣式文件。
  • themes:對(duì)于一些有前后臺(tái)頁(yè)面,或者需換膚的項(xiàng)目,就可以將相關(guān)文件放置在這里。
  • vendors:引用的外部插件或者框架的SCSS文件,比如_bootstrap.scss、_foundation.scss。
  • style.scss: 這是主樣式文件,最終編譯,就編譯這個(gè)問(wèn)題。當(dāng)然根據(jù)項(xiàng)目大小,可做一些其他處理。比如說(shuō)針對(duì)不同的頁(yè)面,創(chuàng)建不同的page_xxx.scss文件。

當(dāng)然每個(gè)人或許會(huì)有不同的方式方法。創(chuàng)建好了這樣的一個(gè)模板之后,以后只要有新項(xiàng)目,就可以復(fù)制、粘貼,然后修改項(xiàng)目名稱,這樣就即可。

不過(guò),對(duì)于一些公共使用的部分,還是盡量在公用模板中修改。比如說(shuō)你添加的混合宏mixin、占位符%placeholder、函數(shù)功能function。還有就是一些公用的組件。

或許這樣復(fù)制并不方便,那是否可以考慮像Compass這樣的框架,自己寫一個(gè)可安裝的功能呢?或者將公用的部分,引用到你所有需要的項(xiàng)目中?不過(guò)這兩種方法,我都沒有嘗試過(guò)。其一,自己不會(huì)寫那種帶有g(shù)em
安裝功能的東東,其二,沒有單獨(dú)試過(guò)在不同的項(xiàng)目中使用相對(duì)路徑調(diào)用資源。如果您嘗試過(guò),記得與我們一起分享。

組織Sass項(xiàng)目

其實(shí)就是將公用的這個(gè)當(dāng)作是一個(gè)Sass項(xiàng)目,只不過(guò)這個(gè)Sass項(xiàng)目是用來(lái)做備用的,可以無(wú)限制的復(fù)用。那么在創(chuàng)建這樣的一個(gè)項(xiàng)目時(shí),就需要合理的組織,便天后期的使用。

早前翻譯過(guò)John W. Long一篇文章如何組織一個(gè)Sass項(xiàng)目。上面的文件組織結(jié)構(gòu)的思路就是來(lái)源于此。當(dāng)然,大家還可以參考一些大型Sass框架做為參考:
Compass

如何在項(xiàng)目中使用Sass

Foundation

如何在項(xiàng)目中使用Sass

Bootstrap-Sass

如何在項(xiàng)目中使用Sass

除此之外,還有:

Sass項(xiàng)目的編譯與調(diào)試

具備上述之后,你在具體編寫Sass的時(shí)候,還需要掌握Sass的編譯和調(diào)試。眾所周知,在項(xiàng)目中具體引用的是.css文件而不是.scss或者.sass文件。所以你要將寫好的Sass編譯成需要的CSS。對(duì)于如何編譯?其實(shí)方法很多種,你要是喜歡使用命令,你可以直接在命令終端編譯,如果你不喜歡命令編譯,你還可以使用GUI這樣的界面工具輔助編譯。具體的可以閱讀:

除此之外,你要是對(duì)Node,Grunt和Gulp熟悉,你還可以使用他們幫你編譯Sass。比如Nodejs+Grunt配置SASS項(xiàng)目自動(dòng)編譯一文所介紹。
至于如何調(diào)試,前端開發(fā)人員都知道可以使用Firebug這樣的工具來(lái)調(diào)試CSS。其實(shí)使用Sass的同學(xué),也非常期待能在Firebug下直接調(diào)試Sass。那么現(xiàn)在在Chromet和Firefox瀏覽器都支持了Sass的Soucemap功能,可以直接在瀏覽器中調(diào)試相應(yīng)的Sass。如下面的幾篇文章所言:

Sass在項(xiàng)目中的實(shí)戰(zhàn)

說(shuō)了這么多,我們還是以一個(gè)實(shí)例來(lái)做示例吧,這樣形象一些。假設(shè)收到這樣一個(gè)項(xiàng)目:


如何在項(xiàng)目中使用Sass

在“后臺(tái)”和“前臺(tái)”各對(duì)應(yīng)了一些設(shè)計(jì)圖。這些我們并不需要太多關(guān)心,他們長(zhǎng)成什么樣子。先將創(chuàng)建好的公用Sass項(xiàng)目復(fù)制一份,并將其粘貼到你本地項(xiàng)目環(huán)境中,修改成你需要的項(xiàng)目名,比如我這里將其稱為“tuhaokuai”。

如何在項(xiàng)目中使用Sass

拋棄其他因素不看,僅看"sass"目錄,Sass公用項(xiàng)目和新項(xiàng)目“tuhaokuai”長(zhǎng)得是一模一樣。當(dāng)然,在里面會(huì)不一樣的。主要在pages
目錄中,針對(duì)所需的頁(yè)面創(chuàng)建了不同的頁(yè)面文件:

如何在項(xiàng)目中使用Sass

如此一來(lái),針對(duì)不同的頁(yè)面,添加其對(duì)應(yīng)的樣式代碼,比如:

_index.scss

如何在項(xiàng)目中使用Sass

_mysite.scss

如何在項(xiàng)目中使用Sass

其他文件就不一一展示了,看上去是不是非常清楚。其實(shí)簡(jiǎn)單點(diǎn)說(shuō),這些東西就是一些零件,我們要讓項(xiàng)目樣式生效,就需要把需要的零件裝上去,然后固定他。這樣就好了。在這個(gè)項(xiàng)目中,由于他并不太復(fù)雜,只使用了一個(gè)主樣式:style.scss
。并且將需要的東西通過(guò)@import
引入進(jìn)來(lái):


如何在項(xiàng)目中使用Sass

此時(shí)你只需要將style.scss編譯成style.css,引用到你的項(xiàng)目就行了。
其實(shí)你也可以按照你自己的需求去組裝,假設(shè),首頁(yè)我只需要首頁(yè)用到的樣式,那么你完全可以創(chuàng)建一個(gè)index.scss的SCSS文件,然后將需要的引入進(jìn)來(lái):


如何在項(xiàng)目中使用Sass

接下來(lái),在index.html引用編譯出來(lái)的樣式文件index.css
即可(文件名你可以換成自己想要的)。

著作權(quán)歸作者所有。商業(yè)轉(zhuǎn)載請(qǐng)聯(lián)系作者獲得授權(quán),非商業(yè)轉(zhuǎn)載請(qǐng)注明出處。

作者:大漠 日期:2014-08-08
原文:http://www.w3cplus.com/preprocessor/how-to-create-project-with-sass.html

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌,老刑警劉巖,帶你破解...
    沈念sama閱讀 228,461評(píng)論 6 532
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場(chǎng)離奇詭異,居然都是意外死亡,警方通過(guò)查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 98,538評(píng)論 3 417
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái),“玉大人,你說(shuō)我怎么就攤上這事。” “怎么了?”我有些...
    開封第一講書人閱讀 176,423評(píng)論 0 375
  • 文/不壞的土叔 我叫張陵,是天一觀的道長(zhǎng)。 經(jīng)常有香客問(wèn)我,道長(zhǎng),這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 62,991評(píng)論 1 312
  • 正文 為了忘掉前任,我火速辦了婚禮,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘。我一直安慰自己,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 71,761評(píng)論 6 410
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著,像睡著了一般。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 55,207評(píng)論 1 324
  • 那天,我揣著相機(jī)與錄音,去河邊找鬼。 笑死,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播,決...
    沈念sama閱讀 43,268評(píng)論 3 441
  • 文/蒼蘭香墨 我猛地睜開眼,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼!你這毒婦竟也來(lái)了?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 42,419評(píng)論 0 288
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤,失蹤者是張志新(化名)和其女友劉穎,沒想到半個(gè)月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 48,959評(píng)論 1 335
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 40,782評(píng)論 3 354
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 42,983評(píng)論 1 369
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情,我是刑警寧澤,帶...
    沈念sama閱讀 38,528評(píng)論 5 359
  • 正文 年R本政府宣布,位于F島的核電站,受9級(jí)特大地震影響,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 44,222評(píng)論 3 347
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧,春花似錦、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 34,653評(píng)論 0 26
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)。三九已至,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 35,901評(píng)論 1 286
  • 我被黑心中介騙來(lái)泰國(guó)打工, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 51,678評(píng)論 3 392
  • 正文 我出身青樓,卻偏偏與公主長(zhǎng)得像,于是被迫代替她去往敵國(guó)和親。 傳聞我的和親對(duì)象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 47,978評(píng)論 2 374

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