-
-
Notifications
You must be signed in to change notification settings - Fork 1
/
Copy pathindex.html
57 lines (55 loc) · 37 KB
/
index.html
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
<!DOCTYPE html>
<html lang="zh-CN" dir="ltr">
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width,initial-scale=1">
<title>hengshuai's blog</title>
<meta name="description" content="大家好我是卫恒帅,这是我的个人博客,在这里我会分享web开发相关技能经验,也有自己的一些生活所思所悟,希望对你有所帮助,如你感觉不错可以将本站收藏!">
<meta name="generator" content="VitePress v1.0.0-rc.40">
<link rel="preload stylesheet" href="/assets/style.CqHlMzOF.css" as="style">
<script type="module" src="/assets/app.CworDVSu.js"></script>
<link rel="preload" href="/assets/inter-roman-latin.Bu8hRsVA.woff2" as="font" type="font/woff2" crossorigin="">
<link rel="modulepreload" href="/assets/chunks/theme.DuGNCSvX.js">
<link rel="modulepreload" href="/assets/chunks/framework.DFfT8rrc.js">
<link rel="modulepreload" href="/assets/index.md.CaXruIlZ.lean.js">
<meta name="renderer" content="webkit">
<meta name="author" content="[email protected]">
<meta rel="profile" href="http://gmpg.org/xfn/11">
<meta name="referrer" content="same-origin">
<link rel="icon" type="image/x-icon" href="/favicon.ico">
<meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1">
<meta name="theme-color" content="#646cff">
<meta name="google-site-verification" content="T4xYOJVbUxeU5aZRUROdmEf_NWCjnRDwfXnzKYUVcFM">
<meta name="baidu-site-verification" content="code-IpD4H7zKv4">
<link rel="apple-touch-icon" href="https://ihengshuai-demo1.oss-cn-beijing.aliyuncs.com/192.png">
<meta name="apple-mobile-web-app-title" content="hengshuai's blog">
<meta name="mobile-web-app-capable" content="yes">
<meta name="apple-mobile-web-app-status-bar-style" content="#747bff">
<meta rel="apple-touch-startup-image" href="https://ihengshuai-demo1.oss-cn-beijing.aliyuncs.com/192.png">
<script id="ENV_VARIABLES">window.__ENV_VARIABLES__={ENV_PROD:!0};</script>
<link rel="manifest" href="/manifest.json">
<script async src="https://www.googletagmanager.com/gtag/js?id=G-V5736Z4DWT"></script>
<script>window.dataLayer=window.dataLayer||[];function gtag(){dataLayer.push(arguments)}gtag("js",new Date),gtag("config","G-V5736Z4DWT");</script>
<script async src="https://analytics.ahrefs.com/analytics.js" data-key="HWoBb5+MaduIknXyM0i64Q"></script>
<script>var _hmt=_hmt||[];(function(){var e=document.createElement("script");e.src="https://hm.baidu.com/hm.js?f6eda4089bba0c6f46ad6e00658a80f3";var t=document.getElementsByTagName("script")[0];t.parentNode.insertBefore(e,t)})();</script>
<script id="check-dark-mode">(()=>{const e=localStorage.getItem("vitepress-theme-appearance")||"dark",a=window.matchMedia("(prefers-color-scheme: dark)").matches;(!e||e==="auto"?a:e==="dark")&&document.documentElement.classList.add("dark")})();</script>
<script id="check-mac-os">document.documentElement.classList.toggle("mac",/Mac|iPhone|iPod|iPad/i.test(navigator.platform));</script>
<meta name="keywords" content="大卫talk,hengshuai blog,恒帅的博客,前端开发,Vue,React,webpack,vite,rollup,gulp,nestjs,typescript,前端性能优化,低代码,微前端,node bff,node中间件,node性能优化,混合应用,可视化开发,前端可视化,设计模式,小程序,前端调试指南,前端构建工具,nginx,反向代理,http协议,http protocol,docker,k8s,kubenetes,nodejs,css,regexp,正则表达式,CI/CD,DevOps,Java,Redis,Mysql,Spring,SpringBoot,MyBatis,vue原理,babel,eslint,前端项目规范,编译原理,gitlab,jenkins,aphrodite-u,珠宝首饰,珍珠项链,淡水珠,海水珠等等">
<meta property="og:type" content="website">
<meta property="og:title" content="hengshuai's blog">
<meta property="og:url" content="https://blog.usword.cn/index.html">
<meta property="og:site_name" content="hengshuai's blog">
<meta property="og:description" content="大家好我是卫恒帅,这是我的个人博客,在这里我会分享web开发相关技能经验,也有自己的一些生活所思所悟,希望对你有所帮助,如你感觉不错可以将本站收藏!">
<meta property="og:image" content="https://ihengshuai-demo1.oss-cn-beijing.aliyuncs.com/logo.png">
<meta name="twitter:url" value="https://blog.usword.cn/index.html">
<meta name="twitter:title" value="hengshuai's blog">
<meta name="twitter:domain" value="https://blog.usword.cn">
<meta name="twitter:card" content="summary">
<meta name="twitter:description" value="大家好我是卫恒帅,这是我的个人博客,在这里我会分享web开发相关技能经验,也有自己的一些生活所思所悟,希望对你有所帮助,如你感觉不错可以将本站收藏!">
<meta name="twitter:image" content="https://ihengshuai-demo1.oss-cn-beijing.aliyuncs.com/logo.png">
</head>
<body>
<div id="app"><div class="Layout" data-v-836c94c2><!--[--><!--]--><!--[--><span tabindex="-1" data-v-03415d78></span><a href="#VPContent" class="VPSkipLink visually-hidden" data-v-03415d78> Skip to content </a><!--]--><!----><header class="VPNav" data-v-836c94c2 data-v-4c175ef2><div class="VPNavBar" data-v-4c175ef2 data-v-20059448><div class="wrapper" data-v-20059448><div class="container" data-v-20059448><div class="title" data-v-20059448><div class="VPNavBarTitle" data-v-20059448 data-v-52882330><a class="title" href="/" data-v-52882330><!--[--><!--]--><!----><!--[-->Hengshuai's blog<!--]--><!--[--><!--]--></a></div></div><div class="content" data-v-20059448><div class="content-body" data-v-20059448><!--[--><!--]--><div class="VPNavBarSearch search" data-v-20059448><!--[--><!----><div id="local-search"><button type="button" class="DocSearch DocSearch-Button" aria-label="Search"><span class="DocSearch-Button-Container"><svg class="DocSearch-Search-Icon" width="20" height="20" viewBox="0 0 20 20" aria-label="search icon"><path d="M14.386 14.386l4.0877 4.0877-4.0877-4.0877c-2.9418 2.9419-7.7115 2.9419-10.6533 0-2.9419-2.9418-2.9419-7.7115 0-10.6533 2.9418-2.9419 7.7115-2.9419 10.6533 0 2.9419 2.9418 2.9419 7.7115 0 10.6533z" stroke="currentColor" fill="none" fill-rule="evenodd" stroke-linecap="round" stroke-linejoin="round"></path></svg><span class="DocSearch-Button-Placeholder">Search</span></span><span class="DocSearch-Button-Keys"><kbd class="DocSearch-Button-Key"></kbd><kbd class="DocSearch-Button-Key">K</kbd></span></button></div><!--]--></div><nav aria-labelledby="main-nav-aria-label" class="VPNavBarMenu menu" data-v-20059448 data-v-090c215c><span id="main-nav-aria-label" class="visually-hidden" data-v-090c215c>Main Navigation</span><!--[--><!--[--><a class="VPLink link VPNavBarMenuLink" href="/frontend/base.html" tabindex="0" data-v-090c215c data-v-3c66be1a><!--[--><span data-v-3c66be1a>Frontend</span><!--]--></a><!--]--><!--[--><a class="VPLink link VPNavBarMenuLink" href="/fullstack/base.html" tabindex="0" data-v-090c215c data-v-3c66be1a><!--[--><span data-v-3c66be1a>Fullstack</span><!--]--></a><!--]--><!--[--><a class="VPLink link VPNavBarMenuLink" href="/article/base.html" tabindex="0" data-v-090c215c data-v-3c66be1a><!--[--><span data-v-3c66be1a>Article</span><!--]--></a><!--]--><!--[--><a class="VPLink link vp-external-link-icon VPNavBarMenuLink" href="https://case.usword.cn" target="_blank" rel="noreferrer" tabindex="0" data-v-090c215c data-v-3c66be1a><!--[--><span data-v-3c66be1a>Case</span><!--]--></a><!--]--><!--[--><a class="VPLink link VPNavBarMenuLink" href="/me.html" tabindex="0" data-v-090c215c data-v-3c66be1a><!--[--><span data-v-3c66be1a>Me</span><!--]--></a><!--]--><!--]--></nav><!----><div class="VPNavBarAppearance appearance" data-v-20059448 data-v-ec5bbd74><button class="VPSwitch VPSwitchAppearance" type="button" role="switch" title="Switch to light theme" aria-checked="true" data-v-ec5bbd74 data-v-271a9ffc data-v-0a668c2e><span class="check" data-v-0a668c2e><span class="icon" data-v-0a668c2e><!--[--><svg xmlns="http://www.w3.org/2000/svg" aria-hidden="true" focusable="false" viewbox="0 0 24 24" class="sun" data-v-271a9ffc><path d="M12,18c-3.3,0-6-2.7-6-6s2.7-6,6-6s6,2.7,6,6S15.3,18,12,18zM12,8c-2.2,0-4,1.8-4,4c0,2.2,1.8,4,4,4c2.2,0,4-1.8,4-4C16,9.8,14.2,8,12,8z"></path><path d="M12,4c-0.6,0-1-0.4-1-1V1c0-0.6,0.4-1,1-1s1,0.4,1,1v2C13,3.6,12.6,4,12,4z"></path><path d="M12,24c-0.6,0-1-0.4-1-1v-2c0-0.6,0.4-1,1-1s1,0.4,1,1v2C13,23.6,12.6,24,12,24z"></path><path d="M5.6,6.6c-0.3,0-0.5-0.1-0.7-0.3L3.5,4.9c-0.4-0.4-0.4-1,0-1.4s1-0.4,1.4,0l1.4,1.4c0.4,0.4,0.4,1,0,1.4C6.2,6.5,5.9,6.6,5.6,6.6z"></path><path d="M19.8,20.8c-0.3,0-0.5-0.1-0.7-0.3l-1.4-1.4c-0.4-0.4-0.4-1,0-1.4s1-0.4,1.4,0l1.4,1.4c0.4,0.4,0.4,1,0,1.4C20.3,20.7,20,20.8,19.8,20.8z"></path><path d="M3,13H1c-0.6,0-1-0.4-1-1s0.4-1,1-1h2c0.6,0,1,0.4,1,1S3.6,13,3,13z"></path><path d="M23,13h-2c-0.6,0-1-0.4-1-1s0.4-1,1-1h2c0.6,0,1,0.4,1,1S23.6,13,23,13z"></path><path d="M4.2,20.8c-0.3,0-0.5-0.1-0.7-0.3c-0.4-0.4-0.4-1,0-1.4l1.4-1.4c0.4-0.4,1-0.4,1.4,0s0.4,1,0,1.4l-1.4,1.4C4.7,20.7,4.5,20.8,4.2,20.8z"></path><path d="M18.4,6.6c-0.3,0-0.5-0.1-0.7-0.3c-0.4-0.4-0.4-1,0-1.4l1.4-1.4c0.4-0.4,1-0.4,1.4,0s0.4,1,0,1.4l-1.4,1.4C18.9,6.5,18.6,6.6,18.4,6.6z"></path></svg><svg xmlns="http://www.w3.org/2000/svg" aria-hidden="true" focusable="false" viewbox="0 0 24 24" class="moon" data-v-271a9ffc><path d="M12.1,22c-0.3,0-0.6,0-0.9,0c-5.5-0.5-9.5-5.4-9-10.9c0.4-4.8,4.2-8.6,9-9c0.4,0,0.8,0.2,1,0.5c0.2,0.3,0.2,0.8-0.1,1.1c-2,2.7-1.4,6.4,1.3,8.4c2.1,1.6,5,1.6,7.1,0c0.3-0.2,0.7-0.3,1.1-0.1c0.3,0.2,0.5,0.6,0.5,1c-0.2,2.7-1.5,5.1-3.6,6.8C16.6,21.2,14.4,22,12.1,22zM9.3,4.4c-2.9,1-5,3.6-5.2,6.8c-0.4,4.4,2.8,8.3,7.2,8.7c2.1,0.2,4.2-0.4,5.8-1.8c1.1-0.9,1.9-2.1,2.4-3.4c-2.5,0.9-5.3,0.5-7.5-1.1C9.2,11.4,8.1,7.7,9.3,4.4z"></path></svg><!--]--></span></span></button></div><div class="VPSocialLinks VPNavBarSocialLinks social-links" data-v-20059448 data-v-ea7cf295 data-v-4d3114fc><!--[--><a class="VPSocialLink no-icon" href="https://github.com/ihengshuai" aria-label="github" target="_blank" rel="noopener" data-v-4d3114fc data-v-d370eadd><svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>GitHub</title><path d="M12 .297c-6.63 0-12 5.373-12 12 0 5.303 3.438 9.8 8.205 11.385.6.113.82-.258.82-.577 0-.285-.01-1.04-.015-2.04-3.338.724-4.042-1.61-4.042-1.61C4.422 18.07 3.633 17.7 3.633 17.7c-1.087-.744.084-.729.084-.729 1.205.084 1.838 1.236 1.838 1.236 1.07 1.835 2.809 1.305 3.495.998.108-.776.417-1.305.76-1.605-2.665-.3-5.466-1.332-5.466-5.93 0-1.31.465-2.38 1.235-3.22-.135-.303-.54-1.523.105-3.176 0 0 1.005-.322 3.3 1.23.96-.267 1.98-.399 3-.405 1.02.006 2.04.138 3 .405 2.28-1.552 3.285-1.23 3.285-1.23.645 1.653.24 2.873.12 3.176.765.84 1.23 1.91 1.23 3.22 0 4.61-2.805 5.625-5.475 5.92.42.36.81 1.096.81 2.22 0 1.606-.015 2.896-.015 3.286 0 .315.21.69.825.57C20.565 22.092 24 17.592 24 12.297c0-6.627-5.373-12-12-12"/></svg></a><!--]--></div><div class="VPFlyout VPNavBarExtra extra" data-v-20059448 data-v-754a17a0 data-v-e3fc99f7><button type="button" class="button" aria-haspopup="true" aria-expanded="false" aria-label="extra navigation" data-v-e3fc99f7><svg xmlns="http://www.w3.org/2000/svg" aria-hidden="true" focusable="false" viewbox="0 0 24 24" class="icon" data-v-e3fc99f7><circle cx="12" cy="12" r="2"></circle><circle cx="19" cy="12" r="2"></circle><circle cx="5" cy="12" r="2"></circle></svg></button><div class="menu" data-v-e3fc99f7><div class="VPMenu" data-v-e3fc99f7 data-v-2c87eb8b><!----><!--[--><!--[--><!----><div class="group" data-v-754a17a0><div class="item appearance" data-v-754a17a0><p class="label" data-v-754a17a0>Appearance</p><div class="appearance-action" data-v-754a17a0><button class="VPSwitch VPSwitchAppearance" type="button" role="switch" title="Switch to light theme" aria-checked="true" data-v-754a17a0 data-v-271a9ffc data-v-0a668c2e><span class="check" data-v-0a668c2e><span class="icon" data-v-0a668c2e><!--[--><svg xmlns="http://www.w3.org/2000/svg" aria-hidden="true" focusable="false" viewbox="0 0 24 24" class="sun" data-v-271a9ffc><path d="M12,18c-3.3,0-6-2.7-6-6s2.7-6,6-6s6,2.7,6,6S15.3,18,12,18zM12,8c-2.2,0-4,1.8-4,4c0,2.2,1.8,4,4,4c2.2,0,4-1.8,4-4C16,9.8,14.2,8,12,8z"></path><path d="M12,4c-0.6,0-1-0.4-1-1V1c0-0.6,0.4-1,1-1s1,0.4,1,1v2C13,3.6,12.6,4,12,4z"></path><path d="M12,24c-0.6,0-1-0.4-1-1v-2c0-0.6,0.4-1,1-1s1,0.4,1,1v2C13,23.6,12.6,24,12,24z"></path><path d="M5.6,6.6c-0.3,0-0.5-0.1-0.7-0.3L3.5,4.9c-0.4-0.4-0.4-1,0-1.4s1-0.4,1.4,0l1.4,1.4c0.4,0.4,0.4,1,0,1.4C6.2,6.5,5.9,6.6,5.6,6.6z"></path><path d="M19.8,20.8c-0.3,0-0.5-0.1-0.7-0.3l-1.4-1.4c-0.4-0.4-0.4-1,0-1.4s1-0.4,1.4,0l1.4,1.4c0.4,0.4,0.4,1,0,1.4C20.3,20.7,20,20.8,19.8,20.8z"></path><path d="M3,13H1c-0.6,0-1-0.4-1-1s0.4-1,1-1h2c0.6,0,1,0.4,1,1S3.6,13,3,13z"></path><path d="M23,13h-2c-0.6,0-1-0.4-1-1s0.4-1,1-1h2c0.6,0,1,0.4,1,1S23.6,13,23,13z"></path><path d="M4.2,20.8c-0.3,0-0.5-0.1-0.7-0.3c-0.4-0.4-0.4-1,0-1.4l1.4-1.4c0.4-0.4,1-0.4,1.4,0s0.4,1,0,1.4l-1.4,1.4C4.7,20.7,4.5,20.8,4.2,20.8z"></path><path d="M18.4,6.6c-0.3,0-0.5-0.1-0.7-0.3c-0.4-0.4-0.4-1,0-1.4l1.4-1.4c0.4-0.4,1-0.4,1.4,0s0.4,1,0,1.4l-1.4,1.4C18.9,6.5,18.6,6.6,18.4,6.6z"></path></svg><svg xmlns="http://www.w3.org/2000/svg" aria-hidden="true" focusable="false" viewbox="0 0 24 24" class="moon" data-v-271a9ffc><path d="M12.1,22c-0.3,0-0.6,0-0.9,0c-5.5-0.5-9.5-5.4-9-10.9c0.4-4.8,4.2-8.6,9-9c0.4,0,0.8,0.2,1,0.5c0.2,0.3,0.2,0.8-0.1,1.1c-2,2.7-1.4,6.4,1.3,8.4c2.1,1.6,5,1.6,7.1,0c0.3-0.2,0.7-0.3,1.1-0.1c0.3,0.2,0.5,0.6,0.5,1c-0.2,2.7-1.5,5.1-3.6,6.8C16.6,21.2,14.4,22,12.1,22zM9.3,4.4c-2.9,1-5,3.6-5.2,6.8c-0.4,4.4,2.8,8.3,7.2,8.7c2.1,0.2,4.2-0.4,5.8-1.8c1.1-0.9,1.9-2.1,2.4-3.4c-2.5,0.9-5.3,0.5-7.5-1.1C9.2,11.4,8.1,7.7,9.3,4.4z"></path></svg><!--]--></span></span></button></div></div></div><div class="group" data-v-754a17a0><div class="item social-links" data-v-754a17a0><div class="VPSocialLinks social-links-list" data-v-754a17a0 data-v-4d3114fc><!--[--><a class="VPSocialLink no-icon" href="https://github.com/ihengshuai" aria-label="github" target="_blank" rel="noopener" data-v-4d3114fc data-v-d370eadd><svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>GitHub</title><path d="M12 .297c-6.63 0-12 5.373-12 12 0 5.303 3.438 9.8 8.205 11.385.6.113.82-.258.82-.577 0-.285-.01-1.04-.015-2.04-3.338.724-4.042-1.61-4.042-1.61C4.422 18.07 3.633 17.7 3.633 17.7c-1.087-.744.084-.729.084-.729 1.205.084 1.838 1.236 1.838 1.236 1.07 1.835 2.809 1.305 3.495.998.108-.776.417-1.305.76-1.605-2.665-.3-5.466-1.332-5.466-5.93 0-1.31.465-2.38 1.235-3.22-.135-.303-.54-1.523.105-3.176 0 0 1.005-.322 3.3 1.23.96-.267 1.98-.399 3-.405 1.02.006 2.04.138 3 .405 2.28-1.552 3.285-1.23 3.285-1.23.645 1.653.24 2.873.12 3.176.765.84 1.23 1.91 1.23 3.22 0 4.61-2.805 5.625-5.475 5.92.42.36.81 1.096.81 2.22 0 1.606-.015 2.896-.015 3.286 0 .315.21.69.825.57C20.565 22.092 24 17.592 24 12.297c0-6.627-5.373-12-12-12"/></svg></a><!--]--></div></div></div><!--]--><!--]--></div></div></div><!--[--><!--]--><button type="button" class="VPNavBarHamburger hamburger" aria-label="mobile navigation" aria-expanded="false" aria-controls="VPNavScreen" data-v-20059448 data-v-8703e2ea><span class="container" data-v-8703e2ea><span class="top" data-v-8703e2ea></span><span class="middle" data-v-8703e2ea></span><span class="bottom" data-v-8703e2ea></span></span></button></div></div></div></div><div class="divider" data-v-20059448><div class="divider-line" data-v-20059448></div></div></div><!----></header><div class="VPLocalNav empty fixed" data-v-836c94c2 data-v-a9ea84de><div class="container" data-v-a9ea84de><!----><div class="VPLocalNavOutlineDropdown" style="--vp-vh:0px;" data-v-a9ea84de data-v-13fefbde><button data-v-13fefbde>Return to top</button><!----></div></div></div><!----><div class="VPContent" id="VPContent" data-v-836c94c2 data-v-cbe2db98><div class="home-page" data-v-cbe2db98><h1 class="blog-title">Hengshuai's blog</h1></div></div><footer class="VPFooter" data-v-836c94c2 data-v-bba10910><div class="container" data-v-bba10910><p class="message" data-v-bba10910>Released under the MIT License.</p><p class="copyright" data-v-bba10910>Copyright © 2018-2025 HengShuai</p></div></footer><!--[--><!--]--></div></div>
<script>window.__VP_HASH_MAP__=JSON.parse("{\"article_2019_bind-call-apply.md\":\"DGCOnv8w\",\"article_2019_css-center.md\":\"C19jRaba\",\"article_2019_js-copy.md\":\"BoXx5aWZ\",\"article_2019_ktv-system.md\":\"DXznKX3C\",\"article_2019_mysql-guide.md\":\"Bf3w1qV7\",\"article_2019_nvm-guide.md\":\"hPNGXfnj\",\"article_2019_promise.md\":\"CE2S_Y3D\",\"article_2019_what-bfc.md\":\"DC_DQeXe\",\"article_2020_domparser-xml.md\":\"3Pls8heZ\",\"article_2020_optimize-web-server.md\":\"B9-1za76\",\"article_2020_vscode-shortcut.md\":\"Cc1_pkoG\",\"article_2020_web-cache.md\":\"Cls4Ltx-\",\"article_2020_webpack-guide.md\":\"e5hcNzGp\",\"article_2021_flex-layout.md\":\"Ci902DjO\",\"article_2021_performance-tools.md\":\"CYShVQ8m\",\"article_2021_pwa-app.md\":\"BrBK55L0\",\"article_2021_ts-decorator.md\":\"Fq2zr9u2\",\"article_2021_vue-core-process.md\":\"Cn5hjTrG\",\"article_2021_vue-img-lazyload.md\":\"DMTgxRgl\",\"article_2022_chatgpt-fe.md\":\"fL294mJ2\",\"article_2022_chrome-performance.md\":\"kOx5ynWA\",\"article_2022_emoji-markup.md\":\"BAiI8nHr\",\"article_2022_seo-optimize.md\":\"jOrdEMxL\",\"article_2023_forbid-js-debug.md\":\"DpKj-0AG\",\"article_2024_cursor-ai-coding.md\":\"ByNWImRN\",\"article_2024_deepseek-ai.md\":\"DfOBMDPy\",\"article_2024_ioc-case.md\":\"DvK7DEQH\",\"article_2025_deepseek-canva.md\":\"DOdBhVUD\",\"article_2025_deepseek-local.md\":\"D-UW6KNI\",\"article_2025_deepseek-tool-chain.md\":\"CL1Op4_I\",\"article_2025_grok3-ai.md\":\"CSmfuqrc\",\"article_base.md\":\"lGjnbPSF\",\"frontend_babel_base.md\":\"BjnS_7dl\",\"frontend_babel_custom-plugin.md\":\"DgqwCWlU\",\"frontend_babel_deep-think.md\":\"wR_mWvcQ\",\"frontend_base.md\":\"CJ-_uBtr\",\"frontend_browser_base.md\":\"jIqHqpQK\",\"frontend_building-tool_base.md\":\"BqXYFlgP\",\"frontend_canvas_base.md\":\"BT2ZaT6K\",\"frontend_canvas_magic-effects.md\":\"i0g66ubP\",\"frontend_cli_index.md\":\"Beq_mpIB\",\"frontend_compiler_index.md\":\"mIPGQ6wr\",\"frontend_computer-network_arp-protocol.md\":\"CVp5noGs\",\"frontend_computer-network_base.md\":\"B1Z2TXNj\",\"frontend_computer-network_http-protocol.md\":\"C2Q9LhR5\",\"frontend_computer-network_ip-protocol.md\":\"_VBk0CyW\",\"frontend_computer-network_tcp-protocol.md\":\"i_fPbk4D\",\"frontend_debug-skill_base.md\":\"Cg2TibCi\",\"frontend_debug-skill_charles.md\":\"D8wPiN-i\",\"frontend_debug-skill_chrome.md\":\"Cs0EQDbH\",\"frontend_debug-skill_fiddler.md\":\"DWDhqUXI\",\"frontend_debug-skill_h5.md\":\"CtqiPQl9\",\"frontend_debug-skill_vscode.md\":\"BZmkEOBf\",\"frontend_debug-skill_whistle.md\":\"PPpXq9dq\",\"frontend_debug-skill_wireshark.md\":\"hOAqnook\",\"frontend_editor_index.md\":\"CegU9zxo\",\"frontend_flutter_base.md\":\"CVudFQe_\",\"frontend_flutter_constraints.md\":\"Bk7QpipT\",\"frontend_hybrid-app_base.md\":\"Dt39Q5VM\",\"frontend_js_async.md\":\"CFaMhIF5\",\"frontend_js_audio.md\":\"DVH8LsMQ\",\"frontend_js_base.md\":\"DeO-vVDs\",\"frontend_js_binary.md\":\"BnIbr6si\",\"frontend_js_eventloop.md\":\"TCfZhNIu\",\"frontend_js_implicit-conversion.md\":\"D0gmZNDd\",\"frontend_js_js-gc.md\":\"FBToJCJW\",\"frontend_js_meta-coding.md\":\"BVRg867u\",\"frontend_js_proto-inherit.md\":\"D1Izx9sh\",\"frontend_js_scope-closure.md\":\"CE_5OQbK\",\"frontend_lowcoding_base.md\":\"C69DdJ7e\",\"frontend_micro-frontend_base.md\":\"CVR9CgDT\",\"frontend_micro-program_index.md\":\"DtzJTys9\",\"frontend_monitor_base.md\":\"BMmqdrOV\",\"frontend_nestjs_base.md\":\"CHk36NgE\",\"frontend_nestjs_mvc.md\":\"BaF63k4M\",\"frontend_nestjs_swagger.md\":\"CVEco6ju\",\"frontend_nestjs_useful.md\":\"05MC0ZYT\",\"frontend_nginx_base.md\":\"BWNAM74X\",\"frontend_node-bff_index.md\":\"B8mhbBfp\",\"frontend_node-optimize_index.md\":\"CrR30FuT\",\"frontend_node_base.md\":\"D0V16SaK\",\"frontend_node_multi-process.md\":\"CElgTx45\",\"frontend_node_node-cluster.md\":\"BtknAQRR\",\"frontend_node_node-debug.md\":\"CvNnNU7t\",\"frontend_node_node-framework.md\":\"DoNuJWh8\",\"frontend_node_node-measure.md\":\"DCr61RDP\",\"frontend_node_node-web.md\":\"BZh9I7-K\",\"frontend_npm_index.md\":\"DMOZhdJr\",\"frontend_pattern_base.md\":\"-ajn2qSY\",\"frontend_performance_base.md\":\"CLtqDzae\",\"frontend_performance_cache-perf.md\":\"CjHSTnUD\",\"frontend_performance_cache.md\":\"CsR40HDy\",\"frontend_performance_chunk-upload.md\":\"1ujYT9fH\",\"frontend_performance_load-perf.md\":\"BT1wowJb\",\"frontend_performance_network-perf.md\":\"9KLmln6O\",\"frontend_performance_node-score.md\":\"C9DB4ukL\",\"frontend_performance_performance.md\":\"BHkhwvGX\",\"frontend_performance_range-download.md\":\"D1A0Qb86\",\"frontend_performance_secure-perf.md\":\"BymDlvaD\",\"frontend_performance_seo.md\":\"DF7eg3J5\",\"frontend_performance_virtual-scroll-1.md\":\"BhAMlq4Z\",\"frontend_performance_virtual-scroll-2.md\":\"DzSYY9dH\",\"frontend_performance_web-score.md\":\"DpqMAm5b\",\"frontend_project-integration_base.md\":\"BHHPKd42\",\"frontend_project-integration_build-tool.md\":\"DyI39hfD\",\"frontend_project-integration_choose-editor.md\":\"C0OewTFU\",\"frontend_project-integration_ci-pipeline.md\":\"py5EgVnD\",\"frontend_project-integration_debugger-skill.md\":\"BiDVXqAK\",\"frontend_project-integration_deploy-specification.md\":\"BoGnXG1N\",\"frontend_project-integration_framework.md\":\"CElztbL5\",\"frontend_project-integration_git-commit.md\":\"BRzWqxL3\",\"frontend_project-integration_monorepo.md\":\"CFfkS2M9\",\"frontend_project-integration_specification.md\":\"CjUOpOsy\",\"frontend_project-integration_style.md\":\"vOj4awtR\",\"frontend_project-integration_test-framework.md\":\"CrPEOXDF\",\"frontend_react_index.md\":\"8QDuRBG2\",\"frontend_regexp_base.md\":\"Df_tJQms\",\"frontend_render-mode_base.md\":\"S8P8bcDt\",\"frontend_sandbox_index.md\":\"CsCai8B3\",\"frontend_ts_base.md\":\"DJA230aM\",\"frontend_ts_declare.md\":\"CVSeXzTd\",\"frontend_ts_ts-configure.md\":\"C8vkThbw\",\"frontend_ts_tutorial-advance.md\":\"D5Mppic1\",\"frontend_visual_index.md\":\"hMy-SuVX\",\"frontend_vue_component-render.md\":\"ClOsq8qY\",\"frontend_vue_computed-watch.md\":\"C0ZdozzC\",\"frontend_vue_pinia.md\":\"Df582P5H\",\"frontend_vue_reactivity.md\":\"BH2YLdLT\",\"frontend_vue_router.md\":\"D6171ZII\",\"frontend_vue_slot.md\":\"BP8l2-KM\",\"frontend_vue_template-compiler.md\":\"DDMe1Ccl\",\"frontend_vue_transition.md\":\"C3A56rxl\",\"frontend_vue_update-process.md\":\"DO5jjPn3\",\"frontend_vue_vuex.md\":\"CafxkoUj\",\"frontend_wasm_base.md\":\"CC6vCYga\",\"frontend_webpack_base.md\":\"BUwoaOcO\",\"frontend_webpack_webpack-analysis.md\":\"K0Gp2nlJ\",\"frontend_webpack_webpack-loader.md\":\"DkU8Yjt5\",\"frontend_webpack_webpack-node.md\":\"Bv5SUxpO\",\"frontend_webpack_webpack-plugin.md\":\"CIFXE0d3\",\"fullstack_base.md\":\"Df9qZdsr\",\"fullstack_docker_base-tutorial.md\":\"C_p35Y2f\",\"fullstack_docker_docker-compose.md\":\"BSYQcqh5\",\"fullstack_docker_docker-repository.md\":\"DrwPrCqt\",\"fullstack_docker_dockerfile.md\":\"BtGeyjUD\",\"fullstack_docker_install-configure.md\":\"CyvMTMiQ\",\"fullstack_docker_network.md\":\"xgrF2I2Z\",\"fullstack_docker_npm-repository.md\":\"lEoHqgYu\",\"fullstack_docker_volume-store.md\":\"CtHPkhWt\",\"fullstack_gitlab_fe-cicd.md\":\"BQqaaqLu\",\"fullstack_gitlab_gitlab-pipeline.md\":\"CDKvWFFK\",\"fullstack_gitlab_gitlab-runner-install-configure.md\":\"C70GwaI2\",\"fullstack_gitlab_install-configure.md\":\"CqWyOX-o\",\"fullstack_gitlab_npm-repository.md\":\"BFv27Hi8\",\"fullstack_k8s_base.md\":\"Bs74MbS5\",\"fullstack_k8s_install.md\":\"Cu8xR4k8\",\"index.md\":\"CaXruIlZ\",\"me.md\":\"nYncPMc_\"}");window.__VP_SITE_DATA__=JSON.parse("{\"lang\":\"zh-CN\",\"dir\":\"ltr\",\"title\":\"hengshuai's blog\",\"description\":\"大家好我是卫恒帅,这是我的个人博客,在这里我会分享web开发相关技能经验,也有自己的一些生活所思所悟,希望对你有所帮助,如你感觉不错可以将本站收藏!\",\"base\":\"/\",\"head\":[],\"router\":{\"prefetchLinks\":true},\"appearance\":\"dark\",\"themeConfig\":{\"externalLinkIcon\":true,\"logoLink\":\"/\",\"siteTitle\":\"Hengshuai's blog\",\"outline\":[2,3],\"outlineTitle\":\"大纲\",\"nav\":[{\"text\":\"Frontend\",\"link\":\"/frontend/base.html\",\"activeMatch\":\"^/frontend/.*\"},{\"text\":\"Fullstack\",\"link\":\"/fullstack/base.html\",\"activeMatch\":\"^/fullstack/.*\"},{\"text\":\"Article\",\"link\":\"/article/base.html\",\"activeMatch\":\"^/article/.*\"},{\"text\":\"Case\",\"link\":\"https://case.usword.cn\"},{\"text\":\"Me\",\"link\":\"/me.html\",\"activeMatch\":\"/me\"}],\"socialLinks\":[{\"icon\":\"github\",\"link\":\"https://github.com/ihengshuai\"}],\"sidebar\":{\"/frontend/\":[{\"collapsible\":true,\"items\":[{\"text\":\"Javascript\",\"collapsed\":false,\"link\":\"/frontend/js/base.html\",\"items\":[{\"text\":\"原型、原型链与继承\",\"link\":\"/frontend/js/proto-inherit.html\"},{\"text\":\"作用域(链)、执行上下文及闭包\",\"link\":\"/frontend/js/scope-closure.html\"},{\"text\":\"类型隐式转换\",\"link\":\"/frontend/js/implicit-conversion.html\"},{\"text\":\"事件循环(EventLoop)\",\"link\":\"/frontend/js/eventloop.html\"},{\"text\":\"异步编程\",\"link\":\"/frontend/js/async.html\"},{\"text\":\"元编程\",\"link\":\"/frontend/js/meta-coding.html\"},{\"text\":\"二进制\",\"link\":\"/frontend/js/binary.html\"},{\"text\":\"音视频\",\"link\":\"/frontend/js/audio.html\"},{\"text\":\"垃圾回收\",\"link\":\"/frontend/js/js-gc.html\"}]},{\"text\":\"Browser\",\"link\":\"/frontend/browser/base.html\"},{\"text\":\"Debug Skill\",\"collapsed\":true,\"items\":[{\"text\":\"Chrome\",\"link\":\"/frontend/debug-skill/chrome.html\"},{\"text\":\"VSCode\",\"link\":\"/frontend/debug-skill/vscode.html\"},{\"text\":\"Fiddler\",\"link\":\"/frontend/debug-skill/fiddler.html\"},{\"text\":\"Charles\",\"link\":\"/frontend/debug-skill/charles.html\"},{\"text\":\"Wireshark\",\"link\":\"/frontend/debug-skill/wireshark.html\"},{\"text\":\"Whistle\",\"link\":\"/frontend/debug-skill/whistle.html\"},{\"text\":\"H5 App\",\"link\":\"/frontend/debug-skill/h5.html\"}]},{\"text\":\"Computer Network\",\"collapsed\":true,\"items\":[{\"text\":\"计算机网络\",\"link\":\"/frontend/computer-network/base.html\"},{\"text\":\"TCP协议\",\"link\":\"/frontend/computer-network/tcp-protocol.html\"},{\"text\":\"HTTP协议\",\"link\":\"/frontend/computer-network/http-protocol.html\"},{\"text\":\"IP协议\",\"link\":\"/frontend/computer-network/ip-protocol.html\"},{\"text\":\"ARP协议\",\"link\":\"/frontend/computer-network/arp-protocol.html\"}]},{\"text\":\"Regexp\",\"link\":\"/frontend/regexp/base.html\"},{\"text\":\"Design Pattern\",\"link\":\"/frontend/pattern/base.html\"},{\"text\":\"Vue\",\"collapsed\":true,\"items\":[{\"text\":\"响应式原理\",\"link\":\"/frontend/vue/reactivity.html\"},{\"text\":\"计算属性与侦听函数\",\"link\":\"/frontend/vue/computed-watch.html\"},{\"text\":\"模板编译\",\"link\":\"/frontend/vue/template-compiler.html\"},{\"text\":\"组件创建与渲染\",\"link\":\"/frontend/vue/component-render.html\"},{\"text\":\"视图更新流程\",\"link\":\"/frontend/vue/update-process.html\"},{\"text\":\"插槽原理\",\"link\":\"/frontend/vue/slot.html\"},{\"text\":\"实现过渡\",\"link\":\"/frontend/vue/transition.html\"},{\"text\":\"vuex内幕\",\"link\":\"/frontend/vue/vuex.html\"},{\"text\":\"pinia原理\",\"link\":\"/frontend/vue/pinia.html\"},{\"text\":\"路由实现\",\"link\":\"/frontend/vue/router.html\"}]},{\"text\":\"Building Tool\",\"link\":\"/frontend/building-tool/base.html\"},{\"text\":\"Babel\",\"collapsed\":true,\"items\":[{\"text\":\"入门篇\",\"link\":\"/frontend/babel/base.html\"},{\"text\":\"原理篇\",\"link\":\"/frontend/babel/deep-think.html\"},{\"text\":\"自定义插件\",\"link\":\"/frontend/babel/custom-plugin.html\"}]},{\"text\":\"Webpack\",\"collapsed\":true,\"items\":[{\"text\":\"基本使用\",\"link\":\"/frontend/webpack/base.html\"},{\"text\":\"自定义loader\",\"link\":\"/frontend/webpack/webpack-loader.html\"},{\"text\":\"自定义插件\",\"link\":\"/frontend/webpack/webpack-plugin.html\"},{\"text\":\"结合node使用\",\"link\":\"/frontend/webpack/webpack-node.html\"},{\"text\":\"原理分析\",\"link\":\"/frontend/webpack/webpack-analysis.html\"}]},{\"text\":\"NodeJS\",\"collapsed\":true,\"items\":[{\"text\":\"入门指南\",\"link\":\"/frontend/node/base.html\"},{\"text\":\"搭建web服务器\",\"link\":\"/frontend/node/node-web.html\"},{\"text\":\"多进程与多线程\",\"link\":\"/frontend/node/multi-process.html\"},{\"text\":\"常用框架\",\"link\":\"/frontend/node/node-framework.html\"},{\"text\":\"调试技巧\",\"link\":\"/frontend/node/node-debug.html\"},{\"text\":\"性能优化\",\"link\":\"/frontend/node/node-measure.html\"}]},{\"text\":\"NestJS\",\"collapsed\":true,\"items\":[{\"text\":\"入门指南\",\"link\":\"/frontend/nestjs/base.html\"},{\"text\":\"搭建web服务\",\"link\":\"/frontend/nestjs/mvc.html\"},{\"text\":\"swagger文档\",\"link\":\"/frontend/nestjs/swagger.html\"},{\"text\":\"实用手册\",\"link\":\"/frontend/nestjs/useful.html\"}]},{\"text\":\"Typescript\",\"collapsed\":true,\"items\":[{\"text\":\"入门指南\",\"link\":\"/frontend/ts/base.html\"},{\"text\":\"配置与编译\",\"link\":\"/frontend/ts/ts-configure.html\"},{\"text\":\"全局类型声明\",\"link\":\"/frontend/ts/declare.html\"},{\"text\":\"装饰器与注解\",\"link\":\"/article/2021/ts-decorator.html\"},{\"text\":\"注解案例\",\"link\":\"/article/2024/ioc-case.html\"}]},{\"text\":\"Render Mode\",\"link\":\"/frontend/render-mode/base.html\"},{\"text\":\"Canvas\",\"collapsed\":true,\"items\":[{\"text\":\"1.基本使用\",\"link\":\"/frontend/canvas/base.html\"},{\"text\":\"2.动画特效\",\"link\":\"/frontend/canvas/magic-effects.html\"}]},{\"text\":\"Project Integration\",\"collapsed\":true,\"items\":[{\"text\":\"1.项目工程化\",\"link\":\"/frontend/project-integration/base.html\"},{\"text\":\"2.编辑器之争\",\"link\":\"/frontend/project-integration/choose-editor.html\"},{\"text\":\"3.框架选型\",\"link\":\"/frontend/project-integration/framework.html\"},{\"text\":\"4.打包工具\",\"link\":\"/frontend/project-integration/build-tool.html\"},{\"text\":\"5.语法规范\",\"link\":\"/frontend/project-integration/specification.html\"},{\"text\":\"6.风格指南\",\"link\":\"/frontend/project-integration/style.html\"},{\"text\":\"7.提交规范\",\"link\":\"/frontend/project-integration/git-commit.html\"},{\"text\":\"8.monorepo\",\"link\":\"/frontend/project-integration/monorepo.html\"},{\"text\":\"9.自动化测试\",\"link\":\"/frontend/project-integration/test-framework.html\"},{\"text\":\"10.发布规范\",\"link\":\"/frontend/project-integration/deploy-specification.html\"},{\"text\":\"11.调试技巧\",\"link\":\"/frontend/project-integration/debugger-skill.html\"},{\"text\":\"12.自动化\",\"link\":\"/frontend/project-integration/ci-pipeline.html\"}]},{\"text\":\"Performance\",\"collapsed\":true,\"items\":[{\"text\":\"前言\",\"link\":\"/frontend/performance/base.html\"},{\"text\":\"大文件上传\",\"link\":\"/frontend/performance/chunk-upload.html\"},{\"text\":\"大文件下载\",\"link\":\"/frontend/performance/range-download.html\"},{\"text\":\"虚拟滚动一\",\"link\":\"/frontend/performance/virtual-scroll-1.html\"},{\"text\":\"虚拟滚动二\",\"link\":\"/frontend/performance/virtual-scroll-2.html\"},{\"text\":\"网络优化\",\"link\":\"/frontend/performance/network-perf.html\"},{\"text\":\"加载优化\",\"link\":\"/frontend/performance/load-perf.html\"},{\"text\":\"缓存优化\",\"link\":\"/frontend/performance/cache-perf.html\"},{\"text\":\"安全优化\",\"link\":\"/frontend/performance/secure-perf.html\"},{\"text\":\"SEO优化\",\"link\":\"/frontend/performance/seo.html\"},{\"text\":\"Performance工具\",\"link\":\"/frontend/performance/performance.html\"},{\"text\":\"web评分指标\",\"link\":\"/frontend/performance/web-score.html\"},{\"text\":\"node评分指标\",\"link\":\"/frontend/performance/node-score.html\"}]},{\"text\":\"Nginx\",\"link\":\"/frontend/nginx/base.html\"},{\"text\":\"Monitor\",\"link\":\"/frontend/monitor/base.html\"},{\"text\":\"Micro Frontend\",\"link\":\"/frontend/micro-frontend/base.html\"},{\"text\":\"Webassembly\",\"link\":\"/frontend/wasm/base.html\"},{\"text\":\"Hybrid App\",\"link\":\"/frontend/hybrid-app/base.html\"},{\"text\":\"Flutter\",\"collapsed\":true,\"items\":[{\"text\":\"初识Flutter\",\"link\":\"/frontend/flutter/base.html\"},{\"text\":\"布局原理\",\"link\":\"/frontend/flutter/constraints.html\"}]}]}],\"/fullstack/\":[{\"text\":\"Docker\",\"items\":[{\"items\":[{\"text\":\"Docker安装与配置\",\"link\":\"/fullstack/docker/install-configure.html\"},{\"text\":\"Docker基础教程\",\"link\":\"/fullstack/docker/base-tutorial.html\"},{\"text\":\"Docker数据卷与持久化\",\"link\":\"/fullstack/docker/volume-store.html\"},{\"text\":\"Docker网络原理\",\"link\":\"/fullstack/docker/network.html\"},{\"text\":\"使用Dockerfile构建镜像\",\"link\":\"/fullstack/docker/dockerfile.html\"},{\"text\":\"使用DockerCompose部署服务\",\"link\":\"/fullstack/docker/docker-compose.html\"},{\"text\":\"使用Docker搭建npm仓库\",\"link\":\"/fullstack/docker/npm-repository.html\"},{\"text\":\"搭建docker私有仓库\",\"link\":\"/fullstack/docker/docker-repository.html\"}]}]},{\"text\":\"Gitlab\",\"items\":[{\"items\":[{\"text\":\"安装与配置\",\"link\":\"/fullstack/gitlab/install-configure.html\"},{\"text\":\"Gitlab Runner安装与配置\",\"link\":\"/fullstack/gitlab/gitlab-runner-install-configure.html\"},{\"text\":\"Gitlab流水线配置\",\"link\":\"/fullstack/gitlab/gitlab-pipeline.html\"},{\"text\":\"Gitlab搭建npm仓库\",\"link\":\"/fullstack/gitlab/npm-repository.html\"},{\"text\":\"实战前端项目CI CD\",\"link\":\"/fullstack/gitlab/fe-cicd.html\"}]}]},{\"text\":\"Kubernetes\",\"items\":[{\"items\":[{\"text\":\"初识kubernetes\",\"link\":\"/fullstack/k8s/base.html\"},{\"text\":\"搭建k8s集群\",\"link\":\"/fullstack/k8s/install.html\"}]}]}],\"/article/\":[{\"text\":\"2025\",\"items\":[{\"items\":[{\"text\":\"DeepSeek宝藏组合\",\"link\":\"/article/2025/deepseek-tool-chain.html\"},{\"text\":\"DeepSeek+Canva海报神器\",\"link\":\"/article/2025/deepseek-canva.html\"},{\"text\":\"马斯克:Grok3史上最强\",\"link\":\"/article/2025/grok3-ai.html\"},{\"text\":\"本地部署DeepSeek AI\",\"link\":\"/article/2025/deepseek-local.html\"}]}]},{\"text\":\"2024\",\"items\":[{\"items\":[{\"text\":\"DeepSeek搭建私有ChatGPT\",\"link\":\"/article/2024/deepseek-ai.html\"},{\"text\":\"TS装饰器案例\",\"link\":\"/article/2024/ioc-case.html\"},{\"text\":\"AI编码最佳选手Cursor\",\"link\":\"/article/2024/cursor-ai-coding.html\"}]}]},{\"text\":\"2023\",\"items\":[{\"items\":[{\"text\":\"防止JS调试\",\"link\":\"/article/2023/forbid-js-debug.html\"}]}]},{\"text\":\"2022\",\"items\":[{\"items\":[{\"text\":\"ChatGPT背后的前端技术\",\"link\":\"/article/2022/chatgpt-fe.html\"},{\"text\":\"emoji markup\",\"link\":\"/article/2022/emoji-markup.html\"},{\"text\":\"SEO优化技巧\",\"link\":\"/article/2022/seo-optimize.html\"},{\"text\":\"用Chrome Perf优化性能\",\"link\":\"/article/2022/chrome-performance.html\"}]}]},{\"text\":\"2021\",\"items\":[{\"items\":[{\"text\":\"PWA渐进式应用\",\"link\":\"/article/2021/pwa-app.html\"},{\"text\":\"前端性能测试工具\",\"link\":\"/article/2021/performance-tools.html\"},{\"text\":\"Typescript装饰器指南\",\"link\":\"/article/2021/ts-decorator.html\"},{\"text\":\"手写vue图片懒加载插件\",\"link\":\"/article/2021/vue-img-lazyload.html\"},{\"text\":\"谈谈vue内部运行机制\",\"link\":\"/article/2021/vue-core-process.html\"},{\"text\":\"JS中的设计模式\",\"link\":\"/frontend/pattern/base.html\"},{\"text\":\"flex布局\",\"link\":\"/article/2021/flex-layout.html\"}]}]},{\"text\":\"2020\",\"items\":[{\"items\":[{\"text\":\"关于DOMParser、XMLSerializer、createTreeWalker使用\",\"link\":\"/article/2020/domparser-xml.html\"},{\"text\":\"vscode快捷键\",\"link\":\"/article/2020/vscode-shortcut.html\"},{\"text\":\"优化改善网页的加载及性能\",\"link\":\"/article/2020/optimize-web-server.html\"},{\"text\":\"深入浅出RegExp\",\"link\":\"/frontend/regexp/base.html\"},{\"text\":\"从零配置webpack工程\",\"link\":\"/article/2020/webpack-guide.html\"},{\"text\":\"web缓存策略\",\"link\":\"/article/2020/web-cache.html\"}]}]},{\"text\":\"2019\",\"items\":[{\"items\":[{\"text\":\"nvm使用技巧\",\"link\":\"/article/2019/nvm-guide.html\"},{\"text\":\"MySQL从入门到放弃\",\"link\":\"/article/2019/mysql-guide.html\"},{\"text\":\"7天撸完ktv点歌系统\",\"link\":\"/article/2019/ktv-system.html\"},{\"text\":\"css的10中居中方式\",\"link\":\"/article/2019/css-center.html\"},{\"text\":\"Promise使用与原理\",\"link\":\"/article/2019/promise.html\"},{\"text\":\"JS隐式转换\",\"link\":\"/frontend/js/implicit-conversion.html\"},{\"text\":\"什么是BFC\",\"link\":\"/article/2019/what-bfc.html\"},{\"text\":\"JS深浅拷贝\",\"link\":\"/article/2019/js-copy.html\"},{\"text\":\"bind、call、apply使用技巧\",\"link\":\"/article/2019/bind-call-apply.html\"}]}]}]},\"lastUpdated\":{\"text\":\"最近更新\",\"formatOptions\":{\"dateStyle\":\"medium\"}},\"footer\":{\"message\":\"Released under the MIT License.\",\"copyright\":\"Copyright © 2018-2025 HengShuai\"},\"search\":{\"options\":{\"detailedView\":true,\"miniSearch\":{\"searchOptions\":{\"fields\":[\"title\",\"text\"]}}},\"provider\":\"local\"}},\"locales\":{},\"scrollOffset\":134,\"cleanUrls\":false}");</script>
</body>
</html>