Vite 2.0版本发布,都有哪些新特性

新年还没过完,Vite就发布了2.0版本,不得不佩服尤大大。
在这里插入图片描述html

Vite是什么

Vite(法语意思是 “快”,发音为 /vit/,相似 veet)是一种全新的前端构建工具,你能够把它理解为一个开箱即用的开发服务器 + 打包工具的组合,可是更轻更快。Vite 利用浏览器原生的 ES 模块支持和用编译到原生的语言开发的工具(如 esbuild)来提供一个快速且现代的开发体验。
Vite由两个主要部分组成:前端

  • 一个经过本机 ES 模块提供源文件的开发服务器,具备丰富的内置特性和快得惊人的热模块替换(HMR)。
  • 一个构建命令,它将代码与 Rollup 捆绑在一块儿,后者预先配置为输出用于生产的高度优化的静态资产。

除此以外,Vite 经过其插件 API 和 JavaScript API 具备高度的扩展性,并提供全面的类型支持。vue

Vite 有多快呢?在 Repl.it 上从零启动一个基于 Vite 的 React 应用,浏览器页面加载完毕的时候,CRA(create-react-app)甚至尚未装完依赖。若是你还没据说过 Vite 究竟是什么,能够了解一下项目的设计初衷react

Vite 2.0新特性

相比去年发布的1.0版本,Vite 2.0算得上上第一个稳定版本,此版本带来了多处大的改进。webpack

多框架支持

Vite 一开始主要注重于 Vue 的单文件组件支持,但 2.0 基于以前的经验提供了一个更稳定灵活的内部架构,从而能够彻底经过插件机制来支持任意框架。如今 Vite 提供官方的 Vue, React, Preact, Lit Element 项目模版,而 Svelte 社区也在开发 Vite 整合方案。web

全新插件机制和 API

Vite 2.0 受 WMR 的启发采用了基于 Rollup 插件 API 的设计。不少 Rollup 插件能够跟 Vite 直接兼容。插件能够在使用 Rollup 插件钩子以外使用一些额外的 Vite 特有的 API 来处理一些打包中不存在的需求,好比区分开发 vs 打包,或是自定义的热更新处理。vue-cli

除此以外,Vite 的 JS API 也获得了大幅改进 - 已经有很多用户在开发基于 Vite 的上层框架,Nuxt 团队也已经在 Nuxt 3 中验证了初步整合的可行性。npm

基于 esbuild 的依赖预打包

因为 Vite 是一个基于原生 ESM 的开发服务器,在启动时咱们须要经过依赖预打包来达成两个目的:1. 减小模块 / 请求数量;2. 支持 CommonJS 依赖。预打包只有在依赖变更时才须要执行,但在有大量依赖的项目中,每次执行仍是可能会须要很长时间。浏览器

Vite 以前是使用 Rollup 来执行这个过程,在 2.0 中咱们切换到了 esbuild,使这个过程加快了几十倍。冷启动一个以前须要将近 30 秒预打包的项目如今只须要不到两秒!从 webpack 或其它打包工具迁移到 Vite 应该也会有相似的速度改善。做为参考,咱们能够使用React Meterial项目进行验证。服务器

更好的 CSS 支持

Vite 将 CSS 视为module的First-class,并支持如下开箱即用的功能:

  • 强化路径解析:CSS 中的 @import 和 url() 路径都经过 Vite 的路径解析器来解析,从而支持 alias 和 npm 依赖。
  • 自动 URL 改写:全部 url() 路径都会被自动改写从而确保在开发和构建中都指向正确的文件路径。
  • CSS 代码分割:构建时每个被分割的 JS 文件都会自动生成一个对应的 CSS 文件,而且两个文件会被自动并行按需加载。

服务端渲染 (SSR) 支持

Vite 提供一个灵活的 API 来在 Node.js 中高效率地直接加载 ESM 源码(而且一样有精准的更新而不须要打包),并自动外部化 commonjs 兼容的依赖关系,以提升开发和 SSR 构建速度。生产环境下,服务器能够和 Vite 彻底解耦,基于 Vite SSR 的架构也能够很方便的作静态预渲染(SSG)。

旧浏览器支持

Vite 默认只支持原生支持 ESM 的现代浏览器,但能够经过官方的 @vitejs/plugin-legacy 来支持旧浏览器。legacy 插件会自动额外生成一个针对旧浏览器的包,而且在 html 中插入根据浏览器 ESM 支持来选择性加载对应包的代码(相似 vue-cli 的 modern mode)。

参考:
Vite 1.0 迁移至 Vite 2.0 的说明

相关文章
相关标签/搜索