zoukankan      html  css  js  c++  java
  • 3、vueJs基础知识03

    vue过渡(动画)

      本质走的css3: transtion ,animation

      <div id="div1" v-show="bSign" transition="fade"></div>
    
        动画:
            .fade-transition{
                
            }
            进入:
            .fade-enter{
                opacity: 0;
            }
            离开:
            .fade-leave{
                opacity: 0;
                transform: translateX(200px);
            }
    
        也可以使用animation.css动画库,并且vue实例还有一个transition配置项
    
        <div class="animated" transition="bounce" v-show="bSign"></div>
        
        new Vue({
            el:'',
            data:{},
            methods:{},
            transitions:{
                bounce:{
                    enterClass:'zoonInLeft',
                    leaveClass:'zoomOutRight'
                }
            }
        
        })

    vue组件

      组件:一个大对象,定义一个组件

    var Aaa=Vue.extend({
        template:'<h3>我是标题3</h3>'
    });

      注册组件:  

      1、全局组件,通过Vue的方法component注册到全局类Vue上

    Vue.component('aaa',Aaa); //挂在全局Vue对象上的
    //全局组件可以在以后的通过new出来的vue实例中使用
    
        *组件里面放数据:
            组件里面的data必须是函数的形式,函数必须返回一个对象(json数据)

        2、局部组件

        放到某个组件内部,通过components配置项,注册到(组件)实例中

    var vm=new Vue({
        el:'#box',
        data:{
            bSign:true
        },
        components:{ //局部组件 挂在vue实例内的
            aaa:Aaa
        }
    });

      另一种定义注册方式.(推荐);上面是定义和注册分步进行,这种方式是定义和注册合为一步了

          全局:
        Vue.component('my-aaa',{
            template:'<strong></strong>'
        });
        
        局部:
        var vm=new Vue({
            el:'#box',
            components:{
                'my-aaa':{
                    template:'<h2>标题2</h2>'
                }
            }
        });    

    组件配合模板使用

      将组件中的模板字符串,抽出模板(多个标签)到html中

       1. template:'<h2 @click="change">标题2->{{msg}}</h2>'
    
        2. 单独放到某个地方
            a). <script type="x-template" id="aaa">
                <h2 @click="change">标题2->{{msg}}</h2>
                </script>
    
            b). 推荐
           <template id="aaa"> <h1>标题1</h1> <ul> <li v-for="val in arr"> {{val}} </li> </ul> </template>

      动态组件:(可以做选择卡)

    <component :is="组件名称"></component>

     组件间通信

       vue默认情况下,子组件也没法访问父组件数据 

    1. 子组件就想获取父组件data
        a、在调用子组件:绑定属性
            <bbb :m="数据"></bbb>
    
        b、子组件之内:通过props获取以上绑定的属性
            props:['m','myMsg']
        
            也可以指定类型的props
            props:{
                'm':String,
                'myMsg':Number
            }
       c、之后就可以在子组件的methods里面或者html插值里面使用了 2. 父级获取子级数据 *子组件实例主动把自己的数据,发送到父级,父级通过v-on:自定义事件监听,捕获到发送的事件触发,并接收到数据 vm.$emit(事件名,数据); v-on: @事件名=“自己的方法”

        另外还有一种传值方法(2.0中已经废除):

          vm.$dispatch(事件名,数据) 子级向父级发送数据
          vm.$broadcast(事件名,数据) 父级向子级广播数据
          配合: event:{}

    vue中的slot

      位置、插槽;作用就是占个位置

      就是在使用组件时,为组件里面的内容能留有渲染的位置
      多个slot可以是用name进行区分

      类似ng里面 transclude (指令)

    vue路由

      vue--->单页面(SPA)应用,是根据不同的路由(url地址),展示不同的效果(组件)

      用到插件vue-router

    html:
        <a v-link="{path:'/home'}">主页</a>    跳转链接
        
        展示内容:
        <router-view></router-view>
    js:
        //1. 准备一个根组件
        var App=Vue.extend();
    
        //2. Home News组件都准备
        var Home=Vue.extend({
            template:'<h3>我是主页</h3>'
        });
    
        var News=Vue.extend({
            template:'<h3>我是新闻</h3>'
        });
    
        //3. 准备路由
        var router=new VueRouter();
    
        //4. 关联(将组件名与定义的组件关联,之后就可以在html中通过v-link使用了)
        router.map({
            'home':{
                component:Home
            },
            'news':{
                component:News
            }
        });
    
        //5. 启动路由
        router.start(App,'#box');
    
       跳转(路由重定向):
        router.redirect({
            ‘/’:'/home'
        });

      路由多层嵌套:在map关联的路由名称后的配置项subRoutes里进行配置次级路由

        主页    home
            登录    home/login
            注册    home/reg
        新闻页    news
    
        subRoutes:{
            'login':{
                component:{
                    template:'<strong>我是登录信息</strong>'
                }
            },
            'reg':{
                component:{
                    template:'<strong>我是注册信息</strong>'
                }
            }
        }  

        路由其他信息:可以通过路由后面的参数传递,并在当前路由组件的模板中使用
        /detail/:id/age/:age

        {{$route.params | json}} -> 当前参数

        {{$route.path}} -> 当前路径

        {{$route.query | json}} -> 查询字符串数据

    vue-loader(.vue文件加载器)

        通过路由实现页面切换,项目实现单文件组件,即使用.vue文件,.vue文件的编译需要vue-loader处理

        其他loader->  css-loader、url-loader、html-loader、file-loader.....

        后台: nodeJs ->  require  exports

        browserify  模块加载,只能加载js

        webpack   模块加载器, 一切东西都是模块, 最后打包到一块了 (包括图片、css)

        require('style.css'); ->   css-loader、style-loader

        vue-loader基于webpack

    .vue文件

      vue单文件组件,放置的是vue组件代码,结构包括三部分

         <template>
                html
            </template>
        
            <style>
                css
            </style>
        
            <script>
                //js    (平时代码、ES6)    babel-loader(编译es6)
           export default{
            //里面像组件使用一样的
            data(){
              return {
                msg:'welcome Vue'
              }
            }
           }
    </script>
  • 相关阅读:
    滴滴快车奖励政策,高峰奖励,翻倍奖励,按成交率,指派单数分级(1月27日)
    北京Uber优步司机奖励政策(1月27日)
    成都Uber优步司机奖励政策(1月26日)
    北京Uber优步司机奖励政策(1月26日)
    滴滴快车奖励政策,高峰奖励,翻倍奖励,按成交率,指派单数分级(1月26日)
    天津Uber优步司机奖励政策(1月25日~1月31日)
    南京Uber优步司机奖励政策(1月25日~1月31日)
    宁波Uber优步司机奖励政策(1月25日~1月31日)
    tp5项目搭建思路
    tp5框架知识点
  • 原文地址:https://www.cnblogs.com/gopark/p/11024885.html
Copyright © 2011-2022 走看看