Vue.js - 组件简介和注册

组件用于封装页面的部分功能,将功能的结构、样式、逻辑代码封装为整体,提高了功能的复用性与可维护性,能更好的专注于业务逻辑。

组件使用时为自定义 HTML 标签形式,通过组件名作为自定义标签名。

<div id="app">
  <!-- 普通 HTML 标签 -->
  <p>p标签内容</p>
  <!-- Vue.js 组件 -->
  <my-com></my-com>
</div>

组件注册


全局注册

全局注册的组件在注册后可以用于任意实例或组件中。

Vue.component('组件名', { /* 选项对象 */ })

注意:全局注册必须设置在根 Vue 实例创建之前。

组件基础

本质上,组件是可复用的 Vue 实例,所以它们可与 new Vue 接收相同的选项,例如 data、methods 以及生命周期钩子等。仅有的例外是像 el 这样根实例特有的选项。

组件命名规则:
  • kebab-case:'my-component’
  • PascalCase:'MyComponent'
Vue.component('my-component-a', { /* 选项对象 */ }) // kebab-case
Vue.component('my-component-a', { /* 选项对象 */ }) // PascalCase

注意:无论采用哪种命名方式,在 DOM 中都只有 kebab-case 可以使用。

template 选项:

template 选项用于设置组件的结构,最终被引入根实例或其他组件中,template 中可以使用插值表达式等 Vue 语法和指令。

Vue.component('MyComponentA', {
  template: `
    <div>
      <h3>组件 A 的内容标题</h3>
    </div>`
})

注意:组件必须只有一个根元素。

data 选项:

data 选项用于存储组件的数据,与根实例不同,组件的 data 选项必须为函数,数据设置在返回值对象中。

Vue.component('MyComA', {
  template: `
    <h3>{{ title }}<h3>
  `,
  data: function () {
    return {
      title: '示例内容'
    }
  }
})

这种实现方式是为了确保每个组件实例可以维护一份被返回对象的独立的拷贝,不会相互影响。

局部注册

局部注册的组件只能用在当前实例或组件中。

new Vue({
  ...
  components: {
    'my-component-a': {
      template: '<h3>{{ title }}</h3>',
      data () {
        return { title: 'a 组件示例内容' }
      }
    }
  }
})

还可以单独配置组件的选项对象:

var MyComponentA = { /* ... */ }

new Vue({
  el: '#app',
  components: {
    'my-component-a': MyComponentA
  }
})

ES6 的对象属性简写:

new Vue({
  el: '#app',
  components: {
    MyComponentA
  }
})
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。
禁止转载,如需转载请通过简信或评论联系作者。

推荐阅读更多精彩内容

  • 组件用于封装页面的部分功能,将功能的结构,样式,逻辑代码封装为整体 提高功能的复用性和可维护性,更好的专注于业务逻...
    amanohina阅读 486评论 0 6
  • 组件(Component)是可复用的Vue实例,这句话给了我们两个信息,可复用和Vue实例。可复用就是能够重复使用...
    书上得来终觉浅阅读 326评论 0 0
  • 组件简介 组件系统是Vue.js其中一个重要的概念,它提供了一种抽象,让我们可以使用独立可复用的小组件来构建大型应...
    前端一菜鸟阅读 900评论 0 16
  • 什么是组件 组件(Component)是 Vue.js 最强大的功能之一。组件可以扩展 HTML 元素,封装可重用...
    angelwgh阅读 796评论 0 0
  • 有一篇非常棒的关于vue.js的组件的文章,写的特别好,特别清楚,容易理解。链接:上篇:http://www.cn...
    恰皮阅读 1,814评论 0 8