css_scoped和css_module我们知道,简单的类名很容易造成重复的css命名,比如定义一个类:如果别人只是定义了一个className:.main,你的float:left会影响它。所以在Vue中发明了css_scoped,原理是在类名后面加一个数据属性选择器:.main{float:left;}//转义后变成css_scoped是Vue的特殊解决方案。如果你使用其他的UI框架,比如React,那么你可以使用一个更通用的css_module。原理是在样式名String后缀上加上hash字符,保证类名全局唯一:.main{float:left;}//转义后变成相比于css_scoped,css_module的方案更通用,不改变自身权重,渲染性能比前者好很多,所以推荐使用css_module。不过无论是css_scoped还是css_module,都有两大缺点:由于加入了随机字符,如果想在父组件中覆盖子组件中的样式就变得麻烦了,虽然css_scoped可以使用穿透,但是这个很容易导致其他问题。添加随机字符会使类名不那么优雅,也会影响编译速度。cssnamespace让我们回忆一下在css_scoped和css_module出现之前人们是如何避免css命名冲突的?没错,就是人为定义了一些css命名空间。届时,对于每一个Component组件,都会在其根节点上定义一个唯一的ID或类作为其命名空间,然后其内部的其他类将使用该命名空间作为前置条件,例如: