Skip to content

Commit b25916d

Browse files
author
zhangdong
committed
feat: 快捷键
2 parents 676d4f2 + 92761c5 commit b25916d

File tree

3 files changed

+84
-0
lines changed

3 files changed

+84
-0
lines changed

.vitepress/config.mts

Lines changed: 11 additions & 0 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
@@ -46,6 +49,7 @@ export default defineConfig({
4649
},
4750
{ text: "Web-Api", link: "/Web-Api/ResizeObserver" },
4851
{ text: "pnpm", link: "/pnpm/overview" },
52+
{ text: "vscode", link: "/vscode/extension" },
4953
{
5054
text: "browser",
5155
items: [
@@ -56,6 +60,7 @@ export default defineConfig({
5660
// { text: "性能优化", link: "/optimization/image" },
5761
{ text: "Node", link: "/node/initial" },
5862
{ text: "vscode", link: "/vscode/keybinding" },
63+
{ text: "Vite", link: "/vite/initial" },
5964
],
6065

6166
sidebar: {
@@ -188,6 +193,12 @@ export default defineConfig({
188193
],
189194
},
190195
],
196+
"/vscode/": [
197+
{
198+
text: "vscode",
199+
items: [{ text: "插件", link: "/vscode/extension" }],
200+
},
201+
],
191202
"/node/": [
192203
{
193204
text: "Node",

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将为依赖执行预捆绑。他是自动且透明的

vscode/extension.md

Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,19 @@
1+
---
2+
layout: doc
3+
outline: deep
4+
---
5+
6+
## vscode内置
7+
```js
8+
import {
9+
ExtensionContext, languages, commands, Disposable, workspace, window
10+
} from 'vscode';
11+
```
12+
* ExtensionContext:用于提供插件的上下文
13+
* languages:
14+
1. 注册语言服务:例如 CodeLens、代码补全、悬停提示等
15+
2. 注册语言特性:如代码导航、文档符号、语法高亮等
16+
* commands:用于注册和处理 VS Code 命令
17+
* Disposable:用于管理和释放资源。实现了 dispose 方法来清理资源
18+
* workspace:提供对工作区的访问,例如读取和更新配置
19+
* window:用于与 VS Code 窗口交互,例如显示信息消息框

0 commit comments

Comments
 (0)