使用步骤:
- 编写 页面 模板
- 直接在 HTML 标签中写 标签
- 使用 template
- 使用 单文件
( <template /> )
- 创建 Vue 的实例
- 在 Vue 的构造函数中提供: data, methods, computed, watcher, props, …
- 将 Vue 挂载到 页面中 ( mount )
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
| <!-- 写模板 --> <div id="root"> <p>{{name}}</p> <p>{{message}}</p> </div> <script> let app = new Vue( { el: '#root', data: { name: '张三' , message: '是一个男人' } } );
|
Vue 的执行流程
- 获得模板: 模板中有 “坑”
- 利用 Vue 构造函数中所提供的数据来 “填坑”, 得到可以在页面中显示的 “标签了”
- 将标签替换页面中原来有坑的标签
Vue 利用 我们提供的数据 和 页面中 模板 生成了 一个新的 HTML 标签 ( node 元素 ),
替换到了 页面中 放置模板的位置.
简单的模板渲染
步骤:
- 拿到模板
- 拿到数据 ( data )
- 将数据与模板结合, 得到 的是 HTML 元素 ( DOM 元素 )
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25
| function compiler( template, data ) { let childNodes = template.childNodes; for ( let i = 0; i < childNodes.length; i++ ) { let type = childNodes[ i ].nodeType; if ( type === 3 ) { let txt = childNodes[ i ].nodeValue; txt = txt.replace( rkuohao, function ( _, g ) { let key = g.trim(); let value = data[ key ]; return value; } ); childNodes[ i ].nodeValue = txt; } else if ( type === 1 ) { compiler( childNodes[ i ], data ); } } }
|
- 放到页面中
1
| root.parentNode.replaceChild( generateNode, root );
|
来源: 腾讯课堂蒋坤公开课