到了2.0以后,有哪些变化:

  1. 在每个组件模板,不在支持片段代码

之前:

  1. <template id=”aaa”>
  2.  
  3. <h3>我是组件</h3><strong>我是加粗标签</strong>
  4.  
  5. </template>

现在:  必须有根元素,包裹住所有的代码

  1. <template id="aaa">
  2.  
  3. <div>
  4.  
  5. <h3>我是组件</h3> <strong>我是加粗标签</strong>
  6.  
  7. </div>
  8.  
  9. </template>

2、关于组件定义

之前:、

Vue.extend 这种方式,在2.0里面有,但是有一些改动,这种写法,即使能用,咱也不用——废弃

  1. Vue.component(组件名称,{ 2.0继续能用
  2.  
  3. data(){}
  4.  
  5. methods:{}
  6.  
  7. template:
  8.  
  9. });

现在: 2.0推出一个组件,简洁定义方式:类似于Vue.extend()

  1. var Home={
  2.  
  3. template:'#aaa'
  4.  
  5. };
  6.  
  7. Vue.component('my-aaa',Home);

3、关于生命周期

之前:

created:       当new Vue执行后,即实例已经创建时执行

beforeCompile:当开始编译HTML页面所有的Vue语法之前执行

compiled:     当编译HTML页面所有的Vue语法结束之后执行

ready:       当编译结束后把所有元素挂到Dom树,即插入到文档中后执行

beforeDestroy : 销毁之前

destroyed :     销毁之后

现在:

beforeCreate 组件实例刚刚被创建,属性都没有

created        实例已经创建完成,属性已经绑定

beforeMount 模板编译之前,页面的{{}}未替换

mounted 模板编译之后,代替之前ready  *

beforeUpdate 组件更新之前

updated 组件更新完毕 *

beforeDestroy 组件销毁前

destroyed 组件销毁后

4、关于生命周期v-for

2.0里面默认就可以添加重复数据,不需要使用track-by='$index/uid'

去掉了隐式一些变量   $index $key

之前:                    index表示下标,val表示当前的值

  1. v-for="(index,val) in array"

现在:

  1. v-for="(val,index) in array"
  2.  
  3. track-by="id" 变成 <li v-for="(val,index) in list" :key="index">

5、自定义键盘信息

之前:

  1. Vue.directive('on').keyCodes.ctrl=17;

现在:

  1. Vue.config.keyCodes.ctrl=17

6、关于过滤器,推荐自定义写法

之前:

系统就自带很多过滤

  1. {{msg | currency}} {{msg | json}} limitBy filterBy

到了2.0, 内置过滤器,全部删除了,

推荐使用lodash 工具库

自定义过滤器——还有 但是,自定义过滤器传参变化

  1. 之前: {{msg | toDou '12' '5'}}
  2.  
  3. 现在: {{msg | toDou('12','5')}}

7、关于父子组件直接的数据交互

子组件想要拿到父组件数据:   通过  props

之前:

子组件可以更改父组件信息,可以是同步  sync

现在:

不允许直接给父级的数据,做赋值操作

解决办法:

a). 父组件每次传一个对象给子组件, 对象之间引用 。将数据变成对象

b). 只是不报错, mounted中转,将数据赋值后更改,不直接更改

8、可以单一事件管理组件通信: vuex

在全局定义一个vue对象

  1. var Event=new Vue();

在发送出数据的组件内定义一个方法,点击触发。调用vue对象中的$emit

  1. send(){ Event.$emit ('a-msg',this.a); }
  2.  
  3. Event.$emit(事件名称, 数据)

在接收数据的组件中调用调用vue对象中的$on进行接收数据

  1. Event.$on('a-msg',function(a){
  2.  
  3. this.a=a;
  4.  
  5. }.bind(this));
  6.  
  7. Event.$on(事件名称,function(data){
  8.  
  9. //data
  10.  
  11. }.bind(this));

9、动画过渡

之前: transition 作为一个属性使用

  1. HTML元素:<p transition="fade"></p>
  2.  
  3. 定义CSS:.fade-transition{}
  4.  
  5. .fade-enter{}
  6.  
  7. .fade-leave{}

现在:transition 作为一个组件HTML标签

  1. <transition name="fade">
  2.  
  3. 需要运动的对象(可以是元素,属性、路由....)
  4.  
  5. </transition>

定义CSS:

  1. .fade-enter{} //初始状态,即目标元素原本的状态
  2.  
  3. .fade-enter-active{} //变化成什么样 -> 当元素出来(显示)的时候的状态
  4.  
  5. .fade-leave{} //离开前的状态
  6.  
  7. .fade-leave-active{} //变成成什么样 -> 当元素离开(消失)的时候的状态

例子:

  1. <transition name="fade"><p v-show="show"></p> </transition>
  2.  
  3. .fade-enter-active, .fade-leave-active{ //定义总的动画时间
  4.  
  5. transition: 1s all ease;
  6.  
  7. }
  8.  
  9. .fade-enter,.fade-leave{ //动画前的状态
  10.  
  11. opacity:0;
  12.  
  13. width:100px;
  14.  
  15. height:100px;
  16.  
  17. }
  18.  
  19. .fade-enter-active{ //目标元素出现(显示)时的动画
  20.  
  21. opacity:1;
  22.  
  23. width:300px;
  24.  
  25. height:300px;
  26.  
  27. }
  28.  
  29. .fade-leave-active{ //目标元素消失(隐藏)时的动画
  30.  
  31. opacity:0;
  32.  
  33. width:100px;
  34.  
  35. height:100px;
  36.  
  37. }

transition内部具备多个方法函数:后面跟的·是一个方法

@before-enter="beforeEnter"        显示前触发

@enter="enter"                      显示时触发

@after-enter="afterEnter"            显示后触发

@before-leave="beforeLeave"        消失前触发

@leave="leave"                      消失时触发

@after-leave="afterLeave"            消失后触发

方法名不可改变,每个方法函数可传入el值,表示当前动画对象

例子:

  1. <transition name="fade @before-enter="beforeEnter" >
  2.  
  3. </transition>
  1. methods:{
  2.  
  3. beforeEnter(el){ //定义动画之前的方法,el表示动画对象
  4.  
  5. console.log('动画enter之前');
  6.  
  7. },
  8.  
  9. }

如何animate.css配合用?

直接在transition标签内调用animate.css的class样式

  1. <transition enter-active-class="bounceInLeft" leave-active-class="bounceOutRight">
  2.  
  3. <p v-show="show" class="animated"></p> //调用animated
  4.  
  5. </transition>

当一个transition内有多个元素需要使用动画时,使用transition-group,并且使用 :key 标注顺序

例子一:

  1. <transition-group enter-active-class="zoomInLeft" leave-active-class="zoomOutRight">
  2.  
  3. <p v-show="show" class="animated" :key="1"></p>
  4.  
  5. <p v-show="show" class="animated" :key="2"></p>
  6.  
  7. </transition-group>

例子二:

  1. <transition-group enter-active-class="zoomInLeft" leave-active-class="zoomOutRight">
  2.  
  3. <p v-show="show" class="animated" v-for="(val,index) in lists" :key="index">
  4.  
  5. {{val}}
  6.  
  7. </p>
  8.  
  9. </transition-group>

10、关于路由

基本使用:

1.  布局

  1. <router-link to="/home">主页</router-link> //不再使用a标签
  2.  
  3. <router-view></router-view>

2. 路由具体写法

  1. //声明各个组件
  2.  
  3. var Home={
  4.  
  5. template:'<h3>我是主页</h3>'
  6.  
  7. };
  8.  
  9. var News={
  10.  
  11. template:'<h3>我是新闻</h3>'
  12.  
  13. };
  14.  
  15. //配置路由对应的组件
  16.  
  17. const routes=[
  18.  
  19. {path:'/home', componet:Home},
  20.  
  21. {path:'/news', componet:News},
  22.  
  23. ];
  24.  
  25. //生成路由实例
  26.  
  27. const router=new VueRouter({
  28.  
  29. routes //相当于routes :routes
  30.  
  31. });
  32.  
  33. //最后挂到vue上
  34.  
  35. new Vue({
  36.  
  37. router, //相当于 router:router
  38.  
  39. el:'#box'
  40.  
  41. });

3. 重定向redirect

之前  router.rediect  废弃了

  1. {path:'*', redirect:'/home'}
  2.  
  3. // *表示任何一个路由链接,当找不到路由的情况下也会跳转到这个位置

路由嵌套 : children

  1. <router-link to="/user/username">跳转到子路由</router-link>
  2.  
  3. const routes=[ //配置路由对应的组件
  4.  
  5. {path:'/home', component:Home},
  6.  
  7. {
  8.  
  9. path:'/user',
  10.  
  11. component:User,
  12.  
  13. children:[ //写在嵌套的路由里面,使用children
  14.  
  15. {path:'username', component:UserDetail}
  16.  
  17. ]
  18.  
  19. },
  20.  
  21. {path:'*', redirect:'/home'} //404错误默认跳转
  22.  
  23. ];

路由之间的数据携带:$route.params

  1. <router-link to="/user/strive/age/10">Strive</router-link> //注意链接{path:':username/age/:age', component:UserDetail} //使用:表示携带数据
  2.  
  3. <div>{{$route.params}}</div> //页面展示该路由携带的数据

路由实例方法:  表现为是否产生历史记录

  1. router.push({path:'home'}); //直接添加一个路由,表现切换路由,本质往历史记录里面添加一个
  2.  
  3. router.replace({path:'news'}) //替换路由,不会往历史记录里面添加
  4.  
  5. 例子:
  6.  
  7. methods:{
  8.  
  9. push(){ router.push({path:'home'}); },
  10.  
  11. replace(){ router.replace({path:'user'}); }
  12.  
  13. }

给路由切换添加动画:使用animate.css

直接将 <router-view></router-view>放在transition 标签内

例子:

  1. <transition enter-active-class="animated bounceInLeft" leave-active-class="animated bounceOutRight">
  2.  
  3. <router-view></router-view>
  4.  
  5. </transition>

11、关于脚手架

添加路由命令:npm install vue-router --save

main.js文件内发生变化,本质上没有区别,其他都一样写法

之前:

  1. new Vue({
  2.  
  3. el: '#app',
  4.  
  5. components:{App}
  6.  
  7. })

现在:

  1. new Vue({
  2.  
  3. el: '#app',
  4.  
  5. render: h => h(App)
  6.  
  7. })

在vue-loader里面为路由添加动画

1、直接在index.html页面引入

2、在main.js顶部引入,直接打包成一个文件

注意:需要另外按照style-loader  css-loader两个模块

命令行:npm install style-loader css-loader

并在webpack.config.js文件中配置

  1. {
  2.  
  3. test: /\.css$/,
  4.  
  5. loader: 'style!css' //顺序定死的
  6.  
  7. }

例子:

  1. import './assets/css/animate.css';

12、关于与后台的数据交互

推荐使用axios

跟vue-resourse使用方式完全一样

命令行安装:npm install axios --save-dev

页面引入:  import axios from “axios”

Vue版本过渡变化的更多相关文章

  1. Vue响应式变化

    Vue有一个很方便的特性就是Vue的双向绑定,即响应式变化,在Vue2.X版本中,Vue响应式变化靠的是Object.defineProperty方法实现的,但是这个方法有个问题,就是对数组的支持不全 ...

  2. 【jQuery基础学习】10 简单了解jQuery Mobile及jQuery各个级别版本的变化

    关于 jQuery Mobile jQuery Mobile是为了填补jQuery在移动设备应用上的一个新项目.它应用了HTML5和CSS3. 主要特性 基于jQuery构建. 采用与jQuery一致 ...

  3. Vue列表过渡

    前面的话 本文将详细介绍Vue列表过渡 概述 前面分别介绍了单元素CSS过渡和JS过渡,以及多元素过渡.如何同时渲染整个列表呢?在这种情景中,需要使用<transition-group>组 ...

  4. 账号配置vue版本的扫码下单以及对店铺进行装修的步骤

    新版vue配置说明文档 管理员后台: 1.配置管理-店铺配置(子账号)-扫码点餐tab页-开启vue版 2.配置管理-店铺配置(主账号)-扫码点餐tab页-开通装修配置 商家后台: 1.主账号-门店设 ...

  5. Vue使用过渡类名实现动画和自定义前缀

    Vue使用过渡类名实现动画和自定义前缀 1.效果演示 2.相关代码 <!DOCTYPE html> <html lang="en"> <head> ...

  6. VUE:过渡&动画

    VUE:过渡&动画 vue动画的理解 1)操作css的 trasition 或 animation 2)vue会给目标元素添加/移除特定的class 3)过渡的相关类名 xxx-enter-a ...

  7. OpenSSL所有版本的变化,从1.1开始架构有所变化,生成的lib名称也有所不同了,以及对Qt的影响

    The complete explanation is that 1.0.x and 1.1.x do not have the same naming conventions for the gen ...

  8. 黑马vue---46、vue使用过渡类名实现动画

    黑马vue---46.vue使用过渡类名实现动画 一.总结 一句话总结: vue动画的过渡类名的时间点中没有设置样式的话就是默认的样式 使用 transition 元素,把 需要被动画控制的元素,包裹 ...

  9. <el-tag></el-tag>部分属性与vue版本的兼容问题

    [01]标签使用按钮样式<el-tag effect="dark" v-if="myhotelinfo.runstatus=='T'" type=&quo ...

随机推荐

  1. windows 运行banana

    1 git clone 工程 2 安装 npm 3 执行 npm install -g bower

  2. 微信小程序生成带参数的二维码 小程序二维码

    我是用php写的 先按照要求生成accesstoken $tokenUrl="https://api.weixin.qq.com/cgi-bin/token?grant_type=clien ...

  3. 快速搭建vsftp 服务器并配置指定目录

    1  搭建vsftp 服务器 前期准备: 1.用root 进入系统 2.使用命令 rpm  -qa|grep vsftpd 查看系统是否安装了ftp,若安装了vsftp,使用这个命令会在屏幕上显示vs ...

  4. 安卓和 java 学习笔记

    1.访问权限为 private 的成员变量或方法,需要执行setAccessible() 方法,并将入口参数设置为 true; 否则不允许访问. 2.为了保证线程的安全,可以使用同步块 synchro ...

  5. ldap命令的使用

    转自:http://blog.chinaunix.net/uid-20690190-id-4085176.html 增:ldapadd 1)选项: -x   进行简单认证 -D   用来绑定服务器的D ...

  6. open live writer实现多博客同步发送

    转载请注明出处 本文出自Hansion的博客 很多人都有多个博客平台同时使用,如CSDN.博客园.开源中国等,但是在其中一个平台上写完博客,想同样发表到其他平台上,这需要我们复制粘贴或者博客搬家,这往 ...

  7. Windows内核函数

    字符串处理 在驱动中一般使用的是ANSI字符串和宽字节字符串,在驱动中我们仍然可以使用C中提供的字符串操作函数,但是在DDK中不提倡这样做,由于C函数容易导致缓冲区溢出漏洞,针对字符串的操作它提供了一 ...

  8. CSS列表及导航条

    大多数网页中都包含某种形式的列表,今天我们就来联系几个基本的导航条.   垂直导航条 注意要点: 去掉默认的项目符号(list-style-type:none),将外边距和内边距都设为0. 以em设置 ...

  9. Java设计模式总汇二(小白也要飞)

    PS:上一篇我介绍了适配器设计模式.单例设计模式.静态代理设计模式.简单工厂设计模式,如果没有看过第一篇的小火鸡可以点这个看看http://www.cnblogs.com/cmusketeer/p/8 ...

  10. 看JQ时代过来的前端,如何转换思路用Vue打造选项卡组件

    前言 在Vue还未流行的时候,我们都是用JQuery来封装一个选项卡插件,如今Vue当道,让我们一起来看看从JQ时代过来的前端是如何转换思路,用数据驱动DOM的思想打造一个Vue选项卡组件. 接下来, ...