网站首页 > 教程文章 正文
上篇《尤雨溪是个恶魔,Vite 三天 10 更》谈到了 Webpack 这一系列打包工具出现的原因。
这些工具的出现是为了解决 ES Modules 模块系统本身的环境兼容问题、以及零散的模块文件导致的频繁网络请求发送和模块化发散的问题等等。
既然已经有了 Webpack,尤大再整一个 Vite 到底有啥用呢?
本质上,webpack 是一个现代 JavaScript 应用程序的静态模块打包器(module bundler)。
Vue 脚手架工具 vue-cli 使用 webpack 进行打包,开发时可以启动本地开发服务器,实时预览。因为需要对整个项目文件进行打包,开发服务器启动缓慢。
而对于开发时文件修改后的热更新 HMR 也存在同样的问题。
Webpack 的热更新会以当前修改的文件为入口重新 build 打包,所有涉及到的依赖也都会被重新加载一次。
Vite 则很好地解决了上面的两个问题。
先来打包问题。vite 只启动一台静态页面的服务器,对文件代码不打包,服务器会根据客户端的请求加载不同的模块处理,实现真正的按需加载。
对于热更新问题,vite 采用立即编译当前修改文件的办法。同时 vite 还会使用缓存机制( http 缓存 => vite 内置缓存 ),加载更新后的文件内容。
所以,vite 具有了快速冷启动、按需编译、模块热更新等优良特质。
综上所述,vite 构建项目与 vue-cli 构建的项目在开发模式下还是有比较大的区别:
1、Vite 在开发模式下不需要打包可以直接运行,使用的是 ES6 的模块化加载规则;Vue-CLI 开发模式下必须对项目打包才可以运行。
2、Vite 基于缓存的热更新,Vue-CLI 基于 Webpack 的热更新。
说了这么多,vite 到底应该怎么用呢?
虽然目前还没有正式发布,但是文档已经写的差不多了。https://vitejs.dev/guide/
我们简单来使用一下。
| 确保 Node 版本是大于等于 12 的。
使用 NPM 命令:
$ npm init @vitejs/app
或者使用 Yarn 命令:
$ yarn create @vitejs/app
命令执行后,会让我们选择构建哪一种框架的项目,我这里就直接选择 vue 了。
如果你不想在命令行中做选择,可以指定具体的模板。
$ npm init @vitejs/app my-vue-app --template vue
注意,不管那种构建方式,只是下载了项目代码模板。运行项目所需要的第三方扩展都需要再次安装才能够运行。
进入到项目目录,安装所需依赖,并启动项目:
cd <my-project>
npm install (or `yarn`)
npm run dev (or `yarn dev`)
通过 package.json 文件,我们能看到启动和打包的命令。
通过 npm run dev 命令,启动开发服务器。
查看运行结果:
使用 npm run build 命令进行打包:
需要注意的是,打包后的代码,在本地依然需要提供一台静态服务器才能运行。
体验就到这里了。想要感受尤大的魔鬼更新速度的,可以去 github 看看:https://github.com/vitejs/vite
猜你喜欢
- 2025-10-19 前端错误可观测最佳实践_前端错误处理
- 2025-10-19 工作中,前端开发要看项目,怎么查看别人的js项目代码
- 2025-10-19 超趣味 Electron+Vue 贪吃蛇游戏Snake
- 2025-10-19 AI时代的全栈框架:独立开发者的机会与挑战
- 2025-10-19 (CAD集成到网页)网页查看CAD的SDK快速入门
- 2025-10-19 前端webpack从入门到精通视频教程文末下载
- 2025-10-19 CSS 定位详解_css定位方式
- 2025-10-19 React Server Component 从理念到原理
- 2025-10-19 比Webpack快700倍的Turbopack,到底快在哪?
- 2025-10-19 webpack之CLI(命令行接口)详细介绍
- 10-19前端错误可观测最佳实践_前端错误处理
- 10-19工作中,前端开发要看项目,怎么查看别人的js项目代码
- 10-19超趣味 Electron+Vue 贪吃蛇游戏Snake
- 10-19AI时代的全栈框架:独立开发者的机会与挑战
- 10-19(CAD集成到网页)网页查看CAD的SDK快速入门
- 10-19前端webpack从入门到精通视频教程文末下载
- 10-19CSS 定位详解_css定位方式
- 10-19React Server Component 从理念到原理
- 最近发表
- 标签列表
-
- location.href (44)
- document.ready (36)
- git checkout -b (34)
- 跃点数 (35)
- 阿里云镜像地址 (33)
- qt qmessagebox (36)
- mybatis plus page (35)
- vue @scroll (38)
- 堆栈区别 (33)
- 什么是容器 (33)
- sha1 md5 (33)
- navicat导出数据 (34)
- 阿里云acp考试 (33)
- 阿里云 nacos (34)
- redhat官网下载镜像 (36)
- srs服务器 (33)
- pico开发者 (33)
- https的端口号 (34)
- vscode更改主题 (35)
- 阿里云资源池 (34)
- os.path.join (33)
- redis aof rdb 区别 (33)
- 302跳转 (33)
- http method (35)
- js array splice (33)