Vue Render函数原理及代码实例解析


Posted in Javascript onJuly 30, 2020

简单的说,在vue中我们使用模板HTML语法组建页面的,使用render函数我们可以用js语言来构建DOM

因为vue是虚拟DOM,所以在拿到template模板时也要转译成VNode的函数,而用render函数构建DOM,vue就免去了转译的过程。

当使用render函数描述虚拟DOM时,vue提供一个函数,这个函数是就构建虚拟DOM所需要的工具。官网上给他起了个名字叫createElement。还有约定的简写叫h

虽然在render里使用createElement函数创建DOM节点不是很直观,但是在部分独立组件的设计中还是可以满足一些特殊需求的。一个简单的render示例如下:

<!DOCTYPE html>
<html lang="zh-CN">
<head>
  <meta charset="UTF-8">
  <meta name="viewport" content="width=device-width, initial-scale=1.0">
  <meta http-equiv="X-UA-Compatible" content="ie=edge">
  <title>Document</title>
</head>
<body>
  <div id="app">
    <my-component :list="list"></my-component>
  </div>
  <script src="vue.js"></script>
  <script>
    Vue.component('my-component', {
      props: {
        list: {
          type: Array,
          default: () => []
        }
      },
      render(createElement) {
        if (this.list.length) {
          return createElement('ul', this.list.map(item => createElement('li', item)))
        } else {
          return createElement('p', 'Empty list')
        }
      }
    })
    new Vue({
      el: '#app',
      data: {
        list: ['html', 'css', 'javascript']
      }
    })
  </script>
</body>
</html>

另外,由于v-if,v-else,v-show等指令都无法在render里使用,需要自己手动实现,拿常用的v-model举个栗子:

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Vue.component('my-component', {
  data() {
    return {
      message: ''
    }
  },
  render(createElement) {
    return createElement(
      'div',
      [
        createElement(
          'input',
          {
            on: {
              input: e => this.message = e.target.value
            }
          }
        ),
        createElement('p', this.message)
      ]
    )
  }
})
Javascript 相关文章推荐
JQuery FlexiGrid的asp.net完美解决方案 dotNetFlexGrid-.Net原生的异步表格控件
Sep 12 Javascript
js中array的sort()方法使用介绍
Feb 20 Javascript
js表单登陆验证示例
Oct 19 Javascript
基于slideout.js实现移动端侧边栏滑动特效
Nov 28 Javascript
基于bootstrap风格的弹框插件
Dec 28 Javascript
AngularJS实现的2048小游戏功能【附源码下载】
Jan 03 Javascript
浅谈webpack4 图片处理汇总
Sep 12 Javascript
详解webpack-dev-server使用方法
Sep 14 Javascript
vue中获取滚动table的可视页面宽度调整表头与列对齐(每列宽度不都相同)
Aug 17 Javascript
基于vue+uniapp直播项目实现uni-app仿抖音/陌陌直播室功能
Nov 12 Javascript
详解JavaScript的this指向和绑定
Sep 08 Javascript
vue-element-admin项目导入和导出的实现
May 21 Vue.js
vue - props 声明数组和对象操作
Jul 30 #Javascript
vue项目,代码提交至码云,iconfont的用法说明
Jul 30 #Javascript
vue如何使用外部特殊字体的操作
Jul 30 #Javascript
在vue-cli3中使用axios获取本地json操作
Jul 30 #Javascript
JavaScript JSON使用原理及注意事项
Jul 30 #Javascript
解决vue cli4升级sass-loader(v8)后报错问题
Jul 30 #Javascript
基于JavaScript实现猜数字游戏代码实例
Jul 30 #Javascript
You might like
php获取url参数方法总结
2014/11/13 PHP
PHP中常见的密码处理方式和建议总结
2018/10/14 PHP
laravel 修改.htaccess文件 重定向public的解决方法
2019/10/12 PHP
网页中实现浏览器的最大,最小化和关闭按钮
2007/03/12 Javascript
jQuery 前的按键判断代码
2010/03/19 Javascript
非常有用的40款jQuery 插件推荐(系列二)
2011/12/25 Javascript
JS完成代码前最好对其做5件事
2013/04/07 Javascript
实例讲解JS中数组Array的操作方法
2014/05/09 Javascript
使用nodejs开发cli项目实例
2015/06/03 NodeJs
javascript实现给定半径求出圆的面积
2015/06/26 Javascript
浅析javascript异步执行函数导致的变量变化问题解决思路
2016/05/13 Javascript
详解JavaScript中的事件流和事件处理程序
2016/05/20 Javascript
微信小程序 for 循环详解
2016/10/09 Javascript
Google 爬虫如何抓取 JavaScript 的内容
2017/04/07 Javascript
JavaScript中正则表达式判断匹配规则及常用方法
2017/08/03 Javascript
JS库之wow.js使用方法
2017/09/14 Javascript
详解koa2学习中使用 async 、await、promise解决异步的问题
2018/11/13 Javascript
node.js开发辅助工具nodemon安装与配置详解
2020/02/06 Javascript
Object.keys() 和 Object.getOwnPropertyNames() 的区别详解
2020/05/21 Javascript
详解uniapp的全局变量实现方式
2021/01/11 Javascript
[48:24]完美世界DOTA2联赛循环赛LBZS vs Forest 第一场 10月30日
2020/10/31 DOTA
python实现应用程序在右键菜单中添加打开方式功能
2017/01/09 Python
Python实现获取照片拍摄日期并重命名的方法
2017/09/30 Python
详解Python中的Numpy、SciPy、MatPlotLib安装与配置
2017/11/17 Python
对python3 sort sorted 函数的应用详解
2019/06/27 Python
pandas的to_datetime时间转换使用及学习心得
2019/08/11 Python
学python安装的软件总结
2019/10/12 Python
如何通过Python3和ssl实现加密通信功能
2020/05/09 Python
python 多线程中join()的作用
2020/10/29 Python
美国生鲜及杂货电商:FreshDirect
2018/01/29 全球购物
会计电算化个人求职信范文
2014/01/24 职场文书
助理政工师申报材料
2014/06/03 职场文书
食品委托检验协议书范本
2014/09/12 职场文书
公安局负责人查摆问题及整改方案
2014/09/27 职场文书
党员评议表自我评价范文
2014/10/20 职场文书
SQL试题 使用窗口函数选出连续3天登录的用户
2022/04/24 Oracle