zoukankan      html  css  js  c++  java
  • Vue组件化开发

    组件化开发

    入门案例:

     <!DOCTYPE html>
     <html lang="en">
     <head>
         <meta charset="UTF-8">
         <title>Vue</title>
         <!--引入vue的支持文件-->
         <script type="text/javascript" src="js/vue.js"></script>
     </head>
     <body>
             <div id="app">
                 <button-counter></button-counter>
                 <button-counter></button-counter>
                 <button-counter></button-counter>
                 <button-counter></button-counter>
             </div>
     
         <script type="text/javascript">
             Vue.component('button-counter',{
                 /*这里比较特殊,参数需要使用函数的方式返回,否则template部分接收不到*/
                 data:function () {
                     return {count:0}
                },
                 
                 /*组件template中必须只有一个根元素*/
                 template:'<button @click="add">点击了{{count}}次</button>',
                 
                 methods:{
                     add:function () {
                         this.count+=1;
                    }
                }
            })
             
             const vm = new Vue({
                 el:'#app',
                 data:{
                }
            });
         </script>
     </body>
     </html>

    组件的命名使用规范:

    如果使用驼峰式命名组件,那么在使用该组件时,必须要转化成短横杠式的方式使用,否则报错,例如命名了一个‘HelloWorld’组件 使用的时候必须是‘hello-world’

    局部组件和全局组件

     <!DOCTYPE html>
     <html lang="en">
     <head>
         <meta charset="UTF-8">
         <title>Vue</title>
         <!--引入vue的支持文件-->
         <script type="text/javascript" src="js/vue.js"></script>
     </head>
     <body>
             <div id="app">
                 <button-counter>
                 </button-counter>
                 <hello-world></hello-world>
                 <hello-tom></hello-tom>
             </div>
     
         <script type="text/javascript">
             /*下面这个是全局组件*/
             Vue.component('button-counter',{
                 /*这里比较特殊,参数需要使用函数的方式返回,否则template部分接收不到*/
                 data:function () {
                     return {count:0}
                },
                 template:'<button @click="add">点击了{{count}}次</button>',
                 methods:{
                     add:function () {
                         this.count+=1;
                    }
                }
            })
     
             /*下面这个是局部组件,
            * 局部组件只能在注册他的父组件中使用,其他地方不能使用
            * 如果局部组件被app组件注册的话,全局组件就不能使用下面的局部组件
            */
             var HelloWorld={
                 data:function () {
                     return {msg:'hello-world'}
                },
                 template: '<div>{{msg}}</div>'
            }
             var HelloTom={
                 data:function () {
                     return {msg:'hello-tom'}
                },
                 template: '<div>{{msg}}</div>'
            }
     
             const vm = new Vue({
                 el:'#app',
                 data:{
                },
                 components:{
                     'hello-world':HelloWorld,
                     'hello-tom':HelloTom
                }
            });
         </script>
     </body>
     </html>

    组件之间的数据交互

    父组件向子组件传值

    重点:父组件通过props属性向子组件传值,props是单向数据流,只允许父组件向子组件传值

     <!DOCTYPE html>
     <html lang="en">
     <head>
         <meta charset="UTF-8">
         <title>Vue</title>
         <!--引入vue的支持文件-->
         <script type="text/javascript" src="js/vue.js"></script>
     </head>
     <body>
             <div id="app">
                 <s-component :smsg="pmsg"></s-component>
             </div>
     
         <script type="text/javascript">
             
             /*下面是子组件*/
             Vue.component('sComponent',{
                 props:
                    ['smsg'],
                 data:function () {
                     return {
                         msg:'子组件的信息'
                    }
                },
                 template:'<div>{{msg+"-----------"+smsg}}</div>'
     
            });
             
             /*Vue实例对象相当于父组件*/
             const vm = new Vue({
                 el:'#app',
                 data:{
                     pmsg:'父组件的信息'
                }
            });
         </script>
     </body>
     </html>
    子组件向父组件传值

    重点:子组件通过自定义事件向父组件传递值

    Slot插槽

    作用:即通过在子组件中定义slot标签,然后可以在其父组件调用时将值插入到标签中。

  • 相关阅读:
    uva 1362(区间dp+计数)
    uva 11174(排列组合+搜索)
    简单递推系列 uva习题
    基本计数方法系列 uva习题
    Codeforces Round #209 (Div. 2) Problem A Table(找规律)
    CodeChef November Challenge 2013 解题报告
    2012 chengdu现场赛 Browsing History HDU4464(简单字符串)
    CodeChef TechFest 2013 Cool Numbers(搜索)
    CodeChef Inscription 2013 Wonderland jewellery(简单题)
    页面滚动marquee标签
  • 原文地址:https://www.cnblogs.com/zhang188660586/p/12253286.html
Copyright © 2011-2022 走看看