通常项目中src下的子目录都会有一个style文件夹,专门用来存放全局的样式文件。

这个style文件夹下,一般有reset.css、var.scss、mixin.scss、class.scss、index.scss

一般都会在index.scss文件中引入其他文件做统一管理,并在main.js中引入index.scss

我们在开发vue文件时,通常会用到全局样式文件,尤其是mixin.scss。

经常在vue文件中会出现,直接引入index.scss的情况

<style lang="scss" scoped>
@import "~@/styles/index.scss";
.wrap{
@include clearfix;
}
</style>

虽然可以达到期望的效果。但是这样引入会带来一个副作用。

假如有两个vue文件都是这样引入的,你在审查元素的时候会发现,同一个class样式声明了两次。

比如A.vue和B.vue都引入了index.scss并都用到了class="red",index.scss引入的class.scss中定义了一个样式 .red{color:red}

那么,当你审查该元素的时候会发现,这个.red在页面上被定义了两次。

.red{color:red}这样的内容会被单独打包进于该vue文件中(如果使用了css-extract-plugin,同样打包进与该vue对应的css文件中)。

所以组件加载完,样式也会被添加到页面中。

如果每个页面都直接引入了index.scss。无形中会给浏览器造成很大的负担(因为样式树的生成、样式树与文档树结合的效率很低)。

那如何避免呢?

正确的姿势是:

只引入 @import "~@/styles/mixin.scss"@import "~@/styles/var.scss"

他们只会将 vue文件中 @include clearfix 直接替换为

&:after {
content: "";
display: table;
clear: both;
}

vue文件引入全局样式导致样式重复的更多相关文章

  1. vue项目引入自定义.css的样式文件

    ES6的引入方式: .vue文件中 css文件引入 <template></template> <style scoped> @import "../as ...

  2. comTest.json文件中内容,被NewsList.vue文件引入

    本文目标:就是把扩散名为.json文件中数据,传递给NewsList.vue文件.主要通过导出,并传递给data(){}变紧 新建文件名为:commTest.json { "schoolNa ...

  3. 微信小程序引入全局或公共样式

    在开发的过程中,总会遇到很多可复用性的样式,为了代码更加的简洁和减少微不住道的文件体积,我抽取了一部分的公共样式,并全局引入,不知是否妥当,如有更好的想法,欢迎一起探讨 在app.wxss中引入 然后 ...

  4. vue中设置全局的css样式

    只需在main.js    ====import './style.less'   main.js =>>   import Vue from 'vue' import App from ...

  5. vue 文件引入1

    直接 <script> 引入 直接下载并用 <script> 标签引入,Vue 会被注册为一个全局变量.重要提示:在开发时请用开发版本,遇到常见错误它会给出友好的警告. 开发环 ...

  6. vue 文件引入

    直接 <script> 引入 直接下载并用 <script> 标签引入,Vue 会被注册为一个全局变量.重要提示:在开发时请用开发版本,遇到常见错误它会给出友好的警告. 开发环 ...

  7. vue文件引入

    <template> <div class="hello"> <h1>{{ msg }}</h1> <!-- <h1&g ...

  8. Vue文件 引入.js文件 的组件

    Vue.component('remote-script', { render: function (createElement) { var self = this; return createEl ...

  9. vue按需引入/全局引入echarts

    npm install echarts -S 1.按需引入 新建echarts.js公共引入 // 文件路径 @/lib/echarts.js 自行配置 // 加载echarts,注意引入文件的路径 ...

随机推荐

  1. asp.net core 3.x 模块化开发之HostingStartup

    我们希望将一个项目(dll)看做一个模块/插件,一个模块往往需要在应用启动时做一些初始化工作,比如向IOC容器添加一些服务,为应用配置对象添加自己的数据源:也希望在应用关闭时做一些收尾工作,asp.n ...

  2. 3 分钟带你深入了解 Cookie、Session、Token

    经常会有用户咨询,CDN 是否会传递 Cookie 信息,是否会对源站 Session 有影响,Token 的防盗链配置为什么总是配置失败?为此,我们就针对 Cookie.Session 和 Toke ...

  3. echarts设置网格线颜色

    xAxis: { type: 'value', //设置网格线颜色 splitLine: { show: true, lineStyle:{ color: ['#315070'], width: 1, ...

  4. vue状态管理vuex从浅入深详细讲解

    1.vuex简介以及创建一个简单的仓库 vuex是专门为vue框架而设计出的一个公共数据管理框架,任何组件都可以通过状态管理仓库数据沟通,也可以统一从仓库获取数据,在比较大型的应用中,数据交互庞大的情 ...

  5. Python使用requests爬取一个网页并保存

    #导入 requests模块import requests #设置请求头,让网站监测是浏览器 headers = { 'user-agent': 'Mozilla/5.0 (Windows NT 6. ...

  6. 数字金字塔 动态规划(优化版) USACO 一维dp压缩版

    1016: 1.5.1 Number Triangles 数字金字塔 时间限制: 1 Sec  内存限制: 128 MB提交: 9  解决: 8[提交] [状态] [讨论版] [命题人:外部导入] 题 ...

  7. 7月17日刷题记录 分治Getting!循环比赛日程表

    通过数:1 ┭┮﹏┭┮ qdoj.xyz 1053 分治-循环比赛日程表 其实今天晚上留给编程的时间并不多,做出一道... 不过收获还是非常大的 毕竟本人从来没有学习过分治算法,今天竟然攻克了我人生中 ...

  8. python认识及环境变量

    什么是python? python是一种脚本语言,是高级语言.计算机只能识别机器语言,在机器语言上是汇编语言,再往上是高级语言.高级语言的基础是C语言. python语言较为简单,易入门. pytho ...

  9. 安装mysql8.0.17指南

    1.首先,下载社区版mysql(下载地址https://dev.mysql.com/downloads/mysql/) 2.下载之后,将文件解压到自己想要安装的目录(如,本人将解压文件放置g://my ...

  10. 让现有vue前端项目快速支持多语言 - 用.net core程序快速替换中文为资源Key,咱不干体力活

    前言 最近应公司上层要求,需要将现有项目尽快支持多语言,而中文内容可以找专业人员翻译.那么咱们说干就干,首先我们项目的前端是用vue写的spa程序且组件方面用的element ui,那么自然而然想到用 ...