我是靠谱客的博主 老实电灯胆,最近开发中收集的这篇文章主要介绍深入浅出的vue.js项目开发理解一:未分类二:常见问题解决,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

目录

  • 一:未分类
    • 1.单个组件或页面可以多个style,混用本地和全局样式
    • 2.深度作用选择器
  • 二:常见问题解决
    • 1.修改页面保存后页面不自动刷新,只能手动刷新的问题

一:未分类

1.单个组件或页面可以多个style,混用本地和全局样式

我们可以在一个组件中同时使用有 scoped 和非 scoped 样式,来实现复杂需求:

<style>
/* 全局样式 */
</style>

<style scoped>
/* 本地样式 */
</style>

Vue 官方文档介绍 Scoped
Scoped CSS | Vue Loader https://vue-loader.vuejs.org/zh/guide/scoped-css.html

<style> 标签有 scoped 属性时,它的 CSS 只作用于当前组件中的元素。这类似于 Shadow DOM 中的样式封装。

要注意scoped的作用域,因为权重的问题,如果是在子组件使用了scoped,那么在父组件中是不能直接修改子组件的样式的,需要在父组件中使用vue的深度作用选择器。

.parent >>> .children{ /* ... */ }

.parent /deep/ .children{ /* ... */ }

动态生成的内容
通过 v-html 创建的 DOM 内容不受 scoped 样式影响,但是你仍然可以通过深度作用选择器来为他们设置样式。
还有一些要留意

  • Scoped 样式不能代替 class。考虑到浏览器渲染各种 CSS 选择器的方式,当 p { color: red } 是 scoped 时 (即与特性选择器组合使用时) 会慢很多倍。如果你使用 class 或者 id 取而代之,比如 .example { color: red },性能影响就会消除。

  • 在递归组件中小心使用后代选择器! 对选择器 .a .b 中的 CSS 规则来说,如果匹配 .a 的元素包含一个递归子组件,则所有的子组件中的 .b 都将被这个规则匹配。

需要研读的文章:

  • vue中的css作用域、vue中的scoped坑点 - 古兰精 - 博客园 https://www.cnblogs.com/goloving/p/9119460.html

  • vue组件中的样式属性:scoped,解决在父组件中无法修改子组件样式问题 - 古兰精 - 博客园 https://www.cnblogs.com/goloving/p/9119265.html

  • vue中scoped的原理及慎用原因 - 简书 https://www.jianshu.com/p/b92e2a022cd8

2.深度作用选择器

如果你希望 scoped 样式中的一个选择器能够作用得“更深”,例如影响子组件,你可以使用 >>> 操作符:

<style scoped>
.a >>> .b { /* ... */ }
</style>

上述代码将会编译成:

.a[data-v-f3f3eg9] .b { /* ... */ }

有些像 Sass 之类的预处理器无法正确解析 >>>。这种情况下你可以使用 /deep/::v-deep 操作符取而代之——两者都是 >>> 的别名,同样可以正常工作。

二:常见问题解决

1.修改页面保存后页面不自动刷新,只能手动刷新的问题

  1. 在项目根目录下,找到名为vue.config.js的文件,没有的话就新建一个;
  2. devServeropen设置为 tue,如下:
module.exports = {
    devServer : {
        hot:true,
        open : true,
        port : 8080,
        host : "0.0.0.0"
    }
}

最后

以上就是老实电灯胆为你收集整理的深入浅出的vue.js项目开发理解一:未分类二:常见问题解决的全部内容,希望文章能够帮你解决深入浅出的vue.js项目开发理解一:未分类二:常见问题解决所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(38)

评论列表共有 0 条评论

立即
投稿
返回
顶部