全网整合营销服务商

电脑端+手机端+微信端=数据同步管理

免费咨询热线:400-708-3566

Vue2.x中的Render函数详解

Render函数是Vue2.x版本新增的一个函数;使用虚拟dom来渲染节点提升性能,因为它是基于JavaScript计算。通过使用createElement(h)来创建dom节点。createElement是render的核心方法。其Vue编译的时候会把template里面的节点解析成虚拟dom;

什么是虚拟dom?

虚拟dom不同于真正的dom,它是一个JavaScript对象。当状态发生变化的时候虚拟dom会进行一个diff判断/运算;然后判断哪些dom是需要被替换的而不是全部重绘,所以性能会比dom操作高很多。

下面看一张Aresn大神总结的一张图:

Vue2.x版本中VNode属性:

tag:当前节点标签名,

data:当前节点数据对象,

children:子节点数组,

text:当前节点文本,

elm:当前虚拟节点对应的真实dom节点,

ns:节点的namespace( 名称空间),

content:编译作用域,

functionalContext:函数化组件的作用域,即全局上下文,

key:节点标识,有利于patch优化,

componentOptions:创建组件实例时的options,

child:当前节点对应的组件实例,

parent:组件的占位节点,

raw:原始html,

isStatic:是否是静态节点,

isRootInsert:是否作为跟节点插入,若被<transition>包裹的节点,该属性值为false,

isComment:是否为注释节点,

isCloned:是否为克隆节点,

isOnce:是否只改变(渲染)一次,或是否有v-once指令;

其中这里面又有几种VNode类型:

Aresn大神总结的很好:

TextVNode:文本节点,

ElementVNode:普通元素节点,

ComponentVNode:组件节点,

EmptyVNode:空节点,或者说是没有内容的注释节点,

CloneVNode:克隆节点,可以是以上任意类型节点

说了那么多;到底什么时候用虚拟dom才比较好呢?其实 我们使用的单文件组件就已经够好了。但是当某些代码冗余的时候如果写单文件组件的话会有好多重复的内容;

接下来介绍其核心函数;

createElement:

createElement接收3个参数:

第一个参数可以是HTML标签名,组件或者函数都可以;此参数是必须的;

第二个为数据对象(可选);

第三个为子节点(可选)。

附上一个非常简单的createElement函数demo;

 var app = new Vue({
   el:"#app",
   render:createElement => {
     eturn createElement(
       'h2',
       [
         createElement(
           'a',
           {
             domProps:{
               href:"#biaoti"
             }
           },
           "标题"
         )
        ]      
       );
 
     }
 });

这只是一个createElement函数的使用,而Vue2中VNodeData

class: v-bind/:class

style:v-bind/:style

attrs:dom属性,如id

props:props,

on:自定义事件等,

 nativeOn:原生事件

像这些也可以在render函数中实现,若VNode是组件或含有组件的slot,那么VNode必须是唯一。

像平常开发过程中单文件组件中template写法更为简单,可读性也高。如果是webpack进行打包的话template也会预编译成render函数。

这里demo栗子暂时还没写那么多。这里只是一个简单的介绍。若有更好的欢迎大家一起学习讨论。


# Vue  # Render  # Vue.js  # Render函数  # vue2从template到render模板编译入口详解  # 基于vue2.0动态组件及render详解  # vue2 中使用 render 函数编写组件的方式  # 那么多  # 大神  # 可选  # 是一个  # 很好  # 会有  # 好了  # 还没  # 也会  # 第一个  # 说了  # 什么时候  # 又有  # 它是  # 第二个  # 比较好  # 这只  # 几种  # 自定义  # 因为它 


相关文章: 建站中国必看指南:CMS建站系统+手机网站搭建核心技巧解析  武汉网站制作费用多少,在武汉武昌,建面100平方左右的房子,想装暖气片,费用大概是多少啊?  如何在Golang中处理模块冲突_解决依赖版本不兼容问题  ,石家庄四十八中学官网?  制作网站的软件免费下载,免费制作app哪个平台好?  深圳网站制作设计招聘,关于服装设计的流行趋势,哪里的资料比较全面?  制作ppt免费网站有哪些,有哪些比较好的ppt模板下载网站?  高防网站服务器:DDoS防御与BGP线路的AI智能防护方案  北京制作网站的公司排名,北京三快科技有限公司是做什么?北京三快科技?  网站制作专业公司有哪些,如何制作一个企业网站,建设网站的基本步骤有哪些?  如何设置并定期更换建站之星安全管理员密码?  网站制作说明怎么写,简述网页设计的流程并说明原因?  高端建站如何打造兼具美学与转化的品牌官网?  制作网站的过程怎么写,用凡科建站如何制作自己的网站?  c++ stringstream用法详解_c++字符串与数字转换利器  建站之星安装模板失败:服务器环境不兼容?  制作充值网站的软件,做人力招聘为什么要自己交端口钱?  网站建设设计制作营销公司南阳,如何策划设计和建设网站?  如何通过PHP快速构建高效问答网站功能?  css网站制作参考文献有哪些,易聊怎么注册?  网站制作的步骤包括,正确网址格式怎么写?  北京企业网站设计制作公司,北京铁路集团官方网站?  建站之星如何优化SEO以实现高效排名?  建站之星后台管理如何实现高效配置?  如何通过NAT技术实现内网高效建站?  如何在Golang中使用replace替换模块_指定本地或远程路径  微信推文制作网站有哪些,怎么做微信推文,急?  子杰智能建站系统|零代码开发与AI生成SEO优化指南  西安专业网站制作公司有哪些,陕西省建行官方网站?  如何在Golang中使用encoding/gob序列化对象_存储和传输数据  如何通过宝塔面板实现本地网站访问?  昆明高端网站制作公司,昆明公租房申请网上登录入口?  可靠的网站设计制作软件,做网站设计需要什么样的电脑配置?  网站制作多少钱一个,建一个论坛网站大约需要多少钱?  历史网站制作软件,华为如何找回被删除的网站?  html制作网站的步骤有哪些,iapp如何添加网页?  建站之星官网登录失败?如何快速解决?  长春网站建设制作公司,长春的网络公司怎么样主要是能做网站的?  建站之星展会模板:智能建站与自助搭建高效解决方案  网站网页制作专业公司,怎样制作自己的网页?  如何在宝塔面板创建新站点?  如何在腾讯云服务器上快速搭建个人网站?  如何选择域名并搭建高效网站?  购物网站制作费用多少,开办网上购物网站,需要办理哪些手续?  公司网站制作价格怎么算,公司办个官网需要多少钱?  建站ABC备案流程中有哪些关键注意事项?  在线制作视频的网站有哪些,电脑如何制作视频短片?  小捣蛋自助建站系统:数据分析与安全设置双核驱动网站优化  一键制作网站软件下载安装,一键自动采集网页文档制作步骤?  制作销售网站教学视频,销售网站有哪些? 

您的项目需求

*请认真填写需求信息,我们会在24小时内与您取得联系。