如何解决学vue 1.0和vue 2.0冲突问题

最近我也一直在vue,但是在利用vue-cli脚手架下载项目的视频,却下载vue 2.0。因为在我看的那个视频里面的还是vue 1.0。

但,我想着vue 2.0应该和vue 1.0差不多。应该没什么问题,所以没管什么,就一直看下了。
在做到vue里面的router模块的时候,出现了一个报错,就是xxx.map方法不存在。度娘了一下,vue 2.0的路由和vue 1.0的用法已经完全不一样了。这我就一脸懵逼了……

突然,灵机一动。我们可以下载的时候,下载vue 1.0版本不就可以了吗?

命令如下 :

这里写图片描述

可能有点看不清,我在这里也写了

vue init webpack#1.0 sell

这样子,就先vue 1.0之后,再过渡vue 2.0就可以了!

如何1.0的代码上修改,过渡到2.0呢

1、配置文件的修改

Package.json文件修改
Bulid目录的修改
Config目录的修改

解决:
使用webpack下载2.0的脚手架,然后在这些配置的文件复制到相对的目录即可

2、Vue-router API

  初始化路由变化
  v-link指令 替换为<router-link>组件

 最好看官网的详细写法,参照里面写法即可升级到2.0
 [vue-router2.0](http://router.vuejs.org/zh-cn/essentials/getting-started.html)

3、Vue2.0语法变法

  v-for指令的变化
  v-el、v-ref指令的变化
  模板变化,组件只允许一个根元素

1.v-for指令没有默认的$index需要修改成   
```
1.0
<span v-for="item in items"></span>

2.0
<span v-for="(item,index) in items" key="index"></span>
```
需要自己手动加上这个参数不然就会报错

2.v-el、v-ref指令的变化
   2.0 已经把这两个指令给删除了,不再有这两个指令

    代替为     
    `<span ref="wrappers"></span>`

    <script>
        // 在你需要用的时候这样子调用:
        this.$refs.wrappers
    </script>

3.模板变化,组件只允许一个根元素
     在所有的组件里面
     在template标签里面,必须得有一个div标签包含所有的元素(我个人喜欢用div标签包含所有元素,其它元素也可以)

4、Vue2.0语法变化

 1.组件通信变化 $dispatch 废除
 2.事件监听变化,废除 events 属性
 3.不能在子组件直接修改父组件传入的 prop

1.组件通信变化 $dispatch 废除,事件监听变化,废除 events 属性

改成  在子组件需要的地方添加
`this.$emit('xxx',event.target);`

然后在你的food组件的父组件里面传入监听的事件,比如 food组件
`<food @add="addFood"></food>`

然后就可以在你的父组件里面定义addFood方法

 2.不能在子组件直接修改父组件传入的 prop

 可以在子组件里面定义方法并使用`this.$emit('xxx',event.target);`派发父组件,然后在父组件里面接受该事件方法,然后再在方法里面修改值
 exp:
 子组件: good
  methods: {
    add() {
        this.$emit.('add');
    },
    delete(type) {
        this.$emit('delete',type); // type 是你希望子组件修改的值
    }   
  }

  父组件:
   <good @add='addFodd' @delete="deleteFodd"></good>

methods: {
    addFodd() {
        // 方法内容
    },
    deleteFodd(type) {
        // 方法内容
    }   
  }

5、过渡的变化,transition 组件,keep-alive改为组件

猜你喜欢

转载自blog.csdn.net/ThomasYC/article/details/57118043