欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

Vue中的组件及路由使用

程序员文章站 2022-04-30 20:20:13
1.组件是什么 组件系统是 Vue 的一个重要概念,因为它是一种抽象,允许我们使用小型、独立和通常可复用的组件构建大型应用。通常一个应用会以一棵嵌套的组件树的形式来组织; 1.1组件的声明及使用 全局组件 局部组件 1.2组件使用注意事项 组件名如果是驼峰法命名,使用组件时要将大写字母改为小写,并且 ......

1.组件是什么

       组件系统是 vue 的一个重要概念,因为它是一种抽象,允许我们使用小型、独立和通常可复用的组件构建大型应用。通常一个应用会以一棵嵌套的组件树的形式来组织;

1.1组件的声明及使用

  全局组件

<body>
    <div id="app">
        <!-- 用全局组件的名称作为html的标签 -->
        <myzujian></myzujian>
    </div>
    
</body>
<script>
    //设置全局组件
     vue.component("myzujian",{
          template:"<h2>我是全局组件</h2>"
      });
     var app=new vue({
         el:"#app",
     });
</script>

  局部组件

<body>
    <div id="app">
        <!-- 用局部组件的名称作为html的标签 -->
        <zu-jian></zu-jian>
    </div>
    
</body>
<script>
     var app=new vue({
         el:"#app",
         components:{
              zujian:{
                  template:"<h1>我是局部组件</h1>",  
             }
         }
     });
</script>

1.2组件使用注意事项

   组件名如果是驼峰法命名,使用组件时要将大写字母改为小写,并且在前面加上 - 组件中的tamplate属性必须有一个唯一的根元素,否则会报错

1.3组件中数据及方法

<body>
    <div id="app">
        <mytemp></mytemp>
    </div>
</body>
<script>
    var app=new vue({
        el:"#app",
        data:{},
        components:{
            mytemp:{
                data(){
                    return {
                        msg:"123456789",
                    }
                },
                methods: {
                    cli(){
                        alert(this.msg);
                    }
                },
                template:'<h1 @click="cli">you{{msg}} very good</h1>',
            }
        }
    });
</script>

1.4父级组件传值

<body>
    <div id="app">
        <my :cc="msg"></my>
    </div>
</body>
<script>
    var app = new vue({
        el:'#app',
        data:{msg:'没事干'},
        components:{
            my:{
                props:['cc'],
                template:"<s>{{cc}}</s>"
            }
        }
    })
</script>

2.路由的使用

   vue在使用路由插件vue-router,要提前引入。

<body>
    <div id="app">
        <ul>
            <li> <router-link to="/login">登录</router-link> </li>
            <li> <router-link to="/reg">注册</router-link> </li>
        </ul>
        <router-view></router-view>
    </div>
</body>
<script>
    // 获取路由对象
    var ro = new vuerouter({
        // 定义路由规则
        routes:[
            // 具体匹配规则
            // {path:匹配地址栏路由变化,component:要展示组件}
            {path:'/reg',component:{template:"<s>我是注册</s>"}},
            {path:'/login',component:{template:"<s>我是登录</s>"}},
        ]
    })
    var app = new vue({
        el: '#app',
        data: {},
        router:ro
    })
</script>

2.1动态路由匹配

<body>
    <div id="app">
        <!-- 传递数据直接写在 / 后面 -->
        <router-link to="/user/10">hfhg</router-link>
        <router-view></router-view>
    </div>
</body>
<script>
    var router = new vuerouter({
        routes: [
            {   
                // 获取数据是变量的名字前面加: 
                path: "/user/:id", component: {
                    mounted(){
                        // router会为vue添加公有属性 $route ,使用$route来获取数据
                        console.log(this.$route.params.id)
                    },
                    template: "<s>就大师{{$route.params.id}}分离开国家</s>"
                }
            }
        ]
    })
    var app = new vue({
        el: '#app',
        data: {},
        router,
    })
</script>