最近看到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模板的区别相关推荐

  1. 字符串模板和dom模板的区别

    dom模板就是原先就写在页面上的,能被浏览器识别的 html 结构,会在一加载就被浏览器渲染,所以要遵循 html 结构和标签命名,不然是不会被浏览器解析的,也就获取不到内容了,接着js获取 dom ...

  2. Vue里标签嵌套限制问题解决------解析DOM模板时注意事项:

    Vue里标签嵌套限制问题解决------解析DOM模板时注意事项: 参考文章: (1)Vue里标签嵌套限制问题解决------解析DOM模板时注意事项: (2)https://www.cnblogs. ...

  3. vue的组件和es6模板引擎 组件

    今天学习了: 要在父实例中使用这个组件,必须要在实例创建前注册,之后就可以用<组件名></组件名>形式来使用组件了 全局组件注册步骤小结: ①注册组件component并命名 ...

  4. Vue实例的属性及模板渲染

    Vue实例的属性及模板渲染 1 概述 2 el:与DOM元素绑定 3 data:定义双向绑定的数据 4 computed:计算属性 5 methods:定义Vue实例的方法 6 Vue中的三种模板 6 ...

  5. ie模版字符串_字符串(String)模板引擎被视为是有害的

    用模板和一些数据来生成HTML不是一项特别繁重的任务.那些你必须要为HTML做的事才是效率低下的部分. 假如你有一个代表改变数据的UI: Current score: {{currentScore}} ...

  6. 学习Vue的mustache语法-mustache模板引擎

    学习地址 : https://www.bilibili.com/video/BV1EV411h79m?vd_source=a81826692f4afea80764f4048dc1ae0a 代码地址 : ...

  7. Vue源码之mustache模板引擎(二) 手写实现mustache

    Vue源码之mustache模板引擎(二) 手写实现mustache mustache.js 个人练习结果仓库(持续更新):Vue源码解析 webpack配置 可以参考之前的笔记Webpack笔记 安 ...

  8. Vue源码之mustache模板引擎(一)

    Vue源码之mustache模板引擎(一) 个人练习结果仓库(持续更新):Vue源码解析 抽空把之前学的东西写成笔记. 学习视频链接:[尚硅谷]Vue源码解析之mustache模板引擎 模板引擎是什么 ...

  9. html模板引擎 字符串长度,Web前端模板引擎の字符串模板

    这是一个系列文章,将会介绍目前Web前端领域里用到的三种模板引擎技术,它们分别是: 基于字符串的模板 基于Dom操作的模板 基于虚拟Dom的模板 本文是这个系列的第一篇,着重介绍基于字符串的模板引擎的 ...

最新文章

  1. 2020大部分知名公司Java面试题答案(一)
  2. Socket 共用一个port的问题
  3. 【 FPGA 】序列检测器的Mealy状态机实现
  4. 【java开发系列】—— JDK安装
  5. 方差过滤: Removing features with low variance
  6. JAVA中线程同步的方法(7种)汇总
  7. k8s停止服务_Kubernetes 服务部署最佳实践(二) 如何提高服务可用性
  8. Mysql远程连接报错2003 Cant connect toMySQL server on your address解决方案
  9. 私塾在线java设计模式综合项目实战
  10. MSC.MD.NASTRAN.V2010\
  11. 遗传算法求解函数最大值的python实现
  12. Android学习日记(yzy):Fragment与VierPager简单实现
  13. Mask RCNN 实战(二)--像黑镜一样屏蔽图片和视频中的人和物体
  14. 第5节 服务器系统简介及用户和组管理
  15. matlab如何将二进制转换为十进制,matlab – 如何在不使用循环的情况下将二进制转换为十进制?...
  16. powerdns 系列之二 PowerDNS Authoritative Server
  17. 不能有比这个再靠谱的星座分析了
  18. 获诱人的实习 offer 、在 Kaggle 推 AI大 赛,大二学生如何做到?
  19. python实现树莓派开机自动发送IP到指定邮箱
  20. 订单管理系统 订货系统平台建设三阶段分享

热门文章

  1. 重庆初中毕业现在通过什么途径可以提高学历?
  2. 南京工业大学python期末考试_Python语言程序设计(杨晓秋)_章节测验,期末考试,慕课答案查询公众号...
  3. OneIndex:基于onedrive的公共网盘搭建——使用宝塔面板(OneIndex合集2)
  4. Leetcode139.单词拆分
  5. 看各路单词APP不顺手?索性自己写一个背单词系统
  6. TPA6120A2DWPR IC AMP AUDIO .08W HIFI 20SOPWR
  7. 股票量化分析工具QTYX使用攻略——页面控件功能导览v2.5.1
  8. SQL主键不能为NULL,消除重复数据问题
  9. 0x00007FF9A7F72079 (ucrtbased.dll)处引发的异常: 0xC0000005: 写入位置 0x000000094D100000 时发生访问冲突
  10. css opacity属性_CSS中的opacity属性