ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

16-vue-cli4.0脚手架-项目中定义全局@mixin,变量,cli中配置以供单文件组件中直接使用

2021-05-02 20:05:34  阅读:179  来源: 互联网

标签:scss cli4.0 vue sass 16 loader width resources


先说一嘴:sass和scss的区别:

  1. 异同:简言之可以理解scss是sass的一个升级版本,完全兼容sass之前的功能,又有了些新增能力。语法形式上有些许不同,最主要的就是sass是靠缩进表示嵌套关系,scss是花括号
//sass 太费眼了
.father
    width:100px;
    .son
        width:50px;
//scss 舒服了
.father{
    width:100px;
    .son{
        width:50px;
    }
}       

2 scss功能很强大的样子,能做运算、写函数啥的


 

项目中确实有这个需求,同一个代码块只能在单个vue组件中使用,多个组件无法像css全局定义那种直接import @路径这样使用,主要还是想用一些嵌套和@mixin 变量等等。

那么能不能也像CSS一样,定义一个全局的scss文件,挂载在全局,使每个单文件组件都能使用这个scss文件中定义的变量、函数或者mixin呢?

搜了网上一堆的解决方法,真的是好不严谨,各种安装的版本号和脚手架的版本也不说,反正就是非常之不完整,让人看了抓脑袋。

首先:我这个解决方法是针对vue-cli 4.x 的。

既然是对sass文件进行的处理,那肯定需要安装sass相关的依赖呀?

第一步:安装loader

一共有三个:

npm i node-sass -D  

npm i sass-loader -D

npm install sass-resources-loader     ->这个是解决这个问题的核心loader

目前我这个可以生效的版本:

第二步:配置vue.config.js

   chainWebpack: (config) => {
        const oneOfsMap = config.module.rule('scss').oneOfs.store
        oneOfsMap.forEach(item => {
            item
                .use('sass-resources-loader')
                .loader('sass-resources-loader')
                .options({
                    // Provide path to the file with resources
                    // 要公用的scss的路径
                    resources: './src/assets/sass/index.scss'
                })
                .end()
        })

第三步: 你自己要定义的全局scss文件

 

 

 

 组件内使用:

 

 

 

 页面效果:

 

 

 

标签:scss,cli4.0,vue,sass,16,loader,width,resources
来源: https://www.cnblogs.com/haoqiyouyu/p/14726246.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有