Vue中调用组件使用kebab-case(短横线)命名法和使用大驼峰的区别

Vue中调用组件使用kebab-case(短横线)命名法和使用大驼峰的区别

1.解析官网手册说明

在这里插入图片描述

红线部分已经说的很清楚,“直接在DOM(即非字符串模版)中只有kebab-case 生效”。

只不过说的不是人话,现在我们来具体分析一下。

2.什么是“字符串模版”,什么是“dom模版”

  • 字符串模版

字符串模板就是写在vue中的template中定义的模板,如.vue的单文件组件模板和定义组件时template属性值的模板。字符串模板不会在页面初始化参与页面的渲染,会被vue进行解析编译之后再被浏览器渲染,所以不受限于html结构和标签的命名。

实例:

Vue.component('MyComponentA', {
    
    
    template: '<div MyId="123"><MyComponentB>hello, world</MyComponentB></div>'
})

<div id="app">
    <MyComponentA></MyComponentA>
</div>
  • dom模版(或者称为Html模板)

dom模板就是写在html文件中,一打开就会被浏览器进行解析渲染的,所以要遵循html结构和标签的命名,否则浏览器不解析也就不能获取内容了。

下面的例子不会被正确渲染, 会被解析成mycomponent,但是注册的vue的组件是MyComponent,因此无法渲染。

<!DOCTYPE <html>
    <head>
        <meta charset="utf-8">
        <title>Vue Component</title>
    </head>
    <body>
        <div id="app"> 
            Hello Vue
            <MyComponent></MyComponent>
        </div>
    <script src="https://cdn.jsdelivr.net/npm/[email protected]/dist/vue.js"></script>
    <script >
        //全局注册
        Vue.component('MyComponent', {
    
    
            template: '<div>组件类容</div>'
        });
        new Vue ({
    
    
            el: '#app'
        });
    </script>
    </body>
</html>

能正常显示的:

<!DOCTYPE <html>
    <head>
        <meta charset="utf-8">
        <title>Vue Component</title>
    </head>
    <body>
        <div id="app"> 
            Hello Vue
            <my-component></my-component>
        </div>
    <script src="https://cdn.jsdelivr.net/npm/[email protected]/dist/vue.js"></script>
    <script >
        //全局注册
        Vue.component('my-component', {
    
    
            template: '<div>组件类容</div>'
        });
        new Vue ({
    
    
            el: '#app'
        });
    </script>
    </body>
</html>

总结:
通过上面的实例很简单就能看出,如果是在html中使用组件,那么就不能用大驼峰式写法。如果是在.vue 文件中就可以,就这么简单。

猜你喜欢

转载自blog.csdn.net/weixin_35773751/article/details/133811819