Vue引入sass并配置全局變量的方法
引入sass
首先使用官方提供的腳手架vue-cli進(jìn)行搭建框架,這里就不做說明了,查閱官網(wǎng)即可。
等安裝完所有依賴后,安裝sass的依賴包:
npm install --save-dev sass-loader //sass-loader依賴于node-sass npm install --save-dev node-sass
然后在build文件夾下的webpack.base.conf.js
的rules里面添加配置:
{ test: /\.sass$/, loaders: ['style', 'css', 'sass'] }
然后添加csslang屬性。注意,這里是scss,而且css文件的后綴也是scss:
<style lang="scss"></style>
最后需要重新編譯一下項(xiàng)目,否則沒有效果。
$ npm run dev
現(xiàn)在就可以隨意的使用sass了,這時(shí)候會(huì)發(fā)現(xiàn)如果我想定義幾個(gè)變量進(jìn)行全局使用,好像只能在頁面中通過@import
來引入,這顯然不夠優(yōu)雅,可以這樣解決。
配置sass全局變量
有一個(gè)babel插件可以完美的解決這個(gè)問題:sass-resources-loader
可以訪問sass資源任何一個(gè)需要訪問的sass模塊。所以,可以使用共享變量和混合所有SASS樣式,而不去每個(gè)文件都引用。
首先進(jìn)行插件安裝:
npm install --save-dev sass-resources-loader
然后在 build 文件夾下找到 util.js
修改sass編譯器loader的配置,直接把下面的代碼復(fù)制進(jìn)去即可:
// 全局文件引入 當(dāng)然只想編譯一個(gè)文件的話可以省去這個(gè)函數(shù) function resolveResource(name) { return path.resolve(__dirname, '../src/style/' + name); } function generateSassResourceLoader() { var loaders = [ cssLoader, 'sass-loader', { loader: 'sass-resources-loader', options: { // 多個(gè)文件時(shí)用數(shù)組的形式傳入,單個(gè)文件時(shí)可以直接使用 path.resolve(__dirname, '../static/style/common.scss' resources: [resolveResource('theme.scss')] } } ]; if (options.extract) { return ExtractTextPlugin.extract({ use: loaders, fallback: 'vue-style-loader' }) } else { return ['vue-style-loader'].concat(loaders) } }
將默認(rèn)的sass配置改為 generateSassResourceLoader()。
return { css: generateLoaders(), postcss: generateLoaders(), less: generateLoaders('less'), // vue-cli默認(rèn)sass配置 // sass: generateLoaders('sass', { indentedSyntax: true }), // scss: generateLoaders('sass'), // 新引入的sass-resources-loader sass: generateSassResourceLoader(), scss: generateSassResourceLoader(), stylus: generateLoaders('stylus'), styl: generateLoaders('stylus') }
改完配置后重啟服務(wù)就可以在theme.scss
里定義全局變量并在頁面中引用了。
需要注意的是,scss里的變量是$
開頭,而less里的變量是@
開頭。比如我想定義一個(gè)項(xiàng)目的主色調(diào)變量,我可以在theme.scss
里這樣定義:
$c-primary: #fd7a00; $theme-blue: #3296fa; $theme-red: #da3838;
引用變量的時(shí)候直接引用變量名即可。
以上就是本文的全部?jī)?nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。
相關(guān)文章
Vuerouter的beforeEach與afterEach鉤子函數(shù)的區(qū)別
本文詳細(xì)的介紹了Vuerouter的beforeEach與afterEach鉤子函數(shù)的區(qū)別和使用,小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧2018-12-12electron+vue實(shí)現(xiàn)div contenteditable截圖功能
這篇文章主要介紹了electron+vue實(shí)現(xiàn)div contenteditable截圖功能,本文給大家介紹的非常詳細(xì),具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2020-01-01vuex實(shí)現(xiàn)購(gòu)物車的增加減少移除
這篇文章主要為大家詳細(xì)介紹了vuex實(shí)現(xiàn)購(gòu)物車的增加減少移除,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2020-06-06axios請(qǐng)求的一些常見操作實(shí)戰(zhàn)指南
axios是一個(gè)輕量的HTTP客戶端,它基于XMLHttpRequest服務(wù)來執(zhí)行 HTTP請(qǐng)求,支持豐富的配置,支持Promise,支持瀏覽器端和 Node.js 端,下面這篇文章主要給大家介紹了關(guān)于axios請(qǐng)求的一些常見操作,需要的朋友可以參考下2022-09-09vue.extend實(shí)現(xiàn)alert模態(tài)框彈窗組件
這篇文章主要為大家詳細(xì)介紹了vue.extend實(shí)現(xiàn)alert模態(tài)框彈窗組件,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2018-04-04Vue組件庫(kù)ElementUI實(shí)現(xiàn)表格加載樹形數(shù)據(jù)教程
這篇文章主要為大家詳細(xì)介紹了Vue組件庫(kù)ElementUI實(shí)現(xiàn)表格加載樹形數(shù)據(jù)教程,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2021-06-06elementUI表格多選框this.$refs.xxx.toggleRowSelection無效問題
這篇文章主要介紹了elementUI表格多選框this.$refs.xxx.toggleRowSelection無效問題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2023-11-11element-ui?table使用type='selection'復(fù)選框全禁用(全選禁用)詳解
element-ui中的table的多選很好用,但是如果其中某一項(xiàng)禁止選擇,該怎樣操作呢,下面這篇文章主要給大家介紹了關(guān)于element-ui?table使用type='selection'復(fù)選框全禁用(全選禁用)的相關(guān)資料,需要的朋友可以參考下2023-01-01vue前端性能優(yōu)化之預(yù)加載和懶加載示例詳解
這篇文章主要為大家介紹了vue前端性能優(yōu)化之預(yù)加載和懶加載示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2023-02-02