• vue3-基础知识(0) - vue2和vue3基本比较


    1. 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,还会带来命名冲突的问题。
    1. 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等语句,在实际项目中使用