本篇為 [FE201] 前端中階:那些前端會用到的工具們 這門課程的學習筆記。如有錯誤歡迎指正。
前言
在使用新工具之前,大致會依照下列步驟:
- 安裝工具
- 閱讀官方文件
- 更改設定檔
SASS:CSS 預處理器
在進入 CSS 預處理器之前,先談談 CSS 在開發上可能遇到哪些問題:
- 全域會互相干擾
- 例如:在 index.html 同時引入 main.css 和 normalize.css 可能會互相干擾,不易進行 debug 與維護
- 沒有變數
- 現在有 CSS Variable
- 沒有辦法組合
因此 CSS 預處理器就誕生了,讓我們能夠以寫程式的方式處理樣式,方便進行維護。

什麼是 SASS?
SASS(Syntactically Awesome Stylesheets)/ SCSS
- 是 CSS 預處理器,能更有結構撰寫程式碼,方便後續維護
- 適合大型專案使用
- SASS 無大括號;SCSS 有,因此後者和 CSS 相容
- CSS 預處理器需另外編譯成 CSS,瀏覽器才能看得懂
【註】SAS(Statistical Analysis System) / SPSS:統計分析系統,用來進行數據分析的軟體
SASS 提供的功能
- 參數與結構化 CSS
- Nesting:巢狀語法
- Variables:變數設定
- 模組化 CSS
- Import
- Extend
- Mixin
- Functions
- 自動化 CSS
- Condition
- Loop
相關語法
- 安裝 Sass
npm install -g sass:-g 表示在全域安裝
- 一次性編譯
sass main.sass main.css:將 main.sass 檔編譯成 main.css
- watch 模式
sass --watch main.sass main.css:每次存檔均會自動進行編譯
- 壓縮功能
sass --style=compressed mais.sass main.css:通常是在開發最後才會執行
Sass 實作補充
main.css 通常由下列要素組成:
- utils:整理出常用的 variables(背景顏色等)和 mixins(垂直至中、對齊等樣式功能)
- Components:整理跨頁元件
- Layouts:獨立的大元件
- Pages
- 其他樣式:themes(dark mode)、vendors(bootstrap css)
巢狀與變數
- 巢狀語法:注意
&前的空格
1 | .section |
編譯結果:
1 | .section { |
- 變數設定:使用
$來命名
1 | $primary: #0047AB |
編譯結果:
1 | .color { |
模組化 CSS
@import:引入檔案,用來分別進行管理
- 例如:將變數放到
_variables.sass統一管理,然後在main.sass加上@import _variables.sass即可引入檔案
export:繼承,處理共同樣式
- 使用時機:可將所有相同樣式的內容合併,減少重複的行為
- 例如:
<a>統一去除底線、制定 template1
2
3
4
5
6
7
8
9
10
11
12
13
14%btn
padding: 1rem 2rem
color: $background
font-size: 1rem
margin: 1rem
transition: .1s
.btn
&-primary
@extend %btn
&-secondary
@extend %btn
&-waring
@extend %btn
編譯結果:
1 | .btn-waring, .btn-secondary, .btn-primary { |
mixin:打包常用功能,替換局部變數
- 使用時機:用於需重複使用到的屬性,且可帶入變數,以進行微調
- 例如:width、height、flex-center 等
1 | @mixin btn |
編譯結果:
1 | .btn-primary { |
function:可回傳數值,搭配變數和 mixin 使用
- 與
@mixin的不同之處,在於@function只會回傳一個值,而@mixin是回傳一段CSS程式碼
Sass 自動化
loop 迴圈
- 使用
@each搭配 array- 以逗號表示
center, start, end
- 以逗號表示
1 | $direction-typs: center, start, end |
編譯結果:
1 | .flex-center { |
- 使用
@each搭配 map- 在括號以
參數:值表示(center: center, start: flex-start, end: flex-end)
- 在括號以
1 | $direction-typs: (center: center, start: flex-start, end: flex-end) |
編譯結果:
1 | .flex-center { |
- for 迴圈
- 使用時機:用於預先設定,或特效網站需產生密集大小值
1
2
3@for $i from 0 through 5
.h#{5 - $i + 1}
font-size: 1 + 0.2rem * $i
- 使用時機:用於預先設定,或特效網站需產生密集大小值
編譯結果:
1 | .h6 { |
condition
有關 Flow Control 可參考官方文件。
參考資料:
- Sass/SCSS 基本語法介紹,搞懂CSS 預處理器
- 常用色彩表
- SCSS 筆記(2) - extend、mixin、function
重構檔案流程
- 步驟一:將重複的部分用巢狀方式撰寫
- 步驟二:將顏色、字體大小,統一使用變數命名
_variables.sass - 步驟三:抽檔案,把重複的區塊放到
_components.sass - 步驟四:將分出的區塊以
@import引入,完成後將所有檔案打包
BABEL:JS 轉譯器
BABEL 是 JavaScript 轉譯器,可將 ES6+ 程式碼轉為等效的 ES5 程式碼。
參考資料:利用 Babel 支援現代 JavaScript 的特性