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

*可以缩写为: :

*代码

:class="a"

:class="{classA:isA,classB:isB}"

:class="[classA,classB]"

:

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'>