Vue版本过渡变化

到了2.0以后,有哪些变化

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

之前:

<template id=”aaa”><h3>我是组件</h3><strong>我是加粗标签</strong></template>

 

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

<template id="aaa"> <div>
<h3>我是组件</h3> <strong>我是加粗标签</strong>   </div></template>

 

 

2、关于组件定义

之前:、

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

 

Vue.component(组件名称,{                  在2.0继续能用data(){}methods:{}template:});

 

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

var Home={template:'#aaa'};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表示当前的值

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

 

现在:

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

 

 

5、自定义键盘信息

之前:

 

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

 

 

 

现在

 Vue.config.keyCodes.ctrl=17

 

 

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

之前:

系统就自带很多过滤

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

 

 

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

推荐使用lodash 工具库

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

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

 

 

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

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

之前:

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

现在:

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

 

解决办法:

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

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

 

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

在全局定义一个vue对象

var Event=new Vue();

 

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

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

 

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

    Event.$on('a-msg',function(a){this.a=a;}.bind(this));Event.$on(事件名称,function(data){//data

}.bind(this));

 

 

9、动画过渡

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

HTML元素:<p transition="fade"></p>定义CSS:.fade-transition{}.fade-enter{}.fade-leave{}

 

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

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

 

定义CSS:

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

 

例子:

 

<transition name="fade"><p v-show="show"></p> </transition>.fade-enter-active, .fade-leave-active{   //定义总的动画时间transition: 1s all ease;}.fade-enter,.fade-leave{             //动画前的状态opacity:0;width:100px;height:100px;}.fade-enter-active{         //目标元素出现(显示)时的动画opacity:1;width:300px;height:300px;}.fade-leave-active{   //目标元素消失(隐藏)时的动画opacity:0;width:100px;height:100px;}

 

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

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

  @enter="enter"                      显示时触发

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

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

  @leave="leave"                      消失时触发

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

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

例子:

 

 <transition name="fade @before-enter="beforeEnter" ></transition>

 

 

  methods:{beforeEnter(el){         //定义动画之前的方法,el表示动画对象
console.log('动画enter之前');},}

 

 

 

如何animate.css配合用?

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

<transition enter-active-class="bounceInLeft"   leave-active-class="bounceOutRight"><p v-show="show" class="animated"></p>   //调用animated</transition>

 

 

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

 

例子一:

    <transition-group enter-active-class="zoomInLeft" leave-active-class="zoomOutRight"><p v-show="show" class="animated" :key="1"></p><p v-show="show" class="animated" :key="2"></p></transition-group>

 

例子二:

<transition-group enter-active-class="zoomInLeft" leave-active-class="zoomOutRight"><p v-show="show" class="animated" v-for="(val,index) in lists" :key="index">{{val}}</p></transition-group>

 

10、关于路由

基本使用:

1.  布局

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

 

2. 路由具体写法

//声明各个组件var Home={template:'<h3>我是主页</h3>'};var News={template:'<h3>我是新闻</h3>'};//配置路由对应的组件

const routes=[{path:'/home', componet:Home},{path:'/news', componet:News},];//生成路由实例

const router=new VueRouter({routes                    //相当于routes :routes

});//最后挂到vue上new Vue({router,                     //相当于 router:router
el:'#box'});

 

3. 重定向redirect

之前  router.rediect  废弃了

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

 

 

路由嵌套 : children

<router-link to="/user/username">跳转到子路由</router-link>

const routes=[                     //配置路由对应的组件
{path:'/home', component:Home},{path:'/user',component:User,children:[                     //写在嵌套的路由里面,使用children
{path:'username', component:UserDetail}]},{path:'*', redirect:'/home'}              //404错误默认跳转

];

 

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

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

 

 

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

router.push({path:'home'});   //直接添加一个路由,表现切换路由,本质往历史记录里面添加一个

router.replace({path:'news'})          //替换路由,不会往历史记录里面添加

例子:methods:{push(){    router.push({path:'home'});      },replace(){  router.replace({path:'user'});   }}

 

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

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

例子:

<transition enter-active-class="animated bounceInLeft" leave-active-class="animated bounceOutRight"><router-view></router-view></transition>

 

11、关于脚手架

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

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

 之前:

new Vue({el: '#app',components:{App}})

 

现在:

new Vue({el: '#app',render: h => h(App)})

 

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

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

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

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

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

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

   {test: /\.css$/,loader: 'style!css'                 //顺序定死的
}

 

例子:

 

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

 

 

 

 

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

推荐使用axios

vue-resourse使用方式完全一样

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

页面引入:  import axios from “axios”

转载于:https://www.cnblogs.com/zhengweijie/p/6906119.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/541314.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

NABARD的完整形式是什么?

NABARD&#xff1a;国家农业和农村发展银行 (NABARD: National Bank for Agriculture and Rural Development) NABARD is an abbreviation of National Bank for Agriculture and Rural Development. NABARD是国家农业和农村发展银行的缩写 。 On 12 July 1982, it was establ…

基于opencv+Dlib的面部合成(Face Morph)

引自&#xff1a;http://blog.csdn.net/wangxing233/article/details/51549880 零、前言 前段时间看到文章【1】和【2】&#xff0c;大概了解了面部合成的基本原理。这两天空下来了&#xff0c;于是参考【3】自己实现了下。虽然【1】和【2】已经讲的很清楚了&#xff0c;但是有…

大脑应对危机的模式_危机的完整形式是什么?

大脑应对危机的模式危机&#xff1a;印度信用评级信息服务有限公司 (CRISIL: Credit Rating Information Services of India Limited) CRISIL is an abbreviation of Credit Rating Information Services of India Limited. It is an international analytic company which off…

linux网络延迟命令,2. Linux使用ping命令查看网络延迟

ping命令持续发送少量互联网流量到远程地址并报告收到回应的总时间。如果流量因为网络故障或者错误配置而被丢弃&#xff0c;它也会报告。ping命令是最基本和初级的诊断网络问题的工具之一。ping常被用来测试网络延迟&#xff0c;但是有时ping的延迟并不是网络引起的&#xff0…

一、简单工厂模式

# public class Operation //基类{private double _numberA 0;private double _numberB 0;public double NumberA{get{ return _numberA; }set{_numberA value;}}public double NumberB{get{ return _numberB; }set{_numberB value;}}public virtual double GetResult(){d…

软件生命周期模型及其类型

A life cycle model is also known as a process model. As the name suggests, the software life cycle model (or the software process model) gives us a pictorial representation of the entire software development process. 生命周期模型也称为过程模型 。 顾名思义&…

linux查看磁盘io带宽,[Linux] 磁盘IO性能查看和优化以及iostat命令

iostat命令:%user&#xff1a;CPU处在用户模式下的时间百分比。%nice&#xff1a;CPU处在带NICE值的用户模式下的时间百分比。%system&#xff1a;CPU处在系统模式下的时间百分比。%iowait&#xff1a;CPU等待输入输出完成时间的百分比。%steal&#xff1a;管理程序维护另一个虚…

Jsoup 数据修改

2019独角兽企业重金招聘Python工程师标准>>> 1 设置属性的值 在解析一个Document之后可能想修改其中的某些属性值&#xff0c;然后再保存到磁盘或都输出到前台页面。 可以使用属性设置方法 Element.attr(String key, String value), 和 Elements.attr(String key, S…

软件静态架构 软件组件图_组件图| 软件工程

软件静态架构 软件组件图什么是组件图&#xff1f; (What is Component Diagram?) A Component Diagram breaks down the real system under development into different heights of working. Every component is reactive for the main aim in the entire system and only re…

如何卸载非linux系统分区,如何卸载Linux系统分区?卸载Linux系统分区的方法-站长资讯中心...

系统为windows xp sp2和redhat as 5双系统&#xff0c;其中linux系统后安装的在D盘&#xff0c;华彩软件站www.huacolor.com小编今天发现硬盘不够用了&#xff0c;想干掉linux分区&#xff0c;在虚拟机中用linux。就在windows的磁盘管理(命令为:diskmgmt)下删除linux分区&#…

顺序结构复习

复习一些易错知识点还有习题 目录 可能不熟悉的知识点 逻辑表达式的求解 if,else的配队 条件运算符 运算符优先级的问题 switch的使用 goto和if构成的循环 例题讲解 1 2 3 4 ​编辑 5 ​编辑 6赋值 ​编辑 7 可能不熟悉的知识点 逻辑表达式的求解 如果…

模板模式(部分方法延迟到子类实现)

项目中&#xff0c;用到了抽象类作为父类&#xff0c;有部分实现。 提供了了模板方法作为子类公共方法&#xff0c;模板方法中调用了抽象类的抽象方法和部分非抽象方法。 执行代码时&#xff0c;发现模板方法调用了抽象类的抽象方法&#xff0c;当时比较好奇&#xff0c;后来发…

ruby 集合 分组_在Ruby中找到两个集合之间的区别

ruby 集合 分组Finding differences simply means that finding elements that are uncommon between two sets as well as are only present in the first set. We can find this, with the help of a – operator. You can also consider the objective as to find the uniqu…

怎样在linux卸载java,卸载linux自带java,linux自带java

卸载linux自带java&#xff0c;linux自带java第一步&#xff1a;rpm查询java安装包名称[rootlocalhost java]# rpm -qa | grep javajava-1.7.0-openjdk-headless-1.7.0.51-2.4.5.5.el7.x86_64tzdata-java-2014b-1.el7.noarchpython-javapackages-3.4.1-5.el7.noarchjava-1.7.0-…

Swift iOS : 内存管理

Swift是自动管理内存的。这意味着&#xff0c;你不需要主动释放内存。 比如Foo内包含的Bar&#xff0c;可以随同Foo一起被释放&#xff1a; import UIKit UIApplicationMain class AppDelegate: UIResponder, UIApplicationDelegate {var window : UIWindow?func application(…

python实现接口_Python | 使用类实现接口

python实现接口In this program, we are implementing the concept of Interface using class. Here, Class Shape worked as Interface. In Interface all methods must be non-implemented it must be implemented in child class unlike abstract class, where we can have …

linux lp 打印中文,Linux基础命令---lp打印文件

lplp指令用来打印文件&#xff0c;也可以修改存在的打印任务。使用该指令可以指定打印的页码、副本等。此命令的适用范围&#xff1a;RedHat、RHEL、Ubuntu、CentOS、Fedora、openSUSE、SUSE。1、语法lp [ -E ] [ -U username ] [ -c ] [ -d destination[/instance] ] [ -h…

【转载】浏览器缓存详解:expires cache-control last-modified

下面的内容展示了一个常见的 Response Headers&#xff0c;这些 Headers 要求客户端最多缓存 3600 秒&#xff0c;也给出了一个 pub1259380237;gz 的校验值。 HTTP/1.x 200 OK Transfer-Encoding: chunked Date: Sat, 28 Nov 2009 04:36:25 GMT Server: LiteSpeed Connection: …

ctype函数_PHP ctype_xdigit()函数与示例

ctype函数PHP ctype_xdigit()函数 (PHP ctype_xdigit() function) ctype_xdigit() function is a character type (CType) function in PHP, it is used to check whether a given string contains hexadecimal digits or not. ctype_xdigit()函数是PHP中的字符类型(CType)函数…

linux ldd运行不成功,Linux_Linux:Ldd命令介绍及使用方法,1、首先ldd不是一个可执行程序 - phpStudy...

Linux&#xff1a;Ldd命令介绍及使用方法1、首先ldd不是一个可执行程序&#xff0c;而只是一个shell脚本2、ldd能够显示可执行模块的dependency&#xff0c;其原理是通过设置一系列的环境变量&#xff0c;如下&#xff1a;LD_TRACE_LOADED_OBJECTS、LD_WARN、LD_BIND_NOW、LD_L…