欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

vue工程如何為組件自動(dòng)注入全局樣式文件

 更新時(shí)間:2022年04月11日 10:51:01   作者:劉文壯  
這篇文章主要介紹了vue工程如何為組件自動(dòng)注入全局樣式文件,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教

開發(fā)過(guò)程中,隨著工程變大,不免要提取出一些公共的樣式,如variables、mixins、functions等幾乎在所有業(yè)務(wù)組件中都會(huì)用到的樣式:

-- src
---- styles
-------- variables.less
-------- mixins.less
-------- functions.less

如果每個(gè)需要的組件都要手動(dòng)導(dǎo)入一次,就太繁瑣了:

<script lang="less">
@import "../styles/variables";
@import "../styles/mixins";
@import "../styles/functions";

// 其他樣式
</script>

當(dāng)然最直接的改進(jìn)方案是創(chuàng)建一個(gè)包含上面引入的入口樣式文件entry.less,然后在各組件中導(dǎo)入即可:

// entry.less

@import './variables';
@import './mixins';
@import './functions';
<script lang="less">
@import "../styles/entry";

// 其他樣式
</script>

但是手動(dòng)導(dǎo)入畢竟繁瑣,若能夠自動(dòng)導(dǎo)入就大善了,所幸配置自動(dòng)導(dǎo)入也不繁瑣,下面以常用的Less、Stylus、Sass/Scss等預(yù)處理器為例說(shuō)明如何在vue工程中配置自動(dòng)導(dǎo)入:

Less和Stylus

配置Less和Stylus自動(dòng)導(dǎo)入有兩種方案:

這里我們推薦使用第一種,因?yàn)榈诙N方案只是對(duì)第一種方案的包裝,且暫不支持熱更新。

安裝style-resources-loader

$ npm i -D style-resources-loader

配置vue.config.js

如果工程根目錄下沒(méi)有vue.config.js文件,手動(dòng)創(chuàng)建一下即可,然后插入以下代碼:

// vue.config.js
const path = require('path')

module.exports = {
? chainWebpack: config => {
? ? const types = ['vue-modules', 'vue', 'normal-modules', 'normal']
? ? types.forEach(type => addStyleResource(config.module.rule('less').oneOf(type))) ?// A
? },
}

function addStyleResource (rule) {
? rule.use('style-resource')
? ? .loader('style-resources-loader')
? ? .options({
? ? ? patterns: [
? ? ? ? path.resolve(__dirname, './src/styles/entry.less'), ?// B
? ? ? ],
? ? })
}

如果想要配置多個(gè)導(dǎo)入,只需在B行后繼續(xù)添加即可:

patterns: [
? path.resolve(__dirname, './src/styles/entry1.less'),
? path.resolve(__dirname, './src/styles/entry2.less'),
],

如果工程使用的是Stylus,則將A行替換為types.forEach(type => addStyleResource(config.module.rule(‘stylus’).oneOf(type))),將B行替換為*path.resolve(__dirname, ‘./src/styles/entry.styl’)*即可。

Sass/Scss

其實(shí)Sass/Scss配置自動(dòng)導(dǎo)入也可以使用上面的方案,但是使用其原生的方案更加便捷,只需在vue.config.js中配置即可:

// vue.config.js
module.exports = {
? css: {
? ? loaderOptions: {
? ? ? sass: {
? ? ? ? prependData: `@import "@/styles/entry.scss";` ?// A
? ? ? }
? ? }
? }
}

如果想要配置多個(gè)導(dǎo)入,只需在A行繼續(xù)添加即可:

// vue.config.js
module.exports = {
? css: {
? ? loaderOptions: {
? ? ? sass: {
? ? ? ? prependData: `
? ? ? ? ? ? @import "@/styles/entry1.scss";
? ? ? ? ? ? @import "@/styles/entry2.scss";
? ? ? ? `
? ? ? }
? ? }
? }
}

注意:sass-loader@8.0.0之前,要將上面的prependData替換為data。

擴(kuò)展

如果在使用vue create創(chuàng)建工程時(shí),沒(méi)有選擇Manually select features,或者沒(méi)有選擇CSS Pre-processors,則工程內(nèi)默認(rèn)使用的是原生CSS,但是vue的默認(rèn)Webpack配置中已經(jīng)內(nèi)置了對(duì)CSS Pre-processors的支持,所以只需要安裝響應(yīng)依賴,然后再工程文件中使用對(duì)應(yīng)語(yǔ)法書寫樣式即可:

// Less
$ npm i -D less less-loader

// Sass/Scss
$ npm i -D node-sass sass-loader

// Stylus
$ npm i -D stylus stylus-loader

以上為個(gè)人經(jīng)驗(yàn),希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。

相關(guān)文章

  • vue?router如何實(shí)現(xiàn)tab切換

    vue?router如何實(shí)現(xiàn)tab切換

    這篇文章主要介紹了vue?router如何實(shí)現(xiàn)tab切換,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2022-04-04
  • vue如何對(duì)一個(gè)數(shù)據(jù)過(guò)濾出想要的item

    vue如何對(duì)一個(gè)數(shù)據(jù)過(guò)濾出想要的item

    這篇文章主要介紹了vue如何對(duì)一個(gè)數(shù)據(jù)過(guò)濾出想要的item問(wèn)題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2023-10-10
  • vue中實(shí)現(xiàn)左右聯(lián)動(dòng)的效果

    vue中實(shí)現(xiàn)左右聯(lián)動(dòng)的效果

    這篇文章主要介紹了vue中實(shí)現(xiàn)左右聯(lián)動(dòng)的效果,非常不錯(cuò),具有一定的參考借鑒價(jià)值,需要的朋友參考下吧
    2018-06-06
  • Vue版本vue2.9.6升級(jí)到vue3.0的詳細(xì)步驟

    Vue版本vue2.9.6升級(jí)到vue3.0的詳細(xì)步驟

    vue版本升級(jí)相信大家應(yīng)該都遇到過(guò),下面這篇文章主要給大家介紹了關(guān)于Vue版本vue2.9.6升級(jí)到vue3.0的詳細(xì)步驟,文中通過(guò)圖文介紹的非常詳細(xì),需要的朋友可以參考下
    2022-09-09
  • vue-cli2.0轉(zhuǎn)3.0之項(xiàng)目搭建的詳細(xì)步驟

    vue-cli2.0轉(zhuǎn)3.0之項(xiàng)目搭建的詳細(xì)步驟

    這篇文章主要介紹了vue-cli2.0轉(zhuǎn)3.0之項(xiàng)目搭建的詳細(xì)步驟,小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧
    2018-12-12
  • Vue.delete()刪除對(duì)象的屬性說(shuō)明

    Vue.delete()刪除對(duì)象的屬性說(shuō)明

    這篇文章主要介紹了Vue.delete()刪除對(duì)象的屬性說(shuō)明,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2022-04-04
  • Vue 讀取HTMLCollection列表的length為0問(wèn)題

    Vue 讀取HTMLCollection列表的length為0問(wèn)題

    這篇文章主要介紹了Vue 讀取HTMLCollection列表的length為0問(wèn)題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2022-06-06
  • VueX學(xué)習(xí)之modules和namespacedVueX詳細(xì)教程

    VueX學(xué)習(xí)之modules和namespacedVueX詳細(xì)教程

    這篇文章主要為大家介紹了VueX學(xué)習(xí)之modules和namespacedVueX詳細(xì)教程,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2023-06-06
  • Vue的列表之渲染,排序,過(guò)濾詳解

    Vue的列表之渲染,排序,過(guò)濾詳解

    這篇文章主要為大家詳細(xì)介紹了Vue的列表之渲染,排序,過(guò)濾,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下,希望能夠給你帶來(lái)幫助
    2022-02-02
  • VUE項(xiàng)目實(shí)現(xiàn)主題切換的多種方法

    VUE項(xiàng)目實(shí)現(xiàn)主題切換的多種方法

    這篇文章主要介紹了VUE項(xiàng)目實(shí)現(xiàn)主題切換的方法,本文通過(guò)多種方法給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2020-11-11

最新評(píng)論