看完后完全了解 Vue 2.0 和 Vue 3.0 的区别

1.数据的双向绑定

Vue2.0使用Object.defineProperty

原理:通过使用 Object.defineProperty 来劫持对象属性的 geter 和 seter 操作,当数据发生改变发出通知

代码:

 1 <!DOCTYPE html>
 2 <html lang="en">
 3 <head>
 4     <meta charset="UTF-8">
 5     <meta name="yingaxiang" content="width=device-width, initial-scale=1.0">
 6     <title>vue2.x数据双向绑定</title>
 7 </head>
 8 <body>
 9     <div>
10         <input type="text" id="input">
11         <span id="text"></span>
12     </div>
13 </body>
14 </html>
15 <script>
16     var obj = {};
17     Object.defineProperty(obj, 'prop', {
18         get: function () {
19             return val;
20         },
21         set: function (newVal) {
22             val = newVal;
23             document.getElementById('text').innerHTML = val;
24         }
25     });
26     document.addEventListener('keyup', function (e) {
27         obj.prop = e.target.value;
28     });
29 </script>

Vue 3.0使用ES6的新特性porxy

原理:通过ES6的新特性proxy来劫持数据,当数据改变时发出通知

代码:

 1 <!DOCTYPE html>
 2 <html lang="en">
 3 <head>
 4     <meta charset="UTF-8">
 5     <meta name="yingaxiang" content="width=device-width, initial-scale=1.0">
 6     <title>vue3.0数据双向绑定</title>
 7 </head>
 8 <body>
 9     <div>
10         <input type="text" id="input">
11         <span id="text"></span>
12     </div>
13 </body>
14 </html>
15 <script>
16     var obj = {};
17     var obj1 = new Proxy(obj, {
18         // target就是第一个参数obj, receive就是返回的obj(返回的proxy对象)
19         get: function (target, key, receive) {
20             // 返回该属性值
21             return target[key];
22         },
23         set: function (target, key, newVal, receive) {
24             // 执行赋值操作
25             target[key] = newVal;
26             document.getElementById('text').innerHTML = target[key];
27         }
28     })
29     document.addEventListener('keyup', function (e) {
30         obj1[0] = e.target.value;
31     });
32 </script>

总结:

Vue2.x版本中的双向绑定不能检测到下标的变化
proxy可以劫持整个对象,并返回一个新对象

2.创建项目

Vue2.0 创建项目

  • (1)输入: $ vue init webpack my-test  (需要等待一会儿)
  • (2)依次按照提示输入,项目名、项目描述、项目作者等等
  • (3)后面会提示如何运行项目,依次完成下面3行命令就可以了。进入my-test项目----安装npm依赖-----运行项目
  • (4)npm install安装时会比较久,耐心等待
  • (5)输入npm run dev运行项目

Vue3.x 创建项目

这里是Vue3.0创建项目的步骤博客

3.项目的目录

Vue2.0版本目录

看完后完全了解 Vue 2.0 和 Vue 3.0 的区别_第1张图片

Vue3.x 版本目录

看完后完全了解 Vue 2.0 和 Vue 3.0 的区别_第2张图片

总结:

  • vue-cli2.0与3.0在目录结构方面,有明显的不同
  • vue-cli3.0移除了配置文件目录,config 和 build 文件夹
  • 同时移除了 static 静态文件夹,新增了 public 文件夹,打开层级目录还会发现, index.html 移动到 public 中
  • 3.0 config文件已经被移除,但是多了.env.production和env.development文件,除了文件位置,实际配置起来和2.0没什么不同
  • 没了config文件,跨域需要配置域名时,从config/index.js 挪到了vue.config.js中,配置方法不变
  • 移除了 static 文件夹,新增 public 文件夹,并且 index.html 移动到 public 中
    在 src 文件夹中新增了 views 文件夹,用于分类 视图组件 和 公共组件

4.对文件的引用上

  • Vue2.x中new出的实例对象,所有的东西都在这个vue对象上,这样其实无论你用到还是没用到,都会跑一变。
  • vue3.0中可以用ES module imports按需引入,如:keep-alive内置组件、v-model指令,等等。

5.项目的启动

Vue2.x 版本启动

npm run dev

Vue3.x 版本启动

npm run serve

你可能感兴趣的:(看完后完全了解 Vue 2.0 和 Vue 3.0 的区别)