Vue.js 教程

Vue.js 组件组合

Vue.js 的组件实际上就是一个可以被复用的 Vue 实例,通常我们的一个应用可以使用无数个组件进行拼装完成。如果我们将应用想象成一栋房子,那么组件可以是砖块、窗户、门等等。将砖块、窗户和门按照给定的图纸组装在一起就是一栋房子,也就是一个应用了。

Vue.js 的组件系统让我们可以用独立可复用的小组件来构建大型应用,几乎任意类型的应用的界面都可以抽象为一个组件树。如下图:

例如,你可能会有页头、侧边栏、内容区等组件,每个组件又包含了其它的像导航链接、博文之类的组件。

为了能在模板中使用,这些组件必须先注册以便 Vue 能够识别。这里有两种组件的注册类型:全局注册和局部注册。至此,我们的组件都只是通过 Vue.component 全局注册的:

// 全局注册
Vue.component('my-component-name', {
    // ... options ...
})

注意:全局注册的组件可以用在其被注册之后的任何 (通过 new Vue) 新创建的 Vue 根实例,也包括其组件树中的所有子组件的模板中。

完整示例

该示例将演示一个简单的页面,该页面通过三个自定义 Vue 组件组成,代码如下:

<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">
       <!-- 页面头 -->
       <page-head></page-head>
       <div>
           <div style="float:left;">
               <!-- 页面栏目 -->
               <page-part></page-part>
           </div>
           <!-- 页面正文 -->
           <page-content></page-content>
       </div>
   </div>

   <script type="text/javascript">
       // 定义头部组件
       Vue.component('page-head', {
           data: function(){
               return {
                   title: "Vue组件组合"
               };
           },
           template: '<div style="height:100px;background:blue;">{{title}}</div>'
       });

       // 定义左边栏目组件
       Vue.component('page-part', {
           data: function(){
               return {
                   parts: ["栏目1", "栏目2", "栏目3"]
               };
           },
           template: '<div style="background:yellow;height:200px;width:150px;">' +
               '<ul style="margin:0;">' +
               '  <li v-for="item in parts">{{item}}</li>' +
               '</ul></div>'
       });

       // 定义正文部分组件
       Vue.component('page-content', {
           data: function(){
               return {
                   content: "Hello Vue.js"
               };
           },
           template: '<div style="background:red;height:200px;">{{content}}</div>'
       });

       var app = new Vue({
           el: "#app",
           data: {}
       });
   </script>

</body>
</html>

运行效果如下图:

说说我的看法
全部评论(
没有评论
关于
本网站专注于 Java、数据库(MySQL、Oracle)、Linux、软件架构及大数据等多领域技术知识分享。涵盖丰富的原创与精选技术文章,助力技术传播与交流。无论是技术新手渴望入门,还是资深开发者寻求进阶,这里都能为您提供深度见解与实用经验,让复杂编码变得轻松易懂,携手共赴技术提升新高度。如有侵权,请来信告知:hxstrive@outlook.com
公众号