初识vue3的框架原理


Vue (读音 /vjuː/,类似于 view) 一套 基于MVVM模式的用户构造用户界面的js框架,他是以数据驱动和组件化的思想构建,Vue是由尤雨溪开发,他于2013-12-7发布了vue的0.6.0版本,2015-10-26发布了1.0.0版本,2020-9-18发布了3版本 代号为One Piece,

一、渐进式框架 

是一套用于构建用户界面的渐进式框架。与其它大型框架不同的是,Vue 被设计为可以自底向上逐层应用

 

最核心的部分是声明式渲染,向外组件系统,在这个基础上再加入前端路由和状态管理,最外层是构建系统。

  • 假如你的系统比较简单,更多的是需要访问界面的DOM节点,以获取用户输入数据或将更新后的数据渲染到视图中,那么可以将vue.js 作为一个JS库来使用,使用它的声明式渲染机制可以轻松地操作DOM,实现数据编号时的自动视图渲染。
  • 如果前端界面比较负责,那么可以考虑将界面元素组件化,利用vue的组建系统将界面元素和业务逻辑包装为一个个组件,采用分而治之策略,不但可以降低前端系统复杂性,组件本身还可以复用。
  • 如果要求前端后端分离,将前端做成单页面应用程序,那么可以引入前端路由vue Router,实现单页面应用。如果前端应用中有很多数据需要在多个组件间共享,如用户数据,那么可以引入vueX统一对状态进行管理。
  • vue提供的构建系统可以轻松搭建一个脚手架项目。项目内置了运行环境,便于开发,调试并观察程序的运行结果,此外,项目也集成了webpack打包工具,可以很容易地构建发布版本。
  • Vue 的核心库只关注视图层,不仅易于上手,还便于与第三方库或既有项目整合。 另一方面,当与现代化的工具链以及各种支持类库结合使用时,Vue 也完全能够为复杂的单页应用提供驱动。

二、响应式系统 

MVVM模式最核心的特性就是数据双向绑定,Vue构建了一套响应式系统,可以实现用声明方式的绑定数据,从而在数据发送编号时自动渲染视图。

1.  vue 2.X是通过Object.defineProperty()来实现数据劫持的,对data的每个属性进行了get、set的拦截。

Object.defineProperty( )是用来做什么的?它可以来控制一个对象属性的一些特有操作,比如读写权、是否可以枚举,这里我们主要先来研究下它对应的两个描述属性get和set,如果还不熟悉其用法,请点击这里阅读更多用法

 

 

如果还不熟悉vue2响应原理的用法,可以阅读vue2响应式原理

 

2. Vue2.X 是利用 Oject.defineProperty() 方法侦测对象的属性编号,但该方法有一些固有的缺陷;

  • 性能差
  • 对象新增属性无法被侦测
  • 改变数组的lengh属性无法被侦测。

Vue3.0 使用ES6 的Proxy 取代 Object.defineProperty()方法,性能更优异,而且数据和对象一样,可以直接出发get()和 set()方法。Proxy称为代理,一种可以拦截并改变底层 Js引擎操作的包装器。

调用 new Proxy(target, handler)可以为一个目标对象创建一个代理,代理可以拦截Js引擎内部目标的底层对象操作,这些底层操作被拦截后出发响应特定操作的陷阱函数,在调佣Proxy构造函数时,需要传入两个参数,target 为目标对象,handler是一个包含陷阱函数的处理器对象。

 

相比于vue2.x,使用proxy的优势如下>相比于vue2.x,使用proxy的优势如下:

  • defineProperty只能监听某个属性,不能对全对象监听
  • 可以省去for in、闭包等内容来提升效率(直接绑定整个对象即可)
  • 可以监听数组,不用再去单独的对数组做特异性操作 vue3.x可以检测到数组内部数据的变化

 

如果还不熟悉Vue3响应原理的用法,Vue3响应原理响应式原理


免责声明!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系本站邮箱yoyou2525@163.com删除。



 
粤ICP备18138465号  © 2018-2025 CODEPRJ.COM