oa网站建设推广,合肥网站建设方案书,公司网站 cms,百度竞价被点击软件盯上vnode就是 Vue 中的 虚拟 dom 。 vnode 是怎么来的#xff1f; 就是把 template 中的结构内容#xff0c;通过 vue template complier 中的 render 函数#xff08;使用了 JS 中的 with 语法#xff09;#xff0c;来生成 template 中对应的 js 数据结构#xff0c;举个例…vnode就是 Vue 中的 虚拟 dom 。 vnode 是怎么来的 就是把 template 中的结构内容通过 vue template complier 中的 render 函数使用了 JS 中的 with 语法来生成 template 中对应的 js 数据结构举个例子
div iddiv1 classcontainerpvdom/pul stylefont-size: 20pxlia/li/ul
/divh 函数根据上面的模板内容就会生成下列 vdom:
{tag: div,props: {id: div1,class: container},children:[{tag: p,children: vdom},{tag: ul,props: {style: fontSize: 20px},children:[{tag: li,children: a}]}]
}用 JS 模拟 DOM 结构patch 到真实 DOM。
那么 vnode 的作用是什么呢
默认对 模板中的内容 通过render函数生成vnode; 响应式的 getter 对使用到的变量做监听操作修改data和初始化的 模板 vnode 通过 diff 算法做对比计算出最小的变更重新执行 render 函数生成新的vnode通过 patch 补丁到初始化渲染的 dom 节点中
组件开发可不可以不用 template 呢 答案是可以的vue 组件中可以使用 render 代替 template 如下
Vue.component(heading, {// template: xxxx,render: function (createElement) {return createElement(h this.level,[createElement(a, {attrs: {name: headerId,href: # headerId}}, this is a tag)])}
})记录一下回顾一下如有不妥望指正thank you!