渲染函数render

文章目录

    • 节点、树以及虚拟 DOM
      • 节点
      • 虚拟 DOM
      • vue中render函数的作用
    • render函数去创建子组件内容
    • createElement官方文档
    • 参考

节点、树以及虚拟 DOM

在深入渲染函数之前,了解一些浏览器的工作原理是很重要的。以下面这段 HTML 为例:

<div><h1>My title</h1>Some text content<!-- TODO: Add tagline -->
</div>

  • 官网

当浏览器读到这些代码时,它会建立一个“DOM 节点”树来保持追踪所有内容,如同你会画一张家谱树来追踪家庭成员的发展一样。

image

节点

  • 官网

每个元素都是一个节点。每段文字也是一个节点。甚至注释也都是节点。一个节点就是页面的一个部分。

  • 什么是节点?

节点是元素+文字+注释的总称

虚拟 DOM

  • 官网

Vue 通过建立一个虚拟 DOM 来追踪自己要如何改变真实 DOM。请仔细看这行代码:

return createElement('h1', this.blogTitle)

createElement 到底会返回什么呢?其实不是一个实际的 DOM 元素。它更准确的名字可能是 createNodeDescription,因为它所包含的信息会告诉 Vue 页面上需要渲染什么样的节点,包括及其子节点的描述信息。我们把这样的节点描述为“虚拟节点 (virtual node)”,也常简写它为“VNode”。“虚拟 DOM”是我们对由 Vue 组件树建立起来的整个 VNode 树的称呼。

  • 什么是虚拟 DOM?

是对由 Vue 组件树建立起来的整个 VNode 树的称呼。虚拟节点是创建节点的描述

image

vue中render函数的作用

在vue脚手架的main.js文件中,render函数的作用是,将h创建的Node节点信息return返回给Vue.js底层处理文件中的beforeMount()生命周期钩子函数,让其将Node节点信息在界面中渲染出来

render函数返回一个VNode节点,这个节点由createElement函数创建。

render函数去创建子组件内容

render:(createElement)=>{var header = this.$slots.default/插槽名字return createElement('div',[createElement('header',header)])
}// render函数参数一是createElement函数(一般约定简写成h)以及参数二上下文ctx,createElement这个函数,有三个参数。

createElement官方文档

++createElement官方文档++(参数一,参数二,参数三)

参数一:必选,可以是string,object,function
例如:
return h ('div') // 参数一,为string
return h ({template:"<div>内容</div>"}) // 参数一,为Object
var domFuc = function (){return { template:'<div>内容</div>'}   
}// 参数一,为function参数二为object,可选,但一定要是一个对象。
class:{},style:{},attrs:{},domProps:{
innerHTML: 'baz'} // DOM property,props:{},on:{},nativeOn:{},directives:{},scopedSlots:{},key:'myKey'
例如: 创建一个div,给他设置样式高度34px
render:(h)=>{return h('div',{props:{// props给div绑定属性值value:""}style:"{// 给div绑定样式height:'34px'}",on:{// on给div绑定事件click:function (){console.log('点击事件')  }},// 普通的 HTML attributeattrs: {id: 'foo'},// 作用域插槽的格式为// { name: props => VNode | Array<VNode> }scopedSlots: {default: props => createElement('span', props.text)},// 如果组件是其它组件的子组件,需为插槽指定名称slot: 'name-of-slot',// 其它特殊顶层 propertykey: 'myKey',ref: 'myRef',// 如果你在渲染函数中给多个元素都应用了相同的 ref 名,// 那么 `$refs.myRef` 会变成一个数组。refInFor: true
},
// DOM property
domProps: {innerHTML: 'baz'},// 事件监听器在 `on` 内,// 但不再支持如 `v-on:keyup.enter` 这样的修饰器。// 需要在处理函数中手动检查 keyCode。on: {click: this.clickHandler},// 仅用于组件,用于监听原生事件,而不是组件内部使用// `vm.$emit` 触发的事件。nativeOn: {click: this.nativeClickHandler},// 自定义指令。注意,你无法对 `binding` 中的 `oldValue`// 赋值,因为 Vue 已经自动为你进行了同步。directives: [{name: 'my-custom-directive',value: '2',expression: '1 + 1',arg: 'foo',modifiers: {bar: true}}],})
}
参数三:代表子节点,可选,是string或者Array
例如:
return h('div',[h('h2','我是div子元素的文本内容'),h('h3','我是div的第二个子元素h3的文本')])

参考

++官网++

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://xiahunao.cn/news/1380392.html

如若内容造成侵权/违法违规/事实不符,请联系瞎胡闹网进行投诉反馈,一经查实,立即删除!

相关文章

如何使用vray进行建筑渲染?

如果您刚开始渲染世界&#xff0c;您可能会遇到的一些最常见的问题是&#xff1a;我应该如何开始&#xff1f;目前流行哪些技术&#xff1f;我怎么能确定我在做什么是正确的&#xff1f; 建模和 3D 平台 如果您是建筑或设计专业的学生&#xff0c;​​或者是专业人士&#xff0…

web-vue

<html><head><title>永远朋友</title><script src"../js/vue.js"></script></head><body><div id "app"><input type"text" v-model"message">{{ message }}</div&g…

40岁后吃不胖的秘诀 济阳高穗饮食理论

欢迎使用 {小书匠}(xiaoshujiang)编辑器 济阳高穗&#xff1a;研究所所长、医院院长、临床教授、医学博士、执刀4000台手术&#xff0c;半数为癌症患者&#xff0c;首创的“济阳式膳食疗法”让许多癌症早期患者得到治愈。 40岁以后&#xff0c;身体必需的【食物】会变得截然不…

大学生川菜网页制作教程 学生HTML静态美食菜品网页设计作业成品 简单网页制作代码 学生美食网页作品免费设计

&#x1f380; 精彩专栏推荐&#x1f447;&#x1f3fb;&#x1f447;&#x1f3fb;&#x1f447;&#x1f3fb; ✍️ 作者简介: 一个热爱把逻辑思维转变为代码的技术博主 &#x1f482; 作者主页: 【主页——&#x1f680;获取更多优质源码】 &#x1f393; web前端期末大作业…

Java猪人刷怪塔_我的世界:经验不够怎么办?MC6大快速升级方法,养鸡也行?...

《我的世界》经验值是非常重要的&#xff0c;但记住&#xff0c;任何刷经验的方法&#xff0c;都不要一次性刷超过30级。因为在30级之前&#xff0c;效率最高!想要拥有神级装备&#xff0c;给装备附魔你就不得不想办法获得大量的经验值。那么有哪些方法可以快速获得经验值呢? …

白萝卜炖鸡汤

主料 鸡1000克 白萝卜1个750克 红枣100克 枸杞25克 配料 姜1小块 盐适量 料酒 步骤 1、将鸡剁成大块&#xff0c;洗完用料酒、盐、五香粉腌制30分钟&#xff0c;使鸡肉进盐&#xff1b; 2、用锅内加少许底油&#xff0c;把鸡肉放进锅里翻炒到鸡肉呈黄色 3、鸡肉放进高压锅或者炖…

第三篇:设计模式六大原则: 一个萝卜一个坑 -- 单一职责原则

形形色色的代码接触多了&#xff0c;越发意识到 面向对象 这个被人说烂却鲜有用好的概念的重要性。之前看了《大话设计模式》也只是匆匆一瞥&#xff0c;没有敲代码或者记博客&#xff0c;这次连着《Android 源码设计模式解析与实战》一起学习&#xff0c;总结记录下来。 设计模…

c语言小兔子原来有1个萝卜,小兔子和小狐狸的100个睡前晚安小故事

小兔子和小狐狸的睡前故事,小兔子的甜甜的小故事,100个小兔子和小狐狸的晚安小故事。 小兔子和小狐狸的晚安故事合集(更新中) 小兔子的睡前故事 30.喜欢就是我对你的感觉呀 小兔子偷偷看了书,书上说,女孩儿在这段时间都会经历这个心情。 这个心情,叫做喜欢。 可是书上说的…

土豆炖鸡

先上成品图 1. 红烧萝卜 原料&#xff1a;鸡切块、土豆去皮切块、姜切片、葱切段、蒜切片、八角、 锅里烧水放入肉块&#xff0c;煮沸几分钟焯一下&#xff0c;更卫生油锅烧热&#xff0c;加入小辣椒、花椒爆香&#xff0c;加入鸡块炒至微变色加入葱段、姜片、蒜片&#x…

九大体质测试软件,著名的九大体质测试,快来测一测

原标题&#xff1a;著名的九大体质测试&#xff0c;快来测一测 如果对中医有些了解&#xff0c;那么九大体质肯定听说过。中医将我们常见的体质分为九种&#xff0c;并根据个体先天因素和后天因素&#xff0c;对各个体质做出判断&#xff0c;可得知今后你容易患上哪些疾病。 著…

胡萝卜(5)

目录 目录 1、stacking模型以及做模型融合的知识2、怎样去优化SVM算法模型的&#xff1f;3、现有底层是tensorflow的keras框架&#xff0c;如果现在有一个tensorflow训练好的模型&#xff0c;keras怎么读取&#xff1f;4、卷积层为什么能抽取特征&#xff1f; Pool层的作用5、L…

设计模式六大原则: 一个萝卜一个坑 -- 单一职责原则

形形色色的代码接触多了&#xff0c;越发意识到 面向对象 这个被人说烂却鲜有用好的概念的重要性。之前看了《大话设计模式》也只是匆匆一瞥&#xff0c;没有敲代码或者记博客&#xff0c;这次连着《Android 源码设计模式解析与实战》一起学习&#xff0c;总结记录下来。 设计模…

板栗烧鸡的家常做法

板栗烧鸡:板栗香甜,鸡肉鲜嫩http://www.fangyuxing.top/?s=%E6%9D%BF%E6%A0%97 【板栗小知识】 板栗的原产地就是我国,是属于坚果的一种,也是食用中最早的坚果之一。板栗的营养丰富,它的营养是世界群栗之冠,一般都是炒了吃。比如常见的是糖炒板栗,吃起来口感软糯又香…

学煲汤,70个汤

40、玉米萝卜大骨汤原材料&#xff1a;玉米棒150克&#xff0c;排骨250克&#xff0c;红萝卜50克&#xff0c;生姜、红枣少许作法&#xff1a;1、玉米棒去外皮&#xff0c;切成段&#xff0c;红萝卜切块&#xff0c;排骨砍成块&#xff0c;生姜切处&#xff0c;红枣洗净&#x…

Vector - CAPL - 诊断模块函数(流控制帧续)

目录 CanTpGetFirstSequenceNumber & CanTpSetFirstSequenceNumber 代码示例 CanTpIsUseFlowControlSTmin & CanTpIsUseFlowControlSTmin & CanTpUseFlowControlSTmin CanTpIsUseFlowControlFrames & CanTpUseFlowControlFrames 代码示例 CanTpSetFlowC…

B057-spring增强 依赖注入 AOP 代理模式 创建Bean

目录 AOP概念代理模式引出AOP实现方式xml方式实现注解方式实现 AOP 概念 事务管理&#xff1a;比如可以抽取try catch的重复代码 日志监控&#xff1a;比如业务逻辑前后打印关于当前订单数量的日志&#xff0c;了解业务做了什么 性能监控&#xff1a;比如业务前后打印时间&…

信息安全:防火墙技术原理与应用.

信息安全&#xff1a;防火墙技术原理与应用. 防火墙是网络安全区域边界保护的重要技术。为了应对网络威胁&#xff0c;联网的机构或公司将自己的网络与公共的不可信任的网络进行隔离&#xff0c;其方法是根据网络的安全信任程度和需要保护的对象&#xff0c;人为地划分若干安全…

【FLASH自制游戏】轮之数袭

计算机游戏程序设计&#xff0c;用FLASH制作&#xff0c;编写了较多的AS类。算是一个小型项目了。用FLASH试了一下游戏设计以后&#xff0c;预计以后要开始转Unity3D了。Flash制作起游戏来确实比较容易&#xff0c;以后可以作为算法可视化的工具。感觉Unity3D能做的2D游戏&…

Python初学者制作俄罗斯方块小游戏之路

适合初学者超详细Python制作俄罗斯方块教程 背景实现过程绘制窗口添加控件与文本添加画布绘制一小方块俄罗斯方块定义游戏开始前的初始化功能模块设计计算分数显示下一个方块联合画出方块组合(俄罗斯方块)下降可移动判断消行闪烁旋转加速左右移动直接下落按钮功能 按键交互添加…

python可以制作游戏脚本吗_如何用python制作游戏脚本?

对于游戏编程来说,使用脚本语言可以快速地开发游戏逻辑,节省开发新型自定义语言的时间和开销,并且脚本语言通常要比编程者创造的语言更加的强大。小伙伴们学习python有一段时间了,有没有发现python语言的很强大和简洁,并且很容易嵌入,是一个不错的脚本语言呢?今天我们就…