# Nuxt.js 起手式配置和筆記 ## styleResources > https://zh.nuxtjs.org/api/configuration-build/#styleresources 匯入全域的 sass,將常用的變數和 mixin 注入到所有的 `.vue` 組件裡,省去一個個在組件 `style` 區塊中重複撰寫 `@import "..."`。 首先安裝 `@nuxtjs/style-resources` ```bash= npm i @nuxtjs/style-resources ``` 設定 `nuxt.config.js` ```javascript= // nuxt.config.js export default { /* ... */ modules: [ '@nuxtjs/style-resources' ], styleResources: { // 匯入你自訂的 sass 變數 sass: [ './assets/sass/_functions.sass', './assets/sass/_variables.sass' ] }, } ``` :::warning ⚠️ 官方文件特別提到: **請勿**在 sass 檔內匯入「實際的」樣式,因為它會把這些樣式都塞進所有組件裡,導致建構或開發階段時編譯變的**巨慢巨肥**。 最好只匯入變數、mixin、函式等,因為它們經建構後就不存在了。 ```sass= // _variables.sass // ❌ 別這麼做 .text-blood color: red // ✅ 變數 👌 $blood: #f00 // ✅ mixin 👌 @mixin wh($w, $h: $w) width: $w height: $h ``` > https://github.com/nuxt-community/style-resources-module/blob/master/README.md#warning ::: ## 安裝 Sass Loader ``` npm i node-sass sass-loader ``` ## 解決首屏 CSS 閃爍 在此載入全域 css 樣式,而不是在 `layouts/default.vue` 的 `style` 區塊中 import ```javascript= // nuxt.config.js export default { /* ... */ css: [ './assets/sass/style.sass' ], } ``` 另外設定 extractCSS ```javascript= // nuxt.config.js export default { build: { /* ... */ extractCSS: true, } } ``` ## 配置 Fontawesome ```javascript= // 新建 plugins/font-awesome.js import Vue from 'vue' import { FontAwesomeIcon } from '@fortawesome/vue-fontawesome' Vue.component('fa', FontAwesomeIcon) ``` ```javascript= // nuxt.config.js export default { /* ... */ plugins: [ /* ... */ '~/plugins/font-awesome', ], modules: [ /* ... */ 'nuxt-fontawesome', ], fontawesome: { imports: [ { set: '@fortawesome/free-solid-svg-icons', icons: ['fas'] }, { set: '@fortawesome/free-brands-svg-icons', icons: ['fab'] }, ] } ``` 在組件中使用 Fontawesome: ```pug= div //- solid fa(icon='beer') //- brand fa(:icon='["fab", "facebook"]') ```