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'>
posted @ 2019-07-10 19:44  loading---  阅读(885)  评论(0编辑  收藏  举报