vue 填坑系列总结——scoped

简介: 在上个月份的一次使用vue的项目开发的过程中发现了一个很诡异的现象,就是我在 中写样式时发现样式突然间不起作用了,这是为什么?填坑步骤1.当时我首先想到的是缓存问题,所以果断的按住ctrl + shift + del键,清除缓存,但是我发现‘然并卵’;2.

在上个月份的一次使用vue的项目开发的过程中发现了一个很诡异的现象,就是我在<style lang="stylus" scoped> </style>中写样式时发现样式突然间不起作用了,这是为什么?

填坑步骤

1.当时我首先想到的是缓存问题,所以果断的按住ctrl + shift + del键,清除缓存,但是我发现‘然并卵’;

2.这时我恍然大悟,我使用的是vue-cli开发者模式,当我修改样式的话,vue运行环境会及时的帮我重新编译的,我顿时明白过来,真正的原因并不是这个样子;

3.由于我当时刚接触stylus不久,听一些大牛说这个css预处理器有多么的优秀,因此就在所做的的项目里进行尝试,对于非mvvvm项目我使用了webpack搭建了一个环境对css使用stylus完全没有问题,而对于mvvm项目是初次尝试,所以想当然的我就认为是stylus的编译问题,认为用webpack使用stylus处理css在mvvm项目中存在bug,于是乎想到的就是Google查找解决方案,很遗憾没有我想要的结论,这时我想了一个解决方案就是使用sass或者less来处理,由于从我毕业后首先接触到的是sass,所以,我就将使用stylus风格写的代码改为了sass风格的代码,而且也很快的完成了,然后就是输入npm run dev 命令,结果发现还是原来的效果,当时我的第一感觉就是崩溃;

4.没得办法了,不行,作为一名‘一不怕苦,二不怕累,三……’,岂能被这点小困难难倒,办法还是有的,打开chrome浏览器的调试工具,如下图(pic - 1) 我们单击‘+’可以添加新的样式规则body{}在这里写入我们所需要的样式,结果令人很满意,我到了我想要的结果,但为什么使用webpack编译后的结果没有达到我们所想要的结果呢?


img_5ff7ee842ece72d8c027816926f02b9f.png
pic-1

5.接下来,我们所要做的就是排查故障的位置了,在这里我们要感谢现在的浏览器开发商给我们提供的强大工具开发者工具了,废话不多说进入正题,寻找故障原因;

首先, 按住 Ctrl + shit + c 键,单击鼠标左键选中目的元素,则开发工具面板中就会出现目的元素的样式,然后单击样式后面的样式源地址,面板中就会出现正常的样式的根目录。查看相应的的情况。
其次,上面的是我们在做兼容性处理,或者样式查找,微调时,使用的方法,但在mvvm组件化开发的项目中,你能找到未覆盖的样式,但很难找到目的元素样式的,我们该怎么办,很简单我们只要找该组件中起效的样式即可。
下面列几张图说明一下上面的情况:

项目问题1: 图标和字体间的艰巨过大(这个是我在项目中需要解决的问题)


img_6dd6cebff1070fa88da2bd134272ee5f.png
pic-2

测试问题2:只能找到你要覆盖的样式的位置,而不能找到你写的覆盖样式的位置
我们要找的是这样的样式的位置

img_db66ad66ea589dfa12c5fbf84e6a9af8.png
pic-3

按照惯性思维找到的确是这样的

img_2dfeb78abf9048cc0a208f7d4b91fe70.gif
pic-4

最后,我们会发现在样式中会有这样的一句代码
.dynamic .mu-item.show-left[data-v-5b8a484c] {
padding-left: 56px;
}

如果我们把show-left后的[data-v-5b8a484c]去掉,就会发现效果如我们所需要的那样,但是我们会发现如果这样的话我们就会影响其他页面的样式,我们的样式就变成了对整个项目都其作用的样式,所以,我们现在应该明白了,出问题的地方时哪里了吧。

结论与总结

问题就在于我们使用的scoped属性,它的存在可以让我们的组件的样式保持独立性,但同时使用scoped也存在一个问题,就是我们不应该在项目中定义重复的样式规则名称。讲到这里scoped的填坑应该结束了,但是我想有部分童鞋可能会有这样的想法我在做项目时不时用相同的规则名进行样式覆盖不就可以了,可是我想说的是我们在项目开发的过程中这样的问题我们并不能,完全避免,特别是我们使用前端框架进行开发时这种问题就不可避免,说到这里,我就为大家推荐两款我是用着比较方便的vue框架,第一个是element UI,muse-ui,再补充一句有逼格的话‘武器虽好,但技术更重要’。

vue框架使用体会

1.要慎用框架,结合自己项目的情况选择合适的框架;
2.使用框架要充分了解框架,了解框架有哪些模块组成,了解框架的优缺点,使用框架的优点,回避框架的缺点,针对框架的不足我们最好要有自己的一套健壮的解决方案,否则慎用;
3.针对第二点,我们在开发的过程中由于考虑不足,或者项目业务的变化,而产生了心得问题,让框架暴露出了新的问题,我们要有较强的纠错能力,这时就是考验我们基本功的时候了,所以,我们要充分的了解vue,知晓vue的工作原理,理解vue每个组成部分的意义和作用;
4.由于使用vue-cli开发是一个需要了解webpack,node.js, vue ,以及所使用的vue框架的情况,所以js这一关我们必须过,然后就是,了解webpack,node.js,当然node.js是一个很好的容器,里面包含了各种有趣的插件,有兴趣的童鞋不妨尝试一下~

最后,送大家一句话‘路漫漫其修远兮,吾将上下而求索’,努力吧,少年!

相关文章
|
2月前
|
JavaScript
vue使用iconfont图标
vue使用iconfont图标
148 1
|
7天前
|
移动开发 JavaScript API
Vue Router 核心原理
Vue Router 是 Vue.js 的官方路由管理器,用于实现单页面应用(SPA)的路由功能。其核心原理包括路由配置、监听浏览器事件和组件渲染等。通过定义路径与组件的映射关系,Vue Router 将用户访问的路径与对应的组件关联,支持哈希和历史模式监听 URL 变化,确保页面导航时正确渲染组件。
|
11天前
|
监控 JavaScript 前端开发
ry-vue-flowable-xg:震撼来袭!这款基于 Vue 和 Flowable 的企业级工程项目管理项目,你绝不能错过
基于 Vue 和 Flowable 的企业级工程项目管理平台,免费开源且高度定制化。它覆盖投标管理、进度控制、财务核算等全流程需求,提供流程设计、部署、监控和任务管理等功能,适用于企业办公、生产制造、金融服务等多个场景,助力企业提升效率与竞争力。
66 12
|
7天前
|
JavaScript 前端开发 开发者
Vue中的class和style绑定
在 Vue 中,class 和 style 绑定是基于数据驱动视图的强大功能。通过 class 绑定,可以动态更新元素的 class 属性,支持对象和数组语法,适用于普通元素和组件。style 绑定则允许以对象或数组形式动态设置内联样式,Vue 会根据数据变化自动更新 DOM。
|
7天前
|
JavaScript 前端开发 数据安全/隐私保护
Vue Router 简介
Vue Router 是 Vue.js 官方的路由管理库,用于构建单页面应用(SPA)。它将不同页面映射到对应组件,支持嵌套路由、路由参数和导航守卫等功能,简化复杂前端应用的开发。主要特性包括路由映射、嵌套路由、路由参数、导航守卫和路由懒加载,提升性能和开发效率。安装命令:`npm install vue-router`。
|
28天前
|
JavaScript 安全 API
iframe嵌入页面实现免登录思路(以vue为例)
通过上述步骤,可以在Vue.js项目中通过 `iframe`实现不同应用间的免登录功能。利用Token传递和消息传递机制,可以确保安全、高效地在主应用和子应用间共享登录状态。这种方法在实际项目中具有广泛的应用前景,能够显著提升用户体验。
55 8
|
29天前
|
存储 设计模式 JavaScript
Vue 组件化开发:构建高质量应用的核心
本文深入探讨了 Vue.js 组件化开发的核心概念与最佳实践。
75 1
|
3月前
|
JavaScript 前端开发 开发者
vue 数据驱动视图
总之,Vue 数据驱动视图是一种先进的理念和技术,它为前端开发带来了巨大的便利和优势。通过理解和应用这一特性,开发者能够构建出更加动态、高效、用户体验良好的前端应用。在不断发展的前端领域中,数据驱动视图将继续发挥重要作用,推动着应用界面的不断创新和进化。
111 58
|
2月前
|
JavaScript 关系型数据库 MySQL
基于VUE的校园二手交易平台系统设计与实现毕业设计论文模板
基于Vue的校园二手交易平台是一款专为校园用户设计的在线交易系统,提供简洁高效、安全可靠的二手商品买卖环境。平台利用Vue框架的响应式数据绑定和组件化特性,实现用户友好的界面,方便商品浏览、发布与管理。该系统采用Node.js、MySQL及B/S架构,确保稳定性和多功能模块设计,涵盖管理员和用户功能模块,促进物品循环使用,降低开销,提升环保意识,助力绿色校园文化建设。
|
3月前
|
JavaScript 前端开发 开发者
vue学习第一章
欢迎来到我的博客!我是瑞雨溪,一名热爱前端的大一学生,专注于JavaScript与Vue,正向全栈进发。博客分享Vue学习心得、命令式与声明式编程对比、列表展示及计数器案例等。关注我,持续更新中!🎉🎉🎉
67 1
vue学习第一章

热门文章

最新文章