zoukankan      html  css  js  c++  java
  • vue总结

    模拟数据

    在dev-server中,使用express提供的接口
    
    var appData = require("./xxx.josn");
    var dataClassify1 = appData.dataClassify1;
    ...
    
    获取接口
    var apiRoutes = express.Router();
    
    配置接口
    apiRouters.get("/dataClassify1",function(req,res){
        res.json({
            erron:0, (自定义的返回值,标识错误或者权限等)
            data: dataClassify
        })
    });
    使用配置
    app.use("/api",apiRoutes);
    当路由为api/dataClassify1时,返回虚拟后台数据
    
    

    guide

    vue实例

    1.通过new vue({})实例化,extend来创建可复用已经预定义的vue组件
    2.实时监控的data属性通过两种方式添加:
    .通过return
    .通过 datas = {},然后在vue实例里面 data=datas,data将代理 datas,两者等价
    3.实例的方法属性通过$来辨别
    ```
    关于数据绑定
    分为:
    一次性绑定 v-once
    单向绑定 大部分的绑定 通过v-bind 或者 {{}}
    双向绑定 存在与data中的,通过v-model绑定input等可输入控件的值与data中数据 
    ```
    

    模版

    一.插值:
    1.{{}}
    2.v-once 该节点所以插值只是一次性插值
    3.v-html 插入html文本(安全问题)(此时不能通过{{}}绑定值,只能通过v-bind:xx=""来绑定)
    4.模版内可使用表达式(被放在沙盒中),但是只能使用是单条语句且只能访问全局变量的一个白名单,如Math,Date,不能访问用户自定义的全局变量
    二.过滤器:
    1.添加在mustache的尾部,由管道符 | 指引
    2.使用实例方法filter或者类中filters中去注册
    3.{{a|filterA()|filterB()}}--a值通过两个过滤器
    指令:
    1.v-bind:xx="xxx"  v-bind: 缩写 :
    2.v-on:click.prevnet="xx" 指令:参数.修饰符 v-on: 缩写 @
    

    计算属性

        当{{a}} {{ a*xxx+xx }} {{c}}  而 第二个中计算太多时,可以将第二个替换为计算属性 {{b}}
        computed : {
            b :  function (){  ---默认是get
                return a*xxx...
            },
            c :{
                set : function(newc){
                        this.a=newc...;
                },
                get :function(){
                        return axxx...
                }
        }
        值是被缓存的 , 只有当依赖数据改变时,才会去更新通过computed更新值
        对比methods 
        return this.a + new Date();
        --- computed(计算属性) 只有在a变化才会变化
        --- methods(触发方法) 在两个任意变化都会变化
        --- watch(监听数据) watch执行异步或者更昂贵的操作,如,知道操作停止才计算属性等...
    

    class与style绑定

    绑定class

    1.直接绑定值
        v-bind:class="active"
    2.判断+复合
        :class="{a:isa , b:isb}" class="else"  data中设置isa,isb,渲染class="a,b,else"
    3.设置为对象
        :class="{{classobj}}" data中设置classobj:{a:true,b:true},渲染class="a,b";
    4.设置为返回对象的函数
        computed:{
            class_obj:function(){
                ...处理...
                return {
                    a:isa,
                    b:isb
                }
            }
        }
    5.设置为数组
        [{a:isa},b,c]
    

    绑定style

    1.{color:color,fontSize:size+'px'} data中 color:"red",size:100
    2.直接绑定对象 "{classobj1,classobj2}" 
    classobj1:{
        color:"red"
    }
    Vue自动添加前缀
    

    条件列表渲染

    条件渲染
    v-if="istrue" v-show="ok"
    v-else
    
    列表渲染
    1.数组arr:[{a:1},{b:2}]
    v-for="(item,index) in/of arr"
    2.对象obj:{a:1,b:2}
    v-for="(value,key,index) in obj"
    3.整数迭代 
    v-for="n in 10"
    
    

    事件处理器

    通过v-on/@ 参数 修饰符 绑定methods中的方法
    
    一:获得event对象
    1: @click="fn"  fn:function(e){e是evnet对象}
    2: @click="fn(parm,$event)" fn:function(parm,evnet){}...
    二:事件修身符
    1.stop 阻止继续往上冒泡
    2.prevent 阻止默认事件
    3.capture 使用事件捕获模式
    4.self 只有在该元素本身触发,才会执行回调
    三:按键别名...
    

    表单控件

    v-model是根据类型自动绑定数据的
    修饰符: 
    lazy---实事改为change事件中同步 
    number---能转为数字的转数字,为NaN的,为原值,配合type=number(值为字符串) 
    trim---过滤空格 , 多个空格合为一个
    

    组件

    一:注册
    1.创建在template中
     vue.component("app",{
        data:datas,
        template:"<i>{{a}}</i>"
     })
    2.创建在<script type="text/x-template"> ... </> 
    3.创建在<template>...</>
    然后 vue.component("app",{
        teplate:"#app"
    })
    ---其中,分为两步,先生vue.extend({}),创建一个组件构造器,然后用vue.component({})注册,这里是用语法糖将两步合在一起,这些是全局注册的
    
    4.父子组件
     vue.component("app",{
        data:datas,
        template:"<i>{{a}}<app2></app2></i>",
        components:{
            "app2":app2
        }
     })
     5.局部子组件
     var app = {
        template:"#app"
     }
     new vue({
        component{
        "app":app
        }
     })
     
     **组件中的data和el必须使用函数
    
    二.props组件数据传递
    
    1.props-down 
        *子组件内 props:{} 注册
         子组件元素 <子组件 :msg="变量"></> -- 动态绑定
        *msg="xx" xx会作为字符串常量传下去 -- 静态传值
        *初始化传值:通过data return msg = this.parentMsg
        *不能在子组件中直接改变props的值,可以通过computed
        msg:fn(){
            return this.parentMsg+msg2  == msg2改变时改变值
            } ---> computed的值,不能再直接更改,如methods中使用 this.msg = "xx" ,不起作用
        
        props的验证属性:
            props:{
                a:{
                dafault:"默认值",
                required:true 必要性
                type:Numner/String/Object... ,[string,number]  === 原生验证
                validator:fn(val){return val>0} ===自定义验证
                }
            }
    
    2.event-up
    
        子组件上:
            1. <模版里面 v-on:click="childEvent">
                methods:{
                    childEvent:function(){
                        this.$emit("self_difine_evnet")
                    }
                } --- 当子组件触发事件,发出emit定义的事件
            2. <子组件  v-on:self_difine_evnet = "parentEvent"> --父组件触发事件
                或者子组件触发原生事件
               <子组件  v-on:click.native="parentEvent"> --当子组件内点击时,触发父组件事件
    3.非父子组件通信通过空vue实例,更复杂的通过状态管理插件;
    三.slot -- 内容分发(父组件往子组件内插入html代码)
        子组件中:slot 也可以加name
        父组件中 子组件元素内加元素 也可以元素上加slot="xx"
        默认下,在父组件中 往子组件内加的元素 ,是不会被显示的
        如果加了slot ,则将这些元素插入slot中,如果有name,则按照name分别插入
        
        动态组件
        通过 <keep-alive><component v-bind:is="组件"></></keep-alive>
            父组件内
            data:{组件:a} 
            components:{"a":a,"b":b}
            通过改变data.组件来在同一个挂载点上切换组件    
            <keep-alive> 保存了组件在内存中,避免重新渲染
    四.杂项
    异步组件(按需加载)
    递归组件
    组件命名约定
    

    深入响应式原理

    过渡效果

    1.使用默认的或者重置的class:
    name-enter 出现时,立刻添加,然后立刻删除这个class,只是为transition添加初始状态
    name-enter-active 从enter过渡到这个状态,过渡时间完成后删除
    name-leave
    name-leave-active  这些只会在运动状态时添加上去,运动完后是默认的那些class
    <transition name="xx">
        <p>toggle<p>  --- class会添加到p上
    </transition>
    默认名字是v ,添加名字重置前缀
    
    2.使用自定义类名--用来搭配 如animated.css库
    <transition 
    enter-class=""
    enter-active-class="animated tada"
    leave-active-class=""
    leave-class="" >
    
    3.使用js钩子函数--用来搭配 如velocity.js等js动画库等
    before-enter
    enter           ---done()回调 , 当仅通过js完成过渡效果时,为必须
    after-enter
    enterCancelled
    
    befor-leave
    leave            ---done()回调
    after-leave
    leaveCancelled
    
    然后在methods里面注册,依然还是会在元素内添加类名,只是效果可以由js完成
    还可以自定义钩子和初始化渲染的过渡
    
  • 相关阅读:
    idea常用快捷键及操作
    Ubuntu 装nexus
    ubuntu安装gitlab
    ubuntu安装jdk,maven,tomcat
    ubuntu安装gitlab-ci-runner、注册
    ubuntu开启远程shell,开启上传下载
    Ubuntu安装软件提示boot空间不足
    POJ3461 KMP简单变形输出模式串在主串出现的次数
    涨姿势stl map['a']['a']=b;
    对链表的操作(数据结构线性表算法设计练习)
  • 原文地址:https://www.cnblogs.com/LiangHuang/p/6413908.html
Copyright © 2011-2022 走看看