一、vue内部过程
1.首先将vue中的模板进行解析解析成abstract syntax tree (ast)抽象语法树
2.将抽象语法树在编译成render函数
3.将render函数再翻译成virtual dom 虚拟dom
4.将虚拟dom显示在浏览器上
二、runtime-only和runtime-compiler的区别
runtime-only比runtime-compiler更快,因为它省略了vue内部过程中的第一个过程,如果是runtime-compiler
那么main.js中就会出现template从而需要过程一导致增加了一个过程,同时增加了大小
三、render和template的使用
Render详解
Vue中的Render函数中有一个参数,这个参数是一个函数通常我们叫做h。其实这个h叫做createElement。Render函数将createElement的返回值放到了HTML中
createElement这个函数中有3个参数
- 第一个参数(必要参数):主要用于提供DOM的html内容,类型可以是字符串、对象或函数
- 第二个参数(类型是对象,可选):用于设置这个DOM的一些样式、属性、传的组件的参数、绑定事件之类
- 第三个参数(类型是数组,数组元素类型是VNode,可选):主要是指该结点下还有其他结点,用于设置分发的内容,包括新增的其他组件。注意,组件树中的所有VNode必须是唯一的
render (createElement) {
return createElement(
'comp-one',
{
ref: 'comp',
on: { // 事件监听(一),这里是组件上监听,需要 $emit
click: this.handleClick
},
},
[
createElement('span', {
ref: 'span'
}, this.value)
])
}
template的使用
template: `
<div>
<comp-one ref="comp">
<span ref="span">{{value}}</span>
</comp-one>
</div>
`,
codesandbox.io 在线编程网站的使用
网速不好,进网站就会用