Vue天禹

  1. 主页
  2. 文档
  3. Vue天禹
  4. render函数

render函数

当template内部的结构代码在编译的时候发生了什么?

比如我们下面的代码
<template>
 <div>
     <h1>123456789</h1>
 </div>
</template>

我们平常写template里面所使用的模板是HTML语法组件的页面,其实在vue中都会被编译为render函数,因为vue中采用的是虚拟dom进行页面组件,这样的优点是优化页面的加载重绘性能

render函数的基本使用

我们在views文件夹中新建一个Render.vue组件,注意如果要使用render函数编译模板,一定不要有<template></template>,否则就回加载template中的内容

render.vue

<script>
    export default {
        render(createElement){
            return createElement('h1',{},123456789)
        }
    }
</script>

<style lang="scss" scoped>
</style>

App.vue

<template>
    <div>
        <render></render>
    </div>
</template>
<script>
import render from "./views/render.vue"
    export default {
        components:{
            render
        }
    }
</script>
<style lang="less" scoped>
</style>

我们设置一个小案例,通过render函数动态的修改当前组件的节点渲染

<script>
    export default {
        props:{
            tag:{
                type:String,
                required:true,
            },
            data:{
                type:String
            }
        },
        render(createElement){
            return createElement(this.tag,{},this.data)
        }
    }
</script>

<style lang="scss" scoped>
</style>

main.js

/*
该文件是整个项目的入口文件
*/
//引入Vue
import Vue from ‘vue’
//引入App组件,它是所有组件的父组件
import App from ‘./App.vue’
//关闭vue的生产提示
Vue.config.productionTip = false

/*
关于不同版本的Vue:

1.vue.js与vue.runtime.xxx.js的区别:
(1).vue.js是完整版的Vue,包含:核心功能+模板解析器。
(2).vue.runtime.xxx.js是运行版的Vue,只包含:核心功能;没有模板解析器。

2.因为vue.runtime.xxx.js没有模板解析器,所以不能使用template配置项,需要使用render函数接收到的createElement函数去指定具体内容。

*/

//创建Vue实例对象—vm
new Vue({
el:’#app’,
//render函数完成了这个功能:将App组件放入容器中
render: h => h(App),
// render:q=> q(‘h1′,’你好啊’)

// template:`<h1>你好啊</h1>`,
// components:{App},

})

这篇文章对您有用吗?

我们要如何帮助您?