vue render
Vue 的 render 渲染
API
vue2 的 vnode
tag: 当前节点的标签名
data: 当前节点是数据对象
children: 子节点,数组也是vnode 类型
text: 当前节点的文本,一般文本节点或注释节点会有该属性
elm: 当前虚拟节点对应的真实的DOM节点
ns: 节点的namespace
content :编译作用域
functionalContext 函数话组件作用域
key: 节点的key属性,用于作为节点的标识,利于patch 的优化
componentOPtions: 创建组件实例会用到的选项信息
child: 当前节点对应的组件实例
parent:组件的站位节点
raw: 原始的html
isStatic : 静态节点标识
isRootInsert: 是否作为根节点插入,被包裹的节点,该属性的值为false
isComment: 当前的节点是否是注释节点
isCloned: 当前的节点是否是克隆节点
isOne: 当前节点是否有v-once 指令
vNode
TextVNode 文本节点
ElementVNode 普通元素节点
ComponentVnode 组件节点
EmptyVNode: 组件节点
CloneVNode 克隆节点,可以是任意类型的节点,唯一的区别是isCloned 的属性为TRUE
解决的场景
- 代码的冗长
- template 中的大部分是重复的
- 外层的中必须包含无用的div
createElement用法(h)
eg: creteElement(
'div',
// {object}
// 一个对应属性的数据对象,可选 可以在template中使用
{},
// {string |atrray}
// 子节点{VNode}, 可选
[
createElement('h1', 'hello world'),
createElement('mycomponent', {
props:{
someProp: 'foo'
}
}),
]
)
第一个: 一个参数必选,可以是一个html 标签,也可是一个组件或者是一个函数{string | object | Function} 必须return 上述其中的一个
第二个: 可选参数 数据对象
vueNodeData
key? :string | number
slot? string;
scopedSlots?:{[key: string]: scopedSlot},
ref?:String;
tag?:string;
staticClass?:string;
class?:any;
staticStyle?{[key:string]: any}
style: Object[] | object
props? {[key:string]: any}
attrs?: {[key:string]: any}//HTML 属性
domProps?:{[key:string]: any}
hook?:{[key:string]: Function}
on?:{[key:string]: Function | Function[]} // 自定义事件
nativeOn?: {[key:string]: Function | Function[]} // 原生事件
transition?:Object
show?: boolean
inlineTemplate?:{
render: Function;
staaticRenderFns: Function[];
}
directives?: VNodeDirective[];
keepAlive?: boolean;
第三个: 是子节点,也是可选用法一至
约束
所有组件树中,如果VNODE是组件,或含有组件的slot,那VNode 必须唯一
1、错误的用法,以为子组件重复了
2、因为slot包含了组件 并且重复了
使用JavaScript 代替模板的功能
在render 中没有指令 一切都可以用js 来实现。
slot的默认内容
// this.$slots.default 等于undefined
说明组件中没有定义的slot 这是就可以自定义内容
函数化组件
vue.js 提供了一个functional 的布尔值选项,设置为TRUE可以使组件无状态和无实例,也就是无data 和this上下文。这样用render函数返回
虚拟几点合一变得更加容易渲染,因为函数话组件只是一个函数,渲染开销要小的很多
使用函数话组件的时候render 提供了第二个参数来提供临时上下文
适用场景
1、程序化地在多个组件中选择一个
2、在将children props data 传递给子组件之前操作他们
vue render的更多相关文章
- vue render里面的nativeOn
vue render里面的nativeOn的解释官方的解释是:// 仅对于组件,用于监听原生事件,而不是组件内部使用 `vm.$emit` 触发的事件. 官方的解释比较抽象 个人理解: 父组件要在子组 ...
- vue render function & dataset
vue render function & dataset https://vuejs.org/v2/guide/render-function.html#The-Data-Object-In ...
- vue render & array of components & vue for & vue-jsx
vue render & array of components & vue for & vue-jsx https://www.cnblogs.com/xgqfrms/p/1 ...
- vue render function
vue render function https://vuejs.org/v2/guide/render-function.html { // Same API as `v-bind:class`, ...
- vue render 渲染函数
vue render 渲染函数 经常看到使用render渲染函数的示例,而且在一些特殊情况下,确实更好使用,可以更加有效地细分组件,因而借助vue-element-admin来学习一波 render函 ...
- vue render html string
vue render html string shit element ui render string array relativeShowConvert(data) { // log(`data` ...
- vue render函数 函数组件化
之前创建的锚点标题组件是比较简单,没有管理或者监听任何传递给他的状态,也没有生命周期方法,它只是一个接受参数的函数 在这个例子中,我们标记组件为functional,这意味它是无状态(没有data), ...
- vue render函数
基础 vue推荐在绝大多数情况下使用template来创建你的html.然而在一些场景中,你真的需要javascript的完全编程能力.这就是render函数.它比template更接近编译器 < ...
- vue render & JSX
vue在绝大多数使用template是没问题的,但在某些场合下,使用render更适合. 一.render函数 1.createElement 参数 createElement 可接受三个参数 1){ ...
- vue render {} 对象 说明文档
Vue学习笔记进阶篇——Render函数 http://www.mamicode.com/info-detail-1906336.html 深入data object参数 有一件事要注意:正如在模板语 ...
随机推荐
- C# https证书通信Post/Get(解决做ssl通道时遇到“请求被中止: 未能创建 SSL/TLS 安全通道”问题)
public static string HttpPost(string url, string param = null) { HttpWebRequest request; //如果是发送HTTP ...
- [python]兔子问题,斐波那契数列 递归&非递归
假设一对幼年兔子需要一个月长成成年兔子,一对成年兔子一个月后每个月都可以繁衍出一对新的幼年兔子(即兔子诞生两个月后开始繁殖).不考虑死亡的情况,问第 N 个月时共有多少对兔子? 结果前几个月的兔子数量 ...
- 虚拟机VMware14 pro下安装REHL5U11
1. 创建虚拟磁盘,自定义,磁盘类型选IDE,确保安装系统过程中只有一个物理光盘驱动/ISO镜像: 2. 安装VMware Tools 2.1 虚拟机>安装VMware Tools 2.2 在光 ...
- Idea 配置Jrebel热部署
虽说Idea自带热更新功能,但是一旦mapper更改,则不能及时更新,影响开发效率. 接下来,我们来配置Jrebel热更新,简单方便实用. 第一步:进入插件下载页面. 第二步:安装jrebel插件. ...
- 02-head标签
head中的标签不会展示在浏览器上,他会将页面的一些额外信息告诉服务器.head标签中包含如下标签: <title>:指定整个网页的标题,在浏览器最上方显示 <meta>:提供 ...
- 【Linux】Linux中的0644 和 0755的权限
Linux 系统中采用三位十进制数表示权限,如0755, 0644ABCD A- 0, 表示十进制B-用户C-组用户D-其他用户 利用 ls -l可以查看文件的权限 --- -> 0 (n ...
- cat命令显示文件指定行
cat filename | tail -n 100 显示文件最后100行 cat filename | head -n 100 显示文件前面100行 cat filename | tail -n + ...
- 手动模拟JDK动态代理
为哪些方法代理? 实现自己动态代理,首先需要关注的点就是,代理对象需要为哪些方法代理? 原生JDK的动态代理的实现是往上抽象出一层接口,让目标对象和代理对象都实现这个接口,怎么把接口的信息告诉jdk原 ...
- beego之操作model
beego之操作model 1.环境配置 1>.下载安装orm go get github.com/astaxie/beego/orm 默认安装路径在gopath路径下,可使用go env查看路 ...
- Redis对象——字符串
文章导航-readme 前言 上一篇文章Redis之对象篇--Redis对象系统简介简单介绍了Redis的对象系统.Redis使用对象来表示数据库中的键和值每个对象都由一个redisObjec ...