zoukankan      html  css  js  c++  java
  • Vue.js之组件嵌套小demo

    Vue.js之组件嵌套的小demo项目

    第一步初始化一个wabpack项目,这里不在复述。
    第二步在components文件夹下新建Header.vue Footer.vue和Users.vue三个组件文件

      Header.vue文件:

     1 <!--1模板:html结构 -->
     2 <template>
     3   <header>
     4     <h1>{{title}}</h1>
     5   </header>
     6 </template>
     7 
     8 <!--2行为:处理逻辑 -->
     9 <script>
    10   export default {
    11     name: 'app-header',
    12     data () {
    13       return {
    14         title:"Vue.js Demo"
    15       }
    16     }
    17   }
    18 </script>
    19 
    20 <!--3样式:解决样式 -->
    21 <style scoped>
    22 header{
    23   background: pink;
    24   padding: 10px;
    25 }
    26 h1{
    27   color: #222;
    28   text-align: center;
    29   }
    30 </style>

      Users.vue文件:

     1 <template>
     2   <div class="users">
     3     <ul>
     4       <li v-for="user in users"
     5           @click="user.show = !user.show">
     6         <h2 >{{user.name}}</h2>
     7         <h3 v-show="user.show">{{user.Position}}</h3>
     8       </li>
     9     </ul>
    10   </div>
    11 </template>
    12 
    13 <script>
    14   export default {
    15     name: 'users',
    16     data () {
    17       return {
    18         users:[
    19           {name:"Henry",Position:"Java工程师",show:false},
    20           {name:"Lily",Position:"Java工程师",show:false},
    21           {name:"KangKang",Position:"Java工程师",show:false},
    22           {name:"Maria",Position:"Java工程师",show:false},
    23           {name:"Sally",Position:"Java工程师",show:false},
    24           {name:"Elinna",Position:"Java工程师",show:false}
    25           ]
    26       }
    27     }
    28   }
    29 </script>
    30 
    31 <style scoped>
    32 users{
    33   width: 100%;
    34   max-width: 1200px;
    35   margin:40px auto;
    36   padding: 0 20px;
    37   box-sizing: border-box;
    38 }
    39 ul{
    40    display: flex;           //所有li在一行
    41   flex-wrap: wrap;          //所有li在容器里,不会超出容器
    42   list-style-type: none;
    43   padding: 0;               //去掉浏览器自带的padding值
    44   }
    45 li{
    46   flex-grow: 1;            //如果一行之有一个会撑满整行,如果有两个,两个撑满整行
    47   flex-basis: 200px;       //每一个li200px的宽度
    48   text-align: center;
    49   padding: 30px;
    50   border: 1px solid #666;
    51   margin: 10px;
    52 }
    53 </style>

      Footer.vue文件:

     1 <template>
     2   <footer>
     3     <p>{{copyright}}</p>
     4   </footer>
     5 </template>
     6 
     7 
     8 <script>
     9   export default {
    10     data () {
    11       return {
    12         copyright:"Copyright 2018 Vue Demo"
    13 
    14       }
    15     }
    16   }
    17 </script>
    18 
    19 <style scoped>
    20   footer{
    21     background: #666;
    22     padding: 6px;
    23   }
    24   footer p{
    25     color: pink;
    26     text-align: center;
    27   }
    28 </style>

    第三步:编写App.vue文件:在此文件中要在script中通过import引用刚才编写的三个组件,然后通过组件的别名使用组件。

    App.vue文件:项目入口文件中引入的组件

     1 <!--模板-->
     2 <template>
     3   <div id="app">
     4     <app-header></app-header>
     5     <users></users>
     6     <app-footer></app-footer>
     7   </div>
     8 </template>
     9 
    10 <!--行为-->
    11 <script>
    12   //局部注册组件
    13   import Users from './components/Users'
    14   import Header from './components/Header'
    15   import Footer from './components/Footer'
    16 
    17 export default {
    18   name: 'App',
    19   components:{
    20     "users":Users,
    21     "app-header":Header,
    22     "app-footer":Footer
    23   }
    24 }
    25 </script>
    26 
    27 <!--样式-->
    28 <style >
    29 </style>

    html文件:项目的入口文件

     1 <!DOCTYPE html>
     2 <html>
     3   <head>
     4     <meta charset="utf-8">
     5     <meta name="viewport" content="width=device-width,initial-scale=1.0">
     6     <title>vue-playlist</title>
     7   </head>
     8   <body>
     9     <div id="app"></div>
    10   </body>
    11 </html>

    main.js文件:项目的入口js文件

    1 import Vue from 'vue'
    2 import App from './App'
    3 
    4 Vue.config.productionTip = false
    5 new Vue({
    6   el: '#app',
    7   components: { App },
    8   template: '<App/>'
    9 })

      然后启动项目,就能看到生成一个组件嵌套形成的小demo

    项目加载流程:
      index.html是入口文件,加载html时候会调用main.js文件,main.js文件会实例化vue组件App.vue,然后App.vue会把其他组件也加载进来,最后渲染整个页面。

  • 相关阅读:
    NXOpen 创建方体block代码
    Mysql---2 DDL DML DQL DCL
    Mysql数据库--1数据库操作
    FFmpeg
    Servlet Web
    Java web Springboot
    Java 网络
    Java 注解 反射
    Java 线程状态
    Java Lambda
  • 原文地址:https://www.cnblogs.com/jin-zhe/p/8317452.html
Copyright © 2011-2022 走看看