组件(Component)是 Vue.js 最强大的功能之一,组件可以扩展 HTML 元素,封装可重用的代码。组件是可复用的 Vue 实例,且带有一个名字。
下面通过一个示例演示 Vue.js 中怎样定义和使用组件,例如:
<html> <head> <meta charset="UTF-8"> <meta http-equiv="X-UA-Compatible" content="IE=edge"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <title>Vue</title> <!-- 使用 CDN 引入 Vue 库 --> <script src="https://cdn.jsdelivr.net/npm/vue@2/dist/vue.js"></script> </head> <body> <div id="app"> <!-- 使用自定义的组件 --> <button-counter></button-counter> </div> <script type="text/javascript"> // 定义一个名为 button-counter 的新组件 Vue.component('button-counter', { // 组件的数据 data: function () { return { count: 0 } }, // 组件的模板 template: '<button v-on:click="count++">You clicked me {{ count }} times.</button>' }); var app = new Vue({ el: "#app", data: {} }); </script> </body> </html>
运行效果如下图:
上面例子中 <button-counter> 就是一个组件,一个可复用的 Vue 实例。我们可以在一个通过 new Vue() 创建的 Vue 根实例中,把这个组件作为自定义元素来使用:
<div id="app"> <!-- 使用自定义的组件 --> <button-counter></button-counter> </div>
因为组件是可复用的 Vue 实例,所以它们与 new Vue() 接收相同的选项,例如:data、computed、watch、methods 以及生命周期钩子等。仅有的例外是像 el 这样根实例特有的选项。