vue2.0的extend 和vue3.0为啥移除了extend

1,022 阅读2分钟

持续创作,加速成长!这是我参与「掘金日新计划 · 10 月更文挑战」的第1天,点击查看活动详情

我之前聊过vue2.0的extend,主要是和mixin mixins一起写的不全面也没有和vue3.0做比较,这次就详细的讲讲extend, 在vue2当中vue.extend曾经被用于创建一个基于Vue构造函数的子类,前面这句话比较理论,通俗讲类的话其实是一个构造函数,Vue是一个构造函数,vue.extend创造出来的也是一个构造函数,他只是vue的子构造函数,为啥是子类的构造函数,看调用当法就知道了他是Vue这个类的一个静态方法,而且Vue.extend的内部的方法属性继承于Vue,Vue.extend的传入参数对象,就是一个optionsApi 如这种

var contructor = Vue.extend({ // 创建出来的是一个构造器
   name: '',
   components: {},
   props: {},
   redner: h=>h()
})
// 使用必须new contructor()

new contructor().$mount('#app')

和vue使用的方法一样 vue想要挂载是

new Vue({ render: h => h(App), }).$mount('#app')

vue.extend 可以对vue框架做一个扩展,这个在官网也说了,但是说的不是很明确,需要自己摸索,大部分看完可能都会不明所以,这个就是更加方便我们去做一些vue的专用插件,可以脱离我们的Vue实例的根元素,直接把创建出来放在body上,我们不需要在模版上再去写,可以直接调用方法就可以了,方便使用

vue3移除extend是因为有了平替方案,就是用careteApp,如果写过vue3大家可以看下就会看到在main.js有这样一段代码也是最重要的代码

 import { createApp } from 'vue'
 improt app from './App.vue'
 let app = createApp(app)
 app.$mount('#app')

在vue3中Vue的也有一个方法是createApp使用方式 Vue.createApp() 使用方法

let pro = {
   template: `<p>{{name}}</p>`
   data: function() {
     return {
        name: '名字'
     }
   }
}

vue.createApp(pro).mount('#app')

vue3 返回的不是构造函数,返回都是对象方法,直接调用mount就可以