JS打包工具 Vite

Vite是 JS 新一代的打包的工具,它所解决的问题,是前端打包慢的问题,随着前端应用复杂度越来越大,项目文件越来越多,通常项目中都是使用 Webpack 进行打包,Webpack是个静态的打包工具,每次改动都会打包所有文件,即使使用 HMR,速度也是很慢。
Vite 的推出旨在加速打包,提高前端开发效率,Vite 的核心就是将项目的代码分为两个部分,一部分是类库,另外一部分是应用逻辑代码。对于类库,开发中是不会修改的,这部分代码只要启动了 dev-server,打包一次,就可以保持不动。大部分前端的开发工作还是在写业务代码、写 CSS,由于都是基于框架开发,类库很多也很大,很明显这种分离可以使代码转换速度提高很多。Vite主要采用了以下几种手段来提高性能:

基于 ESM

ESM 是通过 ES2015 进行模块化,最新的浏览都已经支持ESM,所以可以借助浏览器进行解析,从而减少了代码转换的性能开销。

依赖编译加速

通过esbuild对依赖进行打包,esbuild是 go 语言开发的,性能是 JS打包工具的 10到 100 倍。

业务源代码转换

在业务源代码中,包含 CSS、JS 等需要转换的文件,并不是所有文件都要第一次启动时就进行转换,Vite 中只有文件被请求才会转换,可以看下图,代码做了切分,当前页面不需要的文件不转换。

在这里插入图片描述

组件更新

在 Vite 中,组件变更时,只会将自己以及临近的依赖进行更新,大多时候只会更新自己,并不会对整个应用进行转换打包。

我们来看一个简单的示例,首先初始化并启动项目:

npm create vite@latest my-vue-app -- --template vue
cd my-vue-app
npm i
npm run dev

进入 dev tools,看到并没有 dist 目录,而是直接访问 main.js。可以体验一下,确实速度很快,首次进入比 vuecli快太多了。
在这里插入图片描述
Vite 确实很快,但是目前可能还不能完全替代 webpack,Vite 是不支持老项目的,比如 vue2,现在有很多应用还是 vue2 开发的。

### Vite 打包工具使用指南 #### 一、Vite 的基本概念 Vite 是一种新型的前端构建工具,它利用原生 ES 模块导入来提供更快的开发服务器启动速度和热更新体验。其核心理念在于将开发环境与生产环境分离处理,在开发环境中依赖浏览器原生支持的 ES Module 动态加载能力,而在生产环境下则通过 Rollup 对代码进行优化打包。 #### 二、安装 Vite 要开始使用 Vite,可以通过 npm 或 yarn 安装全局命令行工具 `vite`: ```bash npm install vite -g ``` 或者在项目中作为开发依赖项安装: ```bash npm install vite --save-dev ``` #### 三、初始化项目 运行以下命令创建一个新的 Vite 项目: ```bash vite create my-project cd my-project npm run dev ``` 这会生成一个基础模板并启动开发服务器[^1]。 #### 四、手动分包配置 为了更好地管理大型应用中的模块划分,可以在 `rollupOptions.output.manualChunks` 中定义自定义逻辑。例如,按文件大小或特定模块名称分割 chunk: ```javascript export default { build: { rollupOptions: { output: { manualChunks(id) { if (id.includes('node_modules')) { return 'vendor'; } }, }, }, }, }; ``` 上述代码片段展示了如何将所有来自 node_modules 的依赖提取到单独的一个名为 vendor 的 chunk 中。 #### 五、TypeScript 支持 Vite 默认内置了对 TypeScript 的支持。只需确保 tsconfig.json 存在于根目录下,并按照标准方式编写 .ts 文件即可正常工作。如果遇到特殊需求,则可能需要额外调整插件设置以适配复杂场景。 #### 六、Laravel 集成 对于 PHP 开发者来说,当他们希望在其基于 Laravel 构建的应用程序里引入现代化 JavaScript 工具链时,可以选择 laravel-vite 插件简化流程。该解决方案允许无缝衔接两者之间的功能特性,比如实时预览改动效果等功能[^2]。 #### 七、第三方库兼容性注意事项 某些传统类库(如 TinyMCE),由于它们的设计并未完全遵循现代 JS 生态系统的最佳实践,因此可能会存在一些特殊的部署问题。针对这类情况,通常建议将其静态资源放置于 public 目录之下,并适当修改引用路径规则以便适应不同环境下的访问请求模式[^3]。 ```javascript // 示例:TinyMCE 初始化配置修正后的写法 tinymce.init({ selector: '#mytextarea', language_url : '/static/tinymce/langs/zh-Hans.js', // 注意这里去掉了开头斜杠 }); ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值