vue2.0 render()渲染函数及jsx

render()函数通过虚拟DOM 来渲染页面

因为它所包含的信息会告诉 Vue 页面上需要渲染什么样的节点,及其子节点。我们把这样的节点描述为“虚拟节点 (Virtual Node)”,也常简写它为“VNode”。“虚拟 DOM”是我们对由 Vue 组件树建立起来的整个 VNode 树的称呼。
–来源:https://cn.vuejs.org/v2/guide/render-function.html#虚拟-DOM

createElement()函数用来生成模板:
参数说明:
createElement(
// @returns {VNode}
createElement(
  // {String | Object | Function}
  // 一个 HTML 标签字符串,组件选项对象,或者
  // 解析上述任何一种的一个 async 异步函数。必需参数。
  'div',

  // {Object}
  // 一个包含模板相关属性的数据对象
  // 你可以在 template 中使用这些特性。可选参数。
  {
   
    // 和`v-bind:class`一样的 API
  // 接收一个字符串、对象或字符串和对象组成的数组
	  'class': {
   
	    foo: true,
	    bar: false
	  },
	  // 和`v-bind:style`一样的 API
	  // 接收一个字符串、对象或对象组成的数组
	  style: {
   
	    color: 'red',
	    fontSize: '14px'
	  },
	  // 普通的 HTML 特性
	  attrs: {
   
	    id: 'foo'
	  },
	  // 组件 props
	  props: {
   
	    myProp: 'bar'
	  },
	  // DOM 属性
	  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
	      }
	    }
	  ],
	  // 作用域插槽格式
	  // { name: props => VNode | Array<VNode> }
	  scopedSlots: {
   
	    default: props => createElement('span', props.text)
	  },
	  // 如果组件是其他组件的子组件,需为插槽指定名称
	  slot: 'name-of-slot',
	  // 其他特殊顶层属性
	  key: 'myKey',
	  ref: 'myRef',
	  // 如果你在渲染函数中向多个元素都应用了相同的 ref 名,
	  // 那么 `$refs.myRef` 会变成一个数组。
	  refInFor: true
  },

  // {String | Array} 
  // 子虚拟节点 (VNodes),由 `createElement()` 构建而成,
  // 也可以使用字符串来生成“文本虚拟节点”。可选参数。
  [
    '先写一些文字',
    createElement('h1', '一条数据')
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Vuerender 函数Vue 组件渲染的核心,通过 render 函数可以实现更加灵活的组件编写方式。下面是关于 Vuerender 函数的详细介绍: 1. 概念定义: Vuerender 函数是一个纯 JavaScript 函数,它接收一个 createElement 函数作为参数,用于生成虚拟 DOM,最终将组件渲染成 HTML。在 Vue 组件中,可以使用 render 函数来代替 template,这样可以更加灵活地渲染组件。 2. createElement 函数: createElement 函数Vue 中的一个工厂函数,用于快速创建虚拟 DOM 元素。createElement 函数接收三个参数,第一个参数是标签名或组件,第二个参数是属性对象,第三个参数是子节点。 使用 createElement 函数可以快速创建虚拟 DOM 元素,例如: ```javascript // 创建一个 div 元素 createElement('div', { class: 'wrapper' }, [ createElement('h1', {}, 'Hello Vue') ]) ``` 3. Vue 组件的 render 函数Vue 组件的 render 函数接收一个 createElement 函数作为参数,通过该函数创建虚拟 DOM 元素。在 render 函数中,通过编写 JavaScript 代码来生成 DOM 元素,可以使用条件判断、循环语句等,从而实现更加灵活的组件渲染。 例如,下面是一个简单的 render 函数: ```javascript render (createElement) { return createElement('div', { class: 'wrapper' }, [ createElement('h1', {}, 'Hello Vue') ]) } ``` 4. render 函数与 template 的对比: 相对于 template,render 函数的优点在于:可以使用 JavaScript 代码生成 DOM 元素,可以进行条件判断、循环语句等;可以实现更加灵活的组件开发;可以更好地控制组件的渲染流程。 相对于 template,render 函数的缺点在于:需要熟悉 JavaScript 语法和 createElement 函数;在实现复杂组件时,需要编写更多的代码。 5. render 函数JSXJSX 是 Facebook 出品的一种语法扩展,可以在 JavaScript 中编写类似 HTML 的语言。与 render 函数类似,JSX 也是将组件编写成 JavaScript 代码的方式。 Vue 也支持 JSX 语法,VueJSX 实现是通过 Babel 插件实现的。使用 JSX 可以更加直观地编写组件,但需要熟悉 JSX 语法和相关工具的使用。 6. 总结: render 函数Vue 组件的核心,它通过 createElement 函数创建虚拟 DOM 元素,最终将组件渲染成 HTML。相对于 template,render 函数可以实现更加灵活的组件开发,但需要熟悉 JavaScript 语法和 createElement 函数。同时,Vue 也支持 JSX 语法,可以更加直观地编写组件。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值