跳到主要内容

Vue.extend 和 Vue.component 的区别是什么?

参考答案:

Vue.extend 和 Vue.component 是 Vue.js 框架中用于创建和注册组件的两种方法,但它们的使用场景和目的有所不同。

  1. Vue.extend

Vue.extend 是 Vue 的一个全局 API,它用于创建一个“子类”,这个子类是一个具有特定选项的 Vue 构造器。你可以使用这个构造器来创建新的 Vue 实例,或者通过 Vue.component 方法来注册组件。

例如:

var Component = Vue.extend({
  template: '<div>A custom component!</div>'
})

// 创建 Component 的一个新实例
var instance = new Component()

在这个例子中,Vue.extend 创建了一个新的 Vue 构造器,该构造器可以用来创建新的 Vue 实例。然而,更常见的用法是将其与 Vue.component 结合使用,以全局注册组件。

Vue.component('my-component', Vue.extend({
  template: '<div>A custom component!</div>'
}))

在这个例子中,Vue.extend 创建的构造器被用作 Vue.component 的第二个参数,以全局注册一个新的组件。

  1. Vue.component

Vue.component 是 Vue 的一个全局 API,用于注册一个全局组件。这个组件可以在 Vue 实例的模板中使用。你可以传递两个参数给 Vue.component:组件的名字和组件的选项对象。

例如:

Vue.component('my-component', {
  template: '<div>A custom component!</div>'
})

在这个例子中,Vue.component 直接接受一个选项对象来注册一个新的全局组件。这个组件可以在任何 Vue 实例的模板中使用。

总的来说,Vue.extend 主要用于创建新的 Vue 构造器,而 Vue.component 主要用于注册全局组件。尽管你可以使用 Vue.extend 创建的构造器来注册组件,但 Vue.component 提供了更简洁和直接的方式来注册组件。