vue工程如何为组件自动注入全局样式文件

vue工程如何为组件自动注入全局样式文件

目录

Less和Stylus

安装style-resources-loader

配置vue.config.js

Sass/Scss

扩展

开发过程中,随着工程变大,不免要提取出一些公共的样式,如variables、mixins、functions等几乎在所有业务组件中都会用到的样式:

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

如果每个需要的组件都要手动导入一次,就太繁琐了:

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

当然最直接的改进方案是创建一个包含上面引入的入口样式文件entry.less,然后在各组件中导入即可:

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

但是手动导入毕竟繁琐,若能够自动导入就大善了,所幸配置自动导入也不繁琐,下面以常用的Less、Stylus、Sass/Scss等预处理器为例说明如何在vue工程中配置自动导入:

Less和Stylus

配置Less和Stylus自动导入有两种方案:

使用style-resources-loader

使用vue-cli-plugin-style-resources-loader

这里我们推荐使用第一种,因为第二种方案只是对第一种方案的包装,且暂不支持热更新。

安装style-resources-loader $ npm i -D style-resources-loader 配置vue.config.js

如果工程根目录下没有vue.config.js文件,手动创建一下即可,然后插入以下代码:

// 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       ],     }) }

如果想要配置多个导入,只需在B行后继续添加即可:

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

其实Sass/Scss配置自动导入也可以使用上面的方案,但是使用其原生的方案更加便捷,只需在vue.config.js中配置即可:

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

如果想要配置多个导入,只需在A行继续添加即可:

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

注意:sass-loader@8.0.0之前,要将上面的prependData替换为data。

扩展

如果在使用vue create创建工程时,没有选择Manually select features,或者没有选择CSS Pre-processors,则工程内默认使用的是原生CSS,但是vue的默认Webpack配置中已经内置了对CSS Pre-processors的支持,所以只需要安装响应依赖,然后再工程文件中使用对应语法书写样式即可:

// Less $ npm i -D less less-loader // Sass/Scss $ npm i -D node-sass sass-loader // Stylus $ npm i -D stylus stylus-loader

以上为个人经验,希望能给大家一个参考,也希望大家多多支持易知道(ezd.cc)。

推荐阅读

    学习写字楼新选择6000元主流配置

    学习写字楼新选择6000元主流配置,,这种配置需要考虑双核心的办公和娱乐平台,充分考虑办公室的办公需求和娱乐需求,以约6000元的预算和cost-e

    金蝶担保机构业务管理系统

    金蝶担保机构业务管理系统,,1.金蝶财务软件怎么使用?软件使用方法 使用需要先登陆到数据库,可只导出V3数据或只导出最新年度数据。功能介绍

    酷睿I7 配置

    酷睿I7 配置,配置,玩家国度啦华硕 Rampage II Extreme(3800元)如果米不够,也可以把Extreme改为Gene,不过是小板内存推荐金士顿6G DDR3 2000骇

    提高3A四核羿龙II游戏配置的性能

    提高3A四核羿龙II游戏配置的性能,,以节能环保为主题的IT产业,目前3A低端平台处理器、主板芯片组、独立开发卡性能突出,特别是在与AMD的处理

    opporeno8参数配置及价格

    opporeno8参数配置及价格,面部,亿元,Oppo的荣誉2020年1月4日,接近屏幕关闭传感器是否支持双卡:支持oppor11splus什么时候上市的Oppo R11S P

    查看配置:酷睿i3530集展示办公平台

    查看配置:酷睿i3530集展示办公平台,,由于时间和精力的关系,我们不可能对所有的配置进行评论,希望我们能理解,我希望我们的评论能在那些需要帮

    3500元超额值学生娱乐结构的优化配置

    3500元超额值学生娱乐结构的优化配置,,作为一个DIY的主流用户领域的学生,每个用户51学生攒机的高峰。因为学生用户没有稳定的收入来源,攒机

    电脑配置快捷键|查看电脑配置快捷键

    电脑配置快捷键|查看电脑配置快捷键,,查看电脑配置快捷键1.在win10中,快捷键组合win+E已经变成了“快速访问”,不再是以前的“我的电脑了”2