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会把其他组件也加载进来,最后渲染整个页面。
以上是 Vue.js之组件嵌套小demo 的全部内容, 来源链接: utcz.com/z/378752.html