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是一个很好的容器,里面包含了各种有趣的插件,有兴趣的童鞋不妨尝试一下~

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

相关文章
|
3天前
|
数据采集 监控 JavaScript
在 Vue 项目中使用预渲染技术
【10月更文挑战第23天】在 Vue 项目中使用预渲染技术是提升 SEO 效果的有效途径之一。通过选择合适的预渲染工具,正确配置和运行预渲染操作,结合其他 SEO 策略,可以实现更好的搜索引擎优化效果。同时,需要不断地监控和优化预渲染效果,以适应不断变化的搜索引擎环境和用户需求。
|
5天前
|
JavaScript
Vue 指令速查表
【10月更文挑战第12天】Vue 指令速查表
|
3天前
|
缓存 JavaScript 搜索推荐
Vue SSR(服务端渲染)预渲染的工作原理
【10月更文挑战第23天】Vue SSR 预渲染通过一系列复杂的步骤和机制,实现了在服务器端生成静态 HTML 页面的目标。它为提升 Vue 应用的性能、SEO 效果以及用户体验提供了有力的支持。随着技术的不断发展,Vue SSR 预渲染技术也将不断完善和创新,以适应不断变化的互联网环境和用户需求。
20 9
|
2天前
|
缓存 JavaScript UED
Vue 中实现组件的懒加载
【10月更文挑战第23天】组件的懒加载是 Vue 应用中提高性能的重要手段之一。通过合理运用动态导入、路由配置等方式,可以实现组件的按需加载,减少资源浪费,提高应用的响应速度和用户体验。在实际应用中,需要根据具体情况选择合适的懒加载方式,并结合性能优化的其他措施,以打造更高效、更优质的 Vue 应用。
|
1天前
|
JavaScript
如何在 Vue 中使用具名插槽
【10月更文挑战第25天】通过使用具名插槽,你可以更好地组织和定制组件的模板结构,使组件更具灵活性和可复用性。同时,具名插槽也有助于提高代码的可读性和可维护性。
7 2
|
1天前
|
JavaScript
Vue 中的插槽
【10月更文挑战第25天】插槽的使用可以大大提高组件的复用性和灵活性,使你能够根据具体需求在组件中插入不同的内容,同时保持组件的结构和样式的一致性。
7 2
|
1天前
|
前端开发 JavaScript 容器
在 vite+vue 中使用@originjs/vite-plugin-federation 模块联邦
【10月更文挑战第25天】模块联邦是一种强大的技术,它允许将不同的微前端模块组合在一起,形成一个统一的应用。在 vite+vue 项目中,使用@originjs/vite-plugin-federation 模块联邦可以实现高效的模块共享和组合。通过本文的介绍,相信你已经了解了如何在 vite+vue 项目中使用@originjs/vite-plugin-federation 模块联邦,包括安装、配置和使用等方面。在实际开发中,你可以根据自己的需求和项目的特点,灵活地使用模块联邦,提高项目的可维护性和扩展性。
|
2天前
|
JavaScript 前端开发 UED
vue 提高 tree shaking 的效果
【10月更文挑战第23天】提高 Vue 中 Tree shaking 的效果需要综合考虑多个因素,包括模块的导出和引用方式、打包工具配置、代码结构等。通过不断地优化和调整,可以最大限度地发挥 Tree shaking 的优势,为 Vue 项目带来更好的性能和用户体验。
|
6天前
|
JavaScript 前端开发 开发者
Vue 的优缺点
【10月更文挑战第16天】Vue 具有众多优点,使其成为前端开发中备受青睐的框架之一。尽管它也存在一些局限性,但通过合理的应用和技术选型,这些问题可以得到一定程度的解决。在实际项目中,开发者可以根据项目的需求和特点,权衡 Vue 的优缺点,选择最适合的技术方案。同时,随着 Vue 不断的发展和完善,相信它将在前端开发领域继续发挥重要作用。
13 6
|
6天前
|
JavaScript 前端开发 编译器
在 Vue 项目中使用 ES 模块格式的优点
【10月更文挑战第20天】在 Vue 项目中使用 ES 模块格式具有众多优点,这些优点共同作用,使得项目能够更高效、更可靠地开发和运行。当然,在实际应用中,还需要根据项目的具体情况和需求进行合理的选择和配置。
16 6