vue 高级api (extned)
前言
vue.extend是vue的一个全局的api,它的作用是创建一个vue的子例。其实和vue.compoent一样,都是创建一个组件。但是区别是vue.component创建的组件,是挂载在vue实例内,而vue实例挂载在dom节点#app。所以通过vue.component创建的组件都存在于#app内。而vue.extend创建的组件可以向vue实例一样,通过$mount自由的选择挂载位置。相当于一个独立的组件
使用场景
1.假定我想定义一个全局的提示toast组件,并且不想让她挂载在#app之下。
2.vue.extend(options)参数中接受接受一个template属性,可以动态的定义组件。这个在vue.compoent中其实也可以实现
如何使用
值得一提的是$mount不是将组件挂载在dom节点下,而是替换指定的节点
//创建一个子例构造函数 const vueC= Vue.extend({ template:"<div>测试值</div>", ...//一些component选项 }) //new子例实例,并通过$mount将其挂载在指定的节点上 new vueC().$mount("#app2")
//vue.compoent()可以接受一个子例构造函数
vue.component('compoent-id',vueC)