美文网首页知识点
vue中涉及的字符串模板与dom模板

vue中涉及的字符串模板与dom模板

作者: jack_rofer | 来源:发表于2020-11-27 15:46 被阅读0次

    最近看到vue官方文档的时候,多次提及字符串模板和dom模板,对这个概念比较模糊,经查阅后记录供日后参考。

    1.字符串模板

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

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

    2.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/vue@2.5.16/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/vue@2.5.16/dist/vue.js"></script>
        <script >
            //全局注册
            Vue.component('my-component', {
                template: '<div>组件类容</div>'
            });
            new Vue ({
                el: '#app'
            });
        </script>
        </body>
    </html>
    

    因为html对大小写不敏感,所以在DOM模板中使用组件必须使用kebab-case命名法(短横线命名)。
    因此,对于组件名称的命名,可参考如下实现:

    /*-- 在单文件组件、JSX和字符串模板中 --*/
    <MyComponent/>
    /*-- 在 DOM 模板中 --*/
    <my-component></my-component>
    或者
    /*-- 在所有地方 --*/
    <my-component></my-component>
    

    参考文章

    相关文章

      网友评论

        本文标题:vue中涉及的字符串模板与dom模板

        本文链接:https://www.haomeiwen.com/subject/rxvxwktx.html