vue2.0的变化———vue2.0动画的变化vue-2.0路由的变化

夏至未至 夏至未至     2022-08-24     262

关键词:

之前讲解的都是vue1.0的使用,现在我们开始介绍vue2.0,
这里的介绍是在vue1.0的基础上进行介绍的,主要介绍的是同vue1.0版本相比2.0的变化

vue2.0动画的变化:
现在变成:
<transition>
  运动东西(元素,属性,路由.....);
</transition>

class的定义:
  .fade-enter{} //初始状态
  .fade-enter-active{} //变化成什么样 --当元素出来(显示)
  .fade-leave{} //可不写
  .fade-leve-active{} //变化成什么样 --当元素离开(隐藏)

 

vue2.0给transition动画加的默认事件
  @before-enter="beforeEnter" //动画enter进入之前
  @enter="enter" //动画enter进入中
  @afterEnter="afterEnter" //动画enter进入之后
  @beforeLeave="beforeLeave" //动画leave离开之前
  @leave="leave" //动画leave离开中
  @afterLeave="afterLeave" //动画leave离开之后
  并且每个事件都有el参数,表示当前元素
  beforeEnter(el){}


transition如何与animate.css配合用?
transition只能让其下面第一层元素运动
1)让一个元素运动时
  <div id="box">
    <input type="button" value="点击显示隐藏" @click="show=!show">
    <transition enter-active-class="animated zoomInLeft" leave-active-class="animated zoomOutRight">
      <div class="div1" v-show="show"></div>
    </transition>
  </div>


2)多个元素运动时,要用transition-group,并且绑定key 属性
  <div id="box">
    <input type="button" value="点击显示隐藏" @click="show=!show">
    <transition-group enter-active-class="animated zoomInLeft" leave-active-class="animated zoomOutRight">
      <div class="div1" v-show="show" :key="1"></div>
      <div class="div1" v-show="show" :key="2"></div>
    </transition-group>
  </div>

  <script>
    new Vue({
      el:‘#box‘,
      data:{
        show:false
      }
    });
  </script>

 

transition与animate.css结合使用示例:

 1 <!DOCTYPE html>
 2 <html lang="en">
 3 <head>
 4     <meta charset="UTF-8">
 5     <title></title>
 6     <meta name="viewport" content="width=device-width, initial-scale=1.0, maximum-scale=1.0, user-scalable=0">
 7     <meta name="apple-mobile-web-app-capable" content="yes">
 8     <meta name="apple-mobile-web-app-status-bar-style" content="black">
 9     <style>
10         p{
11             width:100px;
12             height:100px;
13             background: red;
14             margin:10px auto;
15         }
16     </style>
17     <script src="vue.js"></script>
18     <link rel="stylesheet" href="animate.css">
19     <script>
20         window.onload=function(){
21             new Vue({
22                 el:‘#box‘,
23                 data:{
24                     show:‘‘,
25                     list:[‘apple‘,‘banana‘,‘orange‘,‘pear‘]
26                 },
27                 computed:{
28                     lists:function(){
29                         var arr=[];
30                         this.list.forEach(function(val){
31                             if(val.indexOf(this.show)!=-1){  //indexOf查找在数组中返回的位置,没有查找到则返回-1
32                                 arr.push(val);
33                             }
34                         }.bind(this));
35                         return arr;
36                     }
37                 }
38             });
39         };
40     </script>
41 </head>
42 <body>
43     <div id="box">
44         <span>请在文本框中输入字母a,b,c,e,o等</span>
45         <br/><br/>
46         <input type="text" v-model="show">
47 
48         <transition-group enter-active-class="zoomInLeft" leave-active-class="zoomOutRight">
49             <p v-show="show" class="animated" v-for="(val,index) in lists" :key="index">
50                 {{val}}
51             </p>
52         </transition-group>
53     </div>
54 </body>
55 </html>

vue-2.0路由变化:
  网站:http://router.vuejs.org/zh-cn/index.html
  下载vue-router#2.0-->bower install vue-router

vue-router2.0变化:
布局变化:
  <div id="box">
    <div>
      <router-link to="/home">主页</router-link>
      <router-link to="/news">新闻</router-link>
    </div>
    <div>
      <router-view></router-view>
    </div>
  </div>


js变化:
<script>
  //准备组件
  var Home={
    template:‘<h3>我是主页</h3>‘
  };
  var News={
    template:‘<h3>我是新闻</h3>‘
  };
  //配置路由
  var routes=[
    {path:‘/home‘,component:Home},
    {path:‘/News‘,component:News},
    {path:‘*‘,redirect:‘/home‘} //重定向,默认打开的是主页,之前的router.reditect已经废弃
  ];
  //生成路由实例
  const router=new VueRouter({
    routes
  });
  //最后挂到vue上
  new Vue({
    router,
    el:‘#box‘
  });
</script>

---------------------------------------------
路由的嵌套:/user/username
html代码:
  <div id="box">
    <div>
      <router-link to="/home">主页</router-link>
      <router-link to="/user">用户</router-link>
    </div>
    <div>
      <router-view></router-view>
    </div>
  </div>


js代码:
<script>
  //准备组件
  var Home={
    template:‘<h3>我是主页</h3>‘
  };
  var User={
    template:`
      <div>
        <h3>我是用户信息</h3>
        <ul>
          <li>
            <router-link to="/user/username">用户名</router-link>
          </li>
        </ul>
        <div>
          <router-view></router-view>
        </div>
      </div>
    `
  };
  var UserDetail={
    template:‘<p>我是xxx用户</p>‘
  };
  //配置路由
  var routes=[
    {path:‘/home‘,component:Home},
    {
      path:‘/user‘,
      component:User,
      children:[ //核心,routes怎么配,children就怎么配
        {path:‘username‘,component:UserDetail}
      ]
    },
    {path:‘*‘,redirect:‘/home‘} //重定向,默认打开的是主页
  ];
  //生成路由实例
  const router=new VueRouter({
    routes
  });
  //最后挂到vue上
  new Vue({
    router,
    el:‘#box‘
  });
</script>

上面讲解应用示例:包含路由与动画配合使用(animate.css)

 1 <!DOCTYPE html>
 2 <html lang="en">
 3 <head>
 4     <meta charset="UTF-8">
 5     <title></title>
 6     <meta name="viewport" content="width=device-width, initial-scale=1.0, maximum-scale=1.0, user-scalable=0">
 7     <meta name="apple-mobile-web-app-capable" content="yes">
 8     <meta name="apple-mobile-web-app-status-bar-style" content="black">
 9     <style>
10         .router-link-active{
11             font-size: 20px;
12             color:#f60;
13         }
14     </style>
15     <script src="vue.js"></script>
16     <script src="bower_components/vue-router/dist/vue-router.min.js"></script>
17     <link rel="stylesheet" href="animate.css">
18 </head>
19 <body>
20     <div id="box">
21         <input type="button" value="添加一个路由" @click="push">
22         <input type="button" value="替换一个路由" @click="replace">
23         <div>
24             <router-link to="/home">主页</router-link>
25             <router-link to="/user">用户</router-link>
26         </div>
27         <div>
28             <transition enter-active-class="animated bounceInLeft" leave-active-class="animated bounceOutRight">
29                 <router-view></router-view>
30             </transition>
31         </div>
32     </div>
33 
34     <script>
35         //组件
36         var Home={
37             template:‘<h3>我是主页</h3>‘
38         };
39         var User={
40             template:`
41                 <div>
42                     <h3>我是用户信息</h3>
43                     <ul>
44                         <li><router-link to="/user/strive/age/10">Strive</router-link></li>
45                         <li><router-link to="/user/blue/age/80">Blue</router-link></li>
46                         <li><router-link to="/user/eric/age/70">Eric</router-link></li>
47                     </ul>
48                     <div>
49                         <router-view></router-view>
50                     </div>
51                 </div>
52             `
53         };
54         var UserDetail={
55             template:‘<div>{{$route.params}}</div>‘
56         };
57 
58         //配置路由
59         const routes=[
60             {path:‘/home‘, component:Home},
61             {
62                 path:‘/user‘,
63                 component:User,
64                 children:[
65                     {path:‘:username/age/:age‘, component:UserDetail}
66                 ]
67             },
68             {path:‘*‘, redirect:‘/home‘}  //404
69         ];
70 
71         //生成路由实例
72         const router=new VueRouter({
73             routes
74         });
75 
76 
77         //最后挂到vue上
78         new Vue({
79             router,
80             methods:{
81                 push(){
82                     router.push({path:‘home‘});
83                 },
84                 replace(){
85                     router.replace({path:‘user‘});
86                 }
87             }
88         }).$mount(‘#box‘);
89     </script>
90 </body>
91 </html>

 

脚手架中vue-loader的变化
main.js中
之前vue1.0中
  new Vue({
    el:‘#app‘,
    components:App
  });
现在:
  new Vue({
    el:‘#app‘,
    render h => h(APP)
  });

vue2.0的变化

1.在每个组件模板,不在支持片段代码组件中模板:  之前:    <template>      <h3>我是组件</h3><strong>我是加粗标签</strong>    </template>  现在:必须有根元素,包裹住所有的代码  ... 查看详情

vue2.0不可忽视的很多变化

今天使用webpack-sample初始一个vue-cli项目,在app.vue文件中添加了个钩子函数ready,可是ready内的事件一直不执行,检查了webpack文件和package.json也没发现什么问题,浏览器也没报错或者提示,很令人捉急。然后去github看了webpack-simple... 查看详情

vue2.0的数据改变了,怎么视图没变化

参考技术Aif(that.$router.history.current.fullPath==‘/pers’)that.pers_icon_active="pers_icon_active";that.pers_text_active="pers_text_active";本回答被提问者采纳 查看详情

vue2.0有哪些变化

vue2.0之后有哪些变化:  1.每个组件模板template,不再支持片段代码    之前:      <template>         <h3>vue-router+vue-loader</h3>         <p>hshsh</p>      </template> ... 查看详情

transitionvue2.0动画

  相对于vue1.0来说,vue2.0的动画变化还是挺大的,在1.0中,直接在元素中加 transition,后面跟上名字。而在vue2.0中,需要把设置动画的元素、路由放在<transitionname="fade"></transition>中,name就是动画名称。  在1.0时... 查看详情

vue25---vue2.0变化

组件模版:<!DOCTYPEhtml><htmllang="en"><head><metacharset="UTF-8"><title>智能社——http://www.zhinengshe.com</title><metaname="viewport"content="width=device-width,initial 查看详情

初识vue2.0(13):子组件使用watch监听父组件变化(代码片段)

...候,获取父组件传过来的props数据。父组件props数据发生变化,子组件默认无法感知,因此需要手动实现子组件监听父组件变化的功能。一般的值类型数据,可以直接使用watch监听:watch:msg(newVal,oldVal)//对引用类型的值无效console.in... 查看详情

vue2.0中v-for迭代语法变化(keyindex)

语法发生了变化:http://blog.csdn.net/sinat_35512245/article/details/53966788新数组语法 valueinarr (value,index)inarr新对象语法 valueinobj(value,key)inobj (value,key,index)inobj对 Vue.js——60分钟快速入 查看详情

vue2.0+elementui+pagehelper实现的表格分页

...后端分页的特点是对当前页的数据进行请求,每次当页码变化或者每页数据量变化的时候 查看详情

vue2.0学习之动画

下载animate.css<transitionname="v"><divclass="content">需要做动画的内容</div></transition><style>  .content    //也可以有其他的样式    transition:all0.4slinear;    .v-enter-active,.v-leav 查看详情

vue2.0之render函数

...函数。虚拟DOMVue通过建立一个虚拟DOM 对真实DOM发生的变化保持追踪。请近距离看一下这行代码:returncreateElement(‘h1‘,this.blogTitle)createElement 到底会返回什么呢?其实不是一个实际的 DOM元素。它更准确的名字可能是c 查看详情

vue2.0父子组件之间的双向数据绑定问题解决方案

...目代码就完全奔溃不能运行,vue2.0在父子组件数据绑定的变化(不再支持双向绑定)颠覆了1.0的约定,很遗憾。解决方案只有两种:1)父子组件之间通过vue事件机制传递数据,这太麻烦,而且可能会遇到问题。2)不用父子组件方式,... 查看详情

vue2.0项目实战vuex快速入门

...状态,并以相应的规则保证状态以一种可预测的方式发生变化。Vuex也集成到Vue的官方调试工具 devtoolsextension,提供了诸如零配置的time-travel调试、状态快照导入导出等高级调试功能。   以上是vuex的官方文档对vuex... 查看详情

vue2.0过度动画(代码片段)

...同方式的应用过度效果。包括以下工具:  在css过渡和动画中自动应用class.  可以配合使用第三方css动画库,如animate.css  在过渡钩子函数中使用javascript直接操作DOM  可以配合使用第三方javascript动画库,如Velocity.js一、... 查看详情

vue2.0学习—监视属性(三十五)(代码片段)

...过vm对象的$watch或watch配置来监视指定的属性当属性发生变化时,回调函数自动调用,在函数内部进行计算需求:做一个天气案例<!DOCTYPEhtml><htmllang="en"><head><metacharse 查看详情

vue2.0模板编译原理:优化器

...AST中找到静态子树并打上标记,即那些永远不会发生变化的节点,例如纯文本节点。打标记的作用:在生成VNode的过程中,除了首次渲染,每次重新渲染,不需要为静态子树创建新节点 查看详情

vue2.0学习—计算属性(三十四)(代码片段)

...什么时候执行?初次读取时会执行当依赖的数据发生变化时会被再次调用优势:与methods实现相比,内部 查看详情

vuex2.0+vue2.0构建备忘录应用实践

...状态,并以相应的规则保证状态以一种可预测的方式发生变化,适合于构建中大型单页应用。1、什么是状态管理模式?看个简单的例子:650)this.width=650;"src="/img/fz.gif"alt="复制代码"style="border:0px;"/><!DOCTYPE&nbs 查看详情