持续创作,加速成长!这是我参与「掘金日新计划 · 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就可以