vue2.0相比于1.0的变化

  1、在每个组件模板中,不再支持片段代码,需要一个根元素包裹

     组件中模板:
之前:
<template>
<h3>我是组件</h3><strong>我是加粗标签</strong>
</template>
现在: 必须有根元素,包裹住所有的模板代码
<template id="aaa">
<div>
<h3>我是组件</h3>
<strong>我是加粗标签</strong>
</div>
</template>

  2、关于组件定义

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

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

    c、2.0推出一个组件,简洁定义方式(json形式):

    var Home={
      template:'   '                                -> 类似于之前的 Vue.extend()
    };

  3、生命周期   

    vue1.0:
      init
      created
      beforeCompile
      compiled
      ready   √           -> mounted
      beforeDestroy
      destroyed

    vue2.0:
      beforeCreate   组件实例刚刚被创建,属性都没有
      created       实例已经创建完成,属性已经绑定
      beforeMount    模板编译之前(挂载)
      mounted     模板编译之后,插值完成,代替之前ready    *
      beforeUpdate     组件更新之前
      updated      组件更新完毕 *
      beforeDestroy       组件销毁前
      destroyed      组件销毁后  

  4. 循环
    2.0里面默认就可以添加重复数据,不用track by了

    arr.forEach(function(item,index){

    });

    去掉了隐式一些变量,1.0可以不写index,但是2.0必须写上index,并且数据顺便换了
        $index $key

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

    现在:需要显示的写上
      v-for="(val,index) in array" 贴近原生的循环的参数顺序
      v-for="(val,key) in object"

    track-by="id"
      变成
      <li v-for="(val,index) in list" :key="index">
          :key="index"只是为了提高循环性能

  5、自定义键盘指令

    之前:Vue.directive('on').keyCodes.f1=17;

    现在: Vue.config.keyCodes.ctrl=17

  6、过滤器  

    之前:
      系统就自带很多过滤
        {{msg | currency}}
        {{msg | json}}(2.0中直接转成json展示了)
        ....
        limitBy
        filterBy
        .....
        一些简单功能,自己通过js实现

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

      官方推荐:lodash 工具库(类似于underscore.js,处理数组和对象等的js库) _.debounce(fn,200)
      网址https://www.lodashjs.com/

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

      之前: {{msg | toDou '12' '5'}} (空格隔开)
      现在: {{msg | toDou('12','5')}} (类似于函数调用了)

    7、组件通信

      vm.$emit()
      vm.$on();

      父组件和子组件:

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

      之前1.0,子组件可以更改父组件信息,可以是同步 sync
        子组件的属性后面加个.sync同步更改父组件的数据

        <child-com :msg.sync="a"></child-com>

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

      问题,就想更改:
        a). 父组件每次传一个对象给子组件, 对象之间引用(同一份数据) √
        b). 只是不报错, mounted中转,定义子组件自己的变量,在mounted里面把父元素的数据赋值给子组件的变量 (只改子组件数据)

单一事件管理组件通信: vuex的前身
  var Event=new Vue();(通过中转站来进行数据交换)

  Event.$emit(事件名称, 数据)

  Event.$on(事件名称,function(data){
    //data
  }.bind(this));

     //准备一个空的实例对象
var Event=new Vue(); var A={
template:`
<div>
<span>我是A组件</span> -> {{a}}
<input type="button" value="把A数据给C" @click="send">
</div>
`,
methods:{
send(){
Event.$emit('a-msg',this.a);
}
},
data(){
return {
a:'我是a数据'
}
}
};
var B={
template:`
<div>
<span>我是B组件</span> -> {{a}}
<input type="button" value="把B数据给C" @click="send">
</div>
`,
methods:{
send(){
Event.$emit('b-msg',this.a);
}
},
data(){
return {
a:'我是b数据'
}
}
};
var C={
template:`
<div>
<h3>我是C组件</h3>
<span>接收过来的A的数据为: {{a}}</span>
<br>
<span>接收过来的B的数据为: {{b}}</span>
</div>
`,
data(){
return {
a:'',
b:''
}
},
mounted(){
//var _this=this;
//接收A组件的数据
Event.$on('a-msg',function(a){
this.a=a;
}.bind(this)); //接收B组件的数据
Event.$on('b-msg',function(a){
this.b=a;
}.bind(this));
}
};

5、vueJs基础知识05的更多相关文章

  1. vue面试题整理vuejs基础知识整理

    初级参考 1.v-show 与 v-if 区别 v-show 是css隐藏,v-if是直接销毁和创建,所以频繁切换的适合用v-show 2.计算属性和 watch 的区别 计算属性是自动监听依赖值的变 ...

  2. 6、vueJs基础知识06

    vue动画 transition 之前1.0版本是以 属性的形式展示的 <p transition="fade"></p> .fade-transition ...

  3. 1、vueJs基础知识01

    vue是框架,vue.js是vue框架的核心js库 库:是一个封装好的特定的方法的集合,提供给开发者使用,库没有控制权,控制权在使用者手中.代表:jQuery.underscore.util 框架:框 ...

  4. 基础知识(05) -- Java中的类

    Java中的类 1.类的概念 2.类中的封装 3.对象的三大特征 4.对象状态 5.类与类之间的关系 ------------------------------------------------- ...

  5. Android基础知识05—活动的生命周期

    ------ 活动的生命周期 ------ Android是使用任务Task来管理活动的,一个任务就是一组存放在栈里的活动的集合.每当启动一个活动 ,他就会在返回栈中入栈,并处于栈顶位置.而每当我们按 ...

  6. 7、vueJs基础知识07

    UI组件库 element-ui和mint-ui 其实都是借鉴了bootstrap bootstrap: 由twitter 开源 简洁.大方 官网文档https://www.bootcss.com/ ...

  7. 4、vueJs基础知识04

    简单的目录结构: |-index.html |-main.js 入口文件 |-App.vue vue文件(组件),官方推荐命名法(首字母大写) |-components      组件存放的文件夹 | ...

  8. 3、vueJs基础知识03

    vue过渡(动画) 本质走的css3: transtion ,animation <div id="div1" v-show="bSign" transi ...

  9. 2、vueJs基础知识02

    vue生命周期: 钩子函数: created -> 实例已经创建 √ beforeCompile -> 编译之前 compiled -> 编译之后 ready -> 插入到文档 ...

随机推荐

  1. npm/svn 命令

    npm npm config set registry https://registry.npm.taobao.org npm config list svn + 清除失败的事务 - cmd管理员运行 ...

  2. springboot+security整合(2)自定义校验

    说明 springboot 版本 2.0.3源码地址:点击跳转 系列 springboot+security 整合(1) springboot+security 整合(2) springboot+se ...

  3. PHP 中使用ajax时一些常见错误总结整理

    这篇文章主要介绍了PHP 中使用ajax时一些常见错误总结整理的相关资料,需要的朋友可以参考下 PHP作为后端时,前端js使用ajax技术进行相互信息传送时,经常会出错误,对于新手来说有些手足无措.总 ...

  4. 常用模块(collections模块,时间模块,random模块,os模块,sys模块,序列化模块,re模块,hashlib模块,configparser模块,logging模块)

    认识模块 什么是模块? 常见的场景:一个模块就是一个包含了python定义和声明的文件,文件名就是模块名字加上.py的后缀. 但其实import加载的模块分为四个通用类别: 1 使用python编写的 ...

  5. Python sorted 函数用法

    1.背景   在python中,通常需要使用排序函数.而对字典针对一个键值进行排序会经常使用到.记录sorted 函数的键值排序用法. 2.代码 data 一个list,list 中的元素由字典组成 ...

  6. LGOJP2831 愤怒的小鸟

    题目链接 题目链接 题解 数据范围显然状压/爆搜. 考虑\(f[S]\)表示二进制下已打了的猪的集合. 可以枚举\(S\)的子集\(S_1\),判定\(S\)中\(S_1\)的补集\(S_2\)是否合 ...

  7. 题解 洛谷P4872 【OIer们的东方梦】

    一道码量比较大的广搜题,但让我这个辣鸡小学生自闭了一天呜呜呜. 一开始看数据\(n,m \leq 1000\)也并不是特别大,于是用就开始用广搜乱水了. 由于这道题每走一步的代价不是\(1\),所以并 ...

  8. dt开发之-自定义函数获取分类名称

    需要在api/extend.func.php 文件中加入的函数 获取分类名称 cat_name($catid) 传入分类id function cat_name($catid) { global $d ...

  9. 写一个python小程序

    在windows环境下进行操作 window+R 输入cmd  创建一个文件夹 mkdir pytxt 创建一个py文件 py.py  用notepad或者记事本等工具进行编辑 或 首先声明pytho ...

  10. Linux 之 光标消失隐藏术

    下面是 Linux 光标突然不见的解决办法: 直接敲命令行就行 echo -e "\033[?25l"  隐藏光标 echo -e "\033[?25h" 显示 ...