-
Notifications
You must be signed in to change notification settings - Fork 1
/
404.html
53 lines (51 loc) · 34.8 KB
/
404.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
<!DOCTYPE html>
<html lang="zh-CN" dir="ltr">
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width,initial-scale=1">
<title>404 | hengshuai's blog</title>
<meta name="description" content="Not Found">
<meta name="generator" content="VitePress v1.0.0-rc.40">
<link rel="preload stylesheet" href="/assets/style.CLSBO42t.css" as="style">
<script type="module" src="/assets/app.BHrMYqDe.js"></script>
<link rel="preload" href="/assets/inter-roman-latin.Bu8hRsVA.woff2" as="font" type="font/woff2" crossorigin="">
<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="apple-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">
<link rel="manifest" href="/manifest.json">
<script id="ENV_VARIABLES">window.__ENV_VARIABLES__={ENV_PROD:!0};</script>
<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>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="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">
<meta property="og:type" content="website">
<meta property="og:title" content="404 | hengshuai's blog">
<meta property="og:url" content="https://blog.usword.cn/">
<meta property="og:site_name" content="hengshuai's blog">
<meta property="og:description" content="Not Found">
<meta property="og:image" content="https://ihengshuai-demo1.oss-cn-beijing.aliyuncs.com/logo.png">
<meta name="twitter:url" value="https://blog.usword.cn/">
<meta name="twitter:title" value="404 | hengshuai's blog">
<meta name="twitter:domain" value="https://blog.usword.cn">
<meta name="twitter:card" content="summary">
<meta name="twitter:description" value="Not Found">
<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-97079f35><!--[--><!--]--><!--[--><span tabindex="-1" data-v-e7e0afaf></span><a href="#VPContent" class="VPSkipLink visually-hidden" data-v-e7e0afaf> Skip to content </a><!--]--><!----><header class="VPNav" data-v-97079f35 data-v-54da9973><div class="VPNavBar" data-v-54da9973 data-v-24b51596><div class="wrapper" data-v-24b51596><div class="container" data-v-24b51596><div class="title" data-v-24b51596><div class="VPNavBarTitle" data-v-24b51596 data-v-427051be><a class="title" href="/" data-v-427051be><!--[--><!--]--><!----><!--[-->Hengshuai's blog<!--]--><!--[--><!--]--></a></div></div><div class="content" data-v-24b51596><div class="content-body" data-v-24b51596><!--[--><!--]--><div class="VPNavBarSearch search" data-v-24b51596><!--[--><!----><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-24b51596 data-v-85528ecb><span id="main-nav-aria-label" class="visually-hidden" data-v-85528ecb>Main Navigation</span><!--[--><!--[--><a class="VPLink link VPNavBarMenuLink" href="/frontend/base.html" tabindex="0" data-v-85528ecb data-v-1afafd64><!--[--><span data-v-1afafd64>Frontend</span><!--]--></a><!--]--><!--[--><a class="VPLink link VPNavBarMenuLink" href="/fullstack/base.html" tabindex="0" data-v-85528ecb data-v-1afafd64><!--[--><span data-v-1afafd64>Fullstack</span><!--]--></a><!--]--><!--[--><a class="VPLink link VPNavBarMenuLink" href="/article/base.html" tabindex="0" data-v-85528ecb data-v-1afafd64><!--[--><span data-v-1afafd64>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-85528ecb data-v-1afafd64><!--[--><span data-v-1afafd64>Case</span><!--]--></a><!--]--><!--[--><a class="VPLink link VPNavBarMenuLink" href="/me.html" tabindex="0" data-v-85528ecb data-v-1afafd64><!--[--><span data-v-1afafd64>Me</span><!--]--></a><!--]--><!--]--></nav><!----><div class="VPNavBarAppearance appearance" data-v-24b51596 data-v-e2b72fde><button class="VPSwitch VPSwitchAppearance" type="button" role="switch" title="Switch to light theme" aria-checked="true" data-v-e2b72fde data-v-859f4203 data-v-0039cd89><span class="check" data-v-0039cd89><span class="icon" data-v-0039cd89><!--[--><svg xmlns="http://www.w3.org/2000/svg" aria-hidden="true" focusable="false" viewbox="0 0 24 24" class="sun" data-v-859f4203><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-859f4203><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-24b51596 data-v-0375ff06 data-v-f1738a0d><!--[--><a class="VPSocialLink no-icon" href="https://github.com/ihengshuai" aria-label="github" target="_blank" rel="noopener" data-v-f1738a0d data-v-389f9ba4><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-24b51596 data-v-754f43d2 data-v-848a0087><button type="button" class="button" aria-haspopup="true" aria-expanded="false" aria-label="extra navigation" data-v-848a0087><svg xmlns="http://www.w3.org/2000/svg" aria-hidden="true" focusable="false" viewbox="0 0 24 24" class="icon" data-v-848a0087><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-848a0087><div class="VPMenu" data-v-848a0087 data-v-d6e83264><!----><!--[--><!--[--><!----><div class="group" data-v-754f43d2><div class="item appearance" data-v-754f43d2><p class="label" data-v-754f43d2>Appearance</p><div class="appearance-action" data-v-754f43d2><button class="VPSwitch VPSwitchAppearance" type="button" role="switch" title="Switch to light theme" aria-checked="true" data-v-754f43d2 data-v-859f4203 data-v-0039cd89><span class="check" data-v-0039cd89><span class="icon" data-v-0039cd89><!--[--><svg xmlns="http://www.w3.org/2000/svg" aria-hidden="true" focusable="false" viewbox="0 0 24 24" class="sun" data-v-859f4203><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-859f4203><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-754f43d2><div class="item social-links" data-v-754f43d2><div class="VPSocialLinks social-links-list" data-v-754f43d2 data-v-f1738a0d><!--[--><a class="VPSocialLink no-icon" href="https://github.com/ihengshuai" aria-label="github" target="_blank" rel="noopener" data-v-f1738a0d data-v-389f9ba4><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-24b51596 data-v-9e218b01><span class="container" data-v-9e218b01><span class="top" data-v-9e218b01></span><span class="middle" data-v-9e218b01></span><span class="bottom" data-v-9e218b01></span></span></button></div></div></div></div><div class="divider" data-v-24b51596><div class="divider-line" data-v-24b51596></div></div></div><!----></header><div class="VPLocalNav empty fixed" data-v-97079f35 data-v-d3d77da2><div class="container" data-v-d3d77da2><!----><div class="VPLocalNavOutlineDropdown" style="--vp-vh:0px;" data-v-d3d77da2 data-v-9186da94><button data-v-9186da94>Return to top</button><!----></div></div></div><!----><div class="VPContent" id="VPContent" data-v-97079f35 data-v-e0b0325a><!--[--><div class="NotFound" data-v-e0b0325a data-v-3a85b5bb><p class="code" data-v-3a85b5bb>404</p><h1 class="title" data-v-3a85b5bb>PAGE NOT FOUND</h1><div class="divider" data-v-3a85b5bb></div><blockquote class="quote" data-v-3a85b5bb>But if you don't change your direction, and if you keep looking, you may end up where you are heading.</blockquote><div class="action" data-v-3a85b5bb><a class="link" href="/" aria-label="go to home" data-v-3a85b5bb>Take me home</a></div></div><!--]--></div><footer class="VPFooter" data-v-97079f35 data-v-25cfc117><div class="container" data-v-25cfc117><p class="message" data-v-25cfc117>Released under the MIT License.</p><p class="copyright" data-v-25cfc117>Copyright © 2018-2024 HengShuai</p></div></footer><!--[--><!--]--></div></div>
<script>window.__VP_HASH_MAP__=JSON.parse("{\"article_2021_flex-layout.md\":\"C18Yiz6-\",\"article_2021_js-pattern.md\":\"B3mnhzCQ\",\"article_2021_performance-tools.md\":\"EGJzy3PC\",\"frontend_building-tool_base.md\":\"C2bYCofN\",\"frontend_canvas_base.md\":\"Cyiqbdp8\",\"frontend_canvas_magic-effects.md\":\"Di2Jvb-c\",\"frontend_cli_index.md\":\"D197pvK1\",\"frontend_compiler_index.md\":\"l4nHsS0O\",\"frontend_computer-network_arp-protocol.md\":\"a3wCrQAI\",\"frontend_computer-network_base.md\":\"DGE9_mhT\",\"frontend_browser_base.md\":\"_gPqfbA3\",\"article_2021_ts-decorator.md\":\"W7F_AaNh\",\"frontend_base.md\":\"DSt_ciaE\",\"article_2020_regexp-guide.md\":\"DlwPXehw\",\"article_2020_vscode-shortcut.md\":\"CNENOUfG\",\"article_base.md\":\"BQjzqxxE\",\"article_2021_vue-img-lazyload.md\":\"CCjAV2H9\",\"article_2020_web-cache.md\":\"CY85IamY\",\"article_2022_emoji-markup.md\":\"BLKC5XEp\",\"article_2021_vue-core-process.md\":\"DAv45Vmo\",\"frontend_babel_babel-analysis.md\":\"D-rFpE2w\",\"frontend_vue_slot.md\":\"DJp5LOVN\",\"frontend_vue_router.md\":\"Dms5ug72\",\"article_2019_css-center.md\":\"GY9FJm0G\",\"article_2019_js-copy.md\":\"DfsDTIMn\",\"article_2019_ktv-system.md\":\"Bt1wKYZR\",\"article_2019_js-type-transfer.md\":\"BADmP2e4\",\"article_2019_nvm-guide.md\":\"BViKgr_n\",\"article_2019_what-bfc.md\":\"Bw27OuN2\",\"article_2020_webpack-guide.md\":\"DP5tOGMl\",\"frontend_computer-network_http-protocol.md\":\"DjT9CkHk\",\"frontend_computer-network_ip-protocol.md\":\"Cml2jb06\",\"frontend_computer-network_tcp-protocol.md\":\"9SLW3jlo\",\"frontend_debug-skill_base.md\":\"DGuMdOAD\",\"article_2019_bind-call-apply.md\":\"C1rkXloc\",\"frontend_debug-skill_charles.md\":\"C2xvPkBF\",\"frontend_debug-skill_chrome.md\":\"Cmoy2JaR\",\"frontend_debug-skill_fiddler.md\":\"C0Mouqcn\",\"frontend_debug-skill_h5.md\":\"14xlAK6G\",\"frontend_debug-skill_vscode.md\":\"4pNxXeJ1\",\"frontend_performance_seo.md\":\"p9HnEpkm\",\"frontend_performance_virtual-scroll-1.md\":\"DxFaGVuk\",\"frontend_performance_virtual-scroll-2.md\":\"NM2V3k5u\",\"frontend_debug-skill_wireshark.md\":\"BoDGyjm5\",\"frontend_performance_web-score.md\":\"C9YSC2m0\",\"frontend_project-integration_base.md\":\"CUOFwdy6\",\"frontend_project-integration_build-tool.md\":\"C-KV8DZz\",\"frontend_project-integration_choose-editor.md\":\"BAIsc7wO\",\"frontend_project-integration_ci-pipeline.md\":\"hNPUBqzg\",\"frontend_project-integration_debugger-skill.md\":\"CAJpPlIv\",\"frontend_project-integration_deploy-specification.md\":\"DxlYlBU1\",\"frontend_project-integration_framework.md\":\"C_w96LJ4\",\"frontend_desktop-app_index.md\":\"DGRyYWsj\",\"frontend_project-integration_git-commit.md\":\"BFxquKww\",\"frontend_editor_index.md\":\"DTdFZqog\",\"frontend_flutter_base.md\":\"oyWyvI1R\",\"frontend_hybrid-app_base.md\":\"ChZulyzL\",\"frontend_js_async.md\":\"y6jd41At\",\"frontend_js_audio.md\":\"C7qh8UuP\",\"frontend_js_base.md\":\"DB-sqzJa\",\"frontend_project-integration_monorepo.md\":\"BCi_xKbe\",\"frontend_project-integration_specification.md\":\"cuINhRu9\",\"frontend_js_binary.md\":\"UJMRF6dQ\",\"frontend_project-integration_style.md\":\"Do65hVSW\",\"frontend_project-integration_test-framework.md\":\"BUSFM6BQ\",\"frontend_js_eventloop.md\":\"gavyMuBx\",\"frontend_js_implicit-conversion.md\":\"Ca1Nqtq8\",\"frontend_js_js-gc.md\":\"B0V1DzvV\",\"frontend_js_meta-coding.md\":\"CiUZJTOC\",\"frontend_js_proto-inherit.md\":\"D3ZE8dxd\",\"frontend_js_scope-closure.md\":\"N0KNJ4OC\",\"article_2019_promise.md\":\"DePg5gvm\",\"article_2020_domparser-xml.md\":\"GLcscUOk\",\"article_2020_optimize-web-server.md\":\"CnJxStmt\",\"talk_2023_dad-foot-injured.md\":\"NGcnm2K8\",\"talk_2023_lose-qoo-job.md\":\"BUm9smEP\",\"frontend_react_index.md\":\"D8m-rjh_\",\"frontend_render-mode_base.md\":\"B3q-wDLw\",\"frontend_ts_ts-configure.md\":\"BPsdYlcS\",\"frontend_visual_index.md\":\"DjuV7xCO\",\"frontend_lowcoding_base.md\":\"BG3mICMs\",\"frontend_vue_component-render.md\":\"CyM1jZtr\",\"frontend_vue_computed-watch.md\":\"CJ2fpMar\",\"frontend_vue_pinia.md\":\"BHuMFT3d\",\"article_2019_mysql-guide.md\":\"uU7r7DI5\",\"article_2021_pwa-app.md\":\"CfUCEQyr\",\"frontend_vue_transition.md\":\"DHQXBarb\",\"frontend_vue_update-process.md\":\"Ck8FNs_p\",\"frontend_vue_vuex.md\":\"BgZTY1gt\",\"frontend_wasm_base.md\":\"C9aVGwN_\",\"frontend_webpack_base.md\":\"DAmkX43x\",\"frontend_webpack_webpack-analysis.md\":\"C5IvAFE3\",\"frontend_monitor_base.md\":\"BTzY3mzQ\",\"frontend_webpack_webpack-loader.md\":\"CSTHA8dP\",\"frontend_webpack_webpack-node.md\":\"BIJCxg-y\",\"frontend_webpack_webpack-plugin.md\":\"ChMLfCEf\",\"fullstack_base.md\":\"BJpDDaFK\",\"fullstack_docker_base-tutorial.md\":\"BRZL4efL\",\"fullstack_docker_docker-compose.md\":\"CmeWHFyt\",\"frontend_nestjs_base.md\":\"D4mecXXP\",\"frontend_babel_base.md\":\"ByGQPrxK\",\"frontend_nestjs_mvc.md\":\"JwLC-w5D\",\"frontend_nestjs_swagger.md\":\"BH-JIogI\",\"frontend_node_base.md\":\"DGZrTqKo\",\"frontend_node_node-debug.md\":\"zEQViUcp\",\"frontend_node_node-framework.md\":\"BY4Ue--O\",\"frontend_node_node-measure.md\":\"vBgmM9UF\",\"frontend_node_node-process.md\":\"DM790f9P\",\"fullstack_docker_docker-repository.md\":\"Bqzp5cPB\",\"frontend_node_node-web.md\":\"OtQ37Vrs\",\"frontend_npm_index.md\":\"BE91utdg\",\"fullstack_docker_install-configure.md\":\"DjmD_1oD\",\"fullstack_docker_network.md\":\"BOWfhORy\",\"fullstack_docker_npm-repository.md\":\"BJqx-PME\",\"fullstack_docker_volume-store.md\":\"DpU_rmhd\",\"frontend_pattern_base.md\":\"BQmZWjx9\",\"frontend_babel_babel-plugin-guide.md\":\"CovU6OBJ\",\"fullstack_gitlab_gitlab-pipeline.md\":\"CNDv-1ln\",\"fullstack_gitlab_gitlab-runner-install-configure.md\":\"BpBw-psY\",\"frontend_micro-frontend_base.md\":\"CfKC2Zl-\",\"fullstack_gitlab_install-configure.md\":\"BWa2p6Yi\",\"fullstack_gitlab_npm-repository.md\":\"9Ddi6ctG\",\"fullstack_k8s_base.md\":\"Buemo2at\",\"index.md\":\"BT_9h1YE\",\"me.md\":\"D0rVJcD8\",\"talk_2023_second-covid.md\":\"C8RQniVs\",\"talk_base.md\":\"BSkS2_QD\",\"frontend_performance_cache-perf.md\":\"DqodLxPI\",\"frontend_performance_cache.md\":\"D159Iezr\",\"frontend_performance_chunk-upload.md\":\"CtDae8ft\",\"frontend_performance_load-perf.md\":\"WwYq9GSh\",\"frontend_performance_network-perf.md\":\"DrUTulNn\",\"frontend_performance_node-score.md\":\"CARE7Ren\",\"frontend_performance_performance.md\":\"DarwmV1A\",\"frontend_performance_range-download.md\":\"DsRq1xQk\",\"frontend_performance_secure-perf.md\":\"Dz4v0aNg\",\"frontend_regexp_base.md\":\"CshDyTkx\",\"fullstack_docker_dockerfile.md\":\"BRakHMmS\",\"fullstack_k8s_install.md\":\"D7y2zKeO\",\"frontend_vue_template-compiler.md\":\"CWrHx08F\",\"frontend_sandbox_index.md\":\"HstRTZs7\",\"frontend_ts_base.md\":\"B0UznJxe\",\"talk_2023_love-4th-anniversary.md\":\"CzMp2y8B\",\"frontend_micro-program_index.md\":\"B_syL9Bz\",\"frontend_performance_base.md\":\"OjzpSki6\",\"frontend_vue_reactivity.md\":\"BtuFLp9L\",\"frontend_nestjs_useful.md\":\"DC-j17lT\",\"frontend_nginx_base.md\":\"CUEHAW2x\",\"frontend_node-bff_index.md\":\"BBnQcJ7y\",\"super-nav_index.md\":\"DetDygdy\",\"frontend_node-optimize_index.md\":\"C2GewmSz\"}");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\":\"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\":\"Regexp\",\"link\":\"/frontend/regexp/base.html\"},{\"text\":\"Babel\",\"collapsed\":true,\"items\":[{\"text\":\"基本使用\",\"link\":\"/frontend/babel/base.html\"},{\"text\":\"原理分析\",\"link\":\"/frontend/babel/babel-analysis.html\"},{\"text\":\"自定义插件\",\"link\":\"/frontend/babel/babel-plugin-guide.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\":\"Building Tool\",\"link\":\"/frontend/building-tool/base.html\"},{\"text\":\"Debug Skill\",\"collapsed\":true,\"link\":\"/frontend/debug-skill/base.html\",\"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\":\"H5\",\"link\":\"/frontend/debug-skill/h5.html\"}]},{\"text\":\"NodeJS\",\"collapsed\":true,\"items\":[{\"text\":\"基本使用\",\"link\":\"/frontend/node/base.html\"},{\"text\":\"web服务\",\"link\":\"/frontend/node/node-web.html\"},{\"text\":\"多进程与多线程\",\"link\":\"/frontend/node/node-process.html\"},{\"text\":\"常见框架\",\"link\":\"/frontend/node/node-framework.html\"},{\"text\":\"调试技巧\",\"link\":\"/frontend/node/node-debug.html\"},{\"text\":\"性能优化\",\"link\":\"/frontend/node/node-measure.html\"}]},{\"text\":\"Typescript\",\"collapsed\":true,\"items\":[{\"text\":\"1.基本使用\",\"link\":\"/frontend/ts/base.html\"},{\"text\":\"2.配置文件\",\"link\":\"/frontend/ts/ts-configure.html\"}]},{\"text\":\"NestJS\",\"collapsed\":true,\"items\":[{\"text\":\"1.基本使用\",\"link\":\"/frontend/nestjs/base.html\"},{\"text\":\"2.搭建web服务\",\"link\":\"/frontend/nestjs/mvc.html\"},{\"text\":\"3.swagger文档\",\"link\":\"/frontend/nestjs/swagger.html\"},{\"text\":\"4.实用手册\",\"link\":\"/frontend/nestjs/useful.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\":\"Computer Network\",\"collapsed\":true,\"link\":\"/frontend/computer-network/base.html\",\"items\":[{\"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\":\"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\":\"Design Pattern\",\"link\":\"/frontend/pattern/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\",\"link\":\"/frontend/flutter/base.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\":\"Kubernetes\",\"items\":[{\"items\":[{\"text\":\"初识kubernetes\",\"link\":\"/fullstack/k8s/base.html\"},{\"text\":\"搭建k8s集群\",\"link\":\"/fullstack/k8s/install.html\"}]}]}],\"/article/\":[{\"text\":\"2022\",\"items\":[{\"items\":[{\"text\":\"emoji markup\",\"link\":\"/article/2022/emoji-markup.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\":\"/article/2021/js-pattern.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\":\"/article/2020/regexp-guide.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\":\"/article/2019/js-type-transfer.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\"}]}]}],\"/talk/\":[{\"items\":[{\"items\":[{\"text\":\"我也赶上了裁员\",\"link\":\"/talk/2023/lose-qoo-job.html\"},{\"text\":\"我爸脚受伤了\",\"link\":\"/talk/2023/dad-foot-injured.html\"},{\"text\":\"二🐑了\",\"link\":\"/talk/2023/second-covid.html\"}]}]}]},\"lastUpdated\":{\"text\":\"最近更新\",\"formatOptions\":{\"dateStyle\":\"medium\"}},\"footer\":{\"message\":\"Released under the MIT License.\",\"copyright\":\"Copyright © 2018-2024 HengShuai\"},\"search\":{\"options\":{\"detailedView\":true,\"miniSearch\":{\"searchOptions\":{\"fields\":[\"title\",\"text\"]}}},\"provider\":\"local\"}},\"locales\":{},\"scrollOffset\":134,\"cleanUrls\":false}");</script>
</body>
</html>