字符串模板和DOM模板的区别

最近看Vue官方文档,多次看到字符串模板和DOM模板,一时不解这二者的区别,特意去查了然后记录下来,毕竟好记性不如烂笔头。

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

Vue.component('MyComponentA', {
    template: '<div id="component"><MyComponentB>Hello World</MyComponentB></div>'
})

<div id="app">
    <MyComponentA></MyComponentA>
</div>

2、DOM模板
DOM模板又称HTML模板,就是写在HTML文件中,一打开就会被浏览器渲染解析的,所以要遵循HTML结构和标签命名,否则浏览器不解析也就获取不了文件内容。
下面的例子不会被正确渲染,因为<MyConponent></MyComponent>会被解析成<mycomponent></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>

因为HTML对大小写不敏感,所以在DOM模板中使用组件必须使用kebab-case命名法(短横线命名)。因此下面的例子就会被正确渲染解析。

<!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>

归纳总结:
在单文件组件、字符串模板和 JSX 中的组件如果没有内容应该是自闭合的,如<MyComponent/>,有内容的则是<MyComponent>内容</MyComponent>,而在DOM模板中只能是<my-component></my-component>,或者在所有地方中都可以直接使用<my-component></my-component>

  • 4
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值