Vue中对比scoped css和css module的区别


Posted in Javascript onMay 17, 2018

scoped css

官方文档

scoped css可以直接在能跑起来的vue项目中使用。

使用方法:

<style scoped>
h1 {
 color: #f00;
}
</style>

使用scoped划分本地样式的结果编译结果如下:

h1[data-v-4c3b6c1c] {
 color: #f00;
}

即在元素中添加了一个唯一属性用来区分。

缺点

一、如果用户在别处定义了相同的类名,也许还是会影响到组件的样式。

二、根据css样式优先级的特性,scoped这种处理会造成每个样式的权重加重了:

即理论上我们要去修改这个样式,需要更高的权重去覆盖这个样式。

所以在引用包含scoped的第三方插件时如若需要修改样式则需要全局修改,而且要注意权重问题,0.0迫不得已再使用!important。

三、如果组件内部包含有其他组件,只会给其他组件的最外层标签加上当前组件的data属性:

所以一般父组件如果加了scoped,会比已经设置过自己样式的子组件内除最外层标签的内层标签的权重低,影响不到他们的样式。

不过也是可以通过如下方法影响到的:

Vue中对比scoped css和css module的区别

四、scoped会使标签选择器渲染变慢很多倍

官方给了一些注意事项如下:

Vue中对比scoped css和css module的区别

我们可以看到用标签选择器时scoped会严重降低性能,而使用class或id则不会。

css module

官方文档

css module需要增加css-loader配置才能生效,具体可看文档的实现。

注意

如果你使用的是style-loader,如果想让配置生效需要更换到文档所述的vue-style-loader。

二者区别可以从这里了找vue-style-loader

使用如下:

<template>
 <p :class="$style.gray">
 Im gray
 </p>
</template>
<style module>
.gray {
 color: gray;
}
</style>

使用module的结果编译如下:

<p class="gray_3FI3s6uz">Im gray</p>
.gray_3FI3s6uz {
 color: gray;
}

由此可见,css module直接替换了类名,排除了用户设置类名影响组件样式的可能性。

这样$style.red就可以当做一个变量,并且可以在js中使用,如下:

<script>
export default {
 created () {
 console.log(this.$style.gray)
 // -> "gray_3FI3s6uz"
 // 一个基于文件名和类名生成的标识符
 }
}
</script>

我们可以看到,module在使用时多出了绑定和$style,如果你想更优雅,可以看一下这个vue-css-modules。

使用css module在keyframes中的问题

使用CSS modules处理动画animation的关键帧keyframes,动画名称必须先写。

animation: ani 1s;能正常编译,而animation: 1s ani;则会编译的不符合预期,所以平时养成良好的css参数书写顺序也很重要。

总结

综上所述,css module前期进行不麻烦的配置,实现的效果比scoped css更优,这里推荐使用css module。

以上所述是小编给大家介绍的Vue中对比scoped css和css module,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对三水点靠木网站的支持!

Javascript 相关文章推荐
JQuery获取当前屏幕的高度宽度的实现代码
Jul 12 Javascript
JS图片根据鼠标滚动延时加载的实例代码
Jul 13 Javascript
jQuery验证插件validation使用指南
Apr 21 Javascript
AngularJS 使用 UI Router 实现表单向导
Jan 29 Javascript
jQuery的promise与deferred对象在异步回调中的作用
May 03 Javascript
js继承实现方法详解
Dec 16 Javascript
VueJS 集成 Medium Editor的示例代码 (自定义编辑器按钮)
Aug 24 Javascript
轻松搞定jQuery+JSONP跨域请求的解决方案
Mar 06 jQuery
vue中v-model的应用及使用详解
Jun 27 Javascript
JS解析后台返回的JSON格式数据实例
Aug 06 Javascript
Vue实现腾讯云点播视频上传功能的实现代码
Aug 17 Javascript
JS数组的常用方法整理
Mar 31 Javascript
vue引用js文件的多种方式(推荐)
May 17 #Javascript
vue router+vuex实现首页登录验证判断逻辑
May 17 #Javascript
浅谈webpack-dev-server的配置和使用
May 17 #Javascript
Node.js模块全局安装路径配置方法
May 17 #Javascript
create-react-app修改为多页面支持的方法
May 17 #Javascript
vue 不使用select实现下拉框功能(推荐)
May 17 #Javascript
微信小程序自定义多选事件的实现代码
May 17 #Javascript
You might like
PHP7数组的底层实现示例
2019/08/25 PHP
laravel 创建命令行命令的图文教程
2019/10/23 PHP
DHTML Slide Show script图片轮换
2008/03/03 Javascript
JQuery EasyUI 日期控件如何控制日期选择区间
2014/05/05 Javascript
jQuery延迟加载图片插件Lazy Load使用指南
2015/03/25 Javascript
浅谈javascript实现八大排序
2015/04/27 Javascript
Bootstrap面板使用方法
2017/01/16 Javascript
jQuery实现元素的插入
2017/02/27 Javascript
vue使用drag与drop实现拖拽的示例代码
2017/09/07 Javascript
微信小程序支付及退款流程详解
2017/11/30 Javascript
vue、react等单页面项目部署到服务器的方法及vue和react的区别
2018/09/29 Javascript
Webstorm2016使用技巧(SVN插件使用)
2018/10/29 Javascript
bootstrap-treeview实现多级树形菜单 后台JSON格式如何组织?
2019/07/26 Javascript
Javascript Dom元素获取和添加详解
2019/09/24 Javascript
Python中字典映射类型的学习教程
2015/08/20 Python
Python实现类似jQuery使用中的链式调用的示例
2016/06/16 Python
Python爬虫实现网页信息抓取功能示例【URL与正则模块】
2017/05/18 Python
用python编写第一个IDA插件的实例
2018/05/29 Python
Python 加密与解密小结
2018/12/06 Python
利用Python批量识别电子账单数据的方法
2021/02/08 Python
eDreams巴西:廉价机票,酒店优惠和度假套餐
2017/04/14 全球购物
超市优秀员工事迹材料
2014/05/01 职场文书
说明书怎么写
2014/05/06 职场文书
十周年庆典策划方案
2014/06/03 职场文书
合同意向书范本
2014/07/30 职场文书
课前一分钟演讲稿
2014/08/26 职场文书
2014市府办领导班子“四风问题”对照检查材料思想汇报
2014/09/24 职场文书
个人委托书如何写
2014/09/25 职场文书
公司离职证明标准格式
2014/11/18 职场文书
入党积极分子群众意见
2015/06/01 职场文书
聘用合同范本
2015/09/21 职场文书
2016年学生会感恩节活动总结
2016/04/01 职场文书
基于angular实现树形二级表格
2021/10/16 Javascript
win11如何查看端口是否被占用? Win11查看端口是否占用的技巧
2022/04/05 数码科技
我的收音机情缘
2022/04/05 无线电
详解OpenCV获取高动态范围(HDR)成像
2022/04/29 Python