-
vue3-基础知识(0) - vue2和vue3基本比较
- vue2 问题
- flow.js做类型检验,但flow.js已经不维护,社区普遍使用ts
- 二次开发,vue2内部运行时是直接执行浏览器api。跨端时,会出现直接进入源码和vue一起维护,比如weex;copyVue源码,替换api,比如mpVue。后续vue更新时,这些二开产品升级不方便。
- 响应式非真正代理,比如删除数据无法被监听到,需要使用$delete Api
- Options Api 组织代码较多不方便维护
- 由于所有数据都挂载在this之上,因而Options API 的写法对TypeScript的类型推导很不友好,并且这样也不好做Tree-shaking清理代码。
- 新增功能基本都得修改data、method等配置,并且代码上300行之后,会经常上下反复横跳,开发很痛苦。
- 代码不好复用,Vue 2 的组件很难抽离通用逻辑,只能使用mixin,还会带来命名冲突的问题。
- vue3 新特性
- Proxy 代替 Object.definedProperty。
- 后者无法拦截不存在的属性,无法监听比如数组的长度,需要额外的api去处理。
- proxy能够拦截所有属性,并且能够拦截Set/Map。
- 自定义渲染器
- 模块问题–拆包-monorepo管理方式
- 渲染逻辑
- 平台无关渲染逻辑(方便二次开发:小程序渲染api(跨端)/开发App)-> 响应式 (可以独立出来,应用到node、react上)。
- 渲染器api -> 组件 + 虚拟dom -> 运行时
- 全部使用ts重构
- Composition API 组合语法
- 所有API都是import 引入的。用到的功能都import进来,对Tree-shaking很友好。
- 不再上下反复横跳,我们可以把一个功能模块的methods、data都放在一起书写,维护更轻松。
- 代码方便复用,可以把一个功能所有的methods、data封装在一个独立的函数里,复用代码非常容易。
- Composition API 新增的return等语句,在实际项目中使用
特性可以清除。
- 新组件
- Fragment: Vue 3 组件不再要求有一个唯一的根节点,清除了很多无用的占位div。
- Teleport: 允许组件渲染在别的元素内,主要开发弹窗组件的时候特别有用。
- Suspense: 异步组件,更方便开发有异步请求的组件。
- 新一代工程化工具Vite
- Vite主要提升的是开发的体验,Webpack等工程化工具的原理,就是根据你的import依赖逻辑,形成一个依赖图,然后调用对应的处理工具,把整个项目打包后,放在内存里再启动调试。
- 由于要预打包,所以复杂项目的开发,启动调试环境需要3分钟都很常见,Vite就是为了解决这个时间资源的消耗问题出现的。
- vite基于ES6的import语法实现。在调试环境下,我们不需要全部预打包,只是把你首页依赖的文件,依次通过网络请求去获取,整个开发体验得到巨大提升,做到了复杂项目的秒级调试和热更新。vite只需要获取一个路由模块就可以调试;webpack需要把所有路由的依赖打包后,才能开始调试。
- Vue 3 性能更高,体积更小。
- RFC工作机制-开放新特性讨论
- vue2 过渡 vue3
- 创建组件问题
- 多个app时,组件注册语义不清晰;vue3使用createApp Api实例化vue app来解决
- 移除了一些其他api: filter/
o
n
/
on/
on/off/
s
e
t
/
set/
set/delete等
-
相关阅读:
Vue defineProps 与 props
一朵华为云,如何做好百模千态?
如何将c/c++代码通过NDK交叉工具链移植到Android平台上?
GIT特殊场景
Python简介-Python3及环境配置
03Java版本/Java三大平台/Java主要特性/跨平台原理/JRE与JDK
公开课:1小时攻破云原生面试难点-孟凡杰
二叉树题目:最大层内元素和
TestDeploy v3.0构思
ELK 7.17.5 集群部署及使用
-
原文地址:https://blog.csdn.net/junjiahuang/article/details/127921225