Skip to content

Commit 92761c5

Browse files
张东张东
authored andcommitted
feat: vite
1 parent 1b69199 commit 92761c5

File tree

2 files changed

+60
-6
lines changed

2 files changed

+60
-6
lines changed

.vitepress/config.mts

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -13,6 +13,9 @@ export default defineConfig({
1313
ssr: {
1414
noExternal: ["gsap"],
1515
},
16+
optimizeDeps: {
17+
entries: [],
18+
},
1619
},
1720
themeConfig: {
1821
// https://vitepress.dev/reference/default-theme-config
@@ -56,6 +59,7 @@ export default defineConfig({
5659
},
5760
{ text: "性能优化", link: "/optimization/image" },
5861
{ text: "Node", link: "/node/initial" },
62+
{ text: "Vite", link: "/vite/initial" },
5963
],
6064

6165
sidebar: {
@@ -190,17 +194,13 @@ export default defineConfig({
190194
"/vscode/": [
191195
{
192196
text: "vscode",
193-
items: [
194-
{ text: "插件", link: "/vscode/extension" },
195-
],
197+
items: [{ text: "插件", link: "/vscode/extension" }],
196198
},
197199
],
198200
"/node/": [
199201
{
200202
text: "Node",
201-
items: [
202-
{ text: "概述", link: "/node/initial" },
203-
],
203+
items: [{ text: "概述", link: "/node/initial" }],
204204
},
205205
],
206206
"/browser/about/": [

vite/initial.md

Lines changed: 54 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,54 @@
1+
---
2+
layout: doc
3+
outline: deep
4+
---
5+
6+
## 契机
7+
1. 浏览器支持es模块,之前打包工具打包后的js文件都是放在script标签上进行引入,不能直接使用es模块引入
8+
2. 以编译型语言编写的javascript工具的兴起
9+
10+
随着项目的日渐庞大,基于js的打包工具开始遇到性能瓶颈,文件开发服务器可能需要几分钟才能就绪,即使使用热模块更新(HMR)也需要几秒
11+
12+
## 开发服务器启动缓慢
13+
当冷启动服务器时,传统的打包器必须抓取并构建整个应用程序
14+
15+
vite从依赖,源代码这两部分进行优化
16+
17+
## vite
18+
由两部分组成
19+
1. 开发服务器提供了比原生es模块更强大的功能扩展
20+
2. 一系列使用rollup打包你的代码的命令
21+
22+
vite提供了默认且合理的配置
23+
24+
通过插件,可以支持框架或与其他工具集成
25+
26+
## 功能
27+
### 依赖解析和预捆绑
28+
浏览器不支持裸模块,vite会进行处理
29+
30+
1. 使用esbuild预捆绑依赖,会将其他模块转化为ESM
31+
2. 替换成有效的url进行import
32+
33+
:::tip
34+
依赖被强缓存,如果需要调试依赖,可以在devtool禁用缓存
35+
:::
36+
### HMR
37+
Vite 在原生 ESM 上提供了HMR API。具有 HMR 功能的框架可以利用该 API 提供即时、精确的更新,而无需重新加载页面或清除应用程序状态。不需要手动设置这些,插件已经为你做好了。
38+
### TypeScript
39+
**仅限转译**
40+
41+
转译可以基于每个文件进行,并且与 Vite 的按需编译模型完美契合。相比之下,类型检查需要了解整个模块图。将类型检查强行塞入 Vite 的转换管道将不可避免地损害 Vite 的速度优势。
42+
43+
vite使用esbuild进行转译,比tsc快20到30倍
44+
45+
:::tip
46+
使用类型导入和导出语法可以避免潜在问题
47+
```js
48+
import type { T } from 'only/types'
49+
export type { T }
50+
```
51+
:::
52+
53+
## 依赖预捆绑
54+
`第一次`在项目下执行vite,vite将为依赖执行预捆绑。他是自动且透明的

0 commit comments

Comments
 (0)