先上一个参考链接,觉得帮助很大: Vue 2.0学习笔记:Vue.extend构造器的延伸
然后拿vue官网的话解释vue.extend
:使用基础 Vue 构造器,创建一个“子类”。参数是一个包含组件选项的对象。
什么意思,我的理解其实就是创建一个自己的类,可以通过类的实例化动态创建dom元素
接下来以Loading
实例演示一下用法
- 首先,我们创建一个Loading文件夹,并在其中创建
index.vue
和index.js
两个文件 - 然后,我们在
index.vue
中输入一些内容
index.js
中的内容如下
import Vue from 'vue' // 引入Vue
import Loading from './index.vue' // 引入要动态创建的vue模板
const LoadingConstructor = Vue.extend(Loading) // 创建一个Loading类
let newLoading
// 创建并导出showLoading方法
export const showLoading = (option = {}) => {
newLoading = new LoadingConstructor().$mount() // 实例化Loading类,并挂载
document.querySelector(option.container || 'body').appendChild(newLoading.$el) // 将生成的元素挂载到option.container元素或者body元素上
}
// 创建并导出hideLoading方法
export const hideLoading = () => {
newLoading.$el.parentNode.removeChild(newLoading.$el)
}
- 然后我们就可以进行引入并使用了
- 当然,如果我们
Vue.extend
构造器一般都会进行多次使用,所以我们可以在main.js
中将其挂在到Vue的原型上面
- 效果图