zoukankan      html  css  js  c++  java
  • Vue.js(一)

    1、Vue.js是什么?

        1)一位华裔前Google工程师(尤雨溪)开发的前端js库
        2)作用:动态构建用户界面
        3)特点:
             遵循MVVM模式
             编码简洁,体积小,运行效率高,移动/PC端开发
             它本身只关注UI,可以轻松引入vue插件和其他第三方库开发项目
        4)与其他框架的关联
             借鉴angular的模板和数据绑定技术
             借鉴react的组件化和虚拟DOM技术
        5)vue包含一系列的扩展插件(库)
             vue-cli:vue脚手架
             vue-resource(axios):ajax请求
             vue-router:路由
             vuex:状态管理
             vue-lazyload:图片懒加载
             vue-scroller:页面滑动相关
             mint-ui:基于vue的组件库(移动端)
             element-ui:基于vue的组件库(PC端)

    2、基本使用

        1)引入vue.js
        2)创建Vue实例对象(vm),指定选项(配置)对象
            el:指定dom标签容器的选择器
            data:指定初始化状态数据的对象/函数(返回一个对象)
        3)在页面模板中使用{{}}或vue指令

    3、Vue对象的选项

        1)el
            指定dom标签容器的选择器,Vue就会管理对应的标签及其子标签
        
        2)data
            对象或函数类型
            指定初始化状态属性数据的对象,vm也会自动拥有data中的属性,页面中可以直接访问
            数据代理:由vm对象来代理对data中所有属性的操作(读/写)
        
        3)methods
            包含多个方法的对象
            供页面中的事件指令来绑定回调,回调函数默认有event参数,但也可以指令自己的参数
            所有的方法由vue对象来调用,访问data中属性直接使用this.xxx

        4)computed
            包含多个方法的对象
            对状态属性进行计算返回一个新的数据,供页面获取显示
            一般情况下是相当于是一个只读的属性
            利用set/get方法来实现属性数据的计算读取,同时监视属性数据的变化
            如何给对象定义get/set属性
                在创建对象时指定:getName(){return xxx}/setName(value){}
                对象创建之后指令:Object.defineProperty(obj,age,{get(){},set(value){}})
         
        5)watch
            包含多个属性监视的对象,分为一般监视和深度监视
            xxx:function(value){
                xxx:{
                    deep:true,
                    handler:fun(value)
                }
            }
            另一种添加监视方式:vm.$watch('xxx',function(value){})

    4、过渡动画

        利用vue去操控css的transition/animation动画
        模板: 使用<transition name='xxx'>包含带动画的标签
        css样式
            .fade-enter-active: 进入过程, 指定进入的transition
            .fade-leave-active: 离开过程, 指定离开的transition
            .xxx-enter, .xxx-leave-to: 指定隐藏的样式
        编码案例

    .xxx-enter-active, .xxx-leave-active {
        transition: opacity .5s
    }
    .xxx-enter, .xxx-leave-to {
         opacity: 0
    }
            
    <transition name="xxx">
        <p v-if="show">hello</p>
    </transition>

    5、生命周期

        vm/组件对象
        主要的生命周期函数:
        created()/mounted():启动异步任务(启动定时器,发送ajax请求,绑定监听)
        beforeDestory():做一些收尾工作

    6、自定义过滤器

        1)理解
        对需要显示的数据进行格式化后再显示
        
        2)编码

    1). 定义过滤器
        Vue.filter(filterName, function(value[,arg1,arg2,...]){
            // 进行一定的数据处理
            return newValue
        })
    2). 使用过滤器
        <div>{{myData | filterName}}</div>
        <div>{{myData | filterName(arg)}}</div>

    7、Vue内置指令

        v-text/v-html:指定标签体;v-html会将value作为html标签来解析
        v-if v-else v-show:显示/隐藏元素
            v-if:如果value为true,当前标签会输出在页面中
            v-else:与v-if一起使用,如果value为false,将当前标签输出到页面中
            v-show:就会在标签中添加display样式, 如果vlaue为true, display=block, 否则是none
        v-for:遍历
            *遍历数组:v-for="(persons,index) in persons"
            *遍历对象:v-for="value in person"
        v-on:绑定事件监听
            *v-on:事件名,可以缩写为:@事件名
            *监听具体的按键:@keyup.keyCode @keyup.enter
            *停止时间的冒泡和阻止时间的默认行为:@click.stop @click.prevent
            *隐含对象:$event
        v-bind:强制绑定解析表达式
            *html标签属性是不支持表达式的,就可以使用v-bind
            *可以缩写为: :id='name'
            *代码
                :class="a"
                :class="{classA:isA,classB:isB}"
                :class="[classA,classB]"
                :style="{color:color}"
        v-model:双向数据绑定,自动收集用户输入数据
        ref:标识某个标签
            ref='xxx'
            读取得到标签对象:this.$refs.xxx

    8、自定义指令

    1)注册全局指令
            Vue.directive('my-directive', function(el, binding){
              el.innerHTML = binding.value.toUpperCase()
            })
        
    2)注册局部指令
             directives : {
               'my-directive' : function(el, binding) {
                el.innerHTML = binding.value.toUpperCase()
             }
           }
    3)使用指令
           <div v-my-directive='xxx'>
  • 相关阅读:
    【JZOJ6409】困难的图论
    学习LCT小结
    jzoj5432. 【NOIP2017提高A组集训10.28】三元组
    jzoj6367. 【NOIP2019模拟2019.9.25】工厂(factory)
    jzoj6366. 【NOIP2019模拟2019.9.25】化学(chem)
    jzoj5433. 【NOIP2017提高A组集训10.28】图
    学习拓展中国剩余定理小结
    jzoj6300. Count
    jzoj3736. 【NOI2014模拟7.11】数学题
    jzoj6276. 【noip提高组模拟1】树
  • 原文地址:https://www.cnblogs.com/hucheng1997/p/11166076.html
Copyright © 2011-2022 走看看