方君の小窝 方君の小窝
首页
  • 原生js总结
  • 样式相关
  • vue
  • 其他必备知识
  • php
其他
GitHub

方君

迷糊小前端
首页
  • 原生js总结
  • 样式相关
  • vue
  • 其他必备知识
  • php
其他
GitHub
  • 原生js总结

  • 样式相关

  • vue

    • vue基础
    • vue自定义指令&生命周期
    • vue组件
      • 一,组件化与模块化的区别
      • 二,定义组件(三种)
        • 1.使用Vue.extend配合Vue.component方法:
        • 2. 直接使用Vue.component方法:
        • 3.将模板字符串,定义到script标签中或者template标签中
      • 三,组件中data定义
      • 四,使用components属性定义子组件
      • 五,切换组件
        • 1.使用标识符,结合if/else切换(适合三个以内)
        • 2.使用:is属性切换不同的子组件,并添加动画
    • vue组件传值
    • vue路由
    • 路由机制
  • 其他必备知识

  • 前端
  • vue
方君
2020-08-24

vue 组件

# vue 组件

# 一,组件化与模块化的区别

  • 模块化:从代码逻辑的角度进行划分;方便代码分层开发,保证每个功能模块的职能单一;
  • 组件化:从UI界面的角度进行划分;前端的组件化方便了UI组件重用;

# 二,定义组件(三种)

  • code:./8.component.html

# 1.使用Vue.extend配合Vue.component方法:

<div id="app">
	<login></login>
</div>
<script>
    var login=Vue.extend({
    	template:"<h1>登录</h1>" //组件的html结构
	});
	Vue.component('login',login);
    var vm=new Vue({
        el:"#app",
        data:{
            
        }
    })
</script>

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16

# 2. 直接使用Vue.component方法:

<div id="app">
	<login></login>
</div>
<script>
	Vue.component('register',{
        template:"<h1>注册</h1>"
    });
    var vm=new Vue({
        el:"#app",
        data:{
            
        }
    })
</script>
1
2
3
4
5
6
7
8
9
10
11
12
13
14

# 3.将模板字符串,定义到script标签中或者template标签中

<div id="app">
	<denglu></denglu>
    <zhuce></zhuce>
</div>
<!-- 在APP外部定义 -->
<template id="temp2">
    <div>注册</div>
</template>
<script id="temp" type="x-template">
    <div>
        <a href="#">登录</a>
    </div>
</script>

<script>
	Vue.component('denglu',{
        template:"#temp"
    });
    Vue.component("zhuce",{
        template:"#temp2"
    })
    var vm=new Vue({
        el:"#app",
        data:{
            
        }
    })
</script>
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28

# 三,组件中data定义

  • code:./8.component.html
    <div id="app">
        <counter></counter>
        <counter></counter>
        <counter></counter>
    </div>
    <template id="counter">
        <div>
                <input type="button" value="+1" @click="add">
                {{count}}
        </div>
    </template>

    <script src="vue.js"></script>

    <script>

        //计数器小例子    解释组件data为何以函数返回的形式存在
        
        var obj={count:0}
        Vue.component("counter",{
            template:"#counter",
            data(){
                // return obj;    //此种方式组件之间会互相影响
                return {count:0}
            },
            methods:{
                add(){
                    this.count++;
                }
            }
        })
        var vm = new Vue({
            el: "#app"
        })
    </script>
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35

# 四,使用components属性定义子组件

<div id="app">
    <childrenc></childrenc>
</div>

<script>
var vm=new Vue({
    el:"#app",
    components:{
        childrenc:{
            template:"<div><h1>我是子组件</h1><smallc></smallc></div>",
            components:{
                smallc:{
                    template:"<h3>我是小小</h3>"
                }
            }
        }
    }
})
</script>
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19

# 五,切换组件

  • code:./9.tagglec.html

# 1.使用标识符,结合if/else切换(适合三个以内)

    <div id="app">
        <a href="#" @click.prevent="flag=true">登录</a>
        <a href="#" @click.prevent="flag=false">注册</a>
        <login v-if="flag"></login>
        <register v-else></register>
    </div>



    <template id="login">
        <div>登录</div>
    </template>
    <template id="register">
        <div>注册</div>
    </template>
    <script src="vue.js"></script>
    <script>
        Vue.component("login",{
            template:"#login"
        })
        Vue.component("register",{
            template:"#register"
        })
    var vm=new Vue({
        el:"#app",
        data:{
            flag:true
        }
    })
    </script>
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30

# 2.使用:is属性切换不同的子组件,并添加动画

  • code:./9.tagglec2.html
    <div id="app">
        <a href="#" @click.prevent="flag='login'">登录</a>
        <a href="#" @click.prevent="flag='register'">注册</a>
        <component :is="flag"></component>
    </div>


    <template id="login">
        <div>登录</div>
    </template>
    <template id="register">
        <div>注册</div>
    </template>
    <script src="vue.js"></script>
    <script>
        Vue.component("login",{
            template:"#login"
        })
        Vue.component("register",{
            template:"#register"
        })
    var vm=new Vue({
        el:"#app",
        data:{
            flag:"login"
        }
    })
    </script>
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
编辑
#基础
vue自定义指令&生命周期
vue组件传值

← vue自定义指令&生命周期 vue组件传值 →

最近更新
01
vue自定义指令&生命周期
08-24
02
ajax
08-24
03
promise
08-24
更多文章>
Theme by Vdoing | Copyright © 2019-2020
  • 跟随系统
  • 浅色模式
  • 深色模式
  • 阅读模式