拉钩教育大前端学习笔记 --- Vue.js 3.0 介绍

1、Vue3.0 源码组织方式

1.1、源码组织方式的变化

Vue3.0 的源码全部采用了TypeScript进行了重写,项目的组织方式也发生了变化,全部采用了 monorepo 的方式来组织项目的结构,把独立的功能模块都提取到了不同的包中。

1.2、Composition API

虽然 Vue3.0 的代码进行了重写,但是大部分的 api 都支持了 vue2.x。并且根据社区的反馈,添加了Composition API,翻译过来就是“组合 API”,Composition API是用来解决Vue2.x在开发大型项目时遇到超大组件,使用Options API不好拆分和重用的问题。

1.3、性能提升

在性能方面,Vue3.0 有大幅度的性能提升,Vue3.0 中使用了proxy重写了响应式代码,并且对编译器做了优化,重写了虚拟 dom,从而让渲染和update的性能都有了大幅度的提升。另外,官方介绍,服务端渲染的性能也提升了 2-3 倍

1.4、Vite

随着 Vue3.0 的发布,官方也发布了一个开发工具:Vite,一个基于ES import的开发服务器。使用Vite在开发阶段测试项目的时候,不需要打包可以直接运行项目,服务随启随用,提高了开发的效率。

2、Vue3.0 packages 目录结构

packages 目录下的包都是可独立发行、可独立使用的包。

  • compiler 开头的包都是和编译相关的代码。
  • runtime 开头的包都是运行时相关的代码。
└── packages ············································ packages 目录
   ├─ compiler-core ····································· 和平台无关的编译器
   ├─ compiler-dom ······································ 浏览器平台下的编译器,依赖于compiler-core
   ├─ compiler-sfc ······································ sfc是单文件组件的意思,用于编译单文件组件,依赖于compiler-core、compiler-dom
   ├─ compiler-ssr ······································ 服务端渲染的编译器,依赖于compiler-dom
   ├─ reactivity ········································ 数据响应式系统,它可以独立使用
   ├─ runtime-core ······································ 和平台无关的运行时
   ├─ runtime-dom ······································· 针对浏览器的运行时,它处理原生dom api、以及事件等等
   ├─ runtime-test ······································ 一个专门为测试而编写的轻量级运行时,由于这个运行时渲染出来的dom树其实是一个js对象,所以这个运行时可以运行在所有的js环境里。可以用来测试渲染是否正确,它还可以用于序列化dom、触发dom事件,以及记录某次更新中的dom操作
   ├─ server-renderer ··································· 用于服务端渲染
   ├─ shared ············································ vue内部使用的一些公共api
   ├─ size-check ········································ 是一个私有的包,不会发布到npm,作用是,tree shaking之后检查包的大小
   ├─ template-explorer ································· 在浏览器运行的时时编译组件,它会输出render函数,这个包readme中提供了线上访问地址
   ├─ vue ··············································· 用来构建完整版本的vue,依赖于compiler和runtime

3、不同的构建版本

Vue3.0 中不在构建 UMD 模块化的方式,因为 UMD 会让代码有更多的冗余,它要支持多种模块化的方式。Vue3.0 中将 CJS、ESModule 和自执行函数分别打包到不同的文件中。在 packages/vue 中有 Vue3.0 的不同构建版本。

一共分为四类:

  • cjs(两个版本都是完整版本,包含了编译器)
    • vue.cjs.js(开发版本,代码没有被压缩)
    • Vue.cjs.prod.js(生产版本,代码被压缩了)
  • global(这四个文件都可以在浏览器中通过 script 标签中导入,导入后会添加一个全局的 vue 对象)
    • vue.global.js(完整版的 vue,包含编译器和运行时,是开发版本,代码没有压缩)
    • vue.global.prod.js(完整版的 vue,包含编译器和运行时,是生产版本,代码被压缩了)
    • vue.runtime.global.js(只包含了运行时的构建版本,是开发版本,代码没有压缩)
    • vue.runtime.global.prod.js(只包含了运行时的构建版本,是生产版本,代码被压缩了)
  • browser(这四个版本都使用 ESModule 的方式,浏览器的原生模块化方式,在浏览器中可以直接通过

你可能感兴趣的:(拉钩教育大前端学习笔记,javascript,vue.js)