Vue3项目实践-第一篇(Vite 初体验)

1从 Vite 开始

1.1什么是 Vite?

1.2为什么使用 Vite?

1.2.1现实问题

1.2.2缓慢的服务器启动

1.2.3缓慢的更新

1.2.4 总结

1.3 如何使用 Vite?

1.4 总结

1 从 Vite 开始

官方地址:https://cn.vitejs.dev/

1.1 什么是 Vite?

Vite(法语意为 "快速的",发音 /vit/,发音同 "veet")是一种新型前端构建工具,能够显著提升前端开发体验。它主要由两部分组成:

Vite 意在提供开箱即用的配置,同时它的 插件 API 和 JavaScript API 带来了高度的可扩展性,并有完整的类型支持。

1.2 为什么使用 Vite?

1.2.1 现实问题

在浏览器支持 ES 模块之前,JavaScript 并没有提供原生机制让开发者以模块化的方式进行开发。这也正是我们对“打包”这个概念熟悉的原因:使用工具抓取、处理并将我们的源码模块串联成可以在浏览器中运行的文件。

时过境迁,我们见证了诸如 webpack、Rollup和 Parcel等工具的变迁,它们极大地改善了前端开发者的开发体验。

然而,当我们开始构建越来越大型的应用时,需要处理的 JavaScript 代码量也呈指数级增长。包含数千个模块的大型项目相当普遍。基于 JavaScript 开发的工具就会开始遇到性能瓶颈:通常需要很长时间(甚至是几分钟!)才能启动开发服务器,即使使用模块热替换(HMR),文件修改后的效果也需要几秒钟才能在浏览器中反映出来。如此循环往复,迟钝的反馈会极大地影响开发者的开发效率和幸福感。

Vite 旨在利用生态系统中的新进展解决上述问题:浏览器开始原生支持 ES 模块,且越来越多 JavaScript 工具使用编译型语言编写。

1.2.2 缓慢的服务器启动

当冷启动开发服务器时,基于打包器的方式启动必须优先抓取并构建你的整个应用,然后才能提供服务。

Vite 通过在一开始将应用中的模块区分为依赖和源码两类,改进了开发服务器启动时间。

1.2.3 缓慢的更新

基于打包器启动时,重建整个包的效率很低。原因显而易见:因为这样更新速度会随着应用体积增长而直线下降。

一些打包器的开发服务器将构建内容存入内存,这样它们只需要在文件更改时使模块图的一部分失活,但它也仍需要整个重新构建并重载页面。这样代价很高,并且重新加载页面会消除应用的当前状态,所以打包器支持了动态模块热替换(HMR):允许一个模块 “热替换” 它自己,而不会影响页面其余部分。这大大改进了开发体验 —— 然而,在实践中我们发现,即使采用了 HMR 模式,其热更新速度也会随着应用规模的增长而显著下降。

在 Vite 中,HMR 是在原生 ESM 上执行的。当编辑一个文件时,Vite 只需要精确地使已编辑的模块与其最近的 HMR 边界之间的链失活[1](大多数时候只是模块本身),使得无论应用大小如何,HMR 始终能保持快速更新。

Vite 同时利用 HTTP 头来加速整个页面的重新加载(再次让浏览器为我们做更多事情):源码模块的请求会根据 304 Not Modified 进行协商缓存,而依赖模块请求则会通过 Cache-Control: max-age=31536000,immutable 进行强缓存,因此一旦被缓存它们将不需要再次请求。

一旦你体验到 Vite 的神速,你是否愿意再忍受像曾经那样使用打包器开发就要打上一个大大的问号了。

1.2.4 总结

可以看出,在本地开发时,Vite 使用了 原生 ES 模块:现代浏览器(比如最新版谷歌)已经不需要依赖 webpack 管理包模块,而是可以和 Nodejs 一样具有模块管理能力,这就是 原生 ES 模块 能力。

所以,在本地开发时,Vite 省略了一些耗时的编译过程,热更新自然快。

在构建生产产物时,可以构建现代浏览器产物,也可以通过 Rollup 输出生产环境的高度优化过的静态资源。

1.3 如何使用 Vite?

Vite 的上手使用很简单,直接运行 npm create vite@latest 命令即可。

兼容性注意:

Vite 需要 Node.js版本 14.18+,16+。然而,有些模板需要依赖更高的 Node 版本才能正常运行,当你的包管理器发出警告时,请注意升级你的 Node 版本。

1.3.1 构建 Vite 项目

使用 NPM:

$ npm create vite@latest

npm create 其实就是 npm init 命令,而 npm init 命令带上包名执行的就是 npm exec,也就是执行 vite 包的默认命令-初始化`。

输入命令后,需要添加项目名称和技术栈,可以看到可供选择的技术栈有这么几种:

vite 支持的框架有6种:

这里我选了 vue + JavaScript 进行创建。

一起看看,项目目录

用 vue-cli 初始化的目录有两处不同:

接下来,我们看看 package.json 的内容吧。

{
  "name": "vue-vite",
  "private": true,
  "version": "0.0.0",
  "type": "module",
  "scripts": {
    "dev": "vite",
    "build": "vite build",
    "preview": "vite preview"
  },
  "dependencies": {
    "vue": "^3.2.47"
  },
  "devDependencies": {
    "@vitejs/plugin-vue": "^4.1.0",
    "vite": "^4.3.9"
  }
}

从上面可以看出,使用 Vite 初始化的 Vue 项目,Vue 的版本已经是最新的 Vue3 了。而开发时依赖也从 vue-cli/webpack 系列切换到了 vite 系列。

1.3.2 启动项目

先启动项目,看看效果吧。

在使用 npm install 安装完依赖后,使用 npm run dev 即刻启动 本地开发 模式了。

1.3.2.1 安装依赖项

npm install

1.3.2.2 运行项目

npm run dev

刚运行项目,启动速度着实让我吃了一惊。

1.4 小结

这次 Vite 的初体验,到这里就结束了。

用 Vite 新建一个项目,构建项目,本地预览。

这一切用 Vite 来做还是比较简单的,而且很快!

展开阅读全文

页面更新:2024-03-08

标签:项目   初始化   缓慢   源码   模块   命令   浏览器   服务器   文件   工具

1 2 3 4 5

上滑加载更多 ↓
推荐阅读:
友情链接:
更多:

本站资料均由网友自行发布提供,仅用于学习交流。如有版权问题,请与我联系,QQ:4156828  

© CopyRight 2008-2024 All Rights Reserved. Powered By bs178.com 闽ICP备11008920号-3
闽公网安备35020302034844号

Top