美文网首页
vue 组件,定义模板方式,render函数

vue 组件,定义模板方式,render函数

作者: Gino_Li | 来源:发表于2019-04-15 22:55 被阅读0次

全局组件

Vue.component("name",Object)
name:表示组件的名称
Object:表示一个对象,和vue实例的对象一样具有完整的生态系统

<div id="app">
      <btn><btn>
</div>

Vue.component('btn',{
      template:"<button @click="add">{{num}}</button>",
      data:function(){
            return {
                  num:0
            }
      },
      methods:{
            add(){
                  this.num++
             }
      }
})
//实例化vue
var vm = new Vue({
    el:"#app"
})

局部组件

局部组件需要在实例化对象中通过components属性进行注册

<div id="app">
      <btn><btn>
</div>

var btn = {
    template:"<button @click="add">{{num}}</button>",
    data(){
        return{
            num=0;
        }
    },
    methods:{
        add(){
             this.num++
        }
    }
}
//实例化vue,并注册组件
var vm = new Vue({
     el:"#app",
     components:{
          btn
      }
})

定义模板的方式

1.直接书写在template中,具体参考上面的写法

2.写在script标签中

<script type="text/template" id="tm">
      <div>我是写在script标签里面的模板</div>
</script>
//声明局部组件
var test = {
    template:"#tm"
}
//
new Vue({
    el:"#app",
    components:{
        test;//注册组件
    }
})

3.声明变量

let tem = ` <div>我是在组件外部定义的模板</div>` ;

//局部组件
var test={
    template:tem
}

//实例化 Vue
new Vue({
    el:"#app",
    components:{
        test;//注册组件
    }
})

render函数

除了使用模板template外,在一些场景中,你真的需要 JavaScript 的完全编程的能力,这时你可以用 render 函数,它比 template 更接近编译器。
render:function(createElement)
createElement(tag,{style:{}},[]]),接收三个参数,第一个是字符串,编写创建元素的标签,第二个是对象,存放样式,第三个是数组,存放渲染的数据和插槽

格式

render:function(createElement){
     return createElement('el',{
          //样式
          style:{
          }
    },[ ]
}

示例

<div id="app">
    <test><test>
</div>


        Vue.component("test",{
            render:function(createElement){
                return createElement('div',{
                    style:{
                        width:"100%",
                        height:'200px',
                        border:'1px solid #666',
                        textAlign:"center"
                    }
                },[
                    this.msg
                ])
            },
            data(){
                return{
                    msg:"我是render函数渲染出来的"
                }
            }
        })

        var vm = new Vue({
            
        }).$mount('#app')

render里面设置插槽

<div id="app">
    <test>
        <!-- 插入无名插槽里的内容 -->
        <p>我是插到无名插槽内的内容</p>
        <!-- 插到具名插槽的内容 -->
        <template v-slot:footer>
            <p>我是插到footer里面的内容</p>  
        </template>
        <template v-slot:header>
            <p>我是插到header里面的内容</p>
        </template>
    </test>
</div>

<script>
    Vue.component("test",{
        render:function(createElement){
            return createElement('div',{
                style:{
                    width:"100%",
                    height:'200px',
                    border:'1px solid #666',
                    textAlign:"center"
                }
            },[
                this.$slots.default,//无名插槽
                this.$slots.footer//具名插槽
                createElement("div",this.$slots.header)//创建一个被div包裹的插槽

            ])
        }
    })

    var vm = new Vue({
        
    }).$mount('#app')
</script>

相关文章

  • vue 组件,定义模板方式,render函数

    全局组件 Vue.component("name",Object)name:表示组件的名称Object:表示一个对...

  • Vue模板编译解析

    第一种就是经过模板编译生成 render 函数第二种是我们自己在组件里定义了 render 函数,这种会跳过模板编...

  • ###VUE下

    渲染函数和jsx 在vue中我们可以不用template来指定组件的模板,而是用render函数来创建虚拟dom结...

  • Vue中的render渲染函数

    Vue中的render渲染函数 render函数只支持jsx写法创建虚拟Dom节点。vue组件中的template...

  • Vue常用模式

    组件定义 SFC 单文件组件 SFC 字符串模板或 ES6 模板字面量 渲染函数 JSX 语法糖 Vue 类组件装...

  • 47-Vue组件render

    这里显示组件的方法对比 一.注册子组件 定义组件模板 创建模板对象 绑定模板组件 二.利用render渲染 直接点...

  • 11.更灵活的组件:Render 函数与 Functional

    更灵活的组件:Render 函数与 Functional Render Vue.js 2.x 与 Vue.js 1...

  • 3.组件构造函数

    组件构造函数如何获取 Vue.extend() render 改装插件

  • React 入门实例教程

    目录 html模板 ReactDOM.render() JSX 语法 组件 & props props & 纯函数...

  • react 基本语法

    目录 html模板 ReactDOM.render() JSX 语法 组件 & props props & 纯函数...

网友评论

      本文标题:vue 组件,定义模板方式,render函数

      本文链接:https://www.haomeiwen.com/subject/viduwqtx.html