app.b419507c.js 731 KB

1234567891011121314151617181920212223
  1. (window.webpackJsonp=window.webpackJsonp||[]).push([[0],[]]);!function(e){function t(t){for(var l,s,i=t[0],o=t[1],c=t[2],u=0,d=[];u<i.length;u++)s=i[u],Object.prototype.hasOwnProperty.call(n,s)&&n[s]&&d.push(n[s][0]),n[s]=0;for(l in o)Object.prototype.hasOwnProperty.call(o,l)&&(e[l]=o[l]);for(p&&p(t);d.length;)d.shift()();return r.push.apply(r,c||[]),a()}function a(){for(var e,t=0;t<r.length;t++){for(var a=r[t],l=!0,i=1;i<a.length;i++){var o=a[i];0!==n[o]&&(l=!1)}l&&(r.splice(t--,1),e=s(s.s=a[0]))}return e}var l={},n={1:0},r=[];function s(t){if(l[t])return l[t].exports;var a=l[t]={i:t,l:!1,exports:{}};return e[t].call(a.exports,a,a.exports,s),a.l=!0,a.exports}s.e=function(e){var t=[],a=n[e];if(0!==a)if(a)t.push(a[2]);else{var l=new Promise((function(t,l){a=n[e]=[t,l]}));t.push(a[2]=l);var r,i=document.createElement("script");i.charset="utf-8",i.timeout=120,s.nc&&i.setAttribute("nonce",s.nc),i.src=function(e){return s.p+"assets/js/"+({}[e]||e)+"."+{2:"602aac03",3:"aec45124",4:"6a499ed7",5:"48f0d794",6:"1505523f",7:"b38bde58",8:"f710ef8c",9:"bf9d8b8d",10:"05bc42d6",11:"803b5050",12:"68f9aa15",13:"b2f4726e",14:"8dc92978",15:"c32eb5e6",16:"ce96f674",17:"a693fe7f",18:"6df3c873",19:"6ffd68ce",20:"d994b814",21:"2587b99c",22:"cbb873e2",23:"3392ec01",24:"736495d8",25:"8f5cf322",26:"67d8ecd5",27:"05800199",28:"72a4cebd",29:"f8d2f7c1",30:"0ac25def",31:"4d385616",32:"ab6922e1",33:"22aedb73",34:"1176b400",35:"d4d05428",36:"6dd0dde1",37:"4af0c50a",38:"1a98317a",39:"8383d231",40:"ea1ea46b",41:"29846640",42:"9c906181",43:"344bd56a",44:"e23af589",45:"fa09e088",46:"ddf18f6d",47:"593a3a96",48:"fb21c024",49:"5bb86e0c",50:"0fb55bed",51:"a38b4abd",52:"70f6922c",53:"c7e04159",54:"ff09ad12",55:"57d17d47",56:"a58b3cc3",57:"9de5f95b",58:"d15857bf",59:"ff3f0900",60:"bc9edb0a",61:"ec369f58",62:"75c1dd19",63:"a932b576",64:"d821c8d4",65:"c48ce70a",66:"6fc46ec0",67:"5a70400c",68:"6a172c1e",69:"d878fdd4",70:"61fcea39",71:"b4f867d8",72:"d6eafa00",73:"7937e89b",74:"3ff087d7",75:"97ca5f60",76:"ece1fc97",77:"95cdf309",78:"da225d8a",79:"ae629400",80:"cf6d2811",81:"6c5fdca6",82:"245ed394",83:"4b549b0f",84:"17cebe69",85:"b1179a10",86:"ad526400",87:"2eef9fa1",88:"92f778ed",89:"efe59f09",90:"26e610ca",91:"f78cb514",92:"d7983929",93:"20272a60",94:"245150bc",95:"6f0e48c2",96:"02cf7f8b",97:"a9438771",98:"12762ccb",99:"ddbea38c",100:"93782085",101:"49f33592",102:"b391aaca",103:"b5c297df",104:"1b8956b0",105:"4af5ed2a",106:"f5ff0141",107:"9b0935ed",108:"a3b3e687",109:"0faeea62",110:"05696e77",111:"33bbfeaf",112:"cc349461",113:"ee6a59a5",114:"837d6a71",115:"035a54c0",116:"bffbfdca",117:"effbf98c",118:"a2ce28a1",119:"da6e315d",120:"edc4f23e",121:"67388947",122:"0e892f37",123:"9c12e399",124:"e265d82a",125:"07ad81ea",126:"30be0256",127:"daf6f659",128:"c3aa5522",129:"60c2ac70",130:"283b36c2",131:"36fd29f9",132:"aa486fed",133:"5244b658",134:"5d546ce7",135:"efe5189e",136:"0e15e278",137:"9ed0177b",138:"0b8bc204",139:"cc005358",140:"bc32a870",141:"acfd1af2",142:"4acb4dd6",143:"8182807e",144:"20a6c974",145:"f3a9911c",146:"3ed86675",147:"fa9b3898",148:"f498d3e2",149:"3fe441c6",150:"6d73379d",151:"4916058e",152:"42f788ce",153:"57ac80e4",154:"46b3a2b3",155:"f16ed794",156:"7004ac8c",157:"54029a82",158:"d1a36e56",159:"e3aba89f",160:"da511416",161:"e4fc79bf",162:"f214074e",163:"4bf1ce2d",164:"50c2a26a",165:"3fadd30d",166:"b46fceba",167:"6c6747d8",168:"87ccce63",169:"e1e1c58b",170:"755abdff",171:"a6b69067",172:"52c10d67",173:"568ec26d",174:"f6ff5c51",175:"f2d646a9",176:"2fd93f9c",177:"fc5683f6",178:"432e7e1f",179:"e63b01b0",180:"7a136172",181:"6e78e56b",182:"73d2f94a",183:"dce8f42f",184:"94ec7685",185:"c3561080",186:"63b6c4b4",187:"b1ca4046",188:"6525cd10",189:"fdd57a16",190:"8d9ac4f5",191:"f19beada",192:"bcd02302",193:"05afb721",194:"698e74d2",195:"70ee23b9",196:"14c12f32",197:"52e07cb7",198:"6312a976",199:"600b8211",200:"1658389e",201:"f2ecc5d4",202:"05a5bb1c",203:"893b83ad",204:"a90c3691",205:"d82fb971",206:"00e0b021",207:"a5dbb279",208:"d15bb006",209:"00d63e46",210:"b256d7b8",211:"be264f59",212:"9956352d",213:"6144a981",214:"926fcb0b",215:"19148b26",216:"f56e94aa",217:"c5a75265",218:"1d08fa09",219:"11d14310",220:"31c10a26",221:"b95f8a68",222:"79b831b9",223:"23d684a8",224:"86b7a46d",225:"ba05abd3",226:"759b748e",227:"c26a7240",228:"de29829d",229:"83cf7341",230:"d239ed00",231:"ddfd0758",232:"6b57acfb",233:"a104a750",234:"3d041b0e",235:"9e19c5d0",236:"9f300061",237:"9fb8d4bd",238:"ceec05fc"}[e]+".js"}(e);var o=new Error;r=function(t){i.onerror=i.onload=null,clearTimeout(c);var a=n[e];if(0!==a){if(a){var l=t&&("load"===t.type?"missing":t.type),r=t&&t.target&&t.target.src;o.message="Loading chunk "+e+" failed.\n("+l+": "+r+")",o.name="ChunkLoadError",o.type=l,o.request=r,a[1](o)}n[e]=void 0}};var c=setTimeout((function(){r({type:"timeout",target:i})}),12e4);i.onerror=i.onload=r,document.head.appendChild(i)}return Promise.all(t)},s.m=e,s.c=l,s.d=function(e,t,a){s.o(e,t)||Object.defineProperty(e,t,{enumerable:!0,get:a})},s.r=function(e){"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},s.t=function(e,t){if(1&t&&(e=s(e)),8&t)return e;if(4&t&&"object"==typeof e&&e&&e.__esModule)return e;var a=Object.create(null);if(s.r(a),Object.defineProperty(a,"default",{enumerable:!0,value:e}),2&t&&"string"!=typeof e)for(var l in e)s.d(a,l,function(t){return e[t]}.bind(null,l));return a},s.n=function(e){var t=e&&e.__esModule?function(){return e.default}:function(){return e};return s.d(t,"a",t),t},s.o=function(e,t){return Object.prototype.hasOwnProperty.call(e,t)},s.p="/blog/",s.oe=function(e){throw console.error(e),e};var i=window.webpackJsonp=window.webpackJsonp||[],o=i.push.bind(i);i.push=t,i=i.slice();for(var c=0;c<i.length;c++)t(i[c]);var p=o;r.push([99,0]),a()}([function(e,t,a){var l=a(54),n=l.all;e.exports=l.IS_HTMLDDA?function(e){return"function"==typeof e||e===n}:function(e){return"function"==typeof e}},function(e,t){var a=function(e){return e&&e.Math==Math&&e};e.exports=a("object"==typeof globalThis&&globalThis)||a("object"==typeof window&&window)||a("object"==typeof self&&self)||a("object"==typeof global&&global)||function(){return this}()||Function("return this")()},function(e,t){e.exports=function(e){try{return!!e()}catch(e){return!0}}},function(e,t,a){"use strict";function l(e,t,a,l,n,r,s,i){var o,c="function"==typeof e?e.options:e;if(t&&(c.render=t,c.staticRenderFns=a,c._compiled=!0),l&&(c.functional=!0),r&&(c._scopeId="data-v-"+r),s?(o=function(e){(e=e||this.$vnode&&this.$vnode.ssrContext||this.parent&&this.parent.$vnode&&this.parent.$vnode.ssrContext)||"undefined"==typeof __VUE_SSR_CONTEXT__||(e=__VUE_SSR_CONTEXT__),n&&n.call(this,e),e&&e._registeredComponents&&e._registeredComponents.add(s)},c._ssrRegister=o):n&&(o=i?function(){n.call(this,(c.functional?this.parent:this).$root.$options.shadowRoot)}:n),o)if(c.functional){c._injectStyles=o;var p=c.render;c.render=function(e,t){return o.call(t),p(e,t)}}else{var u=c.beforeCreate;c.beforeCreate=u?[].concat(u,o):[o]}return{exports:e,options:c}}a.d(t,"a",(function(){return l}))},function(e,t,a){var l=a(30),n=Function.prototype,r=n.call,s=l&&n.bind.bind(r,r);e.exports=l?s:function(e){return function(){return r.apply(e,arguments)}}},function(e,t){var a=Array.isArray;e.exports=a},function(e,t,a){var l=a(2);e.exports=!l((function(){return 7!=Object.defineProperty({},1,{get:function(){return 7}})[1]}))},function(e,t,a){var l=a(4),n=a(35),r=l({}.hasOwnProperty);e.exports=Object.hasOwn||function(e,t){return r(n(e),t)}},function(e,t,a){var l=a(70),n="object"==typeof self&&self&&self.Object===Object&&self,r=l||n||Function("return this")();e.exports=r},function(e,t,a){var l=a(0),n=a(54),r=n.all;e.exports=n.IS_HTMLDDA?function(e){return"object"==typeof e?null!==e:l(e)||e===r}:function(e){return"object"==typeof e?null!==e:l(e)}},function(e,t,a){var l=a(163),n=a(166);e.exports=function(e,t){var a=n(e,t);return l(a)?a:void 0}},function(e,t,a){"use strict";a.d(t,"e",(function(){return l})),a.d(t,"b",(function(){return r})),a.d(t,"j",(function(){return s})),a.d(t,"g",(function(){return o})),a.d(t,"h",(function(){return c})),a.d(t,"i",(function(){return p})),a.d(t,"c",(function(){return u})),a.d(t,"f",(function(){return d})),a.d(t,"l",(function(){return h})),a.d(t,"m",(function(){return g})),a.d(t,"d",(function(){return f})),a.d(t,"k",(function(){return m})),a.d(t,"n",(function(){return b})),a.d(t,"a",(function(){return y}));a(16);const l=/#.*$/,n=/\.(md|html)$/,r=/\/$/,s=/^[a-z]+:/i;function i(e){return decodeURI(e).replace(l,"").replace(n,"")}function o(e){return s.test(e)}function c(e){return/^mailto:/.test(e)}function p(e){return/^tel:/.test(e)}function u(e){if(o(e))return e;if(!e)return"404";const t=e.match(l),a=t?t[0]:"",n=i(e);return r.test(n)?e:n+".html"+a}function d(e,t){const a=e.hash,n=function(e){const t=e&&e.match(l);if(t)return t[0]}(t);if(n&&a!==n)return!1;return i(e.path)===i(t)}function h(e,t,a){if(o(t))return{type:"external",path:t};a&&(t=function(e,t,a){const l=e.charAt(0);if("/"===l)return e;if("?"===l||"#"===l)return t+e;const n=t.split("/");a&&n[n.length-1]||n.pop();const r=e.replace(/^\//,"").split("/");for(let e=0;e<r.length;e++){const t=r[e];".."===t?n.pop():"."!==t&&n.push(t)}""!==n[0]&&n.unshift("");return n.join("/")}(t,a));const l=i(t);for(let t=0;t<e.length;t++)if(i(e[t].regularPath)===l)return Object.assign({},e[t],{type:"page",path:u(e[t].path)});return console.error(`[vuepress] No matching page found for sidebar item "${t}"`),{}}function g(e,t,a,l){const{pages:n,themeConfig:r}=a,s=l&&r.locales&&r.locales[l]||r;if("auto"===(e.frontmatter.sidebar||s.sidebar||r.sidebar))return v(e);const i=s.sidebar||r.sidebar;if(i){const{base:a,config:l}=function(e,t){if(Array.isArray(t))return{base:"/",config:t};for(const l in t)if(0===(a=e,/(\.html|\/)$/.test(a)?a:a+"/").indexOf(encodeURI(l)))return{base:l,config:t[l]};var a;return{}}(t,i);return"auto"===l?v(e):l?l.map(e=>function e(t,a,l,n=1){if("string"==typeof t)return h(a,t,l);if(Array.isArray(t))return Object.assign(h(a,t[0],l),{title:t[1]});{n>3&&console.error("[vuepress] detected a too deep nested sidebar group.");const r=t.children||[];return 0===r.length&&t.path?Object.assign(h(a,t.path,l),{title:t.title}):{type:"group",path:t.path,title:t.title,sidebarDepth:t.sidebarDepth,initialOpenGroupIndex:t.initialOpenGroupIndex,children:r.map(t=>e(t,a,l,n+1)),collapsable:!1!==t.collapsable}}}(e,n,a)):[]}return[]}function v(e){const t=f(e.headers||[]);return[{type:"group",collapsable:!1,title:e.title,path:null,children:t.map(t=>({type:"auto",title:t.title,basePath:e.path,path:e.path+"#"+t.slug,children:t.children||[]}))}]}function f(e){let t;return(e=e.map(e=>Object.assign({},e))).forEach(e=>{2===e.level?t=e:t&&(t.children||(t.children=[])).push(e)}),e.filter(e=>2===e.level)}function m(e){return Object.assign(e,{type:e.items&&e.items.length?"links":"link"})}function b(e){return Object.prototype.toString.call(e).match(/\[object (.*?)\]/)[1].toLowerCase()}function E(e){let t=e.frontmatter.date||e.lastUpdated||new Date,a=new Date(t);return"Invalid Date"==a&&t&&(a=new Date(t.replace(/-/g,"/"))),a.getTime()}function y(e,t){return E(t)-E(e)}},function(e,t){e.exports=function(e){return null!=e&&"object"==typeof e}},function(e,t,a){var l=a(15),n=a(148),r=a(149),s=l?l.toStringTag:void 0;e.exports=function(e){return null==e?void 0===e?"[object Undefined]":"[object Null]":s&&s in Object(e)?n(e):r(e)}},function(e,t,a){var l=a(6),n=a(64),r=a(108),s=a(36),i=a(53),o=TypeError,c=Object.defineProperty,p=Object.getOwnPropertyDescriptor;t.f=l?r?function(e,t,a){if(s(e),t=i(t),s(a),"function"==typeof e&&"prototype"===t&&"value"in a&&"writable"in a&&!a.writable){var l=p(e,t);l&&l.writable&&(e[t]=a.value,a={configurable:"configurable"in a?a.configurable:l.configurable,enumerable:"enumerable"in a?a.enumerable:l.enumerable,writable:!1})}return c(e,t,a)}:c:function(e,t,a){if(s(e),t=i(t),s(a),n)try{return c(e,t,a)}catch(e){}if("get"in a||"set"in a)throw o("Accessors not supported");return"value"in a&&(e[t]=a.value),e}},function(e,t,a){var l=a(8).Symbol;e.exports=l},function(e,t,a){"use strict";var l=a(17),n=a(35),r=a(37),s=a(129),i=a(131),o=a(2)((function(){return 4294967297!==[].push.call({length:4294967296},1)})),c=!function(){try{Object.defineProperty([],"length",{writable:!1}).push()}catch(e){return e instanceof TypeError}}();l({target:"Array",proto:!0,arity:1,forced:o||c},{push:function(e){var t=n(this),a=r(t),l=arguments.length;i(a+l);for(var o=0;o<l;o++)t[a]=arguments[o],a++;return s(t,a),a}})},function(e,t,a){var l=a(1),n=a(49).f,r=a(21),s=a(109),i=a(34),o=a(66),c=a(125);e.exports=function(e,t){var a,p,u,d,h,g=e.target,v=e.global,f=e.stat;if(a=v?l:f?l[g]||i(g,{}):(l[g]||{}).prototype)for(p in t){if(d=t[p],u=e.dontCallGetSet?(h=n(a,p))&&h.value:a[p],!c(v?p:g+(f?".":"#")+p,e.forced)&&void 0!==u){if(typeof d==typeof u)continue;o(d,u)}(e.sham||u&&u.sham)&&r(d,"sham",!0),s(a,p,d,e)}}},function(e,t,a){var l=a(4),n=l({}.toString),r=l("".slice);e.exports=function(e){return r(n(e),8,-1)}},function(e,t,a){var l=a(1),n=a(0),r=function(e){return n(e)?e:void 0};e.exports=function(e,t){return arguments.length<2?r(l[e]):l[e]&&l[e][t]}},function(e,t,a){var l=a(1),n=a(61),r=a(7),s=a(63),i=a(58),o=a(57),c=n("wks"),p=l.Symbol,u=p&&p.for,d=o?p:p&&p.withoutSetter||s;e.exports=function(e){if(!r(c,e)||!i&&"string"!=typeof c[e]){var t="Symbol."+e;i&&r(p,e)?c[e]=p[e]:c[e]=o&&u?u(t):d(t)}return c[e]}},function(e,t,a){var l=a(6),n=a(14),r=a(31);e.exports=l?function(e,t,a){return n.f(e,t,r(1,a))}:function(e,t,a){return e[t]=a,e}},function(e,t,a){var l=a(153),n=a(154),r=a(155),s=a(156),i=a(157);function o(e){var t=-1,a=null==e?0:e.length;for(this.clear();++t<a;){var l=e[t];this.set(l[0],l[1])}}o.prototype.clear=l,o.prototype.delete=n,o.prototype.get=r,o.prototype.has=s,o.prototype.set=i,e.exports=o},function(e,t,a){var l=a(72);e.exports=function(e,t){for(var a=e.length;a--;)if(l(e[a][0],t))return a;return-1}},function(e,t,a){var l=a(10)(Object,"create");e.exports=l},function(e,t,a){var l=a(175);e.exports=function(e,t){var a=e.__data__;return l(t)?a["string"==typeof t?"string":"hash"]:a.map}},function(e,t,a){var l=a(45);e.exports=function(e){if("string"==typeof e||l(e))return e;var t=e+"";return"0"==t&&1/e==-1/0?"-0":t}},function(e,t,a){var l,n;
  2. /* NProgress, (c) 2013, 2014 Rico Sta. Cruz - http://ricostacruz.com/nprogress
  3. * @license MIT */void 0===(n="function"==typeof(l=function(){var e,t,a={version:"0.2.0"},l=a.settings={minimum:.08,easing:"ease",positionUsing:"",speed:200,trickle:!0,trickleRate:.02,trickleSpeed:800,showSpinner:!0,barSelector:'[role="bar"]',spinnerSelector:'[role="spinner"]',parent:"body",template:'<div class="bar" role="bar"><div class="peg"></div></div><div class="spinner" role="spinner"><div class="spinner-icon"></div></div>'};function n(e,t,a){return e<t?t:e>a?a:e}function r(e){return 100*(-1+e)}a.configure=function(e){var t,a;for(t in e)void 0!==(a=e[t])&&e.hasOwnProperty(t)&&(l[t]=a);return this},a.status=null,a.set=function(e){var t=a.isStarted();e=n(e,l.minimum,1),a.status=1===e?null:e;var o=a.render(!t),c=o.querySelector(l.barSelector),p=l.speed,u=l.easing;return o.offsetWidth,s((function(t){""===l.positionUsing&&(l.positionUsing=a.getPositioningCSS()),i(c,function(e,t,a){var n;return(n="translate3d"===l.positionUsing?{transform:"translate3d("+r(e)+"%,0,0)"}:"translate"===l.positionUsing?{transform:"translate("+r(e)+"%,0)"}:{"margin-left":r(e)+"%"}).transition="all "+t+"ms "+a,n}(e,p,u)),1===e?(i(o,{transition:"none",opacity:1}),o.offsetWidth,setTimeout((function(){i(o,{transition:"all "+p+"ms linear",opacity:0}),setTimeout((function(){a.remove(),t()}),p)}),p)):setTimeout(t,p)})),this},a.isStarted=function(){return"number"==typeof a.status},a.start=function(){a.status||a.set(0);var e=function(){setTimeout((function(){a.status&&(a.trickle(),e())}),l.trickleSpeed)};return l.trickle&&e(),this},a.done=function(e){return e||a.status?a.inc(.3+.5*Math.random()).set(1):this},a.inc=function(e){var t=a.status;return t?("number"!=typeof e&&(e=(1-t)*n(Math.random()*t,.1,.95)),t=n(t+e,0,.994),a.set(t)):a.start()},a.trickle=function(){return a.inc(Math.random()*l.trickleRate)},e=0,t=0,a.promise=function(l){return l&&"resolved"!==l.state()?(0===t&&a.start(),e++,t++,l.always((function(){0==--t?(e=0,a.done()):a.set((e-t)/e)})),this):this},a.render=function(e){if(a.isRendered())return document.getElementById("nprogress");c(document.documentElement,"nprogress-busy");var t=document.createElement("div");t.id="nprogress",t.innerHTML=l.template;var n,s=t.querySelector(l.barSelector),o=e?"-100":r(a.status||0),p=document.querySelector(l.parent);return i(s,{transition:"all 0 linear",transform:"translate3d("+o+"%,0,0)"}),l.showSpinner||(n=t.querySelector(l.spinnerSelector))&&d(n),p!=document.body&&c(p,"nprogress-custom-parent"),p.appendChild(t),t},a.remove=function(){p(document.documentElement,"nprogress-busy"),p(document.querySelector(l.parent),"nprogress-custom-parent");var e=document.getElementById("nprogress");e&&d(e)},a.isRendered=function(){return!!document.getElementById("nprogress")},a.getPositioningCSS=function(){var e=document.body.style,t="WebkitTransform"in e?"Webkit":"MozTransform"in e?"Moz":"msTransform"in e?"ms":"OTransform"in e?"O":"";return t+"Perspective"in e?"translate3d":t+"Transform"in e?"translate":"margin"};var s=function(){var e=[];function t(){var a=e.shift();a&&a(t)}return function(a){e.push(a),1==e.length&&t()}}(),i=function(){var e=["Webkit","O","Moz","ms"],t={};function a(a){return a=a.replace(/^-ms-/,"ms-").replace(/-([\da-z])/gi,(function(e,t){return t.toUpperCase()})),t[a]||(t[a]=function(t){var a=document.body.style;if(t in a)return t;for(var l,n=e.length,r=t.charAt(0).toUpperCase()+t.slice(1);n--;)if((l=e[n]+r)in a)return l;return t}(a))}function l(e,t,l){t=a(t),e.style[t]=l}return function(e,t){var a,n,r=arguments;if(2==r.length)for(a in t)void 0!==(n=t[a])&&t.hasOwnProperty(a)&&l(e,a,n);else l(e,r[1],r[2])}}();function o(e,t){return("string"==typeof e?e:u(e)).indexOf(" "+t+" ")>=0}function c(e,t){var a=u(e),l=a+t;o(a,t)||(e.className=l.substring(1))}function p(e,t){var a,l=u(e);o(e,t)&&(a=l.replace(" "+t+" "," "),e.className=a.substring(1,a.length-1))}function u(e){return(" "+(e.className||"")+" ").replace(/\s+/gi," ")}function d(e){e&&e.parentNode&&e.parentNode.removeChild(e)}return a})?l.call(t,a,t,e):l)||(e.exports=n)},function(e){e.exports=JSON.parse('{"name":"vuepress-plugin-comment","version":"0.7.3","description":"Comment plugin in vuepress, such as Gitalk, Valine...","main":"index.js","scripts":{"test":"echo \\"Error: no test specified\\" && exit 1"},"repository":{"type":"git","url":"git+ssh://git@github.com/dongyuanxin/vuepress-plugin-comment.git"},"keywords":["vuepress","comment","plugin","vue","gitalk","valine"],"author":"dongyuanxin","license":"MIT","bugs":{"url":"https://github.com/dongyuanxin/vuepress-plugin-comment/issues"},"homepage":"https://github.com/dongyuanxin/vuepress-plugin-comment#readme","dependencies":{"ejs":"^2.6.1","gitalk":"^1.5.0","gitalk-fix":"^1.5.2","i":"^0.3.6","npm":"^6.9.0","valine":"^1.3.9"}}')},function(e,t,a){var l=a(30),n=Function.prototype.call;e.exports=l?n.bind(n):function(){return n.apply(n,arguments)}},function(e,t,a){var l=a(2);e.exports=!l((function(){var e=function(){}.bind();return"function"!=typeof e||e.hasOwnProperty("prototype")}))},function(e,t){e.exports=function(e,t){return{enumerable:!(1&e),configurable:!(2&e),writable:!(4&e),value:t}}},function(e,t,a){var l=a(50),n=a(51);e.exports=function(e){return l(n(e))}},function(e,t,a){var l=a(1),n=a(34),r=l["__core-js_shared__"]||n("__core-js_shared__",{});e.exports=r},function(e,t,a){var l=a(1),n=Object.defineProperty;e.exports=function(e,t){try{n(l,e,{value:t,configurable:!0,writable:!0})}catch(a){l[e]=t}return t}},function(e,t,a){var l=a(51),n=Object;e.exports=function(e){return n(l(e))}},function(e,t,a){var l=a(9),n=String,r=TypeError;e.exports=function(e){if(l(e))return e;throw r(n(e)+" is not an object")}},function(e,t,a){var l=a(122);e.exports=function(e){return l(e.length)}},function(e,t,a){var l=a(147),n=a(12),r=Object.prototype,s=r.hasOwnProperty,i=r.propertyIsEnumerable,o=l(function(){return arguments}())?l:function(e){return n(e)&&s.call(e,"callee")&&!i.call(e,"callee")};e.exports=o},function(e,t,a){var l=a(10)(a(8),"Map");e.exports=l},function(e,t){e.exports=function(e){var t=typeof e;return null!=e&&("object"==t||"function"==t)}},function(e,t,a){var l=a(167),n=a(174),r=a(176),s=a(177),i=a(178);function o(e){var t=-1,a=null==e?0:e.length;for(this.clear();++t<a;){var l=e[t];this.set(l[0],l[1])}}o.prototype.clear=l,o.prototype.delete=n,o.prototype.get=r,o.prototype.has=s,o.prototype.set=i,e.exports=o},function(e,t){e.exports=function(e){var t=-1,a=Array(e.size);return e.forEach((function(e){a[++t]=e})),a}},function(e,t){e.exports=function(e){return"number"==typeof e&&e>-1&&e%1==0&&e<=9007199254740991}},function(e,t,a){var l=a(5),n=a(45),r=/\.|\[(?:[^[\]]*|(["'])(?:(?!\1)[^\\]|\\.)*?\1)\]/,s=/^\w*$/;e.exports=function(e,t){if(l(e))return!1;var a=typeof e;return!("number"!=a&&"symbol"!=a&&"boolean"!=a&&null!=e&&!n(e))||(s.test(e)||!r.test(e)||null!=t&&e in Object(t))}},function(e,t,a){var l=a(13),n=a(12);e.exports=function(e){return"symbol"==typeof e||n(e)&&"[object Symbol]"==l(e)}},function(e,t){e.exports=function(e){return e}},function(e,t){e.exports=function(e){return e.webpackPolyfill||(e.deprecate=function(){},e.paths=[],e.children||(e.children=[]),Object.defineProperty(e,"loaded",{enumerable:!0,get:function(){return e.l}}),Object.defineProperty(e,"id",{enumerable:!0,get:function(){return e.i}}),e.webpackPolyfill=1),e}},function(e,t){var a=/^\s+|\s+$/g,l=/^[-+]0x[0-9a-f]+$/i,n=/^0b[01]+$/i,r=/^0o[0-7]+$/i,s=parseInt,i="object"==typeof global&&global&&global.Object===Object&&global,o="object"==typeof self&&self&&self.Object===Object&&self,c=i||o||Function("return this")(),p=Object.prototype.toString,u=Math.max,d=Math.min,h=function(){return c.Date.now()};function g(e){var t=typeof e;return!!e&&("object"==t||"function"==t)}function v(e){if("number"==typeof e)return e;if(function(e){return"symbol"==typeof e||function(e){return!!e&&"object"==typeof e}(e)&&"[object Symbol]"==p.call(e)}(e))return NaN;if(g(e)){var t="function"==typeof e.valueOf?e.valueOf():e;e=g(t)?t+"":t}if("string"!=typeof e)return 0===e?e:+e;e=e.replace(a,"");var i=n.test(e);return i||r.test(e)?s(e.slice(2),i?2:8):l.test(e)?NaN:+e}e.exports=function(e,t,a){var l,n,r,s,i,o,c=0,p=!1,f=!1,m=!0;if("function"!=typeof e)throw new TypeError("Expected a function");function b(t){var a=l,r=n;return l=n=void 0,c=t,s=e.apply(r,a)}function E(e){return c=e,i=setTimeout(B,t),p?b(e):s}function y(e){var a=e-o;return void 0===o||a>=t||a<0||f&&e-c>=r}function B(){var e=h();if(y(e))return A(e);i=setTimeout(B,function(e){var a=t-(e-o);return f?d(a,r-(e-c)):a}(e))}function A(e){return i=void 0,m&&l?b(e):(l=n=void 0,s)}function x(){var e=h(),a=y(e);if(l=arguments,n=this,o=e,a){if(void 0===i)return E(o);if(f)return i=setTimeout(B,t),b(o)}return void 0===i&&(i=setTimeout(B,t)),s}return t=v(t)||0,g(a)&&(p=!!a.leading,r=(f="maxWait"in a)?u(v(a.maxWait)||0,t):r,m="trailing"in a?!!a.trailing:m),x.cancel=function(){void 0!==i&&clearTimeout(i),c=0,l=o=n=i=void 0},x.flush=function(){return void 0===i?s:A(h())},x}},function(e,t,a){var l=a(6),n=a(29),r=a(101),s=a(31),i=a(32),o=a(53),c=a(7),p=a(64),u=Object.getOwnPropertyDescriptor;t.f=l?u:function(e,t){if(e=i(e),t=o(t),p)try{return u(e,t)}catch(e){}if(c(e,t))return s(!n(r.f,e,t),e[t])}},function(e,t,a){var l=a(4),n=a(2),r=a(18),s=Object,i=l("".split);e.exports=n((function(){return!s("z").propertyIsEnumerable(0)}))?function(e){return"String"==r(e)?i(e,""):s(e)}:s},function(e,t,a){var l=a(52),n=TypeError;e.exports=function(e){if(l(e))throw n("Can't call method on "+e);return e}},function(e,t){e.exports=function(e){return null==e}},function(e,t,a){var l=a(102),n=a(55);e.exports=function(e){var t=l(e,"string");return n(t)?t:t+""}},function(e,t){var a="object"==typeof document&&document.all,l=void 0===a&&void 0!==a;e.exports={all:a,IS_HTMLDDA:l}},function(e,t,a){var l=a(19),n=a(0),r=a(56),s=a(57),i=Object;e.exports=s?function(e){return"symbol"==typeof e}:function(e){var t=l("Symbol");return n(t)&&r(t.prototype,i(e))}},function(e,t,a){var l=a(4);e.exports=l({}.isPrototypeOf)},function(e,t,a){var l=a(58);e.exports=l&&!Symbol.sham&&"symbol"==typeof Symbol.iterator},function(e,t,a){var l=a(59),n=a(2);e.exports=!!Object.getOwnPropertySymbols&&!n((function(){var e=Symbol();return!String(e)||!(Object(e)instanceof Symbol)||!Symbol.sham&&l&&l<41}))},function(e,t,a){var l,n,r=a(1),s=a(103),i=r.process,o=r.Deno,c=i&&i.versions||o&&o.version,p=c&&c.v8;p&&(n=(l=p.split("."))[0]>0&&l[0]<4?1:+(l[0]+l[1])),!n&&s&&(!(l=s.match(/Edge\/(\d+)/))||l[1]>=74)&&(l=s.match(/Chrome\/(\d+)/))&&(n=+l[1]),e.exports=n},function(e,t,a){var l=a(0),n=a(105),r=TypeError;e.exports=function(e){if(l(e))return e;throw r(n(e)+" is not a function")}},function(e,t,a){var l=a(62),n=a(33);(e.exports=function(e,t){return n[e]||(n[e]=void 0!==t?t:{})})("versions",[]).push({version:"3.26.1",mode:l?"pure":"global",copyright:"© 2014-2022 Denis Pushkarev (zloirock.ru)",license:"https://github.com/zloirock/core-js/blob/v3.26.1/LICENSE",source:"https://github.com/zloirock/core-js"})},function(e,t){e.exports=!1},function(e,t,a){var l=a(4),n=0,r=Math.random(),s=l(1..toString);e.exports=function(e){return"Symbol("+(void 0===e?"":e)+")_"+s(++n+r,36)}},function(e,t,a){var l=a(6),n=a(2),r=a(107);e.exports=!l&&!n((function(){return 7!=Object.defineProperty(r("div"),"a",{get:function(){return 7}}).a}))},function(e,t){e.exports={}},function(e,t,a){var l=a(7),n=a(116),r=a(49),s=a(14);e.exports=function(e,t,a){for(var i=n(t),o=s.f,c=r.f,p=0;p<i.length;p++){var u=i[p];l(e,u)||a&&l(a,u)||o(e,u,c(t,u))}}},function(e,t,a){var l=a(121);e.exports=function(e){var t=+e;return t!=t||0===t?0:l(t)}},function(e,t,a){var l=a(4),n=a(36),r=a(135);e.exports=Object.setPrototypeOf||("__proto__"in{}?function(){var e,t=!1,a={};try{(e=l(Object.getOwnPropertyDescriptor(Object.prototype,"__proto__").set))(a,[]),t=a instanceof Array}catch(e){}return function(a,l){return n(a),r(l),t?e(a,l):a.__proto__=l,a}}():void 0)},function(e,t){e.exports=function(e,t){for(var a=-1,l=t.length,n=e.length;++a<l;)e[n+a]=t[a];return e}},function(e,t){var a="object"==typeof global&&global&&global.Object===Object&&global;e.exports=a},function(e,t,a){var l=a(22),n=a(158),r=a(159),s=a(160),i=a(161),o=a(162);function c(e){var t=this.__data__=new l(e);this.size=t.size}c.prototype.clear=n,c.prototype.delete=r,c.prototype.get=s,c.prototype.has=i,c.prototype.set=o,e.exports=c},function(e,t){e.exports=function(e,t){return e===t||e!=e&&t!=t}},function(e,t,a){var l=a(13),n=a(40);e.exports=function(e){if(!n(e))return!1;var t=l(e);return"[object Function]"==t||"[object GeneratorFunction]"==t||"[object AsyncFunction]"==t||"[object Proxy]"==t}},function(e,t){var a=Function.prototype.toString;e.exports=function(e){if(null!=e){try{return a.call(e)}catch(e){}try{return e+""}catch(e){}}return""}},function(e,t,a){var l=a(179),n=a(12);e.exports=function e(t,a,r,s,i){return t===a||(null==t||null==a||!n(t)&&!n(a)?t!=t&&a!=a:l(t,a,r,s,e,i))}},function(e,t,a){var l=a(77),n=a(182),r=a(78);e.exports=function(e,t,a,s,i,o){var c=1&a,p=e.length,u=t.length;if(p!=u&&!(c&&u>p))return!1;var d=o.get(e),h=o.get(t);if(d&&h)return d==t&&h==e;var g=-1,v=!0,f=2&a?new l:void 0;for(o.set(e,t),o.set(t,e);++g<p;){var m=e[g],b=t[g];if(s)var E=c?s(b,m,g,t,e,o):s(m,b,g,e,t,o);if(void 0!==E){if(E)continue;v=!1;break}if(f){if(!n(t,(function(e,t){if(!r(f,t)&&(m===e||i(m,e,a,s,o)))return f.push(t)}))){v=!1;break}}else if(m!==b&&!i(m,b,a,s,o)){v=!1;break}}return o.delete(e),o.delete(t),v}},function(e,t,a){var l=a(41),n=a(180),r=a(181);function s(e){var t=-1,a=null==e?0:e.length;for(this.__data__=new l;++t<a;)this.add(e[t])}s.prototype.add=s.prototype.push=n,s.prototype.has=r,e.exports=s},function(e,t){e.exports=function(e,t){return e.has(t)}},function(e,t,a){var l=a(192),n=a(198),r=a(83);e.exports=function(e){return r(e)?l(e):n(e)}},function(e,t,a){(function(e){var l=a(8),n=a(194),r=t&&!t.nodeType&&t,s=r&&"object"==typeof e&&e&&!e.nodeType&&e,i=s&&s.exports===r?l.Buffer:void 0,o=(i?i.isBuffer:void 0)||n;e.exports=o}).call(this,a(47)(e))},function(e,t){var a=/^(?:0|[1-9]\d*)$/;e.exports=function(e,t){var l=typeof e;return!!(t=null==t?9007199254740991:t)&&("number"==l||"symbol"!=l&&a.test(e))&&e>-1&&e%1==0&&e<t}},function(e,t,a){var l=a(195),n=a(196),r=a(197),s=r&&r.isTypedArray,i=s?n(s):l;e.exports=i},function(e,t,a){var l=a(73),n=a(43);e.exports=function(e){return null!=e&&n(e.length)&&!l(e)}},function(e,t,a){var l=a(10)(a(8),"Set");e.exports=l},function(e,t,a){var l=a(40);e.exports=function(e){return e==e&&!l(e)}},function(e,t){e.exports=function(e,t){return function(a){return null!=a&&(a[e]===t&&(void 0!==t||e in Object(a)))}}},function(e,t,a){var l=a(88),n=a(26);e.exports=function(e,t){for(var a=0,r=(t=l(t,e)).length;null!=e&&a<r;)e=e[n(t[a++])];return a&&a==r?e:void 0}},function(e,t,a){var l=a(5),n=a(44),r=a(209),s=a(212);e.exports=function(e,t){return l(e)?e:n(e,t)?[e]:r(s(e))}},function(e,t,a){},function(e,t,a){},function(e,t,a){},function(e,t,a){},function(e,t,a){var l=a(145),n=a(150),r=a(221),s=a(229),i=a(238),o=a(98),c=r((function(e){var t=o(e);return i(t)&&(t=void 0),s(l(e,1,i,!0),n(t,2))}));e.exports=c},function(e,t,a){"use strict";
  4. /*!
  5. * escape-html
  6. * Copyright(c) 2012-2013 TJ Holowaychuk
  7. * Copyright(c) 2015 Andreas Lubbe
  8. * Copyright(c) 2015 Tiancheng "Timothy" Gu
  9. * MIT Licensed
  10. */var l=/["'&<>]/;e.exports=function(e){var t,a=""+e,n=l.exec(a);if(!n)return a;var r="",s=0,i=0;for(s=n.index;s<a.length;s++){switch(a.charCodeAt(s)){case 34:t="&quot;";break;case 38:t="&amp;";break;case 39:t="&#39;";break;case 60:t="&lt;";break;case 62:t="&gt;";break;default:continue}i!==s&&(r+=a.substring(i,s)),i=s+1,r+=t}return i!==s?r+a.substring(i,s):r}},function(e,t,a){"use strict";
  11. /**
  12. * @file Embedded JavaScript templating engine. {@link http://ejs.co}
  13. * @author Matthew Eernisse <mde@fleegix.org>
  14. * @author Tiancheng "Timothy" Gu <timothygu99@gmail.com>
  15. * @project EJS
  16. * @license {@link http://www.apache.org/licenses/LICENSE-2.0 Apache License, Version 2.0}
  17. */var l=a(247),n=a(248),r=a(249),s=!1,i=a(250).version,o=["delimiter","scope","context","debug","compileDebug","client","_with","rmWhitespace","strict","filename","async"],c=o.concat("cache"),p=/^\uFEFF/;function u(e,a){var n,r,s=a.views,i=/^[A-Za-z]+:\\|^\//.exec(e);if(i&&i.length)n=t.resolveInclude(e.replace(/^\/*/,""),a.root||"/",!0);else if(a.filename&&(r=t.resolveInclude(e,a.filename),l.existsSync(r)&&(n=r)),n||Array.isArray(s)&&s.some((function(a){return r=t.resolveInclude(e,a,!0),l.existsSync(r)}))&&(n=r),!n)throw new Error('Could not find the include file "'+a.escapeFunction(e)+'"');return n}function d(e,a){var l,n=e.filename,r=arguments.length>1;if(e.cache){if(!n)throw new Error("cache option requires a filename");if(l=t.cache.get(n))return l;r||(a=g(n).toString().replace(p,""))}else if(!r){if(!n)throw new Error("Internal EJS error: no file name or template provided");a=g(n).toString().replace(p,"")}return l=t.compile(a,e),e.cache&&t.cache.set(n,l),l}function h(e,a,l){var n;if(!l){if("function"==typeof t.promiseImpl)return new t.promiseImpl((function(t,l){try{t(n=d(e)(a))}catch(e){l(e)}}));throw new Error("Please provide a callback function")}try{n=d(e)(a)}catch(e){return l(e)}l(null,n)}function g(e){return t.fileLoader(e)}function v(e,t,a,l,n){var r=t.split("\n"),s=Math.max(l-3,0),i=Math.min(r.length,l+3),o=n(a),c=r.slice(s,i).map((function(e,t){var a=t+s+1;return(a==l?" >> ":" ")+a+"| "+e})).join("\n");throw e.path=o,e.message=(o||"ejs")+":"+l+"\n"+c+"\n\n"+e.message,e}function f(e){return e.replace(/;(\s*$)/,"$1")}function m(e,a){a=a||{};var l={};this.templateText=e,this.mode=null,this.truncate=!1,this.currentLine=1,this.source="",this.dependencies=[],l.client=a.client||!1,l.escapeFunction=a.escape||a.escapeFunction||r.escapeXML,l.compileDebug=!1!==a.compileDebug,l.debug=!!a.debug,l.filename=a.filename,l.openDelimiter=a.openDelimiter||t.openDelimiter||"<",l.closeDelimiter=a.closeDelimiter||t.closeDelimiter||">",l.delimiter=a.delimiter||t.delimiter||"%",l.strict=a.strict||!1,l.context=a.context,l.cache=a.cache||!1,l.rmWhitespace=a.rmWhitespace,l.root=a.root,l.outputFunctionName=a.outputFunctionName,l.localsName=a.localsName||t.localsName||"locals",l.views=a.views,l.async=a.async,l.destructuredLocals=a.destructuredLocals,l.legacyInclude=void 0===a.legacyInclude||!!a.legacyInclude,l.strict?l._with=!1:l._with=void 0===a._with||a._with,this.opts=l,this.regex=this.createRegex()}t.cache=r.cache,t.fileLoader=l.readFileSync,t.localsName="locals",t.promiseImpl=new Function("return this;")().Promise,t.resolveInclude=function(e,t,a){var l=n.dirname,r=n.extname,s=(0,n.resolve)(a?t:l(t),e);return r(e)||(s+=".ejs"),s},t.compile=function(e,t){return t&&t.scope&&(s||(console.warn("`scope` option is deprecated and will be removed in EJS 3"),s=!0),t.context||(t.context=t.scope),delete t.scope),new m(e,t).compile()},t.render=function(e,t,a){var l=t||{},n=a||{};return 2==arguments.length&&r.shallowCopyFromList(n,l,o),d(n,e)(l)},t.renderFile=function(){var e,t,a,l=Array.prototype.slice.call(arguments),n=l.shift(),s={filename:n};return"function"==typeof arguments[arguments.length-1]&&(e=l.pop()),l.length?(t=l.shift(),l.length?r.shallowCopy(s,l.pop()):(t.settings&&(t.settings.views&&(s.views=t.settings.views),t.settings["view cache"]&&(s.cache=!0),(a=t.settings["view options"])&&r.shallowCopy(s,a)),r.shallowCopyFromList(s,t,c)),s.filename=n):t={},h(s,t,e)},t.Template=m,t.clearCache=function(){t.cache.reset()},m.modes={EVAL:"eval",ESCAPED:"escaped",RAW:"raw",COMMENT:"comment",LITERAL:"literal"},m.prototype={createRegex:function(){var e="(<%%|%%>|<%=|<%-|<%_|<%#|<%|%>|-%>|_%>)",t=r.escapeRegExpChars(this.opts.delimiter),a=r.escapeRegExpChars(this.opts.openDelimiter),l=r.escapeRegExpChars(this.opts.closeDelimiter);return e=e.replace(/%/g,t).replace(/</g,a).replace(/>/g,l),new RegExp(e)},compile:function(){var e,t,a,l=this.opts,s="",i="",o=l.escapeFunction;if(!this.source){if(this.generateSource(),s+=' var __output = "";\n function __append(s) { if (s !== undefined && s !== null) __output += s }\n',l.outputFunctionName&&(s+=" var "+l.outputFunctionName+" = __append;\n"),l.destructuredLocals&&l.destructuredLocals.length){for(var c=" var __locals = ("+l.localsName+" || {}),\n",p=0;p<l.destructuredLocals.length;p++){var h=l.destructuredLocals[p];p>0&&(c+=",\n "),c+=h+" = __locals."+h}s+=c+";\n"}!1!==l._with&&(s+=" with ("+l.localsName+" || {}) {\n",i+=" }\n"),i+=" return __output;\n",this.source=s+this.source+i}e=l.compileDebug?"var __line = 1\n , __lines = "+JSON.stringify(this.templateText)+"\n , __filename = "+(l.filename?JSON.stringify(l.filename):"undefined")+";\ntry {\n"+this.source+"} catch (e) {\n rethrow(e, __lines, __filename, __line, escapeFn);\n}\n":this.source,l.client&&(e="escapeFn = escapeFn || "+o.toString()+";\n"+e,l.compileDebug&&(e="rethrow = rethrow || "+v.toString()+";\n"+e)),l.strict&&(e='"use strict";\n'+e),l.debug&&console.log(e),l.compileDebug&&l.filename&&(e=e+"\n//# sourceURL="+l.filename+"\n");try{if(l.async)try{a=new Function("return (async function(){}).constructor;")()}catch(e){throw e instanceof SyntaxError?new Error("This environment does not support async/await"):e}else a=Function;t=new a(l.localsName+", escapeFn, include, rethrow",e)}catch(e){throw e instanceof SyntaxError&&(l.filename&&(e.message+=" in "+l.filename),e.message+=" while compiling ejs\n\n",e.message+="If the above error is not helpful, you may want to try EJS-Lint:\n",e.message+="https://github.com/RyanZim/EJS-Lint",l.async||(e.message+="\n",e.message+="Or, if you meant to create an async function, pass `async: true` as an option.")),e}var g=l.client?t:function(e){return t.apply(l.context,[e||{},o,function(t,a){var n=r.shallowCopy({},e);return a&&(n=r.shallowCopy(n,a)),function(e,t){var a=r.shallowCopy({},t);return a.filename=u(e,a),d(a)}(t,l)(n)},v])};if(g.dependencies=this.dependencies,l.filename&&"function"==typeof Object.defineProperty){var f=l.filename,m=n.basename(f,n.extname(f));try{Object.defineProperty(g,"name",{value:m,writable:!1,enumerable:!1,configurable:!0})}catch(e){}}return g},generateSource:function(){var e=this.opts;e.rmWhitespace&&(this.templateText=this.templateText.replace(/[\r\n]+/g,"\n").replace(/^\s+|\s+$/gm,"")),this.templateText=this.templateText.replace(/[ \t]*<%_/gm,"<%_").replace(/_%>[ \t]*/gm,"_%>");var a=this,l=this.parseTemplateText(),n=this.opts.delimiter,s=this.opts.openDelimiter,i=this.opts.closeDelimiter;l&&l.length&&l.forEach((function(o,c){var d,h,v,f,b,E;if(0===o.indexOf(s+n)&&0!==o.indexOf(s+n+n)&&(h=l[c+2])!=n+i&&h!="-"+n+i&&h!="_"+n+i)throw new Error('Could not find matching close tag for "'+o+'".');if(e.legacyInclude&&(v=o.match(/^\s*include\s+(\S+)/))&&(d=l[c-1])&&(d==s+n||d==s+n+"-"||d==s+n+"_"))return f=r.shallowCopy({},a.opts),b=function(e,t){var a,l,n=r.shallowCopy({},t);l=g(a=u(e,n)).toString().replace(p,""),n.filename=a;var s=new m(l,n);return s.generateSource(),{source:s.source,filename:a,template:l}}(v[1],f),E=a.opts.compileDebug?" ; (function(){\n var __line = 1\n , __lines = "+JSON.stringify(b.template)+"\n , __filename = "+JSON.stringify(b.filename)+";\n try {\n"+b.source+" } catch (e) {\n rethrow(e, __lines, __filename, __line, escapeFn);\n }\n ; }).call(this)\n":" ; (function(){\n"+b.source+" ; }).call(this)\n",a.source+=E,void a.dependencies.push(t.resolveInclude(v[1],f.filename));a.scanLine(o)}))},parseTemplateText:function(){for(var e,t=this.templateText,a=this.regex,l=a.exec(t),n=[];l;)0!==(e=l.index)&&(n.push(t.substring(0,e)),t=t.slice(e)),n.push(l[0]),t=t.slice(l[0].length),l=a.exec(t);return t&&n.push(t),n},_addOutput:function(e){if(this.truncate&&(e=e.replace(/^(?:\r\n|\r|\n)/,""),this.truncate=!1),!e)return e;e=(e=(e=(e=e.replace(/\\/g,"\\\\")).replace(/\n/g,"\\n")).replace(/\r/g,"\\r")).replace(/"/g,'\\"'),this.source+=' ; __append("'+e+'")\n'},scanLine:function(e){var t,a=this.opts.delimiter,l=this.opts.openDelimiter,n=this.opts.closeDelimiter;switch(t=e.split("\n").length-1,e){case l+a:case l+a+"_":this.mode=m.modes.EVAL;break;case l+a+"=":this.mode=m.modes.ESCAPED;break;case l+a+"-":this.mode=m.modes.RAW;break;case l+a+"#":this.mode=m.modes.COMMENT;break;case l+a+a:this.mode=m.modes.LITERAL,this.source+=' ; __append("'+e.replace(l+a+a,l+a)+'")\n';break;case a+a+n:this.mode=m.modes.LITERAL,this.source+=' ; __append("'+e.replace(a+a+n,a+n)+'")\n';break;case a+n:case"-"+a+n:case"_"+a+n:this.mode==m.modes.LITERAL&&this._addOutput(e),this.mode=null,this.truncate=0===e.indexOf("-")||0===e.indexOf("_");break;default:if(this.mode){switch(this.mode){case m.modes.EVAL:case m.modes.ESCAPED:case m.modes.RAW:e.lastIndexOf("//")>e.lastIndexOf("\n")&&(e+="\n")}switch(this.mode){case m.modes.EVAL:this.source+=" ; "+e+"\n";break;case m.modes.ESCAPED:this.source+=" ; __append(escapeFn("+f(e)+"))\n";break;case m.modes.RAW:this.source+=" ; __append("+f(e)+")\n";break;case m.modes.COMMENT:break;case m.modes.LITERAL:this._addOutput(e)}}else this._addOutput(e)}this.opts.compileDebug&&t&&(this.currentLine+=t,this.source+=" ; __line = "+this.currentLine+"\n")}},t.escapeXML=r.escapeXML,t.__express=t.renderFile,t.VERSION=i,t.name="ejs","undefined"!=typeof window&&(window.ejs=t)},function(e,t,a){"use strict";a.r(t);var l={name:"CodeBlock",props:{title:{type:String,required:!0},active:{type:Boolean,default:!1}}},n=(a(241),a(3)),r=Object(n.a)(l,(function(){return(0,this._self._c)("div",{staticClass:"theme-code-block",class:{"theme-code-block__active":this.active}},[this._t("default")],2)}),[],!1,null,"4f1e9d0c",null);t.default=r.exports},function(e,t,a){"use strict";a.r(t);var l={name:"CodeGroup",data:()=>({codeTabs:[],activeCodeTabIndex:-1}),watch:{activeCodeTabIndex(e){this.codeTabs.forEach(e=>{e.elm.classList.remove("theme-code-block__active")}),this.codeTabs[e].elm.classList.add("theme-code-block__active")}},mounted(){this.codeTabs=(this.$slots.default||[]).filter(e=>Boolean(e.componentOptions)).map((e,t)=>(""===e.componentOptions.propsData.active&&(this.activeCodeTabIndex=t),{title:e.componentOptions.propsData.title,elm:e.elm})),-1===this.activeCodeTabIndex&&this.codeTabs.length>0&&(this.activeCodeTabIndex=0)},methods:{changeCodeTab(e){this.activeCodeTabIndex=e}}},n=(a(242),a(3)),r=Object(n.a)(l,(function(){var e=this,t=e._self._c;return t("div",{staticClass:"theme-code-group"},[t("div",{staticClass:"theme-code-group__nav"},[t("ul",{staticClass:"theme-code-group__ul"},e._l(e.codeTabs,(function(a,l){return t("li",{key:a.title,staticClass:"theme-code-group__li"},[t("button",{staticClass:"theme-code-group__nav-tab",class:{"theme-code-group__nav-tab-active":l===e.activeCodeTabIndex},on:{click:function(t){return e.changeCodeTab(l)}}},[e._v("\n "+e._s(a.title)+"\n ")])])})),0)]),e._v(" "),e._t("default"),e._v(" "),e.codeTabs.length<1?t("pre",{staticClass:"pre-blank"},[e._v("// Make sure to add code blocks to your code group")]):e._e()],2)}),[],!1,null,"2f5f1757",null);t.default=r.exports},function(e,t){e.exports=function(e){var t=null==e?0:e.length;return t?e[t-1]:void 0}},function(e,t,a){e.exports=a(253)},function(e,t,a){"use strict";var l=a(17),n=a(126).left,r=a(127),s=a(59),i=a(128);l({target:"Array",proto:!0,forced:!r("reduce")||!i&&s>79&&s<83},{reduce:function(e){var t=arguments.length;return n(this,e,t,t>1?arguments[1]:void 0)}})},function(e,t,a){"use strict";var l={}.propertyIsEnumerable,n=Object.getOwnPropertyDescriptor,r=n&&!l.call({1:2},1);t.f=r?function(e){var t=n(this,e);return!!t&&t.enumerable}:l},function(e,t,a){var l=a(29),n=a(9),r=a(55),s=a(104),i=a(106),o=a(20),c=TypeError,p=o("toPrimitive");e.exports=function(e,t){if(!n(e)||r(e))return e;var a,o=s(e,p);if(o){if(void 0===t&&(t="default"),a=l(o,e,t),!n(a)||r(a))return a;throw c("Can't convert object to primitive value")}return void 0===t&&(t="number"),i(e,t)}},function(e,t,a){var l=a(19);e.exports=l("navigator","userAgent")||""},function(e,t,a){var l=a(60),n=a(52);e.exports=function(e,t){var a=e[t];return n(a)?void 0:l(a)}},function(e,t){var a=String;e.exports=function(e){try{return a(e)}catch(e){return"Object"}}},function(e,t,a){var l=a(29),n=a(0),r=a(9),s=TypeError;e.exports=function(e,t){var a,i;if("string"===t&&n(a=e.toString)&&!r(i=l(a,e)))return i;if(n(a=e.valueOf)&&!r(i=l(a,e)))return i;if("string"!==t&&n(a=e.toString)&&!r(i=l(a,e)))return i;throw s("Can't convert object to primitive value")}},function(e,t,a){var l=a(1),n=a(9),r=l.document,s=n(r)&&n(r.createElement);e.exports=function(e){return s?r.createElement(e):{}}},function(e,t,a){var l=a(6),n=a(2);e.exports=l&&n((function(){return 42!=Object.defineProperty((function(){}),"prototype",{value:42,writable:!1}).prototype}))},function(e,t,a){var l=a(0),n=a(14),r=a(110),s=a(34);e.exports=function(e,t,a,i){i||(i={});var o=i.enumerable,c=void 0!==i.name?i.name:t;if(l(a)&&r(a,c,i),i.global)o?e[t]=a:s(t,a);else{try{i.unsafe?e[t]&&(o=!0):delete e[t]}catch(e){}o?e[t]=a:n.f(e,t,{value:a,enumerable:!1,configurable:!i.nonConfigurable,writable:!i.nonWritable})}return e}},function(e,t,a){var l=a(2),n=a(0),r=a(7),s=a(6),i=a(111).CONFIGURABLE,o=a(112),c=a(113),p=c.enforce,u=c.get,d=Object.defineProperty,h=s&&!l((function(){return 8!==d((function(){}),"length",{value:8}).length})),g=String(String).split("String"),v=e.exports=function(e,t,a){"Symbol("===String(t).slice(0,7)&&(t="["+String(t).replace(/^Symbol\(([^)]*)\)/,"$1")+"]"),a&&a.getter&&(t="get "+t),a&&a.setter&&(t="set "+t),(!r(e,"name")||i&&e.name!==t)&&(s?d(e,"name",{value:t,configurable:!0}):e.name=t),h&&a&&r(a,"arity")&&e.length!==a.arity&&d(e,"length",{value:a.arity});try{a&&r(a,"constructor")&&a.constructor?s&&d(e,"prototype",{writable:!1}):e.prototype&&(e.prototype=void 0)}catch(e){}var l=p(e);return r(l,"source")||(l.source=g.join("string"==typeof t?t:"")),e};Function.prototype.toString=v((function(){return n(this)&&u(this).source||o(this)}),"toString")},function(e,t,a){var l=a(6),n=a(7),r=Function.prototype,s=l&&Object.getOwnPropertyDescriptor,i=n(r,"name"),o=i&&"something"===function(){}.name,c=i&&(!l||l&&s(r,"name").configurable);e.exports={EXISTS:i,PROPER:o,CONFIGURABLE:c}},function(e,t,a){var l=a(4),n=a(0),r=a(33),s=l(Function.toString);n(r.inspectSource)||(r.inspectSource=function(e){return s(e)}),e.exports=r.inspectSource},function(e,t,a){var l,n,r,s=a(114),i=a(1),o=a(9),c=a(21),p=a(7),u=a(33),d=a(115),h=a(65),g=i.TypeError,v=i.WeakMap;if(s||u.state){var f=u.state||(u.state=new v);f.get=f.get,f.has=f.has,f.set=f.set,l=function(e,t){if(f.has(e))throw g("Object already initialized");return t.facade=e,f.set(e,t),t},n=function(e){return f.get(e)||{}},r=function(e){return f.has(e)}}else{var m=d("state");h[m]=!0,l=function(e,t){if(p(e,m))throw g("Object already initialized");return t.facade=e,c(e,m,t),t},n=function(e){return p(e,m)?e[m]:{}},r=function(e){return p(e,m)}}e.exports={set:l,get:n,has:r,enforce:function(e){return r(e)?n(e):l(e,{})},getterFor:function(e){return function(t){var a;if(!o(t)||(a=n(t)).type!==e)throw g("Incompatible receiver, "+e+" required");return a}}}},function(e,t,a){var l=a(1),n=a(0),r=l.WeakMap;e.exports=n(r)&&/native code/.test(String(r))},function(e,t,a){var l=a(61),n=a(63),r=l("keys");e.exports=function(e){return r[e]||(r[e]=n(e))}},function(e,t,a){var l=a(19),n=a(4),r=a(117),s=a(124),i=a(36),o=n([].concat);e.exports=l("Reflect","ownKeys")||function(e){var t=r.f(i(e)),a=s.f;return a?o(t,a(e)):t}},function(e,t,a){var l=a(118),n=a(123).concat("length","prototype");t.f=Object.getOwnPropertyNames||function(e){return l(e,n)}},function(e,t,a){var l=a(4),n=a(7),r=a(32),s=a(119).indexOf,i=a(65),o=l([].push);e.exports=function(e,t){var a,l=r(e),c=0,p=[];for(a in l)!n(i,a)&&n(l,a)&&o(p,a);for(;t.length>c;)n(l,a=t[c++])&&(~s(p,a)||o(p,a));return p}},function(e,t,a){var l=a(32),n=a(120),r=a(37),s=function(e){return function(t,a,s){var i,o=l(t),c=r(o),p=n(s,c);if(e&&a!=a){for(;c>p;)if((i=o[p++])!=i)return!0}else for(;c>p;p++)if((e||p in o)&&o[p]===a)return e||p||0;return!e&&-1}};e.exports={includes:s(!0),indexOf:s(!1)}},function(e,t,a){var l=a(67),n=Math.max,r=Math.min;e.exports=function(e,t){var a=l(e);return a<0?n(a+t,0):r(a,t)}},function(e,t){var a=Math.ceil,l=Math.floor;e.exports=Math.trunc||function(e){var t=+e;return(t>0?l:a)(t)}},function(e,t,a){var l=a(67),n=Math.min;e.exports=function(e){return e>0?n(l(e),9007199254740991):0}},function(e,t){e.exports=["constructor","hasOwnProperty","isPrototypeOf","propertyIsEnumerable","toLocaleString","toString","valueOf"]},function(e,t){t.f=Object.getOwnPropertySymbols},function(e,t,a){var l=a(2),n=a(0),r=/#|\.prototype\./,s=function(e,t){var a=o[i(e)];return a==p||a!=c&&(n(t)?l(t):!!t)},i=s.normalize=function(e){return String(e).replace(r,".").toLowerCase()},o=s.data={},c=s.NATIVE="N",p=s.POLYFILL="P";e.exports=s},function(e,t,a){var l=a(60),n=a(35),r=a(50),s=a(37),i=TypeError,o=function(e){return function(t,a,o,c){l(a);var p=n(t),u=r(p),d=s(p),h=e?d-1:0,g=e?-1:1;if(o<2)for(;;){if(h in u){c=u[h],h+=g;break}if(h+=g,e?h<0:d<=h)throw i("Reduce of empty array with no initial value")}for(;e?h>=0:d>h;h+=g)h in u&&(c=a(c,u[h],h,p));return c}};e.exports={left:o(!1),right:o(!0)}},function(e,t,a){"use strict";var l=a(2);e.exports=function(e,t){var a=[][e];return!!a&&l((function(){a.call(null,t||function(){return 1},1)}))}},function(e,t,a){var l=a(18),n=a(1);e.exports="process"==l(n.process)},function(e,t,a){"use strict";var l=a(6),n=a(130),r=TypeError,s=Object.getOwnPropertyDescriptor,i=l&&!function(){if(void 0!==this)return!0;try{Object.defineProperty([],"length",{writable:!1}).length=1}catch(e){return e instanceof TypeError}}();e.exports=i?function(e,t){if(n(e)&&!s(e,"length").writable)throw r("Cannot set read only .length");return e.length=t}:function(e,t){return e.length=t}},function(e,t,a){var l=a(18);e.exports=Array.isArray||function(e){return"Array"==l(e)}},function(e,t){var a=TypeError;e.exports=function(e){if(e>9007199254740991)throw a("Maximum allowed index exceeded");return e}},function(e,t,a){var l=a(17),n=a(1),r=a(133),s=a(134),i=n.WebAssembly,o=7!==Error("e",{cause:7}).cause,c=function(e,t){var a={};a[e]=s(e,t,o),l({global:!0,constructor:!0,arity:1,forced:o},a)},p=function(e,t){if(i&&i[e]){var a={};a[e]=s("WebAssembly."+e,t,o),l({target:"WebAssembly",stat:!0,constructor:!0,arity:1,forced:o},a)}};c("Error",(function(e){return function(t){return r(e,this,arguments)}})),c("EvalError",(function(e){return function(t){return r(e,this,arguments)}})),c("RangeError",(function(e){return function(t){return r(e,this,arguments)}})),c("ReferenceError",(function(e){return function(t){return r(e,this,arguments)}})),c("SyntaxError",(function(e){return function(t){return r(e,this,arguments)}})),c("TypeError",(function(e){return function(t){return r(e,this,arguments)}})),c("URIError",(function(e){return function(t){return r(e,this,arguments)}})),p("CompileError",(function(e){return function(t){return r(e,this,arguments)}})),p("LinkError",(function(e){return function(t){return r(e,this,arguments)}})),p("RuntimeError",(function(e){return function(t){return r(e,this,arguments)}}))},function(e,t,a){var l=a(30),n=Function.prototype,r=n.apply,s=n.call;e.exports="object"==typeof Reflect&&Reflect.apply||(l?s.bind(r):function(){return s.apply(r,arguments)})},function(e,t,a){"use strict";var l=a(19),n=a(7),r=a(21),s=a(56),i=a(68),o=a(66),c=a(136),p=a(137),u=a(138),d=a(142),h=a(143),g=a(144),v=a(6),f=a(62);e.exports=function(e,t,a,m){var b=m?2:1,E=e.split("."),y=E[E.length-1],B=l.apply(null,E);if(B){var A=B.prototype;if(!f&&n(A,"cause")&&delete A.cause,!a)return B;var x=l("Error"),_=t((function(e,t){var a=u(m?t:e,void 0),l=m?new B(e):new B;return void 0!==a&&r(l,"message",a),g&&r(l,"stack",h(l.stack,2)),this&&s(A,this)&&p(l,this,_),arguments.length>b&&d(l,arguments[b]),l}));if(_.prototype=A,"Error"!==y?i?i(_,x):o(_,x,{name:!0}):v&&"stackTraceLimit"in B&&(c(_,B,"stackTraceLimit"),c(_,B,"prepareStackTrace")),o(_,B),!f)try{A.name!==y&&r(A,"name",y),A.constructor=_}catch(e){}return _}}},function(e,t,a){var l=a(0),n=String,r=TypeError;e.exports=function(e){if("object"==typeof e||l(e))return e;throw r("Can't set "+n(e)+" as a prototype")}},function(e,t,a){var l=a(14).f;e.exports=function(e,t,a){a in e||l(e,a,{configurable:!0,get:function(){return t[a]},set:function(e){t[a]=e}})}},function(e,t,a){var l=a(0),n=a(9),r=a(68);e.exports=function(e,t,a){var s,i;return r&&l(s=t.constructor)&&s!==a&&n(i=s.prototype)&&i!==a.prototype&&r(e,i),e}},function(e,t,a){var l=a(139);e.exports=function(e,t){return void 0===e?arguments.length<2?"":t:l(e)}},function(e,t,a){var l=a(140),n=String;e.exports=function(e){if("Symbol"===l(e))throw TypeError("Cannot convert a Symbol value to a string");return n(e)}},function(e,t,a){var l=a(141),n=a(0),r=a(18),s=a(20)("toStringTag"),i=Object,o="Arguments"==r(function(){return arguments}());e.exports=l?r:function(e){var t,a,l;return void 0===e?"Undefined":null===e?"Null":"string"==typeof(a=function(e,t){try{return e[t]}catch(e){}}(t=i(e),s))?a:o?r(t):"Object"==(l=r(t))&&n(t.callee)?"Arguments":l}},function(e,t,a){var l={};l[a(20)("toStringTag")]="z",e.exports="[object z]"===String(l)},function(e,t,a){var l=a(9),n=a(21);e.exports=function(e,t){l(t)&&"cause"in t&&n(e,"cause",t.cause)}},function(e,t,a){var l=a(4),n=Error,r=l("".replace),s=String(n("zxcasd").stack),i=/\n\s*at [^:]*:[^\n]*/,o=i.test(s);e.exports=function(e,t){if(o&&"string"==typeof e&&!n.prepareStackTrace)for(;t--;)e=r(e,i,"");return e}},function(e,t,a){var l=a(2),n=a(31);e.exports=!l((function(){var e=Error("a");return!("stack"in e)||(Object.defineProperty(e,"stack",n(1,7)),7!==e.stack)}))},function(e,t,a){var l=a(69),n=a(146);e.exports=function e(t,a,r,s,i){var o=-1,c=t.length;for(r||(r=n),i||(i=[]);++o<c;){var p=t[o];a>0&&r(p)?a>1?e(p,a-1,r,s,i):l(i,p):s||(i[i.length]=p)}return i}},function(e,t,a){var l=a(15),n=a(38),r=a(5),s=l?l.isConcatSpreadable:void 0;e.exports=function(e){return r(e)||n(e)||!!(s&&e&&e[s])}},function(e,t,a){var l=a(13),n=a(12);e.exports=function(e){return n(e)&&"[object Arguments]"==l(e)}},function(e,t,a){var l=a(15),n=Object.prototype,r=n.hasOwnProperty,s=n.toString,i=l?l.toStringTag:void 0;e.exports=function(e){var t=r.call(e,i),a=e[i];try{e[i]=void 0;var l=!0}catch(e){}var n=s.call(e);return l&&(t?e[i]=a:delete e[i]),n}},function(e,t){var a=Object.prototype.toString;e.exports=function(e){return a.call(e)}},function(e,t,a){var l=a(151),n=a(207),r=a(46),s=a(5),i=a(218);e.exports=function(e){return"function"==typeof e?e:null==e?r:"object"==typeof e?s(e)?n(e[0],e[1]):l(e):i(e)}},function(e,t,a){var l=a(152),n=a(206),r=a(86);e.exports=function(e){var t=n(e);return 1==t.length&&t[0][2]?r(t[0][0],t[0][1]):function(a){return a===e||l(a,e,t)}}},function(e,t,a){var l=a(71),n=a(75);e.exports=function(e,t,a,r){var s=a.length,i=s,o=!r;if(null==e)return!i;for(e=Object(e);s--;){var c=a[s];if(o&&c[2]?c[1]!==e[c[0]]:!(c[0]in e))return!1}for(;++s<i;){var p=(c=a[s])[0],u=e[p],d=c[1];if(o&&c[2]){if(void 0===u&&!(p in e))return!1}else{var h=new l;if(r)var g=r(u,d,p,e,t,h);if(!(void 0===g?n(d,u,3,r,h):g))return!1}}return!0}},function(e,t){e.exports=function(){this.__data__=[],this.size=0}},function(e,t,a){var l=a(23),n=Array.prototype.splice;e.exports=function(e){var t=this.__data__,a=l(t,e);return!(a<0)&&(a==t.length-1?t.pop():n.call(t,a,1),--this.size,!0)}},function(e,t,a){var l=a(23);e.exports=function(e){var t=this.__data__,a=l(t,e);return a<0?void 0:t[a][1]}},function(e,t,a){var l=a(23);e.exports=function(e){return l(this.__data__,e)>-1}},function(e,t,a){var l=a(23);e.exports=function(e,t){var a=this.__data__,n=l(a,e);return n<0?(++this.size,a.push([e,t])):a[n][1]=t,this}},function(e,t,a){var l=a(22);e.exports=function(){this.__data__=new l,this.size=0}},function(e,t){e.exports=function(e){var t=this.__data__,a=t.delete(e);return this.size=t.size,a}},function(e,t){e.exports=function(e){return this.__data__.get(e)}},function(e,t){e.exports=function(e){return this.__data__.has(e)}},function(e,t,a){var l=a(22),n=a(39),r=a(41);e.exports=function(e,t){var a=this.__data__;if(a instanceof l){var s=a.__data__;if(!n||s.length<199)return s.push([e,t]),this.size=++a.size,this;a=this.__data__=new r(s)}return a.set(e,t),this.size=a.size,this}},function(e,t,a){var l=a(73),n=a(164),r=a(40),s=a(74),i=/^\[object .+?Constructor\]$/,o=Function.prototype,c=Object.prototype,p=o.toString,u=c.hasOwnProperty,d=RegExp("^"+p.call(u).replace(/[\\^$.*+?()[\]{}|]/g,"\\$&").replace(/hasOwnProperty|(function).*?(?=\\\()| for .+?(?=\\\])/g,"$1.*?")+"$");e.exports=function(e){return!(!r(e)||n(e))&&(l(e)?d:i).test(s(e))}},function(e,t,a){var l,n=a(165),r=(l=/[^.]+$/.exec(n&&n.keys&&n.keys.IE_PROTO||""))?"Symbol(src)_1."+l:"";e.exports=function(e){return!!r&&r in e}},function(e,t,a){var l=a(8)["__core-js_shared__"];e.exports=l},function(e,t){e.exports=function(e,t){return null==e?void 0:e[t]}},function(e,t,a){var l=a(168),n=a(22),r=a(39);e.exports=function(){this.size=0,this.__data__={hash:new l,map:new(r||n),string:new l}}},function(e,t,a){var l=a(169),n=a(170),r=a(171),s=a(172),i=a(173);function o(e){var t=-1,a=null==e?0:e.length;for(this.clear();++t<a;){var l=e[t];this.set(l[0],l[1])}}o.prototype.clear=l,o.prototype.delete=n,o.prototype.get=r,o.prototype.has=s,o.prototype.set=i,e.exports=o},function(e,t,a){var l=a(24);e.exports=function(){this.__data__=l?l(null):{},this.size=0}},function(e,t){e.exports=function(e){var t=this.has(e)&&delete this.__data__[e];return this.size-=t?1:0,t}},function(e,t,a){var l=a(24),n=Object.prototype.hasOwnProperty;e.exports=function(e){var t=this.__data__;if(l){var a=t[e];return"__lodash_hash_undefined__"===a?void 0:a}return n.call(t,e)?t[e]:void 0}},function(e,t,a){var l=a(24),n=Object.prototype.hasOwnProperty;e.exports=function(e){var t=this.__data__;return l?void 0!==t[e]:n.call(t,e)}},function(e,t,a){var l=a(24);e.exports=function(e,t){var a=this.__data__;return this.size+=this.has(e)?0:1,a[e]=l&&void 0===t?"__lodash_hash_undefined__":t,this}},function(e,t,a){var l=a(25);e.exports=function(e){var t=l(this,e).delete(e);return this.size-=t?1:0,t}},function(e,t){e.exports=function(e){var t=typeof e;return"string"==t||"number"==t||"symbol"==t||"boolean"==t?"__proto__"!==e:null===e}},function(e,t,a){var l=a(25);e.exports=function(e){return l(this,e).get(e)}},function(e,t,a){var l=a(25);e.exports=function(e){return l(this,e).has(e)}},function(e,t,a){var l=a(25);e.exports=function(e,t){var a=l(this,e),n=a.size;return a.set(e,t),this.size+=a.size==n?0:1,this}},function(e,t,a){var l=a(71),n=a(76),r=a(183),s=a(186),i=a(202),o=a(5),c=a(80),p=a(82),u="[object Object]",d=Object.prototype.hasOwnProperty;e.exports=function(e,t,a,h,g,v){var f=o(e),m=o(t),b=f?"[object Array]":i(e),E=m?"[object Array]":i(t),y=(b="[object Arguments]"==b?u:b)==u,B=(E="[object Arguments]"==E?u:E)==u,A=b==E;if(A&&c(e)){if(!c(t))return!1;f=!0,y=!1}if(A&&!y)return v||(v=new l),f||p(e)?n(e,t,a,h,g,v):r(e,t,b,a,h,g,v);if(!(1&a)){var x=y&&d.call(e,"__wrapped__"),_=B&&d.call(t,"__wrapped__");if(x||_){var S=x?e.value():e,k=_?t.value():t;return v||(v=new l),g(S,k,a,h,v)}}return!!A&&(v||(v=new l),s(e,t,a,h,g,v))}},function(e,t){e.exports=function(e){return this.__data__.set(e,"__lodash_hash_undefined__"),this}},function(e,t){e.exports=function(e){return this.__data__.has(e)}},function(e,t){e.exports=function(e,t){for(var a=-1,l=null==e?0:e.length;++a<l;)if(t(e[a],a,e))return!0;return!1}},function(e,t,a){var l=a(15),n=a(184),r=a(72),s=a(76),i=a(185),o=a(42),c=l?l.prototype:void 0,p=c?c.valueOf:void 0;e.exports=function(e,t,a,l,c,u,d){switch(a){case"[object DataView]":if(e.byteLength!=t.byteLength||e.byteOffset!=t.byteOffset)return!1;e=e.buffer,t=t.buffer;case"[object ArrayBuffer]":return!(e.byteLength!=t.byteLength||!u(new n(e),new n(t)));case"[object Boolean]":case"[object Date]":case"[object Number]":return r(+e,+t);case"[object Error]":return e.name==t.name&&e.message==t.message;case"[object RegExp]":case"[object String]":return e==t+"";case"[object Map]":var h=i;case"[object Set]":var g=1&l;if(h||(h=o),e.size!=t.size&&!g)return!1;var v=d.get(e);if(v)return v==t;l|=2,d.set(e,t);var f=s(h(e),h(t),l,c,u,d);return d.delete(e),f;case"[object Symbol]":if(p)return p.call(e)==p.call(t)}return!1}},function(e,t,a){var l=a(8).Uint8Array;e.exports=l},function(e,t){e.exports=function(e){var t=-1,a=Array(e.size);return e.forEach((function(e,l){a[++t]=[l,e]})),a}},function(e,t,a){var l=a(187),n=Object.prototype.hasOwnProperty;e.exports=function(e,t,a,r,s,i){var o=1&a,c=l(e),p=c.length;if(p!=l(t).length&&!o)return!1;for(var u=p;u--;){var d=c[u];if(!(o?d in t:n.call(t,d)))return!1}var h=i.get(e),g=i.get(t);if(h&&g)return h==t&&g==e;var v=!0;i.set(e,t),i.set(t,e);for(var f=o;++u<p;){var m=e[d=c[u]],b=t[d];if(r)var E=o?r(b,m,d,t,e,i):r(m,b,d,e,t,i);if(!(void 0===E?m===b||s(m,b,a,r,i):E)){v=!1;break}f||(f="constructor"==d)}if(v&&!f){var y=e.constructor,B=t.constructor;y==B||!("constructor"in e)||!("constructor"in t)||"function"==typeof y&&y instanceof y&&"function"==typeof B&&B instanceof B||(v=!1)}return i.delete(e),i.delete(t),v}},function(e,t,a){var l=a(188),n=a(189),r=a(79);e.exports=function(e){return l(e,r,n)}},function(e,t,a){var l=a(69),n=a(5);e.exports=function(e,t,a){var r=t(e);return n(e)?r:l(r,a(e))}},function(e,t,a){var l=a(190),n=a(191),r=Object.prototype.propertyIsEnumerable,s=Object.getOwnPropertySymbols,i=s?function(e){return null==e?[]:(e=Object(e),l(s(e),(function(t){return r.call(e,t)})))}:n;e.exports=i},function(e,t){e.exports=function(e,t){for(var a=-1,l=null==e?0:e.length,n=0,r=[];++a<l;){var s=e[a];t(s,a,e)&&(r[n++]=s)}return r}},function(e,t){e.exports=function(){return[]}},function(e,t,a){var l=a(193),n=a(38),r=a(5),s=a(80),i=a(81),o=a(82),c=Object.prototype.hasOwnProperty;e.exports=function(e,t){var a=r(e),p=!a&&n(e),u=!a&&!p&&s(e),d=!a&&!p&&!u&&o(e),h=a||p||u||d,g=h?l(e.length,String):[],v=g.length;for(var f in e)!t&&!c.call(e,f)||h&&("length"==f||u&&("offset"==f||"parent"==f)||d&&("buffer"==f||"byteLength"==f||"byteOffset"==f)||i(f,v))||g.push(f);return g}},function(e,t){e.exports=function(e,t){for(var a=-1,l=Array(e);++a<e;)l[a]=t(a);return l}},function(e,t){e.exports=function(){return!1}},function(e,t,a){var l=a(13),n=a(43),r=a(12),s={};s["[object Float32Array]"]=s["[object Float64Array]"]=s["[object Int8Array]"]=s["[object Int16Array]"]=s["[object Int32Array]"]=s["[object Uint8Array]"]=s["[object Uint8ClampedArray]"]=s["[object Uint16Array]"]=s["[object Uint32Array]"]=!0,s["[object Arguments]"]=s["[object Array]"]=s["[object ArrayBuffer]"]=s["[object Boolean]"]=s["[object DataView]"]=s["[object Date]"]=s["[object Error]"]=s["[object Function]"]=s["[object Map]"]=s["[object Number]"]=s["[object Object]"]=s["[object RegExp]"]=s["[object Set]"]=s["[object String]"]=s["[object WeakMap]"]=!1,e.exports=function(e){return r(e)&&n(e.length)&&!!s[l(e)]}},function(e,t){e.exports=function(e){return function(t){return e(t)}}},function(e,t,a){(function(e){var l=a(70),n=t&&!t.nodeType&&t,r=n&&"object"==typeof e&&e&&!e.nodeType&&e,s=r&&r.exports===n&&l.process,i=function(){try{var e=r&&r.require&&r.require("util").types;return e||s&&s.binding&&s.binding("util")}catch(e){}}();e.exports=i}).call(this,a(47)(e))},function(e,t,a){var l=a(199),n=a(200),r=Object.prototype.hasOwnProperty;e.exports=function(e){if(!l(e))return n(e);var t=[];for(var a in Object(e))r.call(e,a)&&"constructor"!=a&&t.push(a);return t}},function(e,t){var a=Object.prototype;e.exports=function(e){var t=e&&e.constructor;return e===("function"==typeof t&&t.prototype||a)}},function(e,t,a){var l=a(201)(Object.keys,Object);e.exports=l},function(e,t){e.exports=function(e,t){return function(a){return e(t(a))}}},function(e,t,a){var l=a(203),n=a(39),r=a(204),s=a(84),i=a(205),o=a(13),c=a(74),p=c(l),u=c(n),d=c(r),h=c(s),g=c(i),v=o;(l&&"[object DataView]"!=v(new l(new ArrayBuffer(1)))||n&&"[object Map]"!=v(new n)||r&&"[object Promise]"!=v(r.resolve())||s&&"[object Set]"!=v(new s)||i&&"[object WeakMap]"!=v(new i))&&(v=function(e){var t=o(e),a="[object Object]"==t?e.constructor:void 0,l=a?c(a):"";if(l)switch(l){case p:return"[object DataView]";case u:return"[object Map]";case d:return"[object Promise]";case h:return"[object Set]";case g:return"[object WeakMap]"}return t}),e.exports=v},function(e,t,a){var l=a(10)(a(8),"DataView");e.exports=l},function(e,t,a){var l=a(10)(a(8),"Promise");e.exports=l},function(e,t,a){var l=a(10)(a(8),"WeakMap");e.exports=l},function(e,t,a){var l=a(85),n=a(79);e.exports=function(e){for(var t=n(e),a=t.length;a--;){var r=t[a],s=e[r];t[a]=[r,s,l(s)]}return t}},function(e,t,a){var l=a(75),n=a(208),r=a(215),s=a(44),i=a(85),o=a(86),c=a(26);e.exports=function(e,t){return s(e)&&i(t)?o(c(e),t):function(a){var s=n(a,e);return void 0===s&&s===t?r(a,e):l(t,s,3)}}},function(e,t,a){var l=a(87);e.exports=function(e,t,a){var n=null==e?void 0:l(e,t);return void 0===n?a:n}},function(e,t,a){var l=a(210),n=/[^.[\]]+|\[(?:(-?\d+(?:\.\d+)?)|(["'])((?:(?!\2)[^\\]|\\.)*?)\2)\]|(?=(?:\.|\[\])(?:\.|\[\]|$))/g,r=/\\(\\)?/g,s=l((function(e){var t=[];return 46===e.charCodeAt(0)&&t.push(""),e.replace(n,(function(e,a,l,n){t.push(l?n.replace(r,"$1"):a||e)})),t}));e.exports=s},function(e,t,a){var l=a(211);e.exports=function(e){var t=l(e,(function(e){return 500===a.size&&a.clear(),e})),a=t.cache;return t}},function(e,t,a){var l=a(41);function n(e,t){if("function"!=typeof e||null!=t&&"function"!=typeof t)throw new TypeError("Expected a function");var a=function(){var l=arguments,n=t?t.apply(this,l):l[0],r=a.cache;if(r.has(n))return r.get(n);var s=e.apply(this,l);return a.cache=r.set(n,s)||r,s};return a.cache=new(n.Cache||l),a}n.Cache=l,e.exports=n},function(e,t,a){var l=a(213);e.exports=function(e){return null==e?"":l(e)}},function(e,t,a){var l=a(15),n=a(214),r=a(5),s=a(45),i=l?l.prototype:void 0,o=i?i.toString:void 0;e.exports=function e(t){if("string"==typeof t)return t;if(r(t))return n(t,e)+"";if(s(t))return o?o.call(t):"";var a=t+"";return"0"==a&&1/t==-1/0?"-0":a}},function(e,t){e.exports=function(e,t){for(var a=-1,l=null==e?0:e.length,n=Array(l);++a<l;)n[a]=t(e[a],a,e);return n}},function(e,t,a){var l=a(216),n=a(217);e.exports=function(e,t){return null!=e&&n(e,t,l)}},function(e,t){e.exports=function(e,t){return null!=e&&t in Object(e)}},function(e,t,a){var l=a(88),n=a(38),r=a(5),s=a(81),i=a(43),o=a(26);e.exports=function(e,t,a){for(var c=-1,p=(t=l(t,e)).length,u=!1;++c<p;){var d=o(t[c]);if(!(u=null!=e&&a(e,d)))break;e=e[d]}return u||++c!=p?u:!!(p=null==e?0:e.length)&&i(p)&&s(d,p)&&(r(e)||n(e))}},function(e,t,a){var l=a(219),n=a(220),r=a(44),s=a(26);e.exports=function(e){return r(e)?l(s(e)):n(e)}},function(e,t){e.exports=function(e){return function(t){return null==t?void 0:t[e]}}},function(e,t,a){var l=a(87);e.exports=function(e){return function(t){return l(t,e)}}},function(e,t,a){var l=a(46),n=a(222),r=a(224);e.exports=function(e,t){return r(n(e,t,l),e+"")}},function(e,t,a){var l=a(223),n=Math.max;e.exports=function(e,t,a){return t=n(void 0===t?e.length-1:t,0),function(){for(var r=arguments,s=-1,i=n(r.length-t,0),o=Array(i);++s<i;)o[s]=r[t+s];s=-1;for(var c=Array(t+1);++s<t;)c[s]=r[s];return c[t]=a(o),l(e,this,c)}}},function(e,t){e.exports=function(e,t,a){switch(a.length){case 0:return e.call(t);case 1:return e.call(t,a[0]);case 2:return e.call(t,a[0],a[1]);case 3:return e.call(t,a[0],a[1],a[2])}return e.apply(t,a)}},function(e,t,a){var l=a(225),n=a(228)(l);e.exports=n},function(e,t,a){var l=a(226),n=a(227),r=a(46),s=n?function(e,t){return n(e,"toString",{configurable:!0,enumerable:!1,value:l(t),writable:!0})}:r;e.exports=s},function(e,t){e.exports=function(e){return function(){return e}}},function(e,t,a){var l=a(10),n=function(){try{var e=l(Object,"defineProperty");return e({},"",{}),e}catch(e){}}();e.exports=n},function(e,t){var a=Date.now;e.exports=function(e){var t=0,l=0;return function(){var n=a(),r=16-(n-l);if(l=n,r>0){if(++t>=800)return arguments[0]}else t=0;return e.apply(void 0,arguments)}}},function(e,t,a){var l=a(77),n=a(230),r=a(235),s=a(78),i=a(236),o=a(42);e.exports=function(e,t,a){var c=-1,p=n,u=e.length,d=!0,h=[],g=h;if(a)d=!1,p=r;else if(u>=200){var v=t?null:i(e);if(v)return o(v);d=!1,p=s,g=new l}else g=t?[]:h;e:for(;++c<u;){var f=e[c],m=t?t(f):f;if(f=a||0!==f?f:0,d&&m==m){for(var b=g.length;b--;)if(g[b]===m)continue e;t&&g.push(m),h.push(f)}else p(g,m,a)||(g!==h&&g.push(m),h.push(f))}return h}},function(e,t,a){var l=a(231);e.exports=function(e,t){return!!(null==e?0:e.length)&&l(e,t,0)>-1}},function(e,t,a){var l=a(232),n=a(233),r=a(234);e.exports=function(e,t,a){return t==t?r(e,t,a):l(e,n,a)}},function(e,t){e.exports=function(e,t,a,l){for(var n=e.length,r=a+(l?1:-1);l?r--:++r<n;)if(t(e[r],r,e))return r;return-1}},function(e,t){e.exports=function(e){return e!=e}},function(e,t){e.exports=function(e,t,a){for(var l=a-1,n=e.length;++l<n;)if(e[l]===t)return l;return-1}},function(e,t){e.exports=function(e,t,a){for(var l=-1,n=null==e?0:e.length;++l<n;)if(a(t,e[l]))return!0;return!1}},function(e,t,a){var l=a(84),n=a(237),r=a(42),s=l&&1/r(new l([,-0]))[1]==1/0?function(e){return new l(e)}:n;e.exports=s},function(e,t){e.exports=function(){}},function(e,t,a){var l=a(83),n=a(12);e.exports=function(e){return n(e)&&l(e)}},function(e,t,a){},function(e,t,a){},function(e,t,a){"use strict";a(89)},function(e,t,a){"use strict";a(90)},function(e,t,a){},function(e,t,a){},function(e,t,a){var l=a(17),n=a(1),r=a(246);l({global:!0},{Reflect:{}}),r(n.Reflect,"Reflect",!0)},function(e,t,a){var l=a(14).f,n=a(7),r=a(20)("toStringTag");e.exports=function(e,t,a){e&&!a&&(e=e.prototype),e&&!n(e,r)&&l(e,r,{configurable:!0,value:t})}},function(e,t){},function(e,t){function a(e,t){for(var a=0,l=e.length-1;l>=0;l--){var n=e[l];"."===n?e.splice(l,1):".."===n?(e.splice(l,1),a++):a&&(e.splice(l,1),a--)}if(t)for(;a--;a)e.unshift("..");return e}function l(e,t){if(e.filter)return e.filter(t);for(var a=[],l=0;l<e.length;l++)t(e[l],l,e)&&a.push(e[l]);return a}t.resolve=function(){for(var e="",t=!1,n=arguments.length-1;n>=-1&&!t;n--){var r=n>=0?arguments[n]:process.cwd();if("string"!=typeof r)throw new TypeError("Arguments to path.resolve must be strings");r&&(e=r+"/"+e,t="/"===r.charAt(0))}return(t?"/":"")+(e=a(l(e.split("/"),(function(e){return!!e})),!t).join("/"))||"."},t.normalize=function(e){var r=t.isAbsolute(e),s="/"===n(e,-1);return(e=a(l(e.split("/"),(function(e){return!!e})),!r).join("/"))||r||(e="."),e&&s&&(e+="/"),(r?"/":"")+e},t.isAbsolute=function(e){return"/"===e.charAt(0)},t.join=function(){var e=Array.prototype.slice.call(arguments,0);return t.normalize(l(e,(function(e,t){if("string"!=typeof e)throw new TypeError("Arguments to path.join must be strings");return e})).join("/"))},t.relative=function(e,a){function l(e){for(var t=0;t<e.length&&""===e[t];t++);for(var a=e.length-1;a>=0&&""===e[a];a--);return t>a?[]:e.slice(t,a-t+1)}e=t.resolve(e).substr(1),a=t.resolve(a).substr(1);for(var n=l(e.split("/")),r=l(a.split("/")),s=Math.min(n.length,r.length),i=s,o=0;o<s;o++)if(n[o]!==r[o]){i=o;break}var c=[];for(o=i;o<n.length;o++)c.push("..");return(c=c.concat(r.slice(i))).join("/")},t.sep="/",t.delimiter=":",t.dirname=function(e){if("string"!=typeof e&&(e+=""),0===e.length)return".";for(var t=e.charCodeAt(0),a=47===t,l=-1,n=!0,r=e.length-1;r>=1;--r)if(47===(t=e.charCodeAt(r))){if(!n){l=r;break}}else n=!1;return-1===l?a?"/":".":a&&1===l?"/":e.slice(0,l)},t.basename=function(e,t){var a=function(e){"string"!=typeof e&&(e+="");var t,a=0,l=-1,n=!0;for(t=e.length-1;t>=0;--t)if(47===e.charCodeAt(t)){if(!n){a=t+1;break}}else-1===l&&(n=!1,l=t+1);return-1===l?"":e.slice(a,l)}(e);return t&&a.substr(-1*t.length)===t&&(a=a.substr(0,a.length-t.length)),a},t.extname=function(e){"string"!=typeof e&&(e+="");for(var t=-1,a=0,l=-1,n=!0,r=0,s=e.length-1;s>=0;--s){var i=e.charCodeAt(s);if(47!==i)-1===l&&(n=!1,l=s+1),46===i?-1===t?t=s:1!==r&&(r=1):-1!==t&&(r=-1);else if(!n){a=s+1;break}}return-1===t||-1===l||0===r||1===r&&t===l-1&&t===a+1?"":e.slice(t,l)};var n="b"==="ab".substr(-1)?function(e,t,a){return e.substr(t,a)}:function(e,t,a){return t<0&&(t=e.length+t),e.substr(t,a)}},function(e,t,a){"use strict";var l=/[|\\{}()[\]^$+*?.]/g;t.escapeRegExpChars=function(e){return e?String(e).replace(l,"\\$&"):""};var n={"&":"&amp;","<":"&lt;",">":"&gt;",'"':"&#34;","'":"&#39;"},r=/[&<>'"]/g;function s(e){return n[e]||e}t.escapeXML=function(e){return null==e?"":String(e).replace(r,s)},t.escapeXML.toString=function(){return Function.prototype.toString.call(this)+';\nvar _ENCODE_HTML_RULES = {\n "&": "&amp;"\n , "<": "&lt;"\n , ">": "&gt;"\n , \'"\': "&#34;"\n , "\'": "&#39;"\n }\n , _MATCH_HTML = /[&<>\'"]/g;\nfunction encode_char(c) {\n return _ENCODE_HTML_RULES[c] || c;\n};\n'},t.shallowCopy=function(e,t){for(var a in t=t||{})e[a]=t[a];return e},t.shallowCopyFromList=function(e,t,a){for(var l=0;l<a.length;l++){var n=a[l];void 0!==t[n]&&(e[n]=t[n])}return e},t.cache={_data:{},set:function(e,t){this._data[e]=t},get:function(e){return this._data[e]},remove:function(e){delete this._data[e]},reset:function(){this._data={}}}},function(e){e.exports=JSON.parse('{"name":"ejs","description":"Embedded JavaScript templates","keywords":["template","engine","ejs"],"version":"2.7.4","author":"Matthew Eernisse <mde@fleegix.org> (http://fleegix.org)","license":"Apache-2.0","main":"./lib/ejs.js","repository":{"type":"git","url":"git://github.com/mde/ejs.git"},"bugs":"https://github.com/mde/ejs/issues","homepage":"https://github.com/mde/ejs","dependencies":{},"devDependencies":{"browserify":"^13.1.1","eslint":"^4.14.0","git-directory-deploy":"^1.5.1","jake":"^10.3.1","jsdoc":"^3.4.0","lru-cache":"^4.0.1","mocha":"^5.0.5","uglify-js":"^3.3.16"},"engines":{"node":">=0.10.0"},"scripts":{"test":"mocha","postinstall":"node ./postinstall.js"}}')},function(e,t,a){"use strict";a(91)},function(e,t,a){"use strict";a(92)},function(e,t,a){"use strict";a.r(t);
  18. /*!
  19. * Vue.js v2.7.14
  20. * (c) 2014-2022 Evan You
  21. * Released under the MIT License.
  22. */
  23. var l=Object.freeze({}),n=Array.isArray;function r(e){return null==e}function s(e){return null!=e}function i(e){return!0===e}function o(e){return"string"==typeof e||"number"==typeof e||"symbol"==typeof e||"boolean"==typeof e}function c(e){return"function"==typeof e}function p(e){return null!==e&&"object"==typeof e}var u=Object.prototype.toString;function d(e){return"[object Object]"===u.call(e)}function h(e){return"[object RegExp]"===u.call(e)}function g(e){var t=parseFloat(String(e));return t>=0&&Math.floor(t)===t&&isFinite(e)}function v(e){return s(e)&&"function"==typeof e.then&&"function"==typeof e.catch}function f(e){return null==e?"":Array.isArray(e)||d(e)&&e.toString===u?JSON.stringify(e,null,2):String(e)}function m(e){var t=parseFloat(e);return isNaN(t)?e:t}function b(e,t){for(var a=Object.create(null),l=e.split(","),n=0;n<l.length;n++)a[l[n]]=!0;return t?function(e){return a[e.toLowerCase()]}:function(e){return a[e]}}b("slot,component",!0);var E=b("key,ref,slot,slot-scope,is");function y(e,t){var a=e.length;if(a){if(t===e[a-1])return void(e.length=a-1);var l=e.indexOf(t);if(l>-1)return e.splice(l,1)}}var B=Object.prototype.hasOwnProperty;function A(e,t){return B.call(e,t)}function x(e){var t=Object.create(null);return function(a){return t[a]||(t[a]=e(a))}}var _=/-(\w)/g,S=x((function(e){return e.replace(_,(function(e,t){return t?t.toUpperCase():""}))})),k=x((function(e){return e.charAt(0).toUpperCase()+e.slice(1)})),T=/\B([A-Z])/g,w=x((function(e){return e.replace(T,"-$1").toLowerCase()}));var C=Function.prototype.bind?function(e,t){return e.bind(t)}:function(e,t){function a(a){var l=arguments.length;return l?l>1?e.apply(t,arguments):e.call(t,a):e.call(t)}return a._length=e.length,a};function P(e,t){t=t||0;for(var a=e.length-t,l=new Array(a);a--;)l[a]=e[a+t];return l}function j(e,t){for(var a in t)e[a]=t[a];return e}function D(e){for(var t={},a=0;a<e.length;a++)e[a]&&j(t,e[a]);return t}function L(e,t,a){}var U=function(e,t,a){return!1},O=function(e){return e};function M(e,t){if(e===t)return!0;var a=p(e),l=p(t);if(!a||!l)return!a&&!l&&String(e)===String(t);try{var n=Array.isArray(e),r=Array.isArray(t);if(n&&r)return e.length===t.length&&e.every((function(e,a){return M(e,t[a])}));if(e instanceof Date&&t instanceof Date)return e.getTime()===t.getTime();if(n||r)return!1;var s=Object.keys(e),i=Object.keys(t);return s.length===i.length&&s.every((function(a){return M(e[a],t[a])}))}catch(e){return!1}}function F(e,t){for(var a=0;a<e.length;a++)if(M(e[a],t))return a;return-1}function R(e){var t=!1;return function(){t||(t=!0,e.apply(this,arguments))}}function G(e,t){return e===t?0===e&&1/e!=1/t:e==e||t==t}var $=["component","directive","filter"],H=["beforeCreate","created","beforeMount","mounted","beforeUpdate","updated","beforeDestroy","destroyed","activated","deactivated","errorCaptured","serverPrefetch","renderTracked","renderTriggered"],I={optionMergeStrategies:Object.create(null),silent:!1,productionTip:!1,devtools:!1,performance:!1,errorHandler:null,warnHandler:null,ignoredElements:[],keyCodes:Object.create(null),isReservedTag:U,isReservedAttr:U,isUnknownElement:U,getTagNamespace:L,parsePlatformTagName:O,mustUseProp:U,async:!0,_lifecycleHooks:H},N=/a-zA-Z\u00B7\u00C0-\u00D6\u00D8-\u00F6\u00F8-\u037D\u037F-\u1FFF\u200C-\u200D\u203F-\u2040\u2070-\u218F\u2C00-\u2FEF\u3001-\uD7FF\uF900-\uFDCF\uFDF0-\uFFFD/;function V(e){var t=(e+"").charCodeAt(0);return 36===t||95===t}function J(e,t,a,l){Object.defineProperty(e,t,{value:a,enumerable:!!l,writable:!0,configurable:!0})}var Z=new RegExp("[^".concat(N.source,".$_\\d]"));var q="__proto__"in{},z="undefined"!=typeof window,Y=z&&window.navigator.userAgent.toLowerCase(),X=Y&&/msie|trident/.test(Y),W=Y&&Y.indexOf("msie 9.0")>0,K=Y&&Y.indexOf("edge/")>0;Y&&Y.indexOf("android");var Q=Y&&/iphone|ipad|ipod|ios/.test(Y);Y&&/chrome\/\d+/.test(Y),Y&&/phantomjs/.test(Y);var ee,te=Y&&Y.match(/firefox\/(\d+)/),ae={}.watch,le=!1;if(z)try{var ne={};Object.defineProperty(ne,"passive",{get:function(){le=!0}}),window.addEventListener("test-passive",null,ne)}catch(e){}var re=function(){return void 0===ee&&(ee=!z&&"undefined"!=typeof global&&(global.process&&"server"===global.process.env.VUE_ENV)),ee},se=z&&window.__VUE_DEVTOOLS_GLOBAL_HOOK__;function ie(e){return"function"==typeof e&&/native code/.test(e.toString())}var oe,ce="undefined"!=typeof Symbol&&ie(Symbol)&&"undefined"!=typeof Reflect&&ie(Reflect.ownKeys);oe="undefined"!=typeof Set&&ie(Set)?Set:function(){function e(){this.set=Object.create(null)}return e.prototype.has=function(e){return!0===this.set[e]},e.prototype.add=function(e){this.set[e]=!0},e.prototype.clear=function(){this.set=Object.create(null)},e}();var pe=null;function ue(e){void 0===e&&(e=null),e||pe&&pe._scope.off(),pe=e,e&&e._scope.on()}var de=function(){function e(e,t,a,l,n,r,s,i){this.tag=e,this.data=t,this.children=a,this.text=l,this.elm=n,this.ns=void 0,this.context=r,this.fnContext=void 0,this.fnOptions=void 0,this.fnScopeId=void 0,this.key=t&&t.key,this.componentOptions=s,this.componentInstance=void 0,this.parent=void 0,this.raw=!1,this.isStatic=!1,this.isRootInsert=!0,this.isComment=!1,this.isCloned=!1,this.isOnce=!1,this.asyncFactory=i,this.asyncMeta=void 0,this.isAsyncPlaceholder=!1}return Object.defineProperty(e.prototype,"child",{get:function(){return this.componentInstance},enumerable:!1,configurable:!0}),e}(),he=function(e){void 0===e&&(e="");var t=new de;return t.text=e,t.isComment=!0,t};function ge(e){return new de(void 0,void 0,void 0,String(e))}function ve(e){var t=new de(e.tag,e.data,e.children&&e.children.slice(),e.text,e.elm,e.context,e.componentOptions,e.asyncFactory);return t.ns=e.ns,t.isStatic=e.isStatic,t.key=e.key,t.isComment=e.isComment,t.fnContext=e.fnContext,t.fnOptions=e.fnOptions,t.fnScopeId=e.fnScopeId,t.asyncMeta=e.asyncMeta,t.isCloned=!0,t}var fe=0,me=[],be=function(){function e(){this._pending=!1,this.id=fe++,this.subs=[]}return e.prototype.addSub=function(e){this.subs.push(e)},e.prototype.removeSub=function(e){this.subs[this.subs.indexOf(e)]=null,this._pending||(this._pending=!0,me.push(this))},e.prototype.depend=function(t){e.target&&e.target.addDep(this)},e.prototype.notify=function(e){var t=this.subs.filter((function(e){return e}));for(var a=0,l=t.length;a<l;a++){0,t[a].update()}},e}();be.target=null;var Ee=[];function ye(e){Ee.push(e),be.target=e}function Be(){Ee.pop(),be.target=Ee[Ee.length-1]}var Ae=Array.prototype,xe=Object.create(Ae);["push","pop","shift","unshift","splice","sort","reverse"].forEach((function(e){var t=Ae[e];J(xe,e,(function(){for(var a=[],l=0;l<arguments.length;l++)a[l]=arguments[l];var n,r=t.apply(this,a),s=this.__ob__;switch(e){case"push":case"unshift":n=a;break;case"splice":n=a.slice(2)}return n&&s.observeArray(n),s.dep.notify(),r}))}));var _e=Object.getOwnPropertyNames(xe),Se={},ke=!0;function Te(e){ke=e}var we={notify:L,depend:L,addSub:L,removeSub:L},Ce=function(){function e(e,t,a){if(void 0===t&&(t=!1),void 0===a&&(a=!1),this.value=e,this.shallow=t,this.mock=a,this.dep=a?we:new be,this.vmCount=0,J(e,"__ob__",this),n(e)){if(!a)if(q)e.__proto__=xe;else for(var l=0,r=_e.length;l<r;l++){J(e,i=_e[l],xe[i])}t||this.observeArray(e)}else{var s=Object.keys(e);for(l=0;l<s.length;l++){var i;je(e,i=s[l],Se,void 0,t,a)}}}return e.prototype.observeArray=function(e){for(var t=0,a=e.length;t<a;t++)Pe(e[t],!1,this.mock)},e}();function Pe(e,t,a){return e&&A(e,"__ob__")&&e.__ob__ instanceof Ce?e.__ob__:!ke||!a&&re()||!n(e)&&!d(e)||!Object.isExtensible(e)||e.__v_skip||Re(e)||e instanceof de?void 0:new Ce(e,t,a)}function je(e,t,a,l,r,s){var i=new be,o=Object.getOwnPropertyDescriptor(e,t);if(!o||!1!==o.configurable){var c=o&&o.get,p=o&&o.set;c&&!p||a!==Se&&2!==arguments.length||(a=e[t]);var u=!r&&Pe(a,!1,s);return Object.defineProperty(e,t,{enumerable:!0,configurable:!0,get:function(){var t=c?c.call(e):a;return be.target&&(i.depend(),u&&(u.dep.depend(),n(t)&&Ue(t))),Re(t)&&!r?t.value:t},set:function(t){var l=c?c.call(e):a;if(G(l,t)){if(p)p.call(e,t);else{if(c)return;if(!r&&Re(l)&&!Re(t))return void(l.value=t);a=t}u=!r&&Pe(t,!1,s),i.notify()}}}),i}}function De(e,t,a){if(!Fe(e)){var l=e.__ob__;return n(e)&&g(t)?(e.length=Math.max(e.length,t),e.splice(t,1,a),l&&!l.shallow&&l.mock&&Pe(a,!1,!0),a):t in e&&!(t in Object.prototype)?(e[t]=a,a):e._isVue||l&&l.vmCount?a:l?(je(l.value,t,a,void 0,l.shallow,l.mock),l.dep.notify(),a):(e[t]=a,a)}}function Le(e,t){if(n(e)&&g(t))e.splice(t,1);else{var a=e.__ob__;e._isVue||a&&a.vmCount||Fe(e)||A(e,t)&&(delete e[t],a&&a.dep.notify())}}function Ue(e){for(var t=void 0,a=0,l=e.length;a<l;a++)(t=e[a])&&t.__ob__&&t.__ob__.dep.depend(),n(t)&&Ue(t)}function Oe(e){return Me(e,!0),J(e,"__v_isShallow",!0),e}function Me(e,t){if(!Fe(e)){Pe(e,t,re());0}}function Fe(e){return!(!e||!e.__v_isReadonly)}function Re(e){return!(!e||!0!==e.__v_isRef)}function Ge(e,t,a){Object.defineProperty(e,a,{enumerable:!0,configurable:!0,get:function(){var e=t[a];if(Re(e))return e.value;var l=e&&e.__ob__;return l&&l.dep.depend(),e},set:function(e){var l=t[a];Re(l)&&!Re(e)?l.value=e:t[a]=e}})}"".concat("watcher"," callback"),"".concat("watcher"," getter"),"".concat("watcher"," cleanup");var $e;var He=function(){function e(e){void 0===e&&(e=!1),this.detached=e,this.active=!0,this.effects=[],this.cleanups=[],this.parent=$e,!e&&$e&&(this.index=($e.scopes||($e.scopes=[])).push(this)-1)}return e.prototype.run=function(e){if(this.active){var t=$e;try{return $e=this,e()}finally{$e=t}}else 0},e.prototype.on=function(){$e=this},e.prototype.off=function(){$e=this.parent},e.prototype.stop=function(e){if(this.active){var t=void 0,a=void 0;for(t=0,a=this.effects.length;t<a;t++)this.effects[t].teardown();for(t=0,a=this.cleanups.length;t<a;t++)this.cleanups[t]();if(this.scopes)for(t=0,a=this.scopes.length;t<a;t++)this.scopes[t].stop(!0);if(!this.detached&&this.parent&&!e){var l=this.parent.scopes.pop();l&&l!==this&&(this.parent.scopes[this.index]=l,l.index=this.index)}this.parent=void 0,this.active=!1}},e}();function Ie(e){var t=e._provided,a=e.$parent&&e.$parent._provided;return a===t?e._provided=Object.create(a):t}var Ne=x((function(e){var t="&"===e.charAt(0),a="~"===(e=t?e.slice(1):e).charAt(0),l="!"===(e=a?e.slice(1):e).charAt(0);return{name:e=l?e.slice(1):e,once:a,capture:l,passive:t}}));function Ve(e,t){function a(){var e=a.fns;if(!n(e))return kt(e,null,arguments,t,"v-on handler");for(var l=e.slice(),r=0;r<l.length;r++)kt(l[r],null,arguments,t,"v-on handler")}return a.fns=e,a}function Je(e,t,a,l,n,s){var o,c,p,u;for(o in e)c=e[o],p=t[o],u=Ne(o),r(c)||(r(p)?(r(c.fns)&&(c=e[o]=Ve(c,s)),i(u.once)&&(c=e[o]=n(u.name,c,u.capture)),a(u.name,c,u.capture,u.passive,u.params)):c!==p&&(p.fns=c,e[o]=p));for(o in t)r(e[o])&&l((u=Ne(o)).name,t[o],u.capture)}function Ze(e,t,a){var l;e instanceof de&&(e=e.data.hook||(e.data.hook={}));var n=e[t];function o(){a.apply(this,arguments),y(l.fns,o)}r(n)?l=Ve([o]):s(n.fns)&&i(n.merged)?(l=n).fns.push(o):l=Ve([n,o]),l.merged=!0,e[t]=l}function qe(e,t,a,l,n){if(s(t)){if(A(t,a))return e[a]=t[a],n||delete t[a],!0;if(A(t,l))return e[a]=t[l],n||delete t[l],!0}return!1}function ze(e){return o(e)?[ge(e)]:n(e)?function e(t,a){var l,c,p,u,d=[];for(l=0;l<t.length;l++)r(c=t[l])||"boolean"==typeof c||(p=d.length-1,u=d[p],n(c)?c.length>0&&(Ye((c=e(c,"".concat(a||"","_").concat(l)))[0])&&Ye(u)&&(d[p]=ge(u.text+c[0].text),c.shift()),d.push.apply(d,c)):o(c)?Ye(u)?d[p]=ge(u.text+c):""!==c&&d.push(ge(c)):Ye(c)&&Ye(u)?d[p]=ge(u.text+c.text):(i(t._isVList)&&s(c.tag)&&r(c.key)&&s(a)&&(c.key="__vlist".concat(a,"_").concat(l,"__")),d.push(c)));return d}(e):void 0}function Ye(e){return s(e)&&s(e.text)&&!1===e.isComment}function Xe(e,t){var a,l,r,i,o=null;if(n(e)||"string"==typeof e)for(o=new Array(e.length),a=0,l=e.length;a<l;a++)o[a]=t(e[a],a);else if("number"==typeof e)for(o=new Array(e),a=0;a<e;a++)o[a]=t(a+1,a);else if(p(e))if(ce&&e[Symbol.iterator]){o=[];for(var c=e[Symbol.iterator](),u=c.next();!u.done;)o.push(t(u.value,o.length)),u=c.next()}else for(r=Object.keys(e),o=new Array(r.length),a=0,l=r.length;a<l;a++)i=r[a],o[a]=t(e[i],i,a);return s(o)||(o=[]),o._isVList=!0,o}function We(e,t,a,l){var n,r=this.$scopedSlots[e];r?(a=a||{},l&&(a=j(j({},l),a)),n=r(a)||(c(t)?t():t)):n=this.$slots[e]||(c(t)?t():t);var s=a&&a.slot;return s?this.$createElement("template",{slot:s},n):n}function Ke(e){return Ca(this.$options,"filters",e,!0)||O}function Qe(e,t){return n(e)?-1===e.indexOf(t):e!==t}function et(e,t,a,l,n){var r=I.keyCodes[t]||a;return n&&l&&!I.keyCodes[t]?Qe(n,l):r?Qe(r,e):l?w(l)!==t:void 0===e}function tt(e,t,a,l,r){if(a)if(p(a)){n(a)&&(a=D(a));var s=void 0,i=function(n){if("class"===n||"style"===n||E(n))s=e;else{var i=e.attrs&&e.attrs.type;s=l||I.mustUseProp(t,i,n)?e.domProps||(e.domProps={}):e.attrs||(e.attrs={})}var o=S(n),c=w(n);o in s||c in s||(s[n]=a[n],r&&((e.on||(e.on={}))["update:".concat(n)]=function(e){a[n]=e}))};for(var o in a)i(o)}else;return e}function at(e,t){var a=this._staticTrees||(this._staticTrees=[]),l=a[e];return l&&!t||nt(l=a[e]=this.$options.staticRenderFns[e].call(this._renderProxy,this._c,this),"__static__".concat(e),!1),l}function lt(e,t,a){return nt(e,"__once__".concat(t).concat(a?"_".concat(a):""),!0),e}function nt(e,t,a){if(n(e))for(var l=0;l<e.length;l++)e[l]&&"string"!=typeof e[l]&&rt(e[l],"".concat(t,"_").concat(l),a);else rt(e,t,a)}function rt(e,t,a){e.isStatic=!0,e.key=t,e.isOnce=a}function st(e,t){if(t)if(d(t)){var a=e.on=e.on?j({},e.on):{};for(var l in t){var n=a[l],r=t[l];a[l]=n?[].concat(n,r):r}}else;return e}function it(e,t,a,l){t=t||{$stable:!a};for(var r=0;r<e.length;r++){var s=e[r];n(s)?it(s,t,a):s&&(s.proxy&&(s.fn.proxy=!0),t[s.key]=s.fn)}return l&&(t.$key=l),t}function ot(e,t){for(var a=0;a<t.length;a+=2){var l=t[a];"string"==typeof l&&l&&(e[t[a]]=t[a+1])}return e}function ct(e,t){return"string"==typeof e?t+e:e}function pt(e){e._o=lt,e._n=m,e._s=f,e._l=Xe,e._t=We,e._q=M,e._i=F,e._m=at,e._f=Ke,e._k=et,e._b=tt,e._v=ge,e._e=he,e._u=it,e._g=st,e._d=ot,e._p=ct}function ut(e,t){if(!e||!e.length)return{};for(var a={},l=0,n=e.length;l<n;l++){var r=e[l],s=r.data;if(s&&s.attrs&&s.attrs.slot&&delete s.attrs.slot,r.context!==t&&r.fnContext!==t||!s||null==s.slot)(a.default||(a.default=[])).push(r);else{var i=s.slot,o=a[i]||(a[i]=[]);"template"===r.tag?o.push.apply(o,r.children||[]):o.push(r)}}for(var c in a)a[c].every(dt)&&delete a[c];return a}function dt(e){return e.isComment&&!e.asyncFactory||" "===e.text}function ht(e){return e.isComment&&e.asyncFactory}function gt(e,t,a,n){var r,s=Object.keys(a).length>0,i=t?!!t.$stable:!s,o=t&&t.$key;if(t){if(t._normalized)return t._normalized;if(i&&n&&n!==l&&o===n.$key&&!s&&!n.$hasNormal)return n;for(var c in r={},t)t[c]&&"$"!==c[0]&&(r[c]=vt(e,a,c,t[c]))}else r={};for(var p in a)p in r||(r[p]=ft(a,p));return t&&Object.isExtensible(t)&&(t._normalized=r),J(r,"$stable",i),J(r,"$key",o),J(r,"$hasNormal",s),r}function vt(e,t,a,l){var r=function(){var t=pe;ue(e);var a=arguments.length?l.apply(null,arguments):l({}),r=(a=a&&"object"==typeof a&&!n(a)?[a]:ze(a))&&a[0];return ue(t),a&&(!r||1===a.length&&r.isComment&&!ht(r))?void 0:a};return l.proxy&&Object.defineProperty(t,a,{get:r,enumerable:!0,configurable:!0}),r}function ft(e,t){return function(){return e[t]}}function mt(e){return{get attrs(){if(!e._attrsProxy){var t=e._attrsProxy={};J(t,"_v_attr_proxy",!0),bt(t,e.$attrs,l,e,"$attrs")}return e._attrsProxy},get listeners(){e._listenersProxy||bt(e._listenersProxy={},e.$listeners,l,e,"$listeners");return e._listenersProxy},get slots(){return function(e){e._slotsProxy||yt(e._slotsProxy={},e.$scopedSlots);return e._slotsProxy}(e)},emit:C(e.$emit,e),expose:function(t){t&&Object.keys(t).forEach((function(a){return Ge(e,t,a)}))}}}function bt(e,t,a,l,n){var r=!1;for(var s in t)s in e?t[s]!==a[s]&&(r=!0):(r=!0,Et(e,s,l,n));for(var s in e)s in t||(r=!0,delete e[s]);return r}function Et(e,t,a,l){Object.defineProperty(e,t,{enumerable:!0,configurable:!0,get:function(){return a[l][t]}})}function yt(e,t){for(var a in t)e[a]=t[a];for(var a in e)a in t||delete e[a]}var Bt=null;function At(e,t){return(e.__esModule||ce&&"Module"===e[Symbol.toStringTag])&&(e=e.default),p(e)?t.extend(e):e}function xt(e){if(n(e))for(var t=0;t<e.length;t++){var a=e[t];if(s(a)&&(s(a.componentOptions)||ht(a)))return a}}function _t(e,t,a,l,u,d){return(n(a)||o(a))&&(u=l,l=a,a=void 0),i(d)&&(u=2),function(e,t,a,l,o){if(s(a)&&s(a.__ob__))return he();s(a)&&s(a.is)&&(t=a.is);if(!t)return he();0;n(l)&&c(l[0])&&((a=a||{}).scopedSlots={default:l[0]},l.length=0);2===o?l=ze(l):1===o&&(l=function(e){for(var t=0;t<e.length;t++)if(n(e[t]))return Array.prototype.concat.apply([],e);return e}(l));var u,d;if("string"==typeof t){var h=void 0;d=e.$vnode&&e.$vnode.ns||I.getTagNamespace(t),u=I.isReservedTag(t)?new de(I.parsePlatformTagName(t),a,l,void 0,void 0,e):a&&a.pre||!s(h=Ca(e.$options,"components",t))?new de(t,a,l,void 0,void 0,e):Ea(h,a,e,l,t)}else u=Ea(t,a,e,l);return n(u)?u:s(u)?(s(d)&&function e(t,a,l){t.ns=a,"foreignObject"===t.tag&&(a=void 0,l=!0);if(s(t.children))for(var n=0,o=t.children.length;n<o;n++){var c=t.children[n];s(c.tag)&&(r(c.ns)||i(l)&&"svg"!==c.tag)&&e(c,a,l)}}(u,d),s(a)&&function(e){p(e.style)&&Ht(e.style);p(e.class)&&Ht(e.class)}(a),u):he()}(e,t,a,l,u)}function St(e,t,a){ye();try{if(t)for(var l=t;l=l.$parent;){var n=l.$options.errorCaptured;if(n)for(var r=0;r<n.length;r++)try{if(!1===n[r].call(l,e,t,a))return}catch(e){Tt(e,l,"errorCaptured hook")}}Tt(e,t,a)}finally{Be()}}function kt(e,t,a,l,n){var r;try{(r=a?e.apply(t,a):e.call(t))&&!r._isVue&&v(r)&&!r._handled&&(r.catch((function(e){return St(e,l,n+" (Promise/async)")})),r._handled=!0)}catch(e){St(e,l,n)}return r}function Tt(e,t,a){if(I.errorHandler)try{return I.errorHandler.call(null,e,t,a)}catch(t){t!==e&&wt(t,null,"config.errorHandler")}wt(e,t,a)}function wt(e,t,a){if(!z||"undefined"==typeof console)throw e;console.error(e)}var Ct,Pt=!1,jt=[],Dt=!1;function Lt(){Dt=!1;var e=jt.slice(0);jt.length=0;for(var t=0;t<e.length;t++)e[t]()}if("undefined"!=typeof Promise&&ie(Promise)){var Ut=Promise.resolve();Ct=function(){Ut.then(Lt),Q&&setTimeout(L)},Pt=!0}else if(X||"undefined"==typeof MutationObserver||!ie(MutationObserver)&&"[object MutationObserverConstructor]"!==MutationObserver.toString())Ct="undefined"!=typeof setImmediate&&ie(setImmediate)?function(){setImmediate(Lt)}:function(){setTimeout(Lt,0)};else{var Ot=1,Mt=new MutationObserver(Lt),Ft=document.createTextNode(String(Ot));Mt.observe(Ft,{characterData:!0}),Ct=function(){Ot=(Ot+1)%2,Ft.data=String(Ot)},Pt=!0}function Rt(e,t){var a;if(jt.push((function(){if(e)try{e.call(t)}catch(e){St(e,t,"nextTick")}else a&&a(t)})),Dt||(Dt=!0,Ct()),!e&&"undefined"!=typeof Promise)return new Promise((function(e){a=e}))}function Gt(e){return function(t,a){if(void 0===a&&(a=pe),a)return function(e,t,a){var l=e.$options;l[t]=Sa(l[t],a)}(a,e,t)}}Gt("beforeMount"),Gt("mounted"),Gt("beforeUpdate"),Gt("updated"),Gt("beforeDestroy"),Gt("destroyed"),Gt("activated"),Gt("deactivated"),Gt("serverPrefetch"),Gt("renderTracked"),Gt("renderTriggered"),Gt("errorCaptured");var $t=new oe;function Ht(e){return function e(t,a){var l,r,s=n(t);if(!s&&!p(t)||t.__v_skip||Object.isFrozen(t)||t instanceof de)return;if(t.__ob__){var i=t.__ob__.dep.id;if(a.has(i))return;a.add(i)}if(s)for(l=t.length;l--;)e(t[l],a);else if(Re(t))e(t.value,a);else for(r=Object.keys(t),l=r.length;l--;)e(t[r[l]],a)}(e,$t),$t.clear(),e}var It,Nt=0,Vt=function(){function e(e,t,a,l,n){var r,s;r=this,void 0===(s=$e&&!$e._vm?$e:e?e._scope:void 0)&&(s=$e),s&&s.active&&s.effects.push(r),(this.vm=e)&&n&&(e._watcher=this),l?(this.deep=!!l.deep,this.user=!!l.user,this.lazy=!!l.lazy,this.sync=!!l.sync,this.before=l.before):this.deep=this.user=this.lazy=this.sync=!1,this.cb=a,this.id=++Nt,this.active=!0,this.post=!1,this.dirty=this.lazy,this.deps=[],this.newDeps=[],this.depIds=new oe,this.newDepIds=new oe,this.expression="",c(t)?this.getter=t:(this.getter=function(e){if(!Z.test(e)){var t=e.split(".");return function(e){for(var a=0;a<t.length;a++){if(!e)return;e=e[t[a]]}return e}}}(t),this.getter||(this.getter=L)),this.value=this.lazy?void 0:this.get()}return e.prototype.get=function(){var e;ye(this);var t=this.vm;try{e=this.getter.call(t,t)}catch(e){if(!this.user)throw e;St(e,t,'getter for watcher "'.concat(this.expression,'"'))}finally{this.deep&&Ht(e),Be(),this.cleanupDeps()}return e},e.prototype.addDep=function(e){var t=e.id;this.newDepIds.has(t)||(this.newDepIds.add(t),this.newDeps.push(e),this.depIds.has(t)||e.addSub(this))},e.prototype.cleanupDeps=function(){for(var e=this.deps.length;e--;){var t=this.deps[e];this.newDepIds.has(t.id)||t.removeSub(this)}var a=this.depIds;this.depIds=this.newDepIds,this.newDepIds=a,this.newDepIds.clear(),a=this.deps,this.deps=this.newDeps,this.newDeps=a,this.newDeps.length=0},e.prototype.update=function(){this.lazy?this.dirty=!0:this.sync?this.run():ua(this)},e.prototype.run=function(){if(this.active){var e=this.get();if(e!==this.value||p(e)||this.deep){var t=this.value;if(this.value=e,this.user){var a='callback for watcher "'.concat(this.expression,'"');kt(this.cb,this.vm,[e,t],this.vm,a)}else this.cb.call(this.vm,e,t)}}},e.prototype.evaluate=function(){this.value=this.get(),this.dirty=!1},e.prototype.depend=function(){for(var e=this.deps.length;e--;)this.deps[e].depend()},e.prototype.teardown=function(){if(this.vm&&!this.vm._isBeingDestroyed&&y(this.vm._scope.effects,this),this.active){for(var e=this.deps.length;e--;)this.deps[e].removeSub(this);this.active=!1,this.onStop&&this.onStop()}},e}();function Jt(e,t){It.$on(e,t)}function Zt(e,t){It.$off(e,t)}function qt(e,t){var a=It;return function l(){var n=t.apply(null,arguments);null!==n&&a.$off(e,l)}}function zt(e,t,a){It=e,Je(t,a||{},Jt,Zt,qt,e),It=void 0}var Yt=null;function Xt(e){var t=Yt;return Yt=e,function(){Yt=t}}function Wt(e){for(;e&&(e=e.$parent);)if(e._inactive)return!0;return!1}function Kt(e,t){if(t){if(e._directInactive=!1,Wt(e))return}else if(e._directInactive)return;if(e._inactive||null===e._inactive){e._inactive=!1;for(var a=0;a<e.$children.length;a++)Kt(e.$children[a]);Qt(e,"activated")}}function Qt(e,t,a,l){void 0===l&&(l=!0),ye();var n=pe;l&&ue(e);var r=e.$options[t],s="".concat(t," hook");if(r)for(var i=0,o=r.length;i<o;i++)kt(r[i],e,a||null,e,s);e._hasHookEvent&&e.$emit("hook:"+t),l&&ue(n),Be()}var ea=[],ta=[],aa={},la=!1,na=!1,ra=0;var sa=0,ia=Date.now;if(z&&!X){var oa=window.performance;oa&&"function"==typeof oa.now&&ia()>document.createEvent("Event").timeStamp&&(ia=function(){return oa.now()})}var ca=function(e,t){if(e.post){if(!t.post)return 1}else if(t.post)return-1;return e.id-t.id};function pa(){var e,t;for(sa=ia(),na=!0,ea.sort(ca),ra=0;ra<ea.length;ra++)(e=ea[ra]).before&&e.before(),t=e.id,aa[t]=null,e.run();var a=ta.slice(),l=ea.slice();ra=ea.length=ta.length=0,aa={},la=na=!1,function(e){for(var t=0;t<e.length;t++)e[t]._inactive=!0,Kt(e[t],!0)}(a),function(e){var t=e.length;for(;t--;){var a=e[t],l=a.vm;l&&l._watcher===a&&l._isMounted&&!l._isDestroyed&&Qt(l,"updated")}}(l),function(){for(var e=0;e<me.length;e++){var t=me[e];t.subs=t.subs.filter((function(e){return e})),t._pending=!1}me.length=0}(),se&&I.devtools&&se.emit("flush")}function ua(e){var t=e.id;if(null==aa[t]&&(e!==be.target||!e.noRecurse)){if(aa[t]=!0,na){for(var a=ea.length-1;a>ra&&ea[a].id>e.id;)a--;ea.splice(a+1,0,e)}else ea.push(e);la||(la=!0,Rt(pa))}}function da(e,t){if(e){for(var a=Object.create(null),l=ce?Reflect.ownKeys(e):Object.keys(e),n=0;n<l.length;n++){var r=l[n];if("__ob__"!==r){var s=e[r].from;if(s in t._provided)a[r]=t._provided[s];else if("default"in e[r]){var i=e[r].default;a[r]=c(i)?i.call(t):i}else 0}}return a}}function ha(e,t,a,r,s){var o,c=this,p=s.options;A(r,"_uid")?(o=Object.create(r))._original=r:(o=r,r=r._original);var u=i(p._compiled),d=!u;this.data=e,this.props=t,this.children=a,this.parent=r,this.listeners=e.on||l,this.injections=da(p.inject,r),this.slots=function(){return c.$slots||gt(r,e.scopedSlots,c.$slots=ut(a,r)),c.$slots},Object.defineProperty(this,"scopedSlots",{enumerable:!0,get:function(){return gt(r,e.scopedSlots,this.slots())}}),u&&(this.$options=p,this.$slots=this.slots(),this.$scopedSlots=gt(r,e.scopedSlots,this.$slots)),p._scopeId?this._c=function(e,t,a,l){var s=_t(o,e,t,a,l,d);return s&&!n(s)&&(s.fnScopeId=p._scopeId,s.fnContext=r),s}:this._c=function(e,t,a,l){return _t(o,e,t,a,l,d)}}function ga(e,t,a,l,n){var r=ve(e);return r.fnContext=a,r.fnOptions=l,t.slot&&((r.data||(r.data={})).slot=t.slot),r}function va(e,t){for(var a in t)e[S(a)]=t[a]}function fa(e){return e.name||e.__name||e._componentTag}pt(ha.prototype);var ma={init:function(e,t){if(e.componentInstance&&!e.componentInstance._isDestroyed&&e.data.keepAlive){var a=e;ma.prepatch(a,a)}else{(e.componentInstance=function(e,t){var a={_isComponent:!0,_parentVnode:e,parent:t},l=e.data.inlineTemplate;s(l)&&(a.render=l.render,a.staticRenderFns=l.staticRenderFns);return new e.componentOptions.Ctor(a)}(e,Yt)).$mount(t?e.elm:void 0,t)}},prepatch:function(e,t){var a=t.componentOptions;!function(e,t,a,n,r){var s=n.data.scopedSlots,i=e.$scopedSlots,o=!!(s&&!s.$stable||i!==l&&!i.$stable||s&&e.$scopedSlots.$key!==s.$key||!s&&e.$scopedSlots.$key),c=!!(r||e.$options._renderChildren||o),p=e.$vnode;e.$options._parentVnode=n,e.$vnode=n,e._vnode&&(e._vnode.parent=n),e.$options._renderChildren=r;var u=n.data.attrs||l;e._attrsProxy&&bt(e._attrsProxy,u,p.data&&p.data.attrs||l,e,"$attrs")&&(c=!0),e.$attrs=u,a=a||l;var d=e.$options._parentListeners;if(e._listenersProxy&&bt(e._listenersProxy,a,d||l,e,"$listeners"),e.$listeners=e.$options._parentListeners=a,zt(e,a,d),t&&e.$options.props){Te(!1);for(var h=e._props,g=e.$options._propKeys||[],v=0;v<g.length;v++){var f=g[v],m=e.$options.props;h[f]=Pa(f,m,t,e)}Te(!0),e.$options.propsData=t}c&&(e.$slots=ut(r,n.context),e.$forceUpdate())}(t.componentInstance=e.componentInstance,a.propsData,a.listeners,t,a.children)},insert:function(e){var t,a=e.context,l=e.componentInstance;l._isMounted||(l._isMounted=!0,Qt(l,"mounted")),e.data.keepAlive&&(a._isMounted?((t=l)._inactive=!1,ta.push(t)):Kt(l,!0))},destroy:function(e){var t=e.componentInstance;t._isDestroyed||(e.data.keepAlive?function e(t,a){if(!(a&&(t._directInactive=!0,Wt(t))||t._inactive)){t._inactive=!0;for(var l=0;l<t.$children.length;l++)e(t.$children[l]);Qt(t,"deactivated")}}(t,!0):t.$destroy())}},ba=Object.keys(ma);function Ea(e,t,a,o,c){if(!r(e)){var u=a.$options._base;if(p(e)&&(e=u.extend(e)),"function"==typeof e){var d;if(r(e.cid)&&void 0===(e=function(e,t){if(i(e.error)&&s(e.errorComp))return e.errorComp;if(s(e.resolved))return e.resolved;var a=Bt;if(a&&s(e.owners)&&-1===e.owners.indexOf(a)&&e.owners.push(a),i(e.loading)&&s(e.loadingComp))return e.loadingComp;if(a&&!s(e.owners)){var l=e.owners=[a],n=!0,o=null,c=null;a.$on("hook:destroyed",(function(){return y(l,a)}));var u=function(e){for(var t=0,a=l.length;t<a;t++)l[t].$forceUpdate();e&&(l.length=0,null!==o&&(clearTimeout(o),o=null),null!==c&&(clearTimeout(c),c=null))},d=R((function(a){e.resolved=At(a,t),n?l.length=0:u(!0)})),h=R((function(t){s(e.errorComp)&&(e.error=!0,u(!0))})),g=e(d,h);return p(g)&&(v(g)?r(e.resolved)&&g.then(d,h):v(g.component)&&(g.component.then(d,h),s(g.error)&&(e.errorComp=At(g.error,t)),s(g.loading)&&(e.loadingComp=At(g.loading,t),0===g.delay?e.loading=!0:o=setTimeout((function(){o=null,r(e.resolved)&&r(e.error)&&(e.loading=!0,u(!1))}),g.delay||200)),s(g.timeout)&&(c=setTimeout((function(){c=null,r(e.resolved)&&h(null)}),g.timeout)))),n=!1,e.loading?e.loadingComp:e.resolved}}(d=e,u)))return function(e,t,a,l,n){var r=he();return r.asyncFactory=e,r.asyncMeta={data:t,context:a,children:l,tag:n},r}(d,t,a,o,c);t=t||{},Va(e),s(t.model)&&function(e,t){var a=e.model&&e.model.prop||"value",l=e.model&&e.model.event||"input";(t.attrs||(t.attrs={}))[a]=t.model.value;var r=t.on||(t.on={}),i=r[l],o=t.model.callback;s(i)?(n(i)?-1===i.indexOf(o):i!==o)&&(r[l]=[o].concat(i)):r[l]=o}(e.options,t);var h=function(e,t,a){var l=t.options.props;if(!r(l)){var n={},i=e.attrs,o=e.props;if(s(i)||s(o))for(var c in l){var p=w(c);qe(n,o,c,p,!0)||qe(n,i,c,p,!1)}return n}}(t,e);if(i(e.options.functional))return function(e,t,a,r,i){var o=e.options,c={},p=o.props;if(s(p))for(var u in p)c[u]=Pa(u,p,t||l);else s(a.attrs)&&va(c,a.attrs),s(a.props)&&va(c,a.props);var d=new ha(a,c,i,r,e),h=o.render.call(null,d._c,d);if(h instanceof de)return ga(h,a,d.parent,o,d);if(n(h)){for(var g=ze(h)||[],v=new Array(g.length),f=0;f<g.length;f++)v[f]=ga(g[f],a,d.parent,o,d);return v}}(e,h,t,a,o);var g=t.on;if(t.on=t.nativeOn,i(e.options.abstract)){var f=t.slot;t={},f&&(t.slot=f)}!function(e){for(var t=e.hook||(e.hook={}),a=0;a<ba.length;a++){var l=ba[a],n=t[l],r=ma[l];n===r||n&&n._merged||(t[l]=n?ya(r,n):r)}}(t);var m=fa(e.options)||c;return new de("vue-component-".concat(e.cid).concat(m?"-".concat(m):""),t,void 0,void 0,void 0,a,{Ctor:e,propsData:h,listeners:g,tag:c,children:o},d)}}}function ya(e,t){var a=function(a,l){e(a,l),t(a,l)};return a._merged=!0,a}var Ba=L,Aa=I.optionMergeStrategies;function xa(e,t,a){if(void 0===a&&(a=!0),!t)return e;for(var l,n,r,s=ce?Reflect.ownKeys(t):Object.keys(t),i=0;i<s.length;i++)"__ob__"!==(l=s[i])&&(n=e[l],r=t[l],a&&A(e,l)?n!==r&&d(n)&&d(r)&&xa(n,r):De(e,l,r));return e}function _a(e,t,a){return a?function(){var l=c(t)?t.call(a,a):t,n=c(e)?e.call(a,a):e;return l?xa(l,n):n}:t?e?function(){return xa(c(t)?t.call(this,this):t,c(e)?e.call(this,this):e)}:t:e}function Sa(e,t){var a=t?e?e.concat(t):n(t)?t:[t]:e;return a?function(e){for(var t=[],a=0;a<e.length;a++)-1===t.indexOf(e[a])&&t.push(e[a]);return t}(a):a}function ka(e,t,a,l){var n=Object.create(e||null);return t?j(n,t):n}Aa.data=function(e,t,a){return a?_a(e,t,a):t&&"function"!=typeof t?e:_a(e,t)},H.forEach((function(e){Aa[e]=Sa})),$.forEach((function(e){Aa[e+"s"]=ka})),Aa.watch=function(e,t,a,l){if(e===ae&&(e=void 0),t===ae&&(t=void 0),!t)return Object.create(e||null);if(!e)return t;var r={};for(var s in j(r,e),t){var i=r[s],o=t[s];i&&!n(i)&&(i=[i]),r[s]=i?i.concat(o):n(o)?o:[o]}return r},Aa.props=Aa.methods=Aa.inject=Aa.computed=function(e,t,a,l){if(!e)return t;var n=Object.create(null);return j(n,e),t&&j(n,t),n},Aa.provide=function(e,t){return e?function(){var a=Object.create(null);return xa(a,c(e)?e.call(this):e),t&&xa(a,c(t)?t.call(this):t,!1),a}:t};var Ta=function(e,t){return void 0===t?e:t};function wa(e,t,a){if(c(t)&&(t=t.options),function(e,t){var a=e.props;if(a){var l,r,s={};if(n(a))for(l=a.length;l--;)"string"==typeof(r=a[l])&&(s[S(r)]={type:null});else if(d(a))for(var i in a)r=a[i],s[S(i)]=d(r)?r:{type:r};else 0;e.props=s}}(t),function(e,t){var a=e.inject;if(a){var l=e.inject={};if(n(a))for(var r=0;r<a.length;r++)l[a[r]]={from:a[r]};else if(d(a))for(var s in a){var i=a[s];l[s]=d(i)?j({from:s},i):{from:i}}else 0}}(t),function(e){var t=e.directives;if(t)for(var a in t){var l=t[a];c(l)&&(t[a]={bind:l,update:l})}}(t),!t._base&&(t.extends&&(e=wa(e,t.extends,a)),t.mixins))for(var l=0,r=t.mixins.length;l<r;l++)e=wa(e,t.mixins[l],a);var s,i={};for(s in e)o(s);for(s in t)A(e,s)||o(s);function o(l){var n=Aa[l]||Ta;i[l]=n(e[l],t[l],a,l)}return i}function Ca(e,t,a,l){if("string"==typeof a){var n=e[t];if(A(n,a))return n[a];var r=S(a);if(A(n,r))return n[r];var s=k(r);return A(n,s)?n[s]:n[a]||n[r]||n[s]}}function Pa(e,t,a,l){var n=t[e],r=!A(a,e),s=a[e],i=Ua(Boolean,n.type);if(i>-1)if(r&&!A(n,"default"))s=!1;else if(""===s||s===w(e)){var o=Ua(String,n.type);(o<0||i<o)&&(s=!0)}if(void 0===s){s=function(e,t,a){if(!A(t,"default"))return;var l=t.default;0;if(e&&e.$options.propsData&&void 0===e.$options.propsData[a]&&void 0!==e._props[a])return e._props[a];return c(l)&&"Function"!==Da(t.type)?l.call(e):l}(l,n,e);var p=ke;Te(!0),Pe(s),Te(p)}return s}var ja=/^\s*function (\w+)/;function Da(e){var t=e&&e.toString().match(ja);return t?t[1]:""}function La(e,t){return Da(e)===Da(t)}function Ua(e,t){if(!n(t))return La(t,e)?0:-1;for(var a=0,l=t.length;a<l;a++)if(La(t[a],e))return a;return-1}var Oa={enumerable:!0,configurable:!0,get:L,set:L};function Ma(e,t,a){Oa.get=function(){return this[t][a]},Oa.set=function(e){this[t][a]=e},Object.defineProperty(e,a,Oa)}function Fa(e){var t=e.$options;if(t.props&&function(e,t){var a=e.$options.propsData||{},l=e._props=Oe({}),n=e.$options._propKeys=[];e.$parent&&Te(!1);var r=function(r){n.push(r);var s=Pa(r,t,a,e);je(l,r,s),r in e||Ma(e,"_props",r)};for(var s in t)r(s);Te(!0)}(e,t.props),function(e){var t=e.$options,a=t.setup;if(a){var l=e._setupContext=mt(e);ue(e),ye();var n=kt(a,null,[e._props||Oe({}),l],e,"setup");if(Be(),ue(),c(n))t.render=n;else if(p(n))if(e._setupState=n,n.__sfc){var r=e._setupProxy={};for(var s in n)"__sfc"!==s&&Ge(r,n,s)}else for(var s in n)V(s)||Ge(e,n,s);else 0}}(e),t.methods&&function(e,t){e.$options.props;for(var a in t)e[a]="function"!=typeof t[a]?L:C(t[a],e)}(e,t.methods),t.data)!function(e){var t=e.$options.data;d(t=e._data=c(t)?function(e,t){ye();try{return e.call(t,t)}catch(e){return St(e,t,"data()"),{}}finally{Be()}}(t,e):t||{})||(t={});var a=Object.keys(t),l=e.$options.props,n=(e.$options.methods,a.length);for(;n--;){var r=a[n];0,l&&A(l,r)||V(r)||Ma(e,"_data",r)}var s=Pe(t);s&&s.vmCount++}(e);else{var a=Pe(e._data={});a&&a.vmCount++}t.computed&&function(e,t){var a=e._computedWatchers=Object.create(null),l=re();for(var n in t){var r=t[n],s=c(r)?r:r.get;0,l||(a[n]=new Vt(e,s||L,L,Ra)),n in e||Ga(e,n,r)}}(e,t.computed),t.watch&&t.watch!==ae&&function(e,t){for(var a in t){var l=t[a];if(n(l))for(var r=0;r<l.length;r++)Ia(e,a,l[r]);else Ia(e,a,l)}}(e,t.watch)}var Ra={lazy:!0};function Ga(e,t,a){var l=!re();c(a)?(Oa.get=l?$a(t):Ha(a),Oa.set=L):(Oa.get=a.get?l&&!1!==a.cache?$a(t):Ha(a.get):L,Oa.set=a.set||L),Object.defineProperty(e,t,Oa)}function $a(e){return function(){var t=this._computedWatchers&&this._computedWatchers[e];if(t)return t.dirty&&t.evaluate(),be.target&&t.depend(),t.value}}function Ha(e){return function(){return e.call(this,this)}}function Ia(e,t,a,l){return d(a)&&(l=a,a=a.handler),"string"==typeof a&&(a=e[a]),e.$watch(t,a,l)}var Na=0;function Va(e){var t=e.options;if(e.super){var a=Va(e.super);if(a!==e.superOptions){e.superOptions=a;var l=function(e){var t,a=e.options,l=e.sealedOptions;for(var n in a)a[n]!==l[n]&&(t||(t={}),t[n]=a[n]);return t}(e);l&&j(e.extendOptions,l),(t=e.options=wa(a,e.extendOptions)).name&&(t.components[t.name]=e)}}return t}function Ja(e){this._init(e)}function Za(e){e.cid=0;var t=1;e.extend=function(e){e=e||{};var a=this,l=a.cid,n=e._Ctor||(e._Ctor={});if(n[l])return n[l];var r=fa(e)||fa(a.options);var s=function(e){this._init(e)};return(s.prototype=Object.create(a.prototype)).constructor=s,s.cid=t++,s.options=wa(a.options,e),s.super=a,s.options.props&&function(e){var t=e.options.props;for(var a in t)Ma(e.prototype,"_props",a)}(s),s.options.computed&&function(e){var t=e.options.computed;for(var a in t)Ga(e.prototype,a,t[a])}(s),s.extend=a.extend,s.mixin=a.mixin,s.use=a.use,$.forEach((function(e){s[e]=a[e]})),r&&(s.options.components[r]=s),s.superOptions=a.options,s.extendOptions=e,s.sealedOptions=j({},s.options),n[l]=s,s}}function qa(e){return e&&(fa(e.Ctor.options)||e.tag)}function za(e,t){return n(e)?e.indexOf(t)>-1:"string"==typeof e?e.split(",").indexOf(t)>-1:!!h(e)&&e.test(t)}function Ya(e,t){var a=e.cache,l=e.keys,n=e._vnode;for(var r in a){var s=a[r];if(s){var i=s.name;i&&!t(i)&&Xa(a,r,l,n)}}}function Xa(e,t,a,l){var n=e[t];!n||l&&n.tag===l.tag||n.componentInstance.$destroy(),e[t]=null,y(a,t)}!function(e){e.prototype._init=function(e){var t=this;t._uid=Na++,t._isVue=!0,t.__v_skip=!0,t._scope=new He(!0),t._scope._vm=!0,e&&e._isComponent?function(e,t){var a=e.$options=Object.create(e.constructor.options),l=t._parentVnode;a.parent=t.parent,a._parentVnode=l;var n=l.componentOptions;a.propsData=n.propsData,a._parentListeners=n.listeners,a._renderChildren=n.children,a._componentTag=n.tag,t.render&&(a.render=t.render,a.staticRenderFns=t.staticRenderFns)}(t,e):t.$options=wa(Va(t.constructor),e||{},t),t._renderProxy=t,t._self=t,function(e){var t=e.$options,a=t.parent;if(a&&!t.abstract){for(;a.$options.abstract&&a.$parent;)a=a.$parent;a.$children.push(e)}e.$parent=a,e.$root=a?a.$root:e,e.$children=[],e.$refs={},e._provided=a?a._provided:Object.create(null),e._watcher=null,e._inactive=null,e._directInactive=!1,e._isMounted=!1,e._isDestroyed=!1,e._isBeingDestroyed=!1}(t),function(e){e._events=Object.create(null),e._hasHookEvent=!1;var t=e.$options._parentListeners;t&&zt(e,t)}(t),function(e){e._vnode=null,e._staticTrees=null;var t=e.$options,a=e.$vnode=t._parentVnode,n=a&&a.context;e.$slots=ut(t._renderChildren,n),e.$scopedSlots=a?gt(e.$parent,a.data.scopedSlots,e.$slots):l,e._c=function(t,a,l,n){return _t(e,t,a,l,n,!1)},e.$createElement=function(t,a,l,n){return _t(e,t,a,l,n,!0)};var r=a&&a.data;je(e,"$attrs",r&&r.attrs||l,null,!0),je(e,"$listeners",t._parentListeners||l,null,!0)}(t),Qt(t,"beforeCreate",void 0,!1),function(e){var t=da(e.$options.inject,e);t&&(Te(!1),Object.keys(t).forEach((function(a){je(e,a,t[a])})),Te(!0))}(t),Fa(t),function(e){var t=e.$options.provide;if(t){var a=c(t)?t.call(e):t;if(!p(a))return;for(var l=Ie(e),n=ce?Reflect.ownKeys(a):Object.keys(a),r=0;r<n.length;r++){var s=n[r];Object.defineProperty(l,s,Object.getOwnPropertyDescriptor(a,s))}}}(t),Qt(t,"created"),t.$options.el&&t.$mount(t.$options.el)}}(Ja),function(e){var t={get:function(){return this._data}},a={get:function(){return this._props}};Object.defineProperty(e.prototype,"$data",t),Object.defineProperty(e.prototype,"$props",a),e.prototype.$set=De,e.prototype.$delete=Le,e.prototype.$watch=function(e,t,a){if(d(t))return Ia(this,e,t,a);(a=a||{}).user=!0;var l=new Vt(this,e,t,a);if(a.immediate){var n='callback for immediate watcher "'.concat(l.expression,'"');ye(),kt(t,this,[l.value],this,n),Be()}return function(){l.teardown()}}}(Ja),function(e){var t=/^hook:/;e.prototype.$on=function(e,a){var l=this;if(n(e))for(var r=0,s=e.length;r<s;r++)l.$on(e[r],a);else(l._events[e]||(l._events[e]=[])).push(a),t.test(e)&&(l._hasHookEvent=!0);return l},e.prototype.$once=function(e,t){var a=this;function l(){a.$off(e,l),t.apply(a,arguments)}return l.fn=t,a.$on(e,l),a},e.prototype.$off=function(e,t){var a=this;if(!arguments.length)return a._events=Object.create(null),a;if(n(e)){for(var l=0,r=e.length;l<r;l++)a.$off(e[l],t);return a}var s,i=a._events[e];if(!i)return a;if(!t)return a._events[e]=null,a;for(var o=i.length;o--;)if((s=i[o])===t||s.fn===t){i.splice(o,1);break}return a},e.prototype.$emit=function(e){var t=this,a=t._events[e];if(a){a=a.length>1?P(a):a;for(var l=P(arguments,1),n='event handler for "'.concat(e,'"'),r=0,s=a.length;r<s;r++)kt(a[r],t,l,t,n)}return t}}(Ja),function(e){e.prototype._update=function(e,t){var a=this,l=a.$el,n=a._vnode,r=Xt(a);a._vnode=e,a.$el=n?a.__patch__(n,e):a.__patch__(a.$el,e,t,!1),r(),l&&(l.__vue__=null),a.$el&&(a.$el.__vue__=a);for(var s=a;s&&s.$vnode&&s.$parent&&s.$vnode===s.$parent._vnode;)s.$parent.$el=s.$el,s=s.$parent},e.prototype.$forceUpdate=function(){this._watcher&&this._watcher.update()},e.prototype.$destroy=function(){var e=this;if(!e._isBeingDestroyed){Qt(e,"beforeDestroy"),e._isBeingDestroyed=!0;var t=e.$parent;!t||t._isBeingDestroyed||e.$options.abstract||y(t.$children,e),e._scope.stop(),e._data.__ob__&&e._data.__ob__.vmCount--,e._isDestroyed=!0,e.__patch__(e._vnode,null),Qt(e,"destroyed"),e.$off(),e.$el&&(e.$el.__vue__=null),e.$vnode&&(e.$vnode.parent=null)}}}(Ja),function(e){pt(e.prototype),e.prototype.$nextTick=function(e){return Rt(e,this)},e.prototype._render=function(){var e,t=this,a=t.$options,l=a.render,r=a._parentVnode;r&&t._isMounted&&(t.$scopedSlots=gt(t.$parent,r.data.scopedSlots,t.$slots,t.$scopedSlots),t._slotsProxy&&yt(t._slotsProxy,t.$scopedSlots)),t.$vnode=r;try{ue(t),Bt=t,e=l.call(t._renderProxy,t.$createElement)}catch(a){St(a,t,"render"),e=t._vnode}finally{Bt=null,ue()}return n(e)&&1===e.length&&(e=e[0]),e instanceof de||(e=he()),e.parent=r,e}}(Ja);var Wa=[String,RegExp,Array],Ka={KeepAlive:{name:"keep-alive",abstract:!0,props:{include:Wa,exclude:Wa,max:[String,Number]},methods:{cacheVNode:function(){var e=this.cache,t=this.keys,a=this.vnodeToCache,l=this.keyToCache;if(a){var n=a.tag,r=a.componentInstance,s=a.componentOptions;e[l]={name:qa(s),tag:n,componentInstance:r},t.push(l),this.max&&t.length>parseInt(this.max)&&Xa(e,t[0],t,this._vnode),this.vnodeToCache=null}}},created:function(){this.cache=Object.create(null),this.keys=[]},destroyed:function(){for(var e in this.cache)Xa(this.cache,e,this.keys)},mounted:function(){var e=this;this.cacheVNode(),this.$watch("include",(function(t){Ya(e,(function(e){return za(t,e)}))})),this.$watch("exclude",(function(t){Ya(e,(function(e){return!za(t,e)}))}))},updated:function(){this.cacheVNode()},render:function(){var e=this.$slots.default,t=xt(e),a=t&&t.componentOptions;if(a){var l=qa(a),n=this.include,r=this.exclude;if(n&&(!l||!za(n,l))||r&&l&&za(r,l))return t;var s=this.cache,i=this.keys,o=null==t.key?a.Ctor.cid+(a.tag?"::".concat(a.tag):""):t.key;s[o]?(t.componentInstance=s[o].componentInstance,y(i,o),i.push(o)):(this.vnodeToCache=t,this.keyToCache=o),t.data.keepAlive=!0}return t||e&&e[0]}}};!function(e){var t={get:function(){return I}};Object.defineProperty(e,"config",t),e.util={warn:Ba,extend:j,mergeOptions:wa,defineReactive:je},e.set=De,e.delete=Le,e.nextTick=Rt,e.observable=function(e){return Pe(e),e},e.options=Object.create(null),$.forEach((function(t){e.options[t+"s"]=Object.create(null)})),e.options._base=e,j(e.options.components,Ka),function(e){e.use=function(e){var t=this._installedPlugins||(this._installedPlugins=[]);if(t.indexOf(e)>-1)return this;var a=P(arguments,1);return a.unshift(this),c(e.install)?e.install.apply(e,a):c(e)&&e.apply(null,a),t.push(e),this}}(e),function(e){e.mixin=function(e){return this.options=wa(this.options,e),this}}(e),Za(e),function(e){$.forEach((function(t){e[t]=function(e,a){return a?("component"===t&&d(a)&&(a.name=a.name||e,a=this.options._base.extend(a)),"directive"===t&&c(a)&&(a={bind:a,update:a}),this.options[t+"s"][e]=a,a):this.options[t+"s"][e]}}))}(e)}(Ja),Object.defineProperty(Ja.prototype,"$isServer",{get:re}),Object.defineProperty(Ja.prototype,"$ssrContext",{get:function(){return this.$vnode&&this.$vnode.ssrContext}}),Object.defineProperty(Ja,"FunctionalRenderContext",{value:ha}),Ja.version="2.7.14";var Qa=b("style,class"),el=b("input,textarea,option,select,progress"),tl=b("contenteditable,draggable,spellcheck"),al=b("events,caret,typing,plaintext-only"),ll=b("allowfullscreen,async,autofocus,autoplay,checked,compact,controls,declare,default,defaultchecked,defaultmuted,defaultselected,defer,disabled,enabled,formnovalidate,hidden,indeterminate,inert,ismap,itemscope,loop,multiple,muted,nohref,noresize,noshade,novalidate,nowrap,open,pauseonexit,readonly,required,reversed,scoped,seamless,selected,sortable,truespeed,typemustmatch,visible"),nl="http://www.w3.org/1999/xlink",rl=function(e){return":"===e.charAt(5)&&"xlink"===e.slice(0,5)},sl=function(e){return rl(e)?e.slice(6,e.length):""},il=function(e){return null==e||!1===e};function ol(e){for(var t=e.data,a=e,l=e;s(l.componentInstance);)(l=l.componentInstance._vnode)&&l.data&&(t=cl(l.data,t));for(;s(a=a.parent);)a&&a.data&&(t=cl(t,a.data));return function(e,t){if(s(e)||s(t))return pl(e,ul(t));return""}(t.staticClass,t.class)}function cl(e,t){return{staticClass:pl(e.staticClass,t.staticClass),class:s(e.class)?[e.class,t.class]:t.class}}function pl(e,t){return e?t?e+" "+t:e:t||""}function ul(e){return Array.isArray(e)?function(e){for(var t,a="",l=0,n=e.length;l<n;l++)s(t=ul(e[l]))&&""!==t&&(a&&(a+=" "),a+=t);return a}(e):p(e)?function(e){var t="";for(var a in e)e[a]&&(t&&(t+=" "),t+=a);return t}(e):"string"==typeof e?e:""}var dl={svg:"http://www.w3.org/2000/svg",math:"http://www.w3.org/1998/Math/MathML"},hl=b("html,body,base,head,link,meta,style,title,address,article,aside,footer,header,h1,h2,h3,h4,h5,h6,hgroup,nav,section,div,dd,dl,dt,figcaption,figure,picture,hr,img,li,main,ol,p,pre,ul,a,b,abbr,bdi,bdo,br,cite,code,data,dfn,em,i,kbd,mark,q,rp,rt,rtc,ruby,s,samp,small,span,strong,sub,sup,time,u,var,wbr,area,audio,map,track,video,embed,object,param,source,canvas,script,noscript,del,ins,caption,col,colgroup,table,thead,tbody,td,th,tr,button,datalist,fieldset,form,input,label,legend,meter,optgroup,option,output,progress,select,textarea,details,dialog,menu,menuitem,summary,content,element,shadow,template,blockquote,iframe,tfoot"),gl=b("svg,animate,circle,clippath,cursor,defs,desc,ellipse,filter,font-face,foreignobject,g,glyph,image,line,marker,mask,missing-glyph,path,pattern,polygon,polyline,rect,switch,symbol,text,textpath,tspan,use,view",!0),vl=function(e){return hl(e)||gl(e)};var fl=Object.create(null);var ml=b("text,number,password,search,email,tel,url");var bl=Object.freeze({__proto__:null,createElement:function(e,t){var a=document.createElement(e);return"select"!==e||t.data&&t.data.attrs&&void 0!==t.data.attrs.multiple&&a.setAttribute("multiple","multiple"),a},createElementNS:function(e,t){return document.createElementNS(dl[e],t)},createTextNode:function(e){return document.createTextNode(e)},createComment:function(e){return document.createComment(e)},insertBefore:function(e,t,a){e.insertBefore(t,a)},removeChild:function(e,t){e.removeChild(t)},appendChild:function(e,t){e.appendChild(t)},parentNode:function(e){return e.parentNode},nextSibling:function(e){return e.nextSibling},tagName:function(e){return e.tagName},setTextContent:function(e,t){e.textContent=t},setStyleScope:function(e,t){e.setAttribute(t,"")}}),El={create:function(e,t){yl(t)},update:function(e,t){e.data.ref!==t.data.ref&&(yl(e,!0),yl(t))},destroy:function(e){yl(e,!0)}};function yl(e,t){var a=e.data.ref;if(s(a)){var l=e.context,r=e.componentInstance||e.elm,i=t?null:r,o=t?void 0:r;if(c(a))kt(a,l,[i],l,"template ref function");else{var p=e.data.refInFor,u="string"==typeof a||"number"==typeof a,d=Re(a),h=l.$refs;if(u||d)if(p){var g=u?h[a]:a.value;t?n(g)&&y(g,r):n(g)?g.includes(r)||g.push(r):u?(h[a]=[r],Bl(l,a,h[a])):a.value=[r]}else if(u){if(t&&h[a]!==r)return;h[a]=o,Bl(l,a,i)}else if(d){if(t&&a.value!==r)return;a.value=i}else 0}}}function Bl(e,t,a){var l=e._setupState;l&&A(l,t)&&(Re(l[t])?l[t].value=a:l[t]=a)}var Al=new de("",{},[]),xl=["create","activate","update","remove","destroy"];function _l(e,t){return e.key===t.key&&e.asyncFactory===t.asyncFactory&&(e.tag===t.tag&&e.isComment===t.isComment&&s(e.data)===s(t.data)&&function(e,t){if("input"!==e.tag)return!0;var a,l=s(a=e.data)&&s(a=a.attrs)&&a.type,n=s(a=t.data)&&s(a=a.attrs)&&a.type;return l===n||ml(l)&&ml(n)}(e,t)||i(e.isAsyncPlaceholder)&&r(t.asyncFactory.error))}function Sl(e,t,a){var l,n,r={};for(l=t;l<=a;++l)s(n=e[l].key)&&(r[n]=l);return r}var kl={create:Tl,update:Tl,destroy:function(e){Tl(e,Al)}};function Tl(e,t){(e.data.directives||t.data.directives)&&function(e,t){var a,l,n,r=e===Al,s=t===Al,i=Cl(e.data.directives,e.context),o=Cl(t.data.directives,t.context),c=[],p=[];for(a in o)l=i[a],n=o[a],l?(n.oldValue=l.value,n.oldArg=l.arg,jl(n,"update",t,e),n.def&&n.def.componentUpdated&&p.push(n)):(jl(n,"bind",t,e),n.def&&n.def.inserted&&c.push(n));if(c.length){var u=function(){for(var a=0;a<c.length;a++)jl(c[a],"inserted",t,e)};r?Ze(t,"insert",u):u()}p.length&&Ze(t,"postpatch",(function(){for(var a=0;a<p.length;a++)jl(p[a],"componentUpdated",t,e)}));if(!r)for(a in i)o[a]||jl(i[a],"unbind",e,e,s)}(e,t)}var wl=Object.create(null);function Cl(e,t){var a,l,n=Object.create(null);if(!e)return n;for(a=0;a<e.length;a++){if((l=e[a]).modifiers||(l.modifiers=wl),n[Pl(l)]=l,t._setupState&&t._setupState.__sfc){var r=l.def||Ca(t,"_setupState","v-"+l.name);l.def="function"==typeof r?{bind:r,update:r}:r}l.def=l.def||Ca(t.$options,"directives",l.name)}return n}function Pl(e){return e.rawName||"".concat(e.name,".").concat(Object.keys(e.modifiers||{}).join("."))}function jl(e,t,a,l,n){var r=e.def&&e.def[t];if(r)try{r(a.elm,e,a,l,n)}catch(l){St(l,a.context,"directive ".concat(e.name," ").concat(t," hook"))}}var Dl=[El,kl];function Ll(e,t){var a=t.componentOptions;if(!(s(a)&&!1===a.Ctor.options.inheritAttrs||r(e.data.attrs)&&r(t.data.attrs))){var l,n,o=t.elm,c=e.data.attrs||{},p=t.data.attrs||{};for(l in(s(p.__ob__)||i(p._v_attr_proxy))&&(p=t.data.attrs=j({},p)),p)n=p[l],c[l]!==n&&Ul(o,l,n,t.data.pre);for(l in(X||K)&&p.value!==c.value&&Ul(o,"value",p.value),c)r(p[l])&&(rl(l)?o.removeAttributeNS(nl,sl(l)):tl(l)||o.removeAttribute(l))}}function Ul(e,t,a,l){l||e.tagName.indexOf("-")>-1?Ol(e,t,a):ll(t)?il(a)?e.removeAttribute(t):(a="allowfullscreen"===t&&"EMBED"===e.tagName?"true":t,e.setAttribute(t,a)):tl(t)?e.setAttribute(t,function(e,t){return il(t)||"false"===t?"false":"contenteditable"===e&&al(t)?t:"true"}(t,a)):rl(t)?il(a)?e.removeAttributeNS(nl,sl(t)):e.setAttributeNS(nl,t,a):Ol(e,t,a)}function Ol(e,t,a){if(il(a))e.removeAttribute(t);else{if(X&&!W&&"TEXTAREA"===e.tagName&&"placeholder"===t&&""!==a&&!e.__ieph){var l=function(t){t.stopImmediatePropagation(),e.removeEventListener("input",l)};e.addEventListener("input",l),e.__ieph=!0}e.setAttribute(t,a)}}var Ml={create:Ll,update:Ll};function Fl(e,t){var a=t.elm,l=t.data,n=e.data;if(!(r(l.staticClass)&&r(l.class)&&(r(n)||r(n.staticClass)&&r(n.class)))){var i=ol(t),o=a._transitionClasses;s(o)&&(i=pl(i,ul(o))),i!==a._prevClass&&(a.setAttribute("class",i),a._prevClass=i)}}var Rl,Gl={create:Fl,update:Fl};function $l(e,t,a){var l=Rl;return function n(){var r=t.apply(null,arguments);null!==r&&Nl(e,n,a,l)}}var Hl=Pt&&!(te&&Number(te[1])<=53);function Il(e,t,a,l){if(Hl){var n=sa,r=t;t=r._wrapper=function(e){if(e.target===e.currentTarget||e.timeStamp>=n||e.timeStamp<=0||e.target.ownerDocument!==document)return r.apply(this,arguments)}}Rl.addEventListener(e,t,le?{capture:a,passive:l}:a)}function Nl(e,t,a,l){(l||Rl).removeEventListener(e,t._wrapper||t,a)}function Vl(e,t){if(!r(e.data.on)||!r(t.data.on)){var a=t.data.on||{},l=e.data.on||{};Rl=t.elm||e.elm,function(e){if(s(e.__r)){var t=X?"change":"input";e[t]=[].concat(e.__r,e[t]||[]),delete e.__r}s(e.__c)&&(e.change=[].concat(e.__c,e.change||[]),delete e.__c)}(a),Je(a,l,Il,Nl,$l,t.context),Rl=void 0}}var Jl,Zl={create:Vl,update:Vl,destroy:function(e){return Vl(e,Al)}};function ql(e,t){if(!r(e.data.domProps)||!r(t.data.domProps)){var a,l,n=t.elm,o=e.data.domProps||{},c=t.data.domProps||{};for(a in(s(c.__ob__)||i(c._v_attr_proxy))&&(c=t.data.domProps=j({},c)),o)a in c||(n[a]="");for(a in c){if(l=c[a],"textContent"===a||"innerHTML"===a){if(t.children&&(t.children.length=0),l===o[a])continue;1===n.childNodes.length&&n.removeChild(n.childNodes[0])}if("value"===a&&"PROGRESS"!==n.tagName){n._value=l;var p=r(l)?"":String(l);zl(n,p)&&(n.value=p)}else if("innerHTML"===a&&gl(n.tagName)&&r(n.innerHTML)){(Jl=Jl||document.createElement("div")).innerHTML="<svg>".concat(l,"</svg>");for(var u=Jl.firstChild;n.firstChild;)n.removeChild(n.firstChild);for(;u.firstChild;)n.appendChild(u.firstChild)}else if(l!==o[a])try{n[a]=l}catch(e){}}}}function zl(e,t){return!e.composing&&("OPTION"===e.tagName||function(e,t){var a=!0;try{a=document.activeElement!==e}catch(e){}return a&&e.value!==t}(e,t)||function(e,t){var a=e.value,l=e._vModifiers;if(s(l)){if(l.number)return m(a)!==m(t);if(l.trim)return a.trim()!==t.trim()}return a!==t}(e,t))}var Yl={create:ql,update:ql},Xl=x((function(e){var t={},a=/:(.+)/;return e.split(/;(?![^(]*\))/g).forEach((function(e){if(e){var l=e.split(a);l.length>1&&(t[l[0].trim()]=l[1].trim())}})),t}));function Wl(e){var t=Kl(e.style);return e.staticStyle?j(e.staticStyle,t):t}function Kl(e){return Array.isArray(e)?D(e):"string"==typeof e?Xl(e):e}var Ql,en=/^--/,tn=/\s*!important$/,an=function(e,t,a){if(en.test(t))e.style.setProperty(t,a);else if(tn.test(a))e.style.setProperty(w(t),a.replace(tn,""),"important");else{var l=nn(t);if(Array.isArray(a))for(var n=0,r=a.length;n<r;n++)e.style[l]=a[n];else e.style[l]=a}},ln=["Webkit","Moz","ms"],nn=x((function(e){if(Ql=Ql||document.createElement("div").style,"filter"!==(e=S(e))&&e in Ql)return e;for(var t=e.charAt(0).toUpperCase()+e.slice(1),a=0;a<ln.length;a++){var l=ln[a]+t;if(l in Ql)return l}}));function rn(e,t){var a=t.data,l=e.data;if(!(r(a.staticStyle)&&r(a.style)&&r(l.staticStyle)&&r(l.style))){var n,i,o=t.elm,c=l.staticStyle,p=l.normalizedStyle||l.style||{},u=c||p,d=Kl(t.data.style)||{};t.data.normalizedStyle=s(d.__ob__)?j({},d):d;var h=function(e,t){var a,l={};if(t)for(var n=e;n.componentInstance;)(n=n.componentInstance._vnode)&&n.data&&(a=Wl(n.data))&&j(l,a);(a=Wl(e.data))&&j(l,a);for(var r=e;r=r.parent;)r.data&&(a=Wl(r.data))&&j(l,a);return l}(t,!0);for(i in u)r(h[i])&&an(o,i,"");for(i in h)(n=h[i])!==u[i]&&an(o,i,null==n?"":n)}}var sn={create:rn,update:rn},on=/\s+/;function cn(e,t){if(t&&(t=t.trim()))if(e.classList)t.indexOf(" ")>-1?t.split(on).forEach((function(t){return e.classList.add(t)})):e.classList.add(t);else{var a=" ".concat(e.getAttribute("class")||""," ");a.indexOf(" "+t+" ")<0&&e.setAttribute("class",(a+t).trim())}}function pn(e,t){if(t&&(t=t.trim()))if(e.classList)t.indexOf(" ")>-1?t.split(on).forEach((function(t){return e.classList.remove(t)})):e.classList.remove(t),e.classList.length||e.removeAttribute("class");else{for(var a=" ".concat(e.getAttribute("class")||""," "),l=" "+t+" ";a.indexOf(l)>=0;)a=a.replace(l," ");(a=a.trim())?e.setAttribute("class",a):e.removeAttribute("class")}}function un(e){if(e){if("object"==typeof e){var t={};return!1!==e.css&&j(t,dn(e.name||"v")),j(t,e),t}return"string"==typeof e?dn(e):void 0}}var dn=x((function(e){return{enterClass:"".concat(e,"-enter"),enterToClass:"".concat(e,"-enter-to"),enterActiveClass:"".concat(e,"-enter-active"),leaveClass:"".concat(e,"-leave"),leaveToClass:"".concat(e,"-leave-to"),leaveActiveClass:"".concat(e,"-leave-active")}})),hn=z&&!W,gn="transition",vn="transitionend",fn="animation",mn="animationend";hn&&(void 0===window.ontransitionend&&void 0!==window.onwebkittransitionend&&(gn="WebkitTransition",vn="webkitTransitionEnd"),void 0===window.onanimationend&&void 0!==window.onwebkitanimationend&&(fn="WebkitAnimation",mn="webkitAnimationEnd"));var bn=z?window.requestAnimationFrame?window.requestAnimationFrame.bind(window):setTimeout:function(e){return e()};function En(e){bn((function(){bn(e)}))}function yn(e,t){var a=e._transitionClasses||(e._transitionClasses=[]);a.indexOf(t)<0&&(a.push(t),cn(e,t))}function Bn(e,t){e._transitionClasses&&y(e._transitionClasses,t),pn(e,t)}function An(e,t,a){var l=_n(e,t),n=l.type,r=l.timeout,s=l.propCount;if(!n)return a();var i="transition"===n?vn:mn,o=0,c=function(){e.removeEventListener(i,p),a()},p=function(t){t.target===e&&++o>=s&&c()};setTimeout((function(){o<s&&c()}),r+1),e.addEventListener(i,p)}var xn=/\b(transform|all)(,|$)/;function _n(e,t){var a,l=window.getComputedStyle(e),n=(l[gn+"Delay"]||"").split(", "),r=(l[gn+"Duration"]||"").split(", "),s=Sn(n,r),i=(l[fn+"Delay"]||"").split(", "),o=(l[fn+"Duration"]||"").split(", "),c=Sn(i,o),p=0,u=0;return"transition"===t?s>0&&(a="transition",p=s,u=r.length):"animation"===t?c>0&&(a="animation",p=c,u=o.length):u=(a=(p=Math.max(s,c))>0?s>c?"transition":"animation":null)?"transition"===a?r.length:o.length:0,{type:a,timeout:p,propCount:u,hasTransform:"transition"===a&&xn.test(l[gn+"Property"])}}function Sn(e,t){for(;e.length<t.length;)e=e.concat(e);return Math.max.apply(null,t.map((function(t,a){return kn(t)+kn(e[a])})))}function kn(e){return 1e3*Number(e.slice(0,-1).replace(",","."))}function Tn(e,t){var a=e.elm;s(a._leaveCb)&&(a._leaveCb.cancelled=!0,a._leaveCb());var l=un(e.data.transition);if(!r(l)&&!s(a._enterCb)&&1===a.nodeType){for(var n=l.css,i=l.type,o=l.enterClass,u=l.enterToClass,d=l.enterActiveClass,h=l.appearClass,g=l.appearToClass,v=l.appearActiveClass,f=l.beforeEnter,b=l.enter,E=l.afterEnter,y=l.enterCancelled,B=l.beforeAppear,A=l.appear,x=l.afterAppear,_=l.appearCancelled,S=l.duration,k=Yt,T=Yt.$vnode;T&&T.parent;)k=T.context,T=T.parent;var w=!k._isMounted||!e.isRootInsert;if(!w||A||""===A){var C=w&&h?h:o,P=w&&v?v:d,j=w&&g?g:u,D=w&&B||f,L=w&&c(A)?A:b,U=w&&x||E,O=w&&_||y,M=m(p(S)?S.enter:S);0;var F=!1!==n&&!W,G=Pn(L),$=a._enterCb=R((function(){F&&(Bn(a,j),Bn(a,P)),$.cancelled?(F&&Bn(a,C),O&&O(a)):U&&U(a),a._enterCb=null}));e.data.show||Ze(e,"insert",(function(){var t=a.parentNode,l=t&&t._pending&&t._pending[e.key];l&&l.tag===e.tag&&l.elm._leaveCb&&l.elm._leaveCb(),L&&L(a,$)})),D&&D(a),F&&(yn(a,C),yn(a,P),En((function(){Bn(a,C),$.cancelled||(yn(a,j),G||(Cn(M)?setTimeout($,M):An(a,i,$)))}))),e.data.show&&(t&&t(),L&&L(a,$)),F||G||$()}}}function wn(e,t){var a=e.elm;s(a._enterCb)&&(a._enterCb.cancelled=!0,a._enterCb());var l=un(e.data.transition);if(r(l)||1!==a.nodeType)return t();if(!s(a._leaveCb)){var n=l.css,i=l.type,o=l.leaveClass,c=l.leaveToClass,u=l.leaveActiveClass,d=l.beforeLeave,h=l.leave,g=l.afterLeave,v=l.leaveCancelled,f=l.delayLeave,b=l.duration,E=!1!==n&&!W,y=Pn(h),B=m(p(b)?b.leave:b);0;var A=a._leaveCb=R((function(){a.parentNode&&a.parentNode._pending&&(a.parentNode._pending[e.key]=null),E&&(Bn(a,c),Bn(a,u)),A.cancelled?(E&&Bn(a,o),v&&v(a)):(t(),g&&g(a)),a._leaveCb=null}));f?f(x):x()}function x(){A.cancelled||(!e.data.show&&a.parentNode&&((a.parentNode._pending||(a.parentNode._pending={}))[e.key]=e),d&&d(a),E&&(yn(a,o),yn(a,u),En((function(){Bn(a,o),A.cancelled||(yn(a,c),y||(Cn(B)?setTimeout(A,B):An(a,i,A)))}))),h&&h(a,A),E||y||A())}}function Cn(e){return"number"==typeof e&&!isNaN(e)}function Pn(e){if(r(e))return!1;var t=e.fns;return s(t)?Pn(Array.isArray(t)?t[0]:t):(e._length||e.length)>1}function jn(e,t){!0!==t.data.show&&Tn(t)}var Dn=function(e){var t,a,l={},c=e.modules,p=e.nodeOps;for(t=0;t<xl.length;++t)for(l[xl[t]]=[],a=0;a<c.length;++a)s(c[a][xl[t]])&&l[xl[t]].push(c[a][xl[t]]);function u(e){var t=p.parentNode(e);s(t)&&p.removeChild(t,e)}function d(e,t,a,n,r,o,c){if(s(e.elm)&&s(o)&&(e=o[c]=ve(e)),e.isRootInsert=!r,!function(e,t,a,n){var r=e.data;if(s(r)){var o=s(e.componentInstance)&&r.keepAlive;if(s(r=r.hook)&&s(r=r.init)&&r(e,!1),s(e.componentInstance))return h(e,t),g(a,e.elm,n),i(o)&&function(e,t,a,n){var r,i=e;for(;i.componentInstance;)if(i=i.componentInstance._vnode,s(r=i.data)&&s(r=r.transition)){for(r=0;r<l.activate.length;++r)l.activate[r](Al,i);t.push(i);break}g(a,e.elm,n)}(e,t,a,n),!0}}(e,t,a,n)){var u=e.data,d=e.children,f=e.tag;s(f)?(e.elm=e.ns?p.createElementNS(e.ns,f):p.createElement(f,e),E(e),v(e,d,t),s(u)&&m(e,t),g(a,e.elm,n)):i(e.isComment)?(e.elm=p.createComment(e.text),g(a,e.elm,n)):(e.elm=p.createTextNode(e.text),g(a,e.elm,n))}}function h(e,t){s(e.data.pendingInsert)&&(t.push.apply(t,e.data.pendingInsert),e.data.pendingInsert=null),e.elm=e.componentInstance.$el,f(e)?(m(e,t),E(e)):(yl(e),t.push(e))}function g(e,t,a){s(e)&&(s(a)?p.parentNode(a)===e&&p.insertBefore(e,t,a):p.appendChild(e,t))}function v(e,t,a){if(n(t)){0;for(var l=0;l<t.length;++l)d(t[l],a,e.elm,null,!0,t,l)}else o(e.text)&&p.appendChild(e.elm,p.createTextNode(String(e.text)))}function f(e){for(;e.componentInstance;)e=e.componentInstance._vnode;return s(e.tag)}function m(e,a){for(var n=0;n<l.create.length;++n)l.create[n](Al,e);s(t=e.data.hook)&&(s(t.create)&&t.create(Al,e),s(t.insert)&&a.push(e))}function E(e){var t;if(s(t=e.fnScopeId))p.setStyleScope(e.elm,t);else for(var a=e;a;)s(t=a.context)&&s(t=t.$options._scopeId)&&p.setStyleScope(e.elm,t),a=a.parent;s(t=Yt)&&t!==e.context&&t!==e.fnContext&&s(t=t.$options._scopeId)&&p.setStyleScope(e.elm,t)}function y(e,t,a,l,n,r){for(;l<=n;++l)d(a[l],r,e,t,!1,a,l)}function B(e){var t,a,n=e.data;if(s(n))for(s(t=n.hook)&&s(t=t.destroy)&&t(e),t=0;t<l.destroy.length;++t)l.destroy[t](e);if(s(t=e.children))for(a=0;a<e.children.length;++a)B(e.children[a])}function A(e,t,a){for(;t<=a;++t){var l=e[t];s(l)&&(s(l.tag)?(x(l),B(l)):u(l.elm))}}function x(e,t){if(s(t)||s(e.data)){var a,n=l.remove.length+1;for(s(t)?t.listeners+=n:t=function(e,t){function a(){0==--a.listeners&&u(e)}return a.listeners=t,a}(e.elm,n),s(a=e.componentInstance)&&s(a=a._vnode)&&s(a.data)&&x(a,t),a=0;a<l.remove.length;++a)l.remove[a](e,t);s(a=e.data.hook)&&s(a=a.remove)?a(e,t):t()}else u(e.elm)}function _(e,t,a,l){for(var n=a;n<l;n++){var r=t[n];if(s(r)&&_l(e,r))return n}}function S(e,t,a,n,o,c){if(e!==t){s(t.elm)&&s(n)&&(t=n[o]=ve(t));var u=t.elm=e.elm;if(i(e.isAsyncPlaceholder))s(t.asyncFactory.resolved)?w(e.elm,t,a):t.isAsyncPlaceholder=!0;else if(i(t.isStatic)&&i(e.isStatic)&&t.key===e.key&&(i(t.isCloned)||i(t.isOnce)))t.componentInstance=e.componentInstance;else{var h,g=t.data;s(g)&&s(h=g.hook)&&s(h=h.prepatch)&&h(e,t);var v=e.children,m=t.children;if(s(g)&&f(t)){for(h=0;h<l.update.length;++h)l.update[h](e,t);s(h=g.hook)&&s(h=h.update)&&h(e,t)}r(t.text)?s(v)&&s(m)?v!==m&&function(e,t,a,l,n){var i,o,c,u=0,h=0,g=t.length-1,v=t[0],f=t[g],m=a.length-1,b=a[0],E=a[m],B=!n;for(0;u<=g&&h<=m;)r(v)?v=t[++u]:r(f)?f=t[--g]:_l(v,b)?(S(v,b,l,a,h),v=t[++u],b=a[++h]):_l(f,E)?(S(f,E,l,a,m),f=t[--g],E=a[--m]):_l(v,E)?(S(v,E,l,a,m),B&&p.insertBefore(e,v.elm,p.nextSibling(f.elm)),v=t[++u],E=a[--m]):_l(f,b)?(S(f,b,l,a,h),B&&p.insertBefore(e,f.elm,v.elm),f=t[--g],b=a[++h]):(r(i)&&(i=Sl(t,u,g)),r(o=s(b.key)?i[b.key]:_(b,t,u,g))?d(b,l,e,v.elm,!1,a,h):_l(c=t[o],b)?(S(c,b,l,a,h),t[o]=void 0,B&&p.insertBefore(e,c.elm,v.elm)):d(b,l,e,v.elm,!1,a,h),b=a[++h]);u>g?y(e,r(a[m+1])?null:a[m+1].elm,a,h,m,l):h>m&&A(t,u,g)}(u,v,m,a,c):s(m)?(s(e.text)&&p.setTextContent(u,""),y(u,null,m,0,m.length-1,a)):s(v)?A(v,0,v.length-1):s(e.text)&&p.setTextContent(u,""):e.text!==t.text&&p.setTextContent(u,t.text),s(g)&&s(h=g.hook)&&s(h=h.postpatch)&&h(e,t)}}}function k(e,t,a){if(i(a)&&s(e.parent))e.parent.data.pendingInsert=t;else for(var l=0;l<t.length;++l)t[l].data.hook.insert(t[l])}var T=b("attrs,class,staticClass,staticStyle,key");function w(e,t,a,l){var n,r=t.tag,o=t.data,c=t.children;if(l=l||o&&o.pre,t.elm=e,i(t.isComment)&&s(t.asyncFactory))return t.isAsyncPlaceholder=!0,!0;if(s(o)&&(s(n=o.hook)&&s(n=n.init)&&n(t,!0),s(n=t.componentInstance)))return h(t,a),!0;if(s(r)){if(s(c))if(e.hasChildNodes())if(s(n=o)&&s(n=n.domProps)&&s(n=n.innerHTML)){if(n!==e.innerHTML)return!1}else{for(var p=!0,u=e.firstChild,d=0;d<c.length;d++){if(!u||!w(u,c[d],a,l)){p=!1;break}u=u.nextSibling}if(!p||u)return!1}else v(t,c,a);if(s(o)){var g=!1;for(var f in o)if(!T(f)){g=!0,m(t,a);break}!g&&o.class&&Ht(o.class)}}else e.data!==t.text&&(e.data=t.text);return!0}return function(e,t,a,n){if(!r(t)){var o,c=!1,u=[];if(r(e))c=!0,d(t,u);else{var h=s(e.nodeType);if(!h&&_l(e,t))S(e,t,u,null,null,n);else{if(h){if(1===e.nodeType&&e.hasAttribute("data-server-rendered")&&(e.removeAttribute("data-server-rendered"),a=!0),i(a)&&w(e,t,u))return k(t,u,!0),e;o=e,e=new de(p.tagName(o).toLowerCase(),{},[],void 0,o)}var g=e.elm,v=p.parentNode(g);if(d(t,u,g._leaveCb?null:v,p.nextSibling(g)),s(t.parent))for(var m=t.parent,b=f(t);m;){for(var E=0;E<l.destroy.length;++E)l.destroy[E](m);if(m.elm=t.elm,b){for(var y=0;y<l.create.length;++y)l.create[y](Al,m);var x=m.data.hook.insert;if(x.merged)for(var _=1;_<x.fns.length;_++)x.fns[_]()}else yl(m);m=m.parent}s(v)?A([e],0,0):s(e.tag)&&B(e)}}return k(t,u,c),t.elm}s(e)&&B(e)}}({nodeOps:bl,modules:[Ml,Gl,Zl,Yl,sn,z?{create:jn,activate:jn,remove:function(e,t){!0!==e.data.show?wn(e,t):t()}}:{}].concat(Dl)});W&&document.addEventListener("selectionchange",(function(){var e=document.activeElement;e&&e.vmodel&&$n(e,"input")}));var Ln={inserted:function(e,t,a,l){"select"===a.tag?(l.elm&&!l.elm._vOptions?Ze(a,"postpatch",(function(){Ln.componentUpdated(e,t,a)})):Un(e,t,a.context),e._vOptions=[].map.call(e.options,Fn)):("textarea"===a.tag||ml(e.type))&&(e._vModifiers=t.modifiers,t.modifiers.lazy||(e.addEventListener("compositionstart",Rn),e.addEventListener("compositionend",Gn),e.addEventListener("change",Gn),W&&(e.vmodel=!0)))},componentUpdated:function(e,t,a){if("select"===a.tag){Un(e,t,a.context);var l=e._vOptions,n=e._vOptions=[].map.call(e.options,Fn);if(n.some((function(e,t){return!M(e,l[t])})))(e.multiple?t.value.some((function(e){return Mn(e,n)})):t.value!==t.oldValue&&Mn(t.value,n))&&$n(e,"change")}}};function Un(e,t,a){On(e,t,a),(X||K)&&setTimeout((function(){On(e,t,a)}),0)}function On(e,t,a){var l=t.value,n=e.multiple;if(!n||Array.isArray(l)){for(var r,s,i=0,o=e.options.length;i<o;i++)if(s=e.options[i],n)r=F(l,Fn(s))>-1,s.selected!==r&&(s.selected=r);else if(M(Fn(s),l))return void(e.selectedIndex!==i&&(e.selectedIndex=i));n||(e.selectedIndex=-1)}}function Mn(e,t){return t.every((function(t){return!M(t,e)}))}function Fn(e){return"_value"in e?e._value:e.value}function Rn(e){e.target.composing=!0}function Gn(e){e.target.composing&&(e.target.composing=!1,$n(e.target,"input"))}function $n(e,t){var a=document.createEvent("HTMLEvents");a.initEvent(t,!0,!0),e.dispatchEvent(a)}function Hn(e){return!e.componentInstance||e.data&&e.data.transition?e:Hn(e.componentInstance._vnode)}var In={model:Ln,show:{bind:function(e,t,a){var l=t.value,n=(a=Hn(a)).data&&a.data.transition,r=e.__vOriginalDisplay="none"===e.style.display?"":e.style.display;l&&n?(a.data.show=!0,Tn(a,(function(){e.style.display=r}))):e.style.display=l?r:"none"},update:function(e,t,a){var l=t.value;!l!=!t.oldValue&&((a=Hn(a)).data&&a.data.transition?(a.data.show=!0,l?Tn(a,(function(){e.style.display=e.__vOriginalDisplay})):wn(a,(function(){e.style.display="none"}))):e.style.display=l?e.__vOriginalDisplay:"none")},unbind:function(e,t,a,l,n){n||(e.style.display=e.__vOriginalDisplay)}}},Nn={name:String,appear:Boolean,css:Boolean,mode:String,type:String,enterClass:String,leaveClass:String,enterToClass:String,leaveToClass:String,enterActiveClass:String,leaveActiveClass:String,appearClass:String,appearActiveClass:String,appearToClass:String,duration:[Number,String,Object]};function Vn(e){var t=e&&e.componentOptions;return t&&t.Ctor.options.abstract?Vn(xt(t.children)):e}function Jn(e){var t={},a=e.$options;for(var l in a.propsData)t[l]=e[l];var n=a._parentListeners;for(var l in n)t[S(l)]=n[l];return t}function Zn(e,t){if(/\d-keep-alive$/.test(t.tag))return e("keep-alive",{props:t.componentOptions.propsData})}var qn=function(e){return e.tag||ht(e)},zn=function(e){return"show"===e.name},Yn={name:"transition",props:Nn,abstract:!0,render:function(e){var t=this,a=this.$slots.default;if(a&&(a=a.filter(qn)).length){0;var l=this.mode;0;var n=a[0];if(function(e){for(;e=e.parent;)if(e.data.transition)return!0}(this.$vnode))return n;var r=Vn(n);if(!r)return n;if(this._leaving)return Zn(e,n);var s="__transition-".concat(this._uid,"-");r.key=null==r.key?r.isComment?s+"comment":s+r.tag:o(r.key)?0===String(r.key).indexOf(s)?r.key:s+r.key:r.key;var i=(r.data||(r.data={})).transition=Jn(this),c=this._vnode,p=Vn(c);if(r.data.directives&&r.data.directives.some(zn)&&(r.data.show=!0),p&&p.data&&!function(e,t){return t.key===e.key&&t.tag===e.tag}(r,p)&&!ht(p)&&(!p.componentInstance||!p.componentInstance._vnode.isComment)){var u=p.data.transition=j({},i);if("out-in"===l)return this._leaving=!0,Ze(u,"afterLeave",(function(){t._leaving=!1,t.$forceUpdate()})),Zn(e,n);if("in-out"===l){if(ht(r))return c;var d,h=function(){d()};Ze(i,"afterEnter",h),Ze(i,"enterCancelled",h),Ze(u,"delayLeave",(function(e){d=e}))}}return n}}},Xn=j({tag:String,moveClass:String},Nn);function Wn(e){e.elm._moveCb&&e.elm._moveCb(),e.elm._enterCb&&e.elm._enterCb()}function Kn(e){e.data.newPos=e.elm.getBoundingClientRect()}function Qn(e){var t=e.data.pos,a=e.data.newPos,l=t.left-a.left,n=t.top-a.top;if(l||n){e.data.moved=!0;var r=e.elm.style;r.transform=r.WebkitTransform="translate(".concat(l,"px,").concat(n,"px)"),r.transitionDuration="0s"}}delete Xn.mode;var er={Transition:Yn,TransitionGroup:{props:Xn,beforeMount:function(){var e=this,t=this._update;this._update=function(a,l){var n=Xt(e);e.__patch__(e._vnode,e.kept,!1,!0),e._vnode=e.kept,n(),t.call(e,a,l)}},render:function(e){for(var t=this.tag||this.$vnode.data.tag||"span",a=Object.create(null),l=this.prevChildren=this.children,n=this.$slots.default||[],r=this.children=[],s=Jn(this),i=0;i<n.length;i++){if((p=n[i]).tag)if(null!=p.key&&0!==String(p.key).indexOf("__vlist"))r.push(p),a[p.key]=p,(p.data||(p.data={})).transition=s;else;}if(l){var o=[],c=[];for(i=0;i<l.length;i++){var p;(p=l[i]).data.transition=s,p.data.pos=p.elm.getBoundingClientRect(),a[p.key]?o.push(p):c.push(p)}this.kept=e(t,null,o),this.removed=c}return e(t,null,r)},updated:function(){var e=this.prevChildren,t=this.moveClass||(this.name||"v")+"-move";e.length&&this.hasMove(e[0].elm,t)&&(e.forEach(Wn),e.forEach(Kn),e.forEach(Qn),this._reflow=document.body.offsetHeight,e.forEach((function(e){if(e.data.moved){var a=e.elm,l=a.style;yn(a,t),l.transform=l.WebkitTransform=l.transitionDuration="",a.addEventListener(vn,a._moveCb=function e(l){l&&l.target!==a||l&&!/transform$/.test(l.propertyName)||(a.removeEventListener(vn,e),a._moveCb=null,Bn(a,t))})}})))},methods:{hasMove:function(e,t){if(!hn)return!1;if(this._hasMove)return this._hasMove;var a=e.cloneNode();e._transitionClasses&&e._transitionClasses.forEach((function(e){pn(a,e)})),cn(a,t),a.style.display="none",this.$el.appendChild(a);var l=_n(a);return this.$el.removeChild(a),this._hasMove=l.hasTransform}}}};function tr(e,t){for(var a in t)e[a]=t[a];return e}Ja.config.mustUseProp=function(e,t,a){return"value"===a&&el(e)&&"button"!==t||"selected"===a&&"option"===e||"checked"===a&&"input"===e||"muted"===a&&"video"===e},Ja.config.isReservedTag=vl,Ja.config.isReservedAttr=Qa,Ja.config.getTagNamespace=function(e){return gl(e)?"svg":"math"===e?"math":void 0},Ja.config.isUnknownElement=function(e){if(!z)return!0;if(vl(e))return!1;if(e=e.toLowerCase(),null!=fl[e])return fl[e];var t=document.createElement(e);return e.indexOf("-")>-1?fl[e]=t.constructor===window.HTMLUnknownElement||t.constructor===window.HTMLElement:fl[e]=/HTMLUnknownElement/.test(t.toString())},j(Ja.options.directives,In),j(Ja.options.components,er),Ja.prototype.__patch__=z?Dn:L,Ja.prototype.$mount=function(e,t){return function(e,t,a){var l;e.$el=t,e.$options.render||(e.$options.render=he),Qt(e,"beforeMount"),l=function(){e._update(e._render(),a)},new Vt(e,l,L,{before:function(){e._isMounted&&!e._isDestroyed&&Qt(e,"beforeUpdate")}},!0),a=!1;var n=e._preWatchers;if(n)for(var r=0;r<n.length;r++)n[r].run();return null==e.$vnode&&(e._isMounted=!0,Qt(e,"mounted")),e}(this,e=e&&z?function(e){if("string"==typeof e){var t=document.querySelector(e);return t||document.createElement("div")}return e}(e):void 0,t)},z&&setTimeout((function(){I.devtools&&se&&se.emit("init",Ja)}),0);var ar=/[!'()*]/g,lr=function(e){return"%"+e.charCodeAt(0).toString(16)},nr=/%2C/g,rr=function(e){return encodeURIComponent(e).replace(ar,lr).replace(nr,",")};function sr(e){try{return decodeURIComponent(e)}catch(e){0}return e}var ir=function(e){return null==e||"object"==typeof e?e:String(e)};function or(e){var t={};return(e=e.trim().replace(/^(\?|#|&)/,""))?(e.split("&").forEach((function(e){var a=e.replace(/\+/g," ").split("="),l=sr(a.shift()),n=a.length>0?sr(a.join("=")):null;void 0===t[l]?t[l]=n:Array.isArray(t[l])?t[l].push(n):t[l]=[t[l],n]})),t):t}function cr(e){var t=e?Object.keys(e).map((function(t){var a=e[t];if(void 0===a)return"";if(null===a)return rr(t);if(Array.isArray(a)){var l=[];return a.forEach((function(e){void 0!==e&&(null===e?l.push(rr(t)):l.push(rr(t)+"="+rr(e)))})),l.join("&")}return rr(t)+"="+rr(a)})).filter((function(e){return e.length>0})).join("&"):null;return t?"?"+t:""}var pr=/\/?$/;function ur(e,t,a,l){var n=l&&l.options.stringifyQuery,r=t.query||{};try{r=dr(r)}catch(e){}var s={name:t.name||e&&e.name,meta:e&&e.meta||{},path:t.path||"/",hash:t.hash||"",query:r,params:t.params||{},fullPath:vr(t,n),matched:e?gr(e):[]};return a&&(s.redirectedFrom=vr(a,n)),Object.freeze(s)}function dr(e){if(Array.isArray(e))return e.map(dr);if(e&&"object"==typeof e){var t={};for(var a in e)t[a]=dr(e[a]);return t}return e}var hr=ur(null,{path:"/"});function gr(e){for(var t=[];e;)t.unshift(e),e=e.parent;return t}function vr(e,t){var a=e.path,l=e.query;void 0===l&&(l={});var n=e.hash;return void 0===n&&(n=""),(a||"/")+(t||cr)(l)+n}function fr(e,t,a){return t===hr?e===t:!!t&&(e.path&&t.path?e.path.replace(pr,"")===t.path.replace(pr,"")&&(a||e.hash===t.hash&&mr(e.query,t.query)):!(!e.name||!t.name)&&(e.name===t.name&&(a||e.hash===t.hash&&mr(e.query,t.query)&&mr(e.params,t.params))))}function mr(e,t){if(void 0===e&&(e={}),void 0===t&&(t={}),!e||!t)return e===t;var a=Object.keys(e).sort(),l=Object.keys(t).sort();return a.length===l.length&&a.every((function(a,n){var r=e[a];if(l[n]!==a)return!1;var s=t[a];return null==r||null==s?r===s:"object"==typeof r&&"object"==typeof s?mr(r,s):String(r)===String(s)}))}function br(e){for(var t=0;t<e.matched.length;t++){var a=e.matched[t];for(var l in a.instances){var n=a.instances[l],r=a.enteredCbs[l];if(n&&r){delete a.enteredCbs[l];for(var s=0;s<r.length;s++)n._isBeingDestroyed||r[s](n)}}}}var Er={name:"RouterView",functional:!0,props:{name:{type:String,default:"default"}},render:function(e,t){var a=t.props,l=t.children,n=t.parent,r=t.data;r.routerView=!0;for(var s=n.$createElement,i=a.name,o=n.$route,c=n._routerViewCache||(n._routerViewCache={}),p=0,u=!1;n&&n._routerRoot!==n;){var d=n.$vnode?n.$vnode.data:{};d.routerView&&p++,d.keepAlive&&n._directInactive&&n._inactive&&(u=!0),n=n.$parent}if(r.routerViewDepth=p,u){var h=c[i],g=h&&h.component;return g?(h.configProps&&yr(g,r,h.route,h.configProps),s(g,r,l)):s()}var v=o.matched[p],f=v&&v.components[i];if(!v||!f)return c[i]=null,s();c[i]={component:f},r.registerRouteInstance=function(e,t){var a=v.instances[i];(t&&a!==e||!t&&a===e)&&(v.instances[i]=t)},(r.hook||(r.hook={})).prepatch=function(e,t){v.instances[i]=t.componentInstance},r.hook.init=function(e){e.data.keepAlive&&e.componentInstance&&e.componentInstance!==v.instances[i]&&(v.instances[i]=e.componentInstance),br(o)};var m=v.props&&v.props[i];return m&&(tr(c[i],{route:o,configProps:m}),yr(f,r,o,m)),s(f,r,l)}};function yr(e,t,a,l){var n=t.props=function(e,t){switch(typeof t){case"undefined":return;case"object":return t;case"function":return t(e);case"boolean":return t?e.params:void 0;default:0}}(a,l);if(n){n=t.props=tr({},n);var r=t.attrs=t.attrs||{};for(var s in n)e.props&&s in e.props||(r[s]=n[s],delete n[s])}}function Br(e,t,a){var l=e.charAt(0);if("/"===l)return e;if("?"===l||"#"===l)return t+e;var n=t.split("/");a&&n[n.length-1]||n.pop();for(var r=e.replace(/^\//,"").split("/"),s=0;s<r.length;s++){var i=r[s];".."===i?n.pop():"."!==i&&n.push(i)}return""!==n[0]&&n.unshift(""),n.join("/")}function Ar(e){return e.replace(/\/(?:\s*\/)+/g,"/")}var xr=Array.isArray||function(e){return"[object Array]"==Object.prototype.toString.call(e)},_r=Rr,Sr=Pr,kr=function(e,t){return Dr(Pr(e,t),t)},Tr=Dr,wr=Fr,Cr=new RegExp(["(\\\\.)","([\\/.])?(?:(?:\\:(\\w+)(?:\\(((?:\\\\.|[^\\\\()])+)\\))?|\\(((?:\\\\.|[^\\\\()])+)\\))([+*?])?|(\\*))"].join("|"),"g");function Pr(e,t){for(var a,l=[],n=0,r=0,s="",i=t&&t.delimiter||"/";null!=(a=Cr.exec(e));){var o=a[0],c=a[1],p=a.index;if(s+=e.slice(r,p),r=p+o.length,c)s+=c[1];else{var u=e[r],d=a[2],h=a[3],g=a[4],v=a[5],f=a[6],m=a[7];s&&(l.push(s),s="");var b=null!=d&&null!=u&&u!==d,E="+"===f||"*"===f,y="?"===f||"*"===f,B=a[2]||i,A=g||v;l.push({name:h||n++,prefix:d||"",delimiter:B,optional:y,repeat:E,partial:b,asterisk:!!m,pattern:A?Ur(A):m?".*":"[^"+Lr(B)+"]+?"})}}return r<e.length&&(s+=e.substr(r)),s&&l.push(s),l}function jr(e){return encodeURI(e).replace(/[\/?#]/g,(function(e){return"%"+e.charCodeAt(0).toString(16).toUpperCase()}))}function Dr(e,t){for(var a=new Array(e.length),l=0;l<e.length;l++)"object"==typeof e[l]&&(a[l]=new RegExp("^(?:"+e[l].pattern+")$",Mr(t)));return function(t,l){for(var n="",r=t||{},s=(l||{}).pretty?jr:encodeURIComponent,i=0;i<e.length;i++){var o=e[i];if("string"!=typeof o){var c,p=r[o.name];if(null==p){if(o.optional){o.partial&&(n+=o.prefix);continue}throw new TypeError('Expected "'+o.name+'" to be defined')}if(xr(p)){if(!o.repeat)throw new TypeError('Expected "'+o.name+'" to not repeat, but received `'+JSON.stringify(p)+"`");if(0===p.length){if(o.optional)continue;throw new TypeError('Expected "'+o.name+'" to not be empty')}for(var u=0;u<p.length;u++){if(c=s(p[u]),!a[i].test(c))throw new TypeError('Expected all "'+o.name+'" to match "'+o.pattern+'", but received `'+JSON.stringify(c)+"`");n+=(0===u?o.prefix:o.delimiter)+c}}else{if(c=o.asterisk?encodeURI(p).replace(/[?#]/g,(function(e){return"%"+e.charCodeAt(0).toString(16).toUpperCase()})):s(p),!a[i].test(c))throw new TypeError('Expected "'+o.name+'" to match "'+o.pattern+'", but received "'+c+'"');n+=o.prefix+c}}else n+=o}return n}}function Lr(e){return e.replace(/([.+*?=^!:${}()[\]|\/\\])/g,"\\$1")}function Ur(e){return e.replace(/([=!:$\/()])/g,"\\$1")}function Or(e,t){return e.keys=t,e}function Mr(e){return e&&e.sensitive?"":"i"}function Fr(e,t,a){xr(t)||(a=t||a,t=[]);for(var l=(a=a||{}).strict,n=!1!==a.end,r="",s=0;s<e.length;s++){var i=e[s];if("string"==typeof i)r+=Lr(i);else{var o=Lr(i.prefix),c="(?:"+i.pattern+")";t.push(i),i.repeat&&(c+="(?:"+o+c+")*"),r+=c=i.optional?i.partial?o+"("+c+")?":"(?:"+o+"("+c+"))?":o+"("+c+")"}}var p=Lr(a.delimiter||"/"),u=r.slice(-p.length)===p;return l||(r=(u?r.slice(0,-p.length):r)+"(?:"+p+"(?=$))?"),r+=n?"$":l&&u?"":"(?="+p+"|$)",Or(new RegExp("^"+r,Mr(a)),t)}function Rr(e,t,a){return xr(t)||(a=t||a,t=[]),a=a||{},e instanceof RegExp?function(e,t){var a=e.source.match(/\((?!\?)/g);if(a)for(var l=0;l<a.length;l++)t.push({name:l,prefix:null,delimiter:null,optional:!1,repeat:!1,partial:!1,asterisk:!1,pattern:null});return Or(e,t)}(e,t):xr(e)?function(e,t,a){for(var l=[],n=0;n<e.length;n++)l.push(Rr(e[n],t,a).source);return Or(new RegExp("(?:"+l.join("|")+")",Mr(a)),t)}(e,t,a):function(e,t,a){return Fr(Pr(e,a),t,a)}(e,t,a)}_r.parse=Sr,_r.compile=kr,_r.tokensToFunction=Tr,_r.tokensToRegExp=wr;var Gr=Object.create(null);function $r(e,t,a){t=t||{};try{var l=Gr[e]||(Gr[e]=_r.compile(e));return"string"==typeof t.pathMatch&&(t[0]=t.pathMatch),l(t,{pretty:!0})}catch(e){return""}finally{delete t[0]}}function Hr(e,t,a,l){var n="string"==typeof e?{path:e}:e;if(n._normalized)return n;if(n.name){var r=(n=tr({},e)).params;return r&&"object"==typeof r&&(n.params=tr({},r)),n}if(!n.path&&n.params&&t){(n=tr({},n))._normalized=!0;var s=tr(tr({},t.params),n.params);if(t.name)n.name=t.name,n.params=s;else if(t.matched.length){var i=t.matched[t.matched.length-1].path;n.path=$r(i,s,t.path)}else 0;return n}var o=function(e){var t="",a="",l=e.indexOf("#");l>=0&&(t=e.slice(l),e=e.slice(0,l));var n=e.indexOf("?");return n>=0&&(a=e.slice(n+1),e=e.slice(0,n)),{path:e,query:a,hash:t}}(n.path||""),c=t&&t.path||"/",p=o.path?Br(o.path,c,a||n.append):c,u=function(e,t,a){void 0===t&&(t={});var l,n=a||or;try{l=n(e||"")}catch(e){l={}}for(var r in t){var s=t[r];l[r]=Array.isArray(s)?s.map(ir):ir(s)}return l}(o.query,n.query,l&&l.options.parseQuery),d=n.hash||o.hash;return d&&"#"!==d.charAt(0)&&(d="#"+d),{_normalized:!0,path:p,query:u,hash:d}}var Ir,Nr=function(){},Vr={name:"RouterLink",props:{to:{type:[String,Object],required:!0},tag:{type:String,default:"a"},custom:Boolean,exact:Boolean,exactPath:Boolean,append:Boolean,replace:Boolean,activeClass:String,exactActiveClass:String,ariaCurrentValue:{type:String,default:"page"},event:{type:[String,Array],default:"click"}},render:function(e){var t=this,a=this.$router,l=this.$route,n=a.resolve(this.to,l,this.append),r=n.location,s=n.route,i=n.href,o={},c=a.options.linkActiveClass,p=a.options.linkExactActiveClass,u=null==c?"router-link-active":c,d=null==p?"router-link-exact-active":p,h=null==this.activeClass?u:this.activeClass,g=null==this.exactActiveClass?d:this.exactActiveClass,v=s.redirectedFrom?ur(null,Hr(s.redirectedFrom),null,a):s;o[g]=fr(l,v,this.exactPath),o[h]=this.exact||this.exactPath?o[g]:function(e,t){return 0===e.path.replace(pr,"/").indexOf(t.path.replace(pr,"/"))&&(!t.hash||e.hash===t.hash)&&function(e,t){for(var a in t)if(!(a in e))return!1;return!0}(e.query,t.query)}(l,v);var f=o[g]?this.ariaCurrentValue:null,m=function(e){Jr(e)&&(t.replace?a.replace(r,Nr):a.push(r,Nr))},b={click:Jr};Array.isArray(this.event)?this.event.forEach((function(e){b[e]=m})):b[this.event]=m;var E={class:o},y=!this.$scopedSlots.$hasNormal&&this.$scopedSlots.default&&this.$scopedSlots.default({href:i,route:s,navigate:m,isActive:o[h],isExactActive:o[g]});if(y){if(1===y.length)return y[0];if(y.length>1||!y.length)return 0===y.length?e():e("span",{},y)}if("a"===this.tag)E.on=b,E.attrs={href:i,"aria-current":f};else{var B=function e(t){var a;if(t)for(var l=0;l<t.length;l++){if("a"===(a=t[l]).tag)return a;if(a.children&&(a=e(a.children)))return a}}(this.$slots.default);if(B){B.isStatic=!1;var A=B.data=tr({},B.data);for(var x in A.on=A.on||{},A.on){var _=A.on[x];x in b&&(A.on[x]=Array.isArray(_)?_:[_])}for(var S in b)S in A.on?A.on[S].push(b[S]):A.on[S]=m;var k=B.data.attrs=tr({},B.data.attrs);k.href=i,k["aria-current"]=f}else E.on=b}return e(this.tag,E,this.$slots.default)}};function Jr(e){if(!(e.metaKey||e.altKey||e.ctrlKey||e.shiftKey||e.defaultPrevented||void 0!==e.button&&0!==e.button)){if(e.currentTarget&&e.currentTarget.getAttribute){var t=e.currentTarget.getAttribute("target");if(/\b_blank\b/i.test(t))return}return e.preventDefault&&e.preventDefault(),!0}}var Zr="undefined"!=typeof window;function qr(e,t,a,l,n){var r=t||[],s=a||Object.create(null),i=l||Object.create(null);e.forEach((function(e){!function e(t,a,l,n,r,s){var i=n.path,o=n.name;0;var c=n.pathToRegexpOptions||{},p=function(e,t,a){a||(e=e.replace(/\/$/,""));if("/"===e[0])return e;if(null==t)return e;return Ar(t.path+"/"+e)}(i,r,c.strict);"boolean"==typeof n.caseSensitive&&(c.sensitive=n.caseSensitive);var u={path:p,regex:zr(p,c),components:n.components||{default:n.component},alias:n.alias?"string"==typeof n.alias?[n.alias]:n.alias:[],instances:{},enteredCbs:{},name:o,parent:r,matchAs:s,redirect:n.redirect,beforeEnter:n.beforeEnter,meta:n.meta||{},props:null==n.props?{}:n.components?n.props:{default:n.props}};n.children&&n.children.forEach((function(n){var r=s?Ar(s+"/"+n.path):void 0;e(t,a,l,n,u,r)}));a[u.path]||(t.push(u.path),a[u.path]=u);if(void 0!==n.alias)for(var d=Array.isArray(n.alias)?n.alias:[n.alias],h=0;h<d.length;++h){0;var g={path:d[h],children:n.children};e(t,a,l,g,r,u.path||"/")}o&&(l[o]||(l[o]=u))}(r,s,i,e,n)}));for(var o=0,c=r.length;o<c;o++)"*"===r[o]&&(r.push(r.splice(o,1)[0]),c--,o--);return{pathList:r,pathMap:s,nameMap:i}}function zr(e,t){return _r(e,[],t)}function Yr(e,t){var a=qr(e),l=a.pathList,n=a.pathMap,r=a.nameMap;function s(e,a,s){var i=Hr(e,a,!1,t),c=i.name;if(c){var p=r[c];if(!p)return o(null,i);var u=p.regex.keys.filter((function(e){return!e.optional})).map((function(e){return e.name}));if("object"!=typeof i.params&&(i.params={}),a&&"object"==typeof a.params)for(var d in a.params)!(d in i.params)&&u.indexOf(d)>-1&&(i.params[d]=a.params[d]);return i.path=$r(p.path,i.params),o(p,i,s)}if(i.path){i.params={};for(var h=0;h<l.length;h++){var g=l[h],v=n[g];if(Xr(v.regex,i.path,i.params))return o(v,i,s)}}return o(null,i)}function i(e,a){var l=e.redirect,n="function"==typeof l?l(ur(e,a,null,t)):l;if("string"==typeof n&&(n={path:n}),!n||"object"!=typeof n)return o(null,a);var i=n,c=i.name,p=i.path,u=a.query,d=a.hash,h=a.params;if(u=i.hasOwnProperty("query")?i.query:u,d=i.hasOwnProperty("hash")?i.hash:d,h=i.hasOwnProperty("params")?i.params:h,c){r[c];return s({_normalized:!0,name:c,query:u,hash:d,params:h},void 0,a)}if(p){var g=function(e,t){return Br(e,t.parent?t.parent.path:"/",!0)}(p,e);return s({_normalized:!0,path:$r(g,h),query:u,hash:d},void 0,a)}return o(null,a)}function o(e,a,l){return e&&e.redirect?i(e,l||a):e&&e.matchAs?function(e,t,a){var l=s({_normalized:!0,path:$r(a,t.params)});if(l){var n=l.matched,r=n[n.length-1];return t.params=l.params,o(r,t)}return o(null,t)}(0,a,e.matchAs):ur(e,a,l,t)}return{match:s,addRoute:function(e,t){var a="object"!=typeof e?r[e]:void 0;qr([t||e],l,n,r,a),a&&a.alias.length&&qr(a.alias.map((function(e){return{path:e,children:[t]}})),l,n,r,a)},getRoutes:function(){return l.map((function(e){return n[e]}))},addRoutes:function(e){qr(e,l,n,r)}}}function Xr(e,t,a){var l=t.match(e);if(!l)return!1;if(!a)return!0;for(var n=1,r=l.length;n<r;++n){var s=e.keys[n-1];s&&(a[s.name||"pathMatch"]="string"==typeof l[n]?sr(l[n]):l[n])}return!0}var Wr=Zr&&window.performance&&window.performance.now?window.performance:Date;function Kr(){return Wr.now().toFixed(3)}var Qr=Kr();function es(){return Qr}function ts(e){return Qr=e}var as=Object.create(null);function ls(){"scrollRestoration"in window.history&&(window.history.scrollRestoration="manual");var e=window.location.protocol+"//"+window.location.host,t=window.location.href.replace(e,""),a=tr({},window.history.state);return a.key=es(),window.history.replaceState(a,"",t),window.addEventListener("popstate",ss),function(){window.removeEventListener("popstate",ss)}}function ns(e,t,a,l){if(e.app){var n=e.options.scrollBehavior;n&&e.app.$nextTick((function(){var r=function(){var e=es();if(e)return as[e]}(),s=n.call(e,t,a,l?r:null);s&&("function"==typeof s.then?s.then((function(e){us(e,r)})).catch((function(e){0})):us(s,r))}))}}function rs(){var e=es();e&&(as[e]={x:window.pageXOffset,y:window.pageYOffset})}function ss(e){rs(),e.state&&e.state.key&&ts(e.state.key)}function is(e){return cs(e.x)||cs(e.y)}function os(e){return{x:cs(e.x)?e.x:window.pageXOffset,y:cs(e.y)?e.y:window.pageYOffset}}function cs(e){return"number"==typeof e}var ps=/^#\d/;function us(e,t){var a,l="object"==typeof e;if(l&&"string"==typeof e.selector){var n=ps.test(e.selector)?document.getElementById(e.selector.slice(1)):document.querySelector(e.selector);if(n){var r=e.offset&&"object"==typeof e.offset?e.offset:{};t=function(e,t){var a=document.documentElement.getBoundingClientRect(),l=e.getBoundingClientRect();return{x:l.left-a.left-t.x,y:l.top-a.top-t.y}}(n,r={x:cs((a=r).x)?a.x:0,y:cs(a.y)?a.y:0})}else is(e)&&(t=os(e))}else l&&is(e)&&(t=os(e));t&&("scrollBehavior"in document.documentElement.style?window.scrollTo({left:t.x,top:t.y,behavior:e.behavior}):window.scrollTo(t.x,t.y))}var ds,hs=Zr&&((-1===(ds=window.navigator.userAgent).indexOf("Android 2.")&&-1===ds.indexOf("Android 4.0")||-1===ds.indexOf("Mobile Safari")||-1!==ds.indexOf("Chrome")||-1!==ds.indexOf("Windows Phone"))&&window.history&&"function"==typeof window.history.pushState);function gs(e,t){rs();var a=window.history;try{if(t){var l=tr({},a.state);l.key=es(),a.replaceState(l,"",e)}else a.pushState({key:ts(Kr())},"",e)}catch(a){window.location[t?"replace":"assign"](e)}}function vs(e){gs(e,!0)}var fs={redirected:2,aborted:4,cancelled:8,duplicated:16};function ms(e,t){return Es(e,t,fs.redirected,'Redirected when going from "'+e.fullPath+'" to "'+function(e){if("string"==typeof e)return e;if("path"in e)return e.path;var t={};return ys.forEach((function(a){a in e&&(t[a]=e[a])})),JSON.stringify(t,null,2)}(t)+'" via a navigation guard.')}function bs(e,t){return Es(e,t,fs.cancelled,'Navigation cancelled from "'+e.fullPath+'" to "'+t.fullPath+'" with a new navigation.')}function Es(e,t,a,l){var n=new Error(l);return n._isRouter=!0,n.from=e,n.to=t,n.type=a,n}var ys=["params","query","hash"];function Bs(e){return Object.prototype.toString.call(e).indexOf("Error")>-1}function As(e,t){return Bs(e)&&e._isRouter&&(null==t||e.type===t)}function xs(e,t,a){var l=function(n){n>=e.length?a():e[n]?t(e[n],(function(){l(n+1)})):l(n+1)};l(0)}function _s(e){return function(t,a,l){var n=!1,r=0,s=null;Ss(e,(function(e,t,a,i){if("function"==typeof e&&void 0===e.cid){n=!0,r++;var o,c=ws((function(t){var n;((n=t).__esModule||Ts&&"Module"===n[Symbol.toStringTag])&&(t=t.default),e.resolved="function"==typeof t?t:Ir.extend(t),a.components[i]=t,--r<=0&&l()})),p=ws((function(e){var t="Failed to resolve async component "+i+": "+e;s||(s=Bs(e)?e:new Error(t),l(s))}));try{o=e(c,p)}catch(e){p(e)}if(o)if("function"==typeof o.then)o.then(c,p);else{var u=o.component;u&&"function"==typeof u.then&&u.then(c,p)}}})),n||l()}}function Ss(e,t){return ks(e.map((function(e){return Object.keys(e.components).map((function(a){return t(e.components[a],e.instances[a],e,a)}))})))}function ks(e){return Array.prototype.concat.apply([],e)}var Ts="function"==typeof Symbol&&"symbol"==typeof Symbol.toStringTag;function ws(e){var t=!1;return function(){for(var a=[],l=arguments.length;l--;)a[l]=arguments[l];if(!t)return t=!0,e.apply(this,a)}}var Cs=function(e,t){this.router=e,this.base=function(e){if(!e)if(Zr){var t=document.querySelector("base");e=(e=t&&t.getAttribute("href")||"/").replace(/^https?:\/\/[^\/]+/,"")}else e="/";"/"!==e.charAt(0)&&(e="/"+e);return e.replace(/\/$/,"")}(t),this.current=hr,this.pending=null,this.ready=!1,this.readyCbs=[],this.readyErrorCbs=[],this.errorCbs=[],this.listeners=[]};function Ps(e,t,a,l){var n=Ss(e,(function(e,l,n,r){var s=function(e,t){"function"!=typeof e&&(e=Ir.extend(e));return e.options[t]}(e,t);if(s)return Array.isArray(s)?s.map((function(e){return a(e,l,n,r)})):a(s,l,n,r)}));return ks(l?n.reverse():n)}function js(e,t){if(t)return function(){return e.apply(t,arguments)}}Cs.prototype.listen=function(e){this.cb=e},Cs.prototype.onReady=function(e,t){this.ready?e():(this.readyCbs.push(e),t&&this.readyErrorCbs.push(t))},Cs.prototype.onError=function(e){this.errorCbs.push(e)},Cs.prototype.transitionTo=function(e,t,a){var l,n=this;try{l=this.router.match(e,this.current)}catch(e){throw this.errorCbs.forEach((function(t){t(e)})),e}var r=this.current;this.confirmTransition(l,(function(){n.updateRoute(l),t&&t(l),n.ensureURL(),n.router.afterHooks.forEach((function(e){e&&e(l,r)})),n.ready||(n.ready=!0,n.readyCbs.forEach((function(e){e(l)})))}),(function(e){a&&a(e),e&&!n.ready&&(As(e,fs.redirected)&&r===hr||(n.ready=!0,n.readyErrorCbs.forEach((function(t){t(e)}))))}))},Cs.prototype.confirmTransition=function(e,t,a){var l=this,n=this.current;this.pending=e;var r,s,i=function(e){!As(e)&&Bs(e)&&(l.errorCbs.length?l.errorCbs.forEach((function(t){t(e)})):console.error(e)),a&&a(e)},o=e.matched.length-1,c=n.matched.length-1;if(fr(e,n)&&o===c&&e.matched[o]===n.matched[c])return this.ensureURL(),e.hash&&ns(this.router,n,e,!1),i(((s=Es(r=n,e,fs.duplicated,'Avoided redundant navigation to current location: "'+r.fullPath+'".')).name="NavigationDuplicated",s));var p=function(e,t){var a,l=Math.max(e.length,t.length);for(a=0;a<l&&e[a]===t[a];a++);return{updated:t.slice(0,a),activated:t.slice(a),deactivated:e.slice(a)}}(this.current.matched,e.matched),u=p.updated,d=p.deactivated,h=p.activated,g=[].concat(function(e){return Ps(e,"beforeRouteLeave",js,!0)}(d),this.router.beforeHooks,function(e){return Ps(e,"beforeRouteUpdate",js)}(u),h.map((function(e){return e.beforeEnter})),_s(h)),v=function(t,a){if(l.pending!==e)return i(bs(n,e));try{t(e,n,(function(t){!1===t?(l.ensureURL(!0),i(function(e,t){return Es(e,t,fs.aborted,'Navigation aborted from "'+e.fullPath+'" to "'+t.fullPath+'" via a navigation guard.')}(n,e))):Bs(t)?(l.ensureURL(!0),i(t)):"string"==typeof t||"object"==typeof t&&("string"==typeof t.path||"string"==typeof t.name)?(i(ms(n,e)),"object"==typeof t&&t.replace?l.replace(t):l.push(t)):a(t)}))}catch(e){i(e)}};xs(g,v,(function(){xs(function(e){return Ps(e,"beforeRouteEnter",(function(e,t,a,l){return function(e,t,a){return function(l,n,r){return e(l,n,(function(e){"function"==typeof e&&(t.enteredCbs[a]||(t.enteredCbs[a]=[]),t.enteredCbs[a].push(e)),r(e)}))}}(e,a,l)}))}(h).concat(l.router.resolveHooks),v,(function(){if(l.pending!==e)return i(bs(n,e));l.pending=null,t(e),l.router.app&&l.router.app.$nextTick((function(){br(e)}))}))}))},Cs.prototype.updateRoute=function(e){this.current=e,this.cb&&this.cb(e)},Cs.prototype.setupListeners=function(){},Cs.prototype.teardown=function(){this.listeners.forEach((function(e){e()})),this.listeners=[],this.current=hr,this.pending=null};var Ds=function(e){function t(t,a){e.call(this,t,a),this._startLocation=Ls(this.base)}return e&&(t.__proto__=e),t.prototype=Object.create(e&&e.prototype),t.prototype.constructor=t,t.prototype.setupListeners=function(){var e=this;if(!(this.listeners.length>0)){var t=this.router,a=t.options.scrollBehavior,l=hs&&a;l&&this.listeners.push(ls());var n=function(){var a=e.current,n=Ls(e.base);e.current===hr&&n===e._startLocation||e.transitionTo(n,(function(e){l&&ns(t,e,a,!0)}))};window.addEventListener("popstate",n),this.listeners.push((function(){window.removeEventListener("popstate",n)}))}},t.prototype.go=function(e){window.history.go(e)},t.prototype.push=function(e,t,a){var l=this,n=this.current;this.transitionTo(e,(function(e){gs(Ar(l.base+e.fullPath)),ns(l.router,e,n,!1),t&&t(e)}),a)},t.prototype.replace=function(e,t,a){var l=this,n=this.current;this.transitionTo(e,(function(e){vs(Ar(l.base+e.fullPath)),ns(l.router,e,n,!1),t&&t(e)}),a)},t.prototype.ensureURL=function(e){if(Ls(this.base)!==this.current.fullPath){var t=Ar(this.base+this.current.fullPath);e?gs(t):vs(t)}},t.prototype.getCurrentLocation=function(){return Ls(this.base)},t}(Cs);function Ls(e){var t=window.location.pathname,a=t.toLowerCase(),l=e.toLowerCase();return!e||a!==l&&0!==a.indexOf(Ar(l+"/"))||(t=t.slice(e.length)),(t||"/")+window.location.search+window.location.hash}var Us=function(e){function t(t,a,l){e.call(this,t,a),l&&function(e){var t=Ls(e);if(!/^\/#/.test(t))return window.location.replace(Ar(e+"/#"+t)),!0}(this.base)||Os()}return e&&(t.__proto__=e),t.prototype=Object.create(e&&e.prototype),t.prototype.constructor=t,t.prototype.setupListeners=function(){var e=this;if(!(this.listeners.length>0)){var t=this.router.options.scrollBehavior,a=hs&&t;a&&this.listeners.push(ls());var l=function(){var t=e.current;Os()&&e.transitionTo(Ms(),(function(l){a&&ns(e.router,l,t,!0),hs||Gs(l.fullPath)}))},n=hs?"popstate":"hashchange";window.addEventListener(n,l),this.listeners.push((function(){window.removeEventListener(n,l)}))}},t.prototype.push=function(e,t,a){var l=this,n=this.current;this.transitionTo(e,(function(e){Rs(e.fullPath),ns(l.router,e,n,!1),t&&t(e)}),a)},t.prototype.replace=function(e,t,a){var l=this,n=this.current;this.transitionTo(e,(function(e){Gs(e.fullPath),ns(l.router,e,n,!1),t&&t(e)}),a)},t.prototype.go=function(e){window.history.go(e)},t.prototype.ensureURL=function(e){var t=this.current.fullPath;Ms()!==t&&(e?Rs(t):Gs(t))},t.prototype.getCurrentLocation=function(){return Ms()},t}(Cs);function Os(){var e=Ms();return"/"===e.charAt(0)||(Gs("/"+e),!1)}function Ms(){var e=window.location.href,t=e.indexOf("#");return t<0?"":e=e.slice(t+1)}function Fs(e){var t=window.location.href,a=t.indexOf("#");return(a>=0?t.slice(0,a):t)+"#"+e}function Rs(e){hs?gs(Fs(e)):window.location.hash=e}function Gs(e){hs?vs(Fs(e)):window.location.replace(Fs(e))}var $s=function(e){function t(t,a){e.call(this,t,a),this.stack=[],this.index=-1}return e&&(t.__proto__=e),t.prototype=Object.create(e&&e.prototype),t.prototype.constructor=t,t.prototype.push=function(e,t,a){var l=this;this.transitionTo(e,(function(e){l.stack=l.stack.slice(0,l.index+1).concat(e),l.index++,t&&t(e)}),a)},t.prototype.replace=function(e,t,a){var l=this;this.transitionTo(e,(function(e){l.stack=l.stack.slice(0,l.index).concat(e),t&&t(e)}),a)},t.prototype.go=function(e){var t=this,a=this.index+e;if(!(a<0||a>=this.stack.length)){var l=this.stack[a];this.confirmTransition(l,(function(){var e=t.current;t.index=a,t.updateRoute(l),t.router.afterHooks.forEach((function(t){t&&t(l,e)}))}),(function(e){As(e,fs.duplicated)&&(t.index=a)}))}},t.prototype.getCurrentLocation=function(){var e=this.stack[this.stack.length-1];return e?e.fullPath:"/"},t.prototype.ensureURL=function(){},t}(Cs),Hs=function(e){void 0===e&&(e={}),this.app=null,this.apps=[],this.options=e,this.beforeHooks=[],this.resolveHooks=[],this.afterHooks=[],this.matcher=Yr(e.routes||[],this);var t=e.mode||"hash";switch(this.fallback="history"===t&&!hs&&!1!==e.fallback,this.fallback&&(t="hash"),Zr||(t="abstract"),this.mode=t,t){case"history":this.history=new Ds(this,e.base);break;case"hash":this.history=new Us(this,e.base,this.fallback);break;case"abstract":this.history=new $s(this,e.base);break;default:0}},Is={currentRoute:{configurable:!0}};Hs.prototype.match=function(e,t,a){return this.matcher.match(e,t,a)},Is.currentRoute.get=function(){return this.history&&this.history.current},Hs.prototype.init=function(e){var t=this;if(this.apps.push(e),e.$once("hook:destroyed",(function(){var a=t.apps.indexOf(e);a>-1&&t.apps.splice(a,1),t.app===e&&(t.app=t.apps[0]||null),t.app||t.history.teardown()})),!this.app){this.app=e;var a=this.history;if(a instanceof Ds||a instanceof Us){var l=function(e){a.setupListeners(),function(e){var l=a.current,n=t.options.scrollBehavior;hs&&n&&"fullPath"in e&&ns(t,e,l,!1)}(e)};a.transitionTo(a.getCurrentLocation(),l,l)}a.listen((function(e){t.apps.forEach((function(t){t._route=e}))}))}},Hs.prototype.beforeEach=function(e){return Vs(this.beforeHooks,e)},Hs.prototype.beforeResolve=function(e){return Vs(this.resolveHooks,e)},Hs.prototype.afterEach=function(e){return Vs(this.afterHooks,e)},Hs.prototype.onReady=function(e,t){this.history.onReady(e,t)},Hs.prototype.onError=function(e){this.history.onError(e)},Hs.prototype.push=function(e,t,a){var l=this;if(!t&&!a&&"undefined"!=typeof Promise)return new Promise((function(t,a){l.history.push(e,t,a)}));this.history.push(e,t,a)},Hs.prototype.replace=function(e,t,a){var l=this;if(!t&&!a&&"undefined"!=typeof Promise)return new Promise((function(t,a){l.history.replace(e,t,a)}));this.history.replace(e,t,a)},Hs.prototype.go=function(e){this.history.go(e)},Hs.prototype.back=function(){this.go(-1)},Hs.prototype.forward=function(){this.go(1)},Hs.prototype.getMatchedComponents=function(e){var t=e?e.matched?e:this.resolve(e).route:this.currentRoute;return t?[].concat.apply([],t.matched.map((function(e){return Object.keys(e.components).map((function(t){return e.components[t]}))}))):[]},Hs.prototype.resolve=function(e,t,a){var l=Hr(e,t=t||this.history.current,a,this),n=this.match(l,t),r=n.redirectedFrom||n.fullPath;return{location:l,route:n,href:function(e,t,a){var l="hash"===a?"#"+t:t;return e?Ar(e+"/"+l):l}(this.history.base,r,this.mode),normalizedTo:l,resolved:n}},Hs.prototype.getRoutes=function(){return this.matcher.getRoutes()},Hs.prototype.addRoute=function(e,t){this.matcher.addRoute(e,t),this.history.current!==hr&&this.history.transitionTo(this.history.getCurrentLocation())},Hs.prototype.addRoutes=function(e){this.matcher.addRoutes(e),this.history.current!==hr&&this.history.transitionTo(this.history.getCurrentLocation())},Object.defineProperties(Hs.prototype,Is);var Ns=Hs;function Vs(e,t){return e.push(t),function(){var a=e.indexOf(t);a>-1&&e.splice(a,1)}}Hs.install=function e(t){if(!e.installed||Ir!==t){e.installed=!0,Ir=t;var a=function(e){return void 0!==e},l=function(e,t){var l=e.$options._parentVnode;a(l)&&a(l=l.data)&&a(l=l.registerRouteInstance)&&l(e,t)};t.mixin({beforeCreate:function(){a(this.$options.router)?(this._routerRoot=this,this._router=this.$options.router,this._router.init(this),t.util.defineReactive(this,"_route",this._router.history.current)):this._routerRoot=this.$parent&&this.$parent._routerRoot||this,l(this,this)},destroyed:function(){l(this)}}),Object.defineProperty(t.prototype,"$router",{get:function(){return this._routerRoot._router}}),Object.defineProperty(t.prototype,"$route",{get:function(){return this._routerRoot._route}}),t.component("RouterView",Er),t.component("RouterLink",Vr);var n=t.config.optionMergeStrategies;n.beforeRouteEnter=n.beforeRouteLeave=n.beforeRouteUpdate=n.created}},Hs.version="3.6.5",Hs.isNavigationFailure=As,Hs.NavigationFailureType=fs,Hs.START_LOCATION=hr,Zr&&window.Vue&&window.Vue.use(Hs);a(100);a(16),a(132);var Js={NotFound:()=>Promise.all([a.e(0),a.e(4)]).then(a.bind(null,331)),Layout:()=>Promise.all([a.e(0),a.e(2)]).then(a.bind(null,330))},Zs={"v-0673347d":()=>a.e(7).then(a.bind(null,333)),"v-4d3769a8":()=>a.e(8).then(a.bind(null,334)),"v-6d5c9d43":()=>a.e(9).then(a.bind(null,335)),"v-4b655eaf":()=>a.e(10).then(a.bind(null,336)),"v-0670c8d3":()=>a.e(11).then(a.bind(null,337)),"v-3e16426a":()=>a.e(12).then(a.bind(null,338)),"v-c1e785ce":()=>a.e(13).then(a.bind(null,339)),"v-5c0d4395":()=>a.e(14).then(a.bind(null,340)),"v-39670695":()=>a.e(15).then(a.bind(null,341)),"v-07b6afc1":()=>a.e(16).then(a.bind(null,342)),"v-18dee076":()=>a.e(17).then(a.bind(null,343)),"v-339a55f0":()=>a.e(18).then(a.bind(null,344)),"v-b6a4de44":()=>a.e(19).then(a.bind(null,345)),"v-197df1cb":()=>a.e(20).then(a.bind(null,346)),"v-66343f5a":()=>a.e(21).then(a.bind(null,347)),"v-fe6d8e92":()=>a.e(22).then(a.bind(null,348)),"v-33c90cbc":()=>a.e(23).then(a.bind(null,349)),"v-d2af8b28":()=>a.e(24).then(a.bind(null,350)),"v-2a8a0e65":()=>a.e(25).then(a.bind(null,351)),"v-314a49ac":()=>a.e(26).then(a.bind(null,352)),"v-1950e958":()=>a.e(27).then(a.bind(null,353)),"v-383afc2c":()=>a.e(28).then(a.bind(null,354)),"v-cd2e9a3e":()=>a.e(29).then(a.bind(null,355)),"v-2bc02ef8":()=>a.e(30).then(a.bind(null,356)),"v-b1ff1b00":()=>a.e(31).then(a.bind(null,357)),"v-652d413a":()=>a.e(32).then(a.bind(null,358)),"v-ad57a0e0":()=>a.e(33).then(a.bind(null,359)),"v-0eb36c0b":()=>a.e(34).then(a.bind(null,360)),"v-2e9c75fc":()=>a.e(35).then(a.bind(null,361)),"v-c86c2402":()=>a.e(36).then(a.bind(null,362)),"v-9a497a22":()=>a.e(37).then(a.bind(null,363)),"v-f7eabdfa":()=>a.e(38).then(a.bind(null,364)),"v-295f4dfa":()=>a.e(39).then(a.bind(null,365)),"v-5fd74e9f":()=>a.e(40).then(a.bind(null,366)),"v-0994be19":()=>Promise.all([a.e(0),a.e(5)]).then(a.bind(null,367)),"v-89541564":()=>a.e(41).then(a.bind(null,368)),"v-f2b9c60e":()=>a.e(42).then(a.bind(null,369)),"v-f675b86a":()=>a.e(43).then(a.bind(null,370)),"v-5e1a810f":()=>a.e(44).then(a.bind(null,371)),"v-241e8c29":()=>a.e(45).then(a.bind(null,372)),"v-35dec6e4":()=>a.e(46).then(a.bind(null,373)),"v-4ce87a2c":()=>a.e(47).then(a.bind(null,374)),"v-6057dbe4":()=>a.e(48).then(a.bind(null,375)),"v-21c0caf7":()=>a.e(49).then(a.bind(null,376)),"v-2be7f4f2":()=>a.e(50).then(a.bind(null,377)),"v-14863469":()=>a.e(52).then(a.bind(null,378)),"v-21ef8fa4":()=>a.e(51).then(a.bind(null,379)),"v-097e597e":()=>a.e(53).then(a.bind(null,380)),"v-5d7ec670":()=>a.e(54).then(a.bind(null,381)),"v-86dc64e0":()=>a.e(55).then(a.bind(null,382)),"v-64a3e558":()=>a.e(56).then(a.bind(null,383)),"v-2e647478":()=>a.e(57).then(a.bind(null,384)),"v-dda145ec":()=>a.e(58).then(a.bind(null,385)),"v-453ba9ae":()=>a.e(59).then(a.bind(null,386)),"v-5d754cb7":()=>a.e(60).then(a.bind(null,387)),"v-0ad70742":()=>a.e(61).then(a.bind(null,388)),"v-dd2d0f56":()=>a.e(63).then(a.bind(null,389)),"v-5415afba":()=>a.e(62).then(a.bind(null,390)),"v-7d8f1dc8":()=>Promise.all([a.e(0),a.e(6)]).then(a.bind(null,391)),"v-6db74ebb":()=>a.e(64).then(a.bind(null,392)),"v-3fea4c0e":()=>a.e(65).then(a.bind(null,393)),"v-413f1daa":()=>a.e(66).then(a.bind(null,394)),"v-a6be1c98":()=>a.e(67).then(a.bind(null,395)),"v-0379d048":()=>a.e(69).then(a.bind(null,396)),"v-bca463c4":()=>a.e(68).then(a.bind(null,397)),"v-8690b482":()=>a.e(70).then(a.bind(null,398)),"v-6822ed3c":()=>a.e(73).then(a.bind(null,399)),"v-40ccc080":()=>a.e(72).then(a.bind(null,400)),"v-17606a76":()=>a.e(74).then(a.bind(null,401)),"v-2aa32df9":()=>a.e(75).then(a.bind(null,402)),"v-ca5728b6":()=>a.e(77).then(a.bind(null,332)),"v-537e618a":()=>a.e(76).then(a.bind(null,403)),"v-7d60c5fc":()=>a.e(79).then(a.bind(null,404)),"v-6d7bd5ac":()=>a.e(78).then(a.bind(null,405)),"v-75911aca":()=>a.e(80).then(a.bind(null,406)),"v-a52f63ca":()=>a.e(82).then(a.bind(null,407)),"v-024228c0":()=>a.e(83).then(a.bind(null,408)),"v-3650fe32":()=>a.e(84).then(a.bind(null,409)),"v-57a9a6c0":()=>a.e(85).then(a.bind(null,410)),"v-a1c0bf72":()=>a.e(86).then(a.bind(null,411)),"v-076db5a2":()=>a.e(87).then(a.bind(null,412)),"v-69edcd29":()=>a.e(88).then(a.bind(null,413)),"v-0e5bea25":()=>a.e(89).then(a.bind(null,414)),"v-5ee9bb3d":()=>a.e(90).then(a.bind(null,415)),"v-c06b09dc":()=>a.e(71).then(a.bind(null,416)),"v-dc4153cc":()=>a.e(92).then(a.bind(null,417)),"v-a99c1392":()=>a.e(95).then(a.bind(null,418)),"v-1b71fb0a":()=>a.e(93).then(a.bind(null,419)),"v-2b803d8a":()=>a.e(96).then(a.bind(null,420)),"v-77a99d3a":()=>a.e(97).then(a.bind(null,421)),"v-6d6802c0":()=>a.e(98).then(a.bind(null,422)),"v-053ef16e":()=>a.e(99).then(a.bind(null,423)),"v-6bb735b0":()=>a.e(100).then(a.bind(null,424)),"v-65229c30":()=>a.e(101).then(a.bind(null,425)),"v-20acc1fd":()=>a.e(94).then(a.bind(null,426)),"v-3c13bf1e":()=>a.e(102).then(a.bind(null,427)),"v-32376b82":()=>a.e(103).then(a.bind(null,428)),"v-0d35f2fb":()=>a.e(81).then(a.bind(null,429)),"v-01844106":()=>a.e(104).then(a.bind(null,430)),"v-5291dcfc":()=>a.e(106).then(a.bind(null,431)),"v-851ea476":()=>a.e(105).then(a.bind(null,432)),"v-4b382ed4":()=>a.e(107).then(a.bind(null,433)),"v-5b8db019":()=>a.e(109).then(a.bind(null,434)),"v-3bed8ed0":()=>a.e(108).then(a.bind(null,435)),"v-6d4f76c7":()=>a.e(110).then(a.bind(null,436)),"v-ac5acbb4":()=>a.e(111).then(a.bind(null,437)),"v-733f50a3":()=>a.e(113).then(a.bind(null,438)),"v-52c04cf0":()=>a.e(114).then(a.bind(null,439)),"v-13e44e4a":()=>a.e(115).then(a.bind(null,440)),"v-b808d19e":()=>a.e(116).then(a.bind(null,441)),"v-f3b0de10":()=>a.e(117).then(a.bind(null,442)),"v-94937e60":()=>a.e(118).then(a.bind(null,443)),"v-6a3203ee":()=>a.e(112).then(a.bind(null,444)),"v-04a8e9f4":()=>a.e(119).then(a.bind(null,445)),"v-e015545a":()=>a.e(120).then(a.bind(null,446)),"v-06cc8728":()=>a.e(121).then(a.bind(null,447)),"v-57559d9a":()=>a.e(122).then(a.bind(null,448)),"v-57ec6ef3":()=>a.e(123).then(a.bind(null,449)),"v-63d2c7f9":()=>a.e(124).then(a.bind(null,450)),"v-285a66d4":()=>a.e(125).then(a.bind(null,451)),"v-d6ca0284":()=>a.e(126).then(a.bind(null,452)),"v-1054fce3":()=>a.e(127).then(a.bind(null,453)),"v-3f33f3f9":()=>a.e(128).then(a.bind(null,454)),"v-3d0a5f07":()=>a.e(129).then(a.bind(null,455)),"v-24eb1861":()=>a.e(130).then(a.bind(null,456)),"v-569eda30":()=>a.e(131).then(a.bind(null,457)),"v-7568c9ac":()=>a.e(132).then(a.bind(null,458)),"v-7c1994b2":()=>a.e(133).then(a.bind(null,459)),"v-06817859":()=>a.e(135).then(a.bind(null,460)),"v-5056cad1":()=>a.e(136).then(a.bind(null,461)),"v-03da2212":()=>a.e(134).then(a.bind(null,462)),"v-10292b5b":()=>a.e(137).then(a.bind(null,463)),"v-a95ce4c4":()=>a.e(138).then(a.bind(null,464)),"v-17fb10cd":()=>a.e(140).then(a.bind(null,465)),"v-8544531a":()=>a.e(139).then(a.bind(null,466)),"v-48ef310c":()=>a.e(143).then(a.bind(null,467)),"v-d9c25200":()=>a.e(142).then(a.bind(null,468)),"v-0d70c6ad":()=>a.e(144).then(a.bind(null,469)),"v-f632342c":()=>a.e(145).then(a.bind(null,470)),"v-24027de6":()=>a.e(141).then(a.bind(null,471)),"v-35bece74":()=>a.e(146).then(a.bind(null,472)),"v-5138a674":()=>a.e(147).then(a.bind(null,473)),"v-6e6f09f5":()=>a.e(148).then(a.bind(null,474)),"v-95dfa2d2":()=>a.e(149).then(a.bind(null,475)),"v-c82e0618":()=>a.e(150).then(a.bind(null,476)),"v-2ee1cd15":()=>a.e(151).then(a.bind(null,477)),"v-d0f8bc20":()=>a.e(152).then(a.bind(null,478)),"v-0215e4d1":()=>a.e(154).then(a.bind(null,479)),"v-7119c973":()=>a.e(155).then(a.bind(null,480)),"v-432af96a":()=>a.e(153).then(a.bind(null,481)),"v-406c1903":()=>a.e(156).then(a.bind(null,482)),"v-5e7554b0":()=>a.e(157).then(a.bind(null,483)),"v-dbcde7e8":()=>a.e(158).then(a.bind(null,484)),"v-65020eec":()=>a.e(159).then(a.bind(null,485)),"v-2cd86ced":()=>a.e(160).then(a.bind(null,486)),"v-21a55aea":()=>a.e(161).then(a.bind(null,487)),"v-0db6efca":()=>a.e(162).then(a.bind(null,488)),"v-4dd95fae":()=>a.e(163).then(a.bind(null,489)),"v-0efbff3a":()=>a.e(164).then(a.bind(null,490)),"v-10986fa7":()=>a.e(167).then(a.bind(null,491)),"v-134b6dac":()=>a.e(165).then(a.bind(null,492)),"v-c0c0d1f6":()=>a.e(166).then(a.bind(null,493)),"v-443e8752":()=>a.e(168).then(a.bind(null,494)),"v-34858c9c":()=>a.e(169).then(a.bind(null,495)),"v-34bf194f":()=>a.e(170).then(a.bind(null,496)),"v-19d47872":()=>a.e(171).then(a.bind(null,497)),"v-f1863296":()=>a.e(172).then(a.bind(null,498)),"v-46712360":()=>a.e(173).then(a.bind(null,499)),"v-41e01991":()=>a.e(174).then(a.bind(null,500)),"v-732405d2":()=>a.e(175).then(a.bind(null,501)),"v-760c8ba6":()=>a.e(176).then(a.bind(null,502)),"v-09f9a3f8":()=>a.e(177).then(a.bind(null,503)),"v-502122bc":()=>a.e(178).then(a.bind(null,504)),"v-08b2163c":()=>a.e(179).then(a.bind(null,505)),"v-37643070":()=>a.e(180).then(a.bind(null,506)),"v-9a5aa036":()=>a.e(181).then(a.bind(null,507)),"v-3f651f6a":()=>a.e(182).then(a.bind(null,508)),"v-29539ae8":()=>a.e(183).then(a.bind(null,509)),"v-e638c7ec":()=>a.e(184).then(a.bind(null,510)),"v-885bf1fc":()=>a.e(185).then(a.bind(null,511)),"v-cbb9b39c":()=>a.e(186).then(a.bind(null,512)),"v-057da0ac":()=>a.e(187).then(a.bind(null,513)),"v-1e486835":()=>a.e(188).then(a.bind(null,514)),"v-0e979642":()=>a.e(189).then(a.bind(null,515)),"v-3030d1d7":()=>a.e(190).then(a.bind(null,516)),"v-0ed48d6b":()=>a.e(191).then(a.bind(null,517)),"v-06765d1e":()=>a.e(192).then(a.bind(null,518)),"v-4f1ef2f2":()=>a.e(193).then(a.bind(null,519)),"v-5a69f9ba":()=>a.e(194).then(a.bind(null,520)),"v-4e983046":()=>a.e(195).then(a.bind(null,521)),"v-6f0eb897":()=>a.e(196).then(a.bind(null,522)),"v-42f2e73c":()=>a.e(197).then(a.bind(null,523)),"v-18ecbe8e":()=>a.e(198).then(a.bind(null,524)),"v-1f85b84c":()=>a.e(199).then(a.bind(null,525)),"v-4d52e948":()=>a.e(200).then(a.bind(null,526)),"v-1991f250":()=>a.e(201).then(a.bind(null,527)),"v-3a4a80df":()=>a.e(202).then(a.bind(null,528)),"v-785d24b6":()=>a.e(203).then(a.bind(null,529)),"v-f0c75cea":()=>a.e(204).then(a.bind(null,530)),"v-5e4620e6":()=>a.e(205).then(a.bind(null,531)),"v-0963e9aa":()=>a.e(206).then(a.bind(null,532)),"v-599969f4":()=>a.e(207).then(a.bind(null,533)),"v-65c6c1be":()=>a.e(208).then(a.bind(null,534)),"v-f4e25d14":()=>a.e(209).then(a.bind(null,535)),"v-8f8e259a":()=>a.e(210).then(a.bind(null,536)),"v-168621d0":()=>a.e(213).then(a.bind(null,537)),"v-70f8a25c":()=>a.e(211).then(a.bind(null,538)),"v-66b2ee2f":()=>a.e(214).then(a.bind(null,539)),"v-3b18cac6":()=>a.e(212).then(a.bind(null,540)),"v-2d391ad8":()=>a.e(215).then(a.bind(null,541)),"v-cc86006a":()=>a.e(217).then(a.bind(null,542)),"v-62450f0c":()=>a.e(218).then(a.bind(null,543)),"v-72d592b7":()=>a.e(216).then(a.bind(null,544)),"v-10b041f2":()=>a.e(220).then(a.bind(null,545)),"v-670b6814":()=>a.e(219).then(a.bind(null,546)),"v-1c39b7d2":()=>a.e(221).then(a.bind(null,547)),"v-ba5da5d4":()=>a.e(222).then(a.bind(null,548)),"v-da46e29e":()=>a.e(223).then(a.bind(null,549)),"v-3491f880":()=>a.e(224).then(a.bind(null,550)),"v-63ce75d4":()=>a.e(226).then(a.bind(null,551)),"v-5f8dad4c":()=>a.e(225).then(a.bind(null,552)),"v-4686b2d4":()=>a.e(227).then(a.bind(null,553)),"v-4fec822e":()=>a.e(228).then(a.bind(null,554)),"v-705e0c86":()=>a.e(229).then(a.bind(null,555)),"v-cf037608":()=>a.e(230).then(a.bind(null,556)),"v-6bcc6732":()=>a.e(231).then(a.bind(null,557)),"v-45753986":()=>a.e(232).then(a.bind(null,558)),"v-8a781aac":()=>a.e(233).then(a.bind(null,559)),"v-a86fccfe":()=>a.e(234).then(a.bind(null,560)),"v-57e6e686":()=>a.e(235).then(a.bind(null,561)),"v-0aa90f3c":()=>a.e(91).then(a.bind(null,562))};function qs(e){const t=Object.create(null);return function(a){return t[a]||(t[a]=e(a))}}const zs=/-(\w)/g,Ys=qs(e=>e.replace(zs,(e,t)=>t?t.toUpperCase():"")),Xs=/\B([A-Z])/g,Ws=qs(e=>e.replace(Xs,"-$1").toLowerCase()),Ks=qs(e=>e.charAt(0).toUpperCase()+e.slice(1));function Qs(e,t){if(!t)return;if(e(t))return e(t);return t.includes("-")?e(Ks(Ys(t))):e(Ks(t))||e(Ws(t))}const ei=Object.assign({},Js,Zs),ti=e=>ei[e],ai=e=>Zs[e],li=e=>Js[e],ni=e=>Ja.component(e);function ri(e){return Qs(ai,e)}function si(e){return Qs(li,e)}function ii(e){return Qs(ti,e)}function oi(e){return Qs(ni,e)}function ci(...e){return Promise.all(e.filter(e=>e).map(async e=>{if(!oi(e)&&ii(e)){const t=await ii(e)();Ja.component(e,t.default)}}))}function pi(e,t){"undefined"!=typeof window&&window.__VUEPRESS__&&(window.__VUEPRESS__[e]=t)}var ui=a(93),di=a.n(ui),hi=a(94),gi=a.n(hi),vi={created(){if(this.siteMeta=this.$site.headTags.filter(([e])=>"meta"===e).map(([e,t])=>t),this.$ssrContext){const t=this.getMergedMetaTags();this.$ssrContext.title=this.$title,this.$ssrContext.lang=this.$lang,this.$ssrContext.pageMeta=(e=t)?e.map(e=>{let t="<meta";return Object.keys(e).forEach(a=>{t+=` ${a}="${gi()(e[a])}"`}),t+">"}).join("\n "):"",this.$ssrContext.canonicalLink=mi(this.$canonicalUrl)}var e},mounted(){this.currentMetaTags=[...document.querySelectorAll("meta")],this.updateMeta(),this.updateCanonicalLink()},methods:{updateMeta(){document.title=this.$title,document.documentElement.lang=this.$lang;const e=this.getMergedMetaTags();this.currentMetaTags=bi(e,this.currentMetaTags)},getMergedMetaTags(){const e=this.$page.frontmatter.meta||[];return di()([{name:"description",content:this.$description}],e,this.siteMeta,Ei)},updateCanonicalLink(){fi(),this.$canonicalUrl&&document.head.insertAdjacentHTML("beforeend",mi(this.$canonicalUrl))}},watch:{$page(){this.updateMeta(),this.updateCanonicalLink()}},beforeDestroy(){bi(null,this.currentMetaTags),fi()}};function fi(){const e=document.querySelector("link[rel='canonical']");e&&e.remove()}function mi(e=""){return e?`<link href="${e}" rel="canonical" />`:""}function bi(e,t){if(t&&[...t].filter(e=>e.parentNode===document.head).forEach(e=>document.head.removeChild(e)),e)return e.map(e=>{const t=document.createElement("meta");return Object.keys(e).forEach(a=>{t.setAttribute(a,e[a])}),document.head.appendChild(t),t})}function Ei(e){for(const t of["name","property","itemprop"])if(e.hasOwnProperty(t))return e[t]+t;return JSON.stringify(e)}var yi=a(48),Bi={mounted(){window.addEventListener("scroll",this.onScroll)},methods:{onScroll:a.n(yi)()((function(){this.setActiveHash()}),300),setActiveHash(){const e=[].slice.call(document.querySelectorAll(".sidebar-link")),t=[].slice.call(document.querySelectorAll(".header-anchor")).filter(t=>e.some(e=>e.hash===t.hash)),a=Math.max(window.pageYOffset,document.documentElement.scrollTop,document.body.scrollTop),l=Math.max(document.documentElement.scrollHeight,document.body.scrollHeight),n=window.innerHeight+a;for(let e=0;e<t.length;e++){const r=t[e],s=t[e+1],i=0===e&&0===a||a>=r.parentElement.offsetTop+10&&(!s||a<s.parentElement.offsetTop-10),o=decodeURIComponent(this.$route.hash);if(i&&o!==decodeURIComponent(r.hash)){const a=r;if(n===l)for(let a=e+1;a<t.length;a++)if(o===decodeURIComponent(t[a].hash))return;return this.$vuepress.$set("disableScrollBehavior",!0),void this.$router.replace(decodeURIComponent(a.hash),()=>{this.$nextTick(()=>{this.$vuepress.$set("disableScrollBehavior",!1)})})}}}},beforeDestroy(){window.removeEventListener("scroll",this.onScroll)}},Ai=a(27),xi=a.n(Ai),_i={mounted(){xi.a.configure({showSpinner:!1}),this.$router.beforeEach((e,t,a)=>{e.path===t.path||Ja.component(e.name)||xi.a.start(),a()}),this.$router.afterEach(()=>{xi.a.done(),this.isSidebarOpen=!1})}};a(239),a(240);class Si{constructor(){this.containerEl=document.getElementById("message-container"),this.containerEl||(this.containerEl=document.createElement("div"),this.containerEl.id="message-container",document.body.appendChild(this.containerEl))}show({text:e="",duration:t=3e3}){let a=document.createElement("div");a.className="message move-in",a.innerHTML=`\n <i style="fill: #06a35a;font-size: 14px;display:inline-flex;align-items: center;">\n <svg style="fill: #06a35a;font-size: 14px;" t="1572421810237" viewBox="0 0 1024 1024" version="1.1" xmlns="http://www.w3.org/2000/svg" p-id="2323" width="16" height="16"><path d="M822.811993 824.617989c-83.075838 81.99224-188.546032 124.613757-316.049383 127.86455-122.085362-3.250794-223.943563-45.87231-305.935802-127.86455s-124.613757-184.21164-127.86455-305.935802c3.250794-127.503351 45.87231-232.973545 127.86455-316.049383 81.99224-83.075838 184.21164-126.058554 305.935802-129.309347 127.503351 3.250794 232.973545 46.23351 316.049383 129.309347 83.075838 83.075838 126.058554 188.546032 129.309347 316.049383C949.231746 640.406349 905.887831 742.62575 822.811993 824.617989zM432.716755 684.111464c3.973192 3.973192 8.307584 5.779189 13.364374 6.140388 5.05679 0.361199 9.752381-1.444797 13.364374-5.417989l292.571429-287.514638c3.973192-3.973192 5.779189-8.307584 5.779189-13.364374 0-5.05679-1.805996-9.752381-5.779189-13.364374l1.805996 1.805996c-3.973192-3.973192-8.668783-5.779189-14.086772-6.140388-5.417989-0.361199-10.47478 1.444797-14.809171 5.417989l-264.397884 220.33157c-3.973192 3.250794-8.668783 4.695591-14.447972 4.695591-5.779189 0-10.835979-1.444797-15.53157-3.973192l-94.273016-72.962257c-4.334392-3.250794-9.391182-4.334392-14.447972-3.973192s-9.391182 3.250794-12.641975 7.585185l-2.889594 3.973192c-3.250794 4.334392-4.334392 9.391182-3.973192 14.809171 0.722399 5.417989 2.528395 10.11358 5.779189 14.086772L432.716755 684.111464z" p-id="2324"></path></svg>\n </i>\n <div class="text">${e}</div>\n `,this.containerEl.appendChild(a),t>0&&setTimeout(()=>{this.close(a)},t)}close(e){e.className=e.className.replace("move-in",""),e.className+="move-out",e.addEventListener("animationend",()=>{e.remove()})}}var ki={mounted(){!!/Android|webOS|iPhone|iPad|iPod|BlackBerry|IEMobile|Opera Mini/i.test(navigator.userAgent)||this.updateCopy()},updated(){!!/Android|webOS|iPhone|iPad|iPod|BlackBerry|IEMobile|Opera Mini/i.test(navigator.userAgent)||this.updateCopy()},methods:{updateCopy(){setTimeout(()=>{(['div[class*="language-"] pre','div[class*="aside-code"] aside']instanceof Array||Array.isArray(['div[class*="language-"] pre','div[class*="aside-code"] aside']))&&['div[class*="language-"] pre','div[class*="aside-code"] aside'].forEach(e=>{document.querySelectorAll(e).forEach(this.generateCopyButton)})},1e3)},generateCopyButton(e){if(e.classList.contains("codecopy-enabled"))return;const t=document.createElement("i");t.className="code-copy",t.innerHTML='<svg style="color:#aaa;font-size:14px" t="1572422231464" class="icon" viewBox="0 0 1024 1024" version="1.1" xmlns="http://www.w3.org/2000/svg" p-id="3201" width="14" height="14"><path d="M866.461538 39.384615H354.461538c-43.323077 0-78.769231 35.446154-78.76923 78.769231v39.384616h472.615384c43.323077 0 78.769231 35.446154 78.769231 78.76923v551.384616h39.384615c43.323077 0 78.769231-35.446154 78.769231-78.769231V118.153846c0-43.323077-35.446154-78.769231-78.769231-78.769231z m-118.153846 275.692308c0-43.323077-35.446154-78.769231-78.76923-78.769231H157.538462c-43.323077 0-78.769231 35.446154-78.769231 78.769231v590.769231c0 43.323077 35.446154 78.769231 78.769231 78.769231h512c43.323077 0 78.769231-35.446154 78.76923-78.769231V315.076923z m-354.461538 137.846154c0 11.815385-7.876923 19.692308-19.692308 19.692308h-157.538461c-11.815385 0-19.692308-7.876923-19.692308-19.692308v-39.384615c0-11.815385 7.876923-19.692308 19.692308-19.692308h157.538461c11.815385 0 19.692308 7.876923 19.692308 19.692308v39.384615z m157.538461 315.076923c0 11.815385-7.876923 19.692308-19.692307 19.692308H216.615385c-11.815385 0-19.692308-7.876923-19.692308-19.692308v-39.384615c0-11.815385 7.876923-19.692308 19.692308-19.692308h315.076923c11.815385 0 19.692308 7.876923 19.692307 19.692308v39.384615z m78.769231-157.538462c0 11.815385-7.876923 19.692308-19.692308 19.692308H216.615385c-11.815385 0-19.692308-7.876923-19.692308-19.692308v-39.384615c0-11.815385 7.876923-19.692308 19.692308-19.692308h393.846153c11.815385 0 19.692308 7.876923 19.692308 19.692308v39.384615z" p-id="3202"></path></svg>',t.title="Copy to clipboard",t.addEventListener("click",()=>{this.copyToClipboard(e.innerText)}),e.appendChild(t),e.classList.add("codecopy-enabled")},copyToClipboard(e){const t=document.createElement("textarea");t.value=e,t.setAttribute("readonly",""),t.style.position="absolute",t.style.left="-9999px",document.body.appendChild(t);const a=document.getSelection().rangeCount>0&&document.getSelection().getRangeAt(0);t.select(),document.execCommand("copy");(new Si).show({text:"复制成功",duration:1e3}),document.body.removeChild(t),a&&(document.getSelection().removeAllRanges(),document.getSelection().addRange(a))}}};!function(e,t){void 0===t&&(t={});var a=t.insertAt;if(e&&"undefined"!=typeof document){var l=document.head||document.getElementsByTagName("head")[0],n=document.createElement("style");n.type="text/css","top"===a&&l.firstChild?l.insertBefore(n,l.firstChild):l.appendChild(n),n.styleSheet?n.styleSheet.cssText=e:n.appendChild(document.createTextNode(e))}}("@media (max-width: 1000px) {\n .vuepress-plugin-demo-block__h_code {\n display: none;\n }\n .vuepress-plugin-demo-block__app {\n margin-left: auto !important;\n margin-right: auto !important;\n }\n}\n.vuepress-plugin-demo-block__wrapper {\n margin-top: 10px;\n border: 1px solid #ebebeb;\n border-radius: 4px;\n transition: all 0.2s;\n}\n.vuepress-plugin-demo-block__wrapper.vuepress-plugin-demo-block__horizontal .vuepress-plugin-demo-block__display {\n height: 400px;\n display: flex;\n}\n.vuepress-plugin-demo-block__wrapper.vuepress-plugin-demo-block__horizontal .vuepress-plugin-demo-block__display .vuepress-plugin-demo-block__app {\n width: 300px;\n border: 1px solid #ebebeb;\n box-shadow: 1px 1px 3px #ebebeb;\n margin-right: 5px;\n overflow: auto;\n}\n.vuepress-plugin-demo-block__wrapper.vuepress-plugin-demo-block__horizontal .vuepress-plugin-demo-block__display .vuepress-plugin-demo-block__h_code {\n flex: 1;\n overflow: auto;\n height: 100%;\n}\n.vuepress-plugin-demo-block__wrapper.vuepress-plugin-demo-block__horizontal .vuepress-plugin-demo-block__display .vuepress-plugin-demo-block__h_code > pre {\n overflow: visible;\n}\n.vuepress-plugin-demo-block__wrapper .vuepress-plugin-demo-block__display {\n max-height: 400px;\n overflow: auto;\n}\n.vuepress-plugin-demo-block__wrapper div {\n box-sizing: border-box;\n}\n.vuepress-plugin-demo-block__wrapper:hover {\n box-shadow: 0 0 11px rgba(33, 33, 33, 0.2);\n}\n.vuepress-plugin-demo-block__wrapper .vuepress-plugin-demo-block__code {\n overflow: hidden;\n height: 0;\n padding: 0 !important;\n background-color: #282c34;\n border-radius: 0 !important;\n transition: height 0.5s;\n}\n.vuepress-plugin-demo-block__wrapper .vuepress-plugin-demo-block__code pre {\n margin: 0 !important;\n}\n.vuepress-plugin-demo-block__wrapper .vuepress-plugin-demo-block__display {\n padding: 20px;\n border-bottom: 1px solid #ebebeb;\n}\n.vuepress-plugin-demo-block__wrapper .vuepress-plugin-demo-block__footer {\n position: relative;\n text-align: center;\n}\n.vuepress-plugin-demo-block__wrapper .vuepress-plugin-demo-block__footer.vuepress-plugin-demo-block__show-link .vuepress-plugin-demo-block__jsfiddle,\n.vuepress-plugin-demo-block__wrapper .vuepress-plugin-demo-block__footer.vuepress-plugin-demo-block__show-link .vuepress-plugin-demo-block__codepen {\n opacity: 1;\n}\n.vuepress-plugin-demo-block__wrapper .vuepress-plugin-demo-block__footer.vuepress-plugin-demo-block__show-link .vuepress-plugin-demo-block__expand::before {\n border-top: none;\n border-right: 6px solid transparent;\n border-bottom: 6px solid #ccc;\n border-left: 6px solid transparent;\n}\n.vuepress-plugin-demo-block__wrapper .vuepress-plugin-demo-block__footer:hover .vuepress-plugin-demo-block__jsfiddle,\n.vuepress-plugin-demo-block__wrapper .vuepress-plugin-demo-block__footer:hover .vuepress-plugin-demo-block__codepen,\n.vuepress-plugin-demo-block__wrapper .vuepress-plugin-demo-block__footer:hover .vuepress-plugin-demo-block__expand span,\n.vuepress-plugin-demo-block__wrapper .vuepress-plugin-demo-block__footer:hover .vuepress-plugin-demo-block__expand {\n opacity: 1;\n}\n.vuepress-plugin-demo-block__wrapper .vuepress-plugin-demo-block__footer:hover .vuepress-plugin-demo-block__expand::before {\n border-top-color: #3eaf7c !important;\n border-bottom-color: #3eaf7c !important;\n}\n.vuepress-plugin-demo-block__wrapper .vuepress-plugin-demo-block__footer:hover svg {\n fill: #3eaf7c !important;\n}\n.vuepress-plugin-demo-block__wrapper .vuepress-plugin-demo-block__footer .vuepress-plugin-demo-block__expand-text {\n transition: all 0.5s;\n opacity: 0;\n}\n.vuepress-plugin-demo-block__wrapper .vuepress-plugin-demo-block__footer form:nth-last-child(2) {\n right: 50px;\n}\n.vuepress-plugin-demo-block__wrapper .vuepress-plugin-demo-block__footer form:last-child {\n right: 10px;\n}\n.vuepress-plugin-demo-block__wrapper .vuepress-plugin-demo-block__footer .vuepress-plugin-demo-block__button {\n border-color: transparent;\n background-color: transparent;\n font-size: 14px;\n color: #3eaf7c;\n cursor: pointer;\n outline: none;\n margin: 0;\n width: 46px;\n position: relative;\n}\n.vuepress-plugin-demo-block__wrapper .vuepress-plugin-demo-block__footer .vuepress-plugin-demo-block__button:hover::before {\n content: attr(data-tip);\n white-space: nowrap;\n position: absolute;\n top: -30px;\n left: 50%;\n color: #eee;\n line-height: 1;\n z-index: 1000;\n border-radius: 4px;\n padding: 6px;\n -webkit-transform: translateX(-50%);\n transform: translateX(-50%);\n background-color: rgba(0, 0, 0, 0.8);\n}\n.vuepress-plugin-demo-block__wrapper .vuepress-plugin-demo-block__footer .vuepress-plugin-demo-block__button:hover::after {\n content: '' !important;\n display: block;\n position: absolute;\n left: 50%;\n top: -5px;\n -webkit-transform: translateX(-50%);\n transform: translateX(-50%);\n border: 5px solid transparent;\n border-top-color: rgba(0, 0, 0, 0.8);\n}\n.vuepress-plugin-demo-block__wrapper .vuepress-plugin-demo-block__footer .vuepress-plugin-demo-block__button svg {\n width: 34px;\n height: 20px;\n fill: #ccc;\n}\n.vuepress-plugin-demo-block__wrapper .vuepress-plugin-demo-block__footer .vuepress-plugin-demo-block__jsfiddle,\n.vuepress-plugin-demo-block__wrapper .vuepress-plugin-demo-block__footer .vuepress-plugin-demo-block__codepen {\n position: absolute;\n top: 10px;\n transition: all 0.5s;\n}\n.vuepress-plugin-demo-block__wrapper .vuepress-plugin-demo-block__footer .vuepress-plugin-demo-block__expand {\n position: relative;\n width: 100px;\n height: 40px;\n margin: 0;\n color: #3eaf7c;\n font-size: 14px;\n background-color: transparent;\n border-color: transparent;\n outline: none;\n transition: all 0.5s;\n cursor: pointer;\n}\n.vuepress-plugin-demo-block__wrapper .vuepress-plugin-demo-block__footer .vuepress-plugin-demo-block__expand::before {\n content: \"\";\n position: absolute;\n top: 50%;\n left: 50%;\n width: 0;\n height: 0;\n border-top: 6px solid #ccc;\n border-right: 6px solid transparent;\n border-left: 6px solid transparent;\n -webkit-transform: translate(-50%, -50%);\n transform: translate(-50%, -50%);\n}\n");var Ti={jsLib:[],cssLib:[],jsfiddle:!0,codepen:!0,codepenLayout:"left",codepenJsProcessor:"babel",codepenEditors:"101",horizontal:!1,vue:"https://cdn.jsdelivr.net/npm/vue/dist/vue.min.js",react:"https://cdn.jsdelivr.net/npm/react/umd/react.production.min.js",reactDOM:"https://cdn.jsdelivr.net/npm/react-dom/umd/react-dom.production.min.js"},wi={},Ci=function(e){return'<div id="app">\n'.concat(e,"\n</div>")},Pi=function(e){return window.$VUEPRESS_DEMO_BLOCK&&void 0!==window.$VUEPRESS_DEMO_BLOCK[e]?window.$VUEPRESS_DEMO_BLOCK[e]:Ti[e]},ji=function e(t,a,l){var n=document.createElement(t);return a&&Object.keys(a).forEach((function(e){if(e.indexOf("data"))n[e]=a[e];else{var t=e.replace("data","");n.dataset[t]=a[e]}})),l&&l.forEach((function(t){var a=t.tag,l=t.attrs,r=t.children;n.appendChild(e(a,l,r))})),n},Di=function(e,t,a){var l,n=(l=e.querySelectorAll(".".concat(t)),Array.prototype.slice.call(l));return 1!==n.length||a?n:n[0]},Li=function(e,t){var a,l,n=e.match(/<style>([\s\S]+)<\/style>/),r=e.match(/<template>([\s\S]+)<\/template>/),s=e.match(/<script>([\s\S]+)<\/script>/),i={css:n&&n[1].replace(/^\n|\n$/g,""),html:r&&r[1].replace(/^\n|\n$/g,""),js:s&&s[1].replace(/^\n|\n$/g,""),jsLib:t.jsLib||[],cssLib:t.cssLib||[]};i.htmlTpl=Ci(i.html),i.jsTpl=(a=i.js,l=a.replace(/export\s+default\s*?\{\n*/,"").replace(/\n*\}\s*$/,"").trim(),"new Vue({\n el: '#app',\n ".concat(l,"\n})")),i.script=function(e,t){var a=e.split(/export\s+default/),l="(function() {".concat(a[0]," ; return ").concat(a[1],"})()"),n=window.Babel?window.Babel.transform(l,{presets:["es2015"]}).code:l,r=[eval][0](n);return r.template=t,r}(i.js,i.html);var o=Pi("vue");return i.jsLib.unshift(o),i},Ui=function(e,t){var a,l=e.match(/<style>([\s\S]+)<\/style>/),n=e.match(/<html>([\s\S]+)<\/html>/),r=e.match(/<script>([\s\S]+)<\/script>/),s={css:l&&l[1].replace(/^\n|\n$/g,""),html:n&&n[1].replace(/^\n|\n$/g,""),js:r&&r[1].replace(/^\n|\n$/g,""),jsLib:t.jsLib||[],cssLib:t.cssLib||[]};return s.htmlTpl=s.html,s.jsTpl=s.js,s.script=(a=s.js,window.Babel?window.Babel.transform(a,{presets:["es2015"]}).code:a),s},Oi=function(e){return e=e.replace("export default ","").replace(/App\.__style__(\s*)=(\s*)`([\s\S]*)?`/,""),e+='ReactDOM.render(React.createElement(App), document.getElementById("app"))'};function Mi(){var e=Di(document,"vuepress-plugin-demo-block__wrapper",!0);e.length?e.forEach((function(e){if("true"!==e.dataset.created){e.style.display="block";var t=Di(e,"vuepress-plugin-demo-block__code"),a=Di(e,"vuepress-plugin-demo-block__display"),l=Di(e,"vuepress-plugin-demo-block__footer"),n=Di(a,"vuepress-plugin-demo-block__app"),r=decodeURIComponent(e.dataset.code),s=decodeURIComponent(e.dataset.config),i=decodeURIComponent(e.dataset.type);s=s?JSON.parse(s):{};var o=t.querySelector("div").clientHeight,c="react"===i?function(e,t){var a=(0,window.Babel.transform)(e,{presets:["es2015","react"]}).code,l="(function(exports){var module={};module.exports=exports;".concat(a,";return module.exports.__esModule?module.exports.default:module.exports;})({})"),n=new Function("return ".concat(l))(),r={js:n,css:n.__style__||"",jsLib:t.jsLib||[],cssLib:t.cssLib||[],jsTpl:Oi(e),htmlTpl:Ci("")},s=Pi("react"),i=Pi("reactDOM");return r.jsLib.unshift(s,i),r}(r,s):"vanilla"===i?Ui(r,s):Li(r,s),p=ji("button",{className:"".concat("vuepress-plugin-demo-block__expand")});if(l.appendChild(p),p.addEventListener("click",Fi.bind(null,p,o,t,l)),Pi("jsfiddle")&&l.appendChild(function(e){var t=e.css,a=e.htmlTpl,l=e.jsTpl,n=e.jsLib,r=e.cssLib,s=n.concat(r).concat(Pi("cssLib")).concat(Pi("jsLib")).join(",");return ji("form",{className:"vuepress-plugin-demo-block__jsfiddle",target:"_blank",action:"https://jsfiddle.net/api/post/library/pure/",method:"post"},[{tag:"input",attrs:{type:"hidden",name:"css",value:t}},{tag:"input",attrs:{type:"hidden",name:"html",value:a}},{tag:"input",attrs:{type:"hidden",name:"js",value:l}},{tag:"input",attrs:{type:"hidden",name:"panel_js",value:3}},{tag:"input",attrs:{type:"hidden",name:"wrap",value:1}},{tag:"input",attrs:{type:"hidden",name:"resources",value:s}},{tag:"button",attrs:{type:"submit",className:"vuepress-plugin-demo-block__button",innerHTML:'<?xml version="1.0" standalone="no"?><!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd"><svg t="1547088289967" class="icon" style="" viewBox="0 0 1170 1024" version="1.1" xmlns="http://www.w3.org/2000/svg" p-id="1952" xmlns:xlink="http://www.w3.org/1999/xlink" width="228.515625" height="200"><defs><style type="text/css"></style></defs><path d="M1028.571429 441.142857q63.428571 26.285714 102.571428 83.142857T1170.285714 650.857143q0 93.714286-67.428571 160.285714T940 877.714286q-2.285714 0-6.571429-0.285715t-6-0.285714H232q-97.142857-5.714286-164.571429-71.714286T0 645.142857q0-62.857143 31.428571-116t84-84q-6.857143-22.285714-6.857142-46.857143 0-65.714286 46.857142-112t113.714286-46.285714q54.285714 0 98.285714 33.142857 42.857143-88 127.142858-141.714286t186.571428-53.714285q94.857143 0 174.857143 46T982.571429 248.571429t46.571428 172q0 3.428571-0.285714 10.285714t-0.285714 10.285714zM267.428571 593.142857q0 69.714286 48 110.285714t118.857143 40.571429q78.285714 0 137.142857-56.571429-9.142857-11.428571-27.142857-32.285714T519.428571 626.285714q-38.285714 37.142857-82.285714 37.142857-31.428571 0-53.428571-19.142857T361.714286 594.285714q0-30.285714 22-49.714285t52.285714-19.428572q25.142857 0 48.285714 12t41.714286 31.428572 37.142857 42.857142 39.428572 46.857143 44 42.857143 55.428571 31.428572 69.428571 12q69.142857 0 116.857143-40.857143T936 594.857143q0-69.142857-48-109.714286t-118.285714-40.571428q-81.714286 0-137.714286 55.428571l53.142857 61.714286q37.714286-36.571429 81.142857-36.571429 29.714286 0 52.571429 18.857143t22.857143 48q0 32.571429-21.142857 52.285714t-53.714286 19.714286q-24.571429 0-47.142857-12t-41.142857-31.428571-37.428572-42.857143-39.714286-46.857143-44.285714-42.857143-55.142857-31.428571T434.285714 444.571429q-69.714286 0-118.285714 40.285714T267.428571 593.142857z" p-id="1953"></path></svg>',datatip:"JSFiddle"}}])}(c)),Pi("codepen")&&l.appendChild(function(e){var t=e.css,a=e.htmlTpl,l=e.jsTpl,n=e.jsLib,r=e.cssLib,s=JSON.stringify({css:t,html:a,js:l,js_external:n.concat(Pi("jsLib")).join(";"),css_external:r.concat(Pi("cssLib")).join(";"),layout:Pi("codepenLayout"),js_pre_processor:Pi("codepenJsProcessor"),editors:Pi("codepenEditors")});return ji("form",{className:"vuepress-plugin-demo-block__codepen",target:"_blank",action:"https://codepen.io/pen/define",method:"post"},[{tag:"input",attrs:{type:"hidden",name:"data",value:s}},{tag:"button",attrs:{type:"submit",innerHTML:'<?xml version="1.0" standalone="no"?><!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd"><svg t="1547088271207" class="icon" style="" viewBox="0 0 1024 1024" version="1.1" xmlns="http://www.w3.org/2000/svg" p-id="1737" xmlns:xlink="http://www.w3.org/1999/xlink" width="200" height="200"><defs><style type="text/css"></style></defs><path d="M123.428571 668l344.571429 229.714286v-205.142857L277.142857 565.142857z m-35.428571-82.285714l110.285714-73.714286-110.285714-73.714286v147.428572z m468 312l344.571429-229.714286-153.714286-102.857143-190.857143 127.428572v205.142857z m-44-281.714286l155.428571-104-155.428571-104-155.428571 104zM277.142857 458.857143l190.857143-127.428572V126.285714L123.428571 356z m548.571429 53.142857l110.285714 73.714286V438.285714z m-78.857143-53.142857l153.714286-102.857143-344.571429-229.714286v205.142857z m277.142857-102.857143v312q0 23.428571-19.428571 36.571429l-468 312q-12 7.428571-24.571429 7.428571t-24.571429-7.428571L19.428571 704.571429q-19.428571-13.142857-19.428571-36.571429V356q0-23.428571 19.428571-36.571429L487.428571 7.428571q12-7.428571 24.571429-7.428571t24.571429 7.428571l468 312q19.428571 13.142857 19.428571 36.571429z" p-id="1738"></path></svg>',className:"vuepress-plugin-demo-block__button",datatip:"Codepen"}}])}(c)),void 0!==s.horizontal?s.horizontal:Pi("horizontal")){e.classList.add("vuepress-plugin-demo-block__horizontal");var u=t.firstChild.cloneNode(!0);u.classList.add("vuepress-plugin-demo-block__h_code"),a.appendChild(u)}if(c.css&&function(e){if(!wi[e]){var t=ji("style",{innerHTML:e});document.body.appendChild(t),wi[e]=!0}}(c.css),"react"===i)ReactDOM.render(React.createElement(c.js),n);else if("vue"===i){var d=(new(Vue.extend(c.script))).$mount();n.appendChild(d.$el)}else"vanilla"===i&&(n.innerHTML=c.html,new Function("return (function(){".concat(c.script,"})()"))());e.dataset.created="true"}})):setTimeout((function(e){Mi()}),300)}function Fi(e,t,a,l){var n="1"!==e.dataset.isExpand;a.style.height=n?"".concat(t,"px"):0,n?l.classList.add("vuepress-plugin-demo-block__show-link"):l.classList.remove("vuepress-plugin-demo-block__show-link"),e.dataset.isExpand=n?"1":"0"}var Ri={mounted:function(){window.$VUEPRESS_DEMO_BLOCK={jsfiddle:!1,codepen:!0,horizontal:!1},Mi()},updated:function(){Mi()}},Gi="auto",$i="zoom-in",Hi="zoom-out",Ii="grab",Ni="move";function Vi(e,t,a){var l=!(arguments.length>3&&void 0!==arguments[3])||arguments[3],n={passive:!1};l?e.addEventListener(t,a,n):e.removeEventListener(t,a,n)}function Ji(e,t){if(e){var a=new Image;a.onload=function(){t&&t(a)},a.src=e}}function Zi(e){return e.dataset.original?e.dataset.original:"A"===e.parentNode.tagName?e.parentNode.getAttribute("href"):null}function qi(e,t,a){!function(e){var t=zi,a=Yi;if(e.transition){var l=e.transition;delete e.transition,e[t]=l}if(e.transform){var n=e.transform;delete e.transform,e[a]=n}}(t);var l=e.style,n={};for(var r in t)a&&(n[r]=l[r]||""),l[r]=t[r];return n}var zi="transition",Yi="transform",Xi="transform",Wi="transitionend";var Ki=function(){},Qi={enableGrab:!0,preloadImage:!1,closeOnWindowResize:!0,transitionDuration:.4,transitionTimingFunction:"cubic-bezier(0.4, 0, 0, 1)",bgColor:"rgb(255, 255, 255)",bgOpacity:1,scaleBase:1,scaleExtra:.5,scrollThreshold:40,zIndex:998,customSize:null,onOpen:Ki,onClose:Ki,onGrab:Ki,onMove:Ki,onRelease:Ki,onBeforeOpen:Ki,onBeforeClose:Ki,onBeforeGrab:Ki,onBeforeRelease:Ki,onImageLoading:Ki,onImageLoaded:Ki},eo={init:function(e){var t,a;t=this,a=e,Object.getOwnPropertyNames(Object.getPrototypeOf(t)).forEach((function(e){t[e]=t[e].bind(a)}))},click:function(e){if(e.preventDefault(),ao(e))return window.open(this.target.srcOriginal||e.currentTarget.src,"_blank");this.shown?this.released?this.close():this.release():this.open(e.currentTarget)},scroll:function(){var e=document.documentElement||document.body.parentNode||document.body,t=window.pageXOffset||e.scrollLeft,a=window.pageYOffset||e.scrollTop;null===this.lastScrollPosition&&(this.lastScrollPosition={x:t,y:a});var l=this.lastScrollPosition.x-t,n=this.lastScrollPosition.y-a,r=this.options.scrollThreshold;(Math.abs(n)>=r||Math.abs(l)>=r)&&(this.lastScrollPosition=null,this.close())},keydown:function(e){(function(e){return"Escape"===(e.key||e.code)||27===e.keyCode})(e)&&(this.released?this.close():this.release(this.close))},mousedown:function(e){if(to(e)&&!ao(e)){e.preventDefault();var t=e.clientX,a=e.clientY;this.pressTimer=setTimeout(function(){this.grab(t,a)}.bind(this),200)}},mousemove:function(e){this.released||this.move(e.clientX,e.clientY)},mouseup:function(e){to(e)&&!ao(e)&&(clearTimeout(this.pressTimer),this.released?this.close():this.release())},touchstart:function(e){e.preventDefault();var t=e.touches[0],a=t.clientX,l=t.clientY;this.pressTimer=setTimeout(function(){this.grab(a,l)}.bind(this),200)},touchmove:function(e){if(!this.released){var t=e.touches[0],a=t.clientX,l=t.clientY;this.move(a,l)}},touchend:function(e){(function(e){e.targetTouches.length})(e)||(clearTimeout(this.pressTimer),this.released?this.close():this.release())},clickOverlay:function(){this.close()},resizeWindow:function(){this.close()}};function to(e){return 0===e.button}function ao(e){return e.metaKey||e.ctrlKey}var lo={init:function(e){this.el=document.createElement("div"),this.instance=e,this.parent=document.body,qi(this.el,{position:"fixed",top:0,left:0,right:0,bottom:0,opacity:0}),this.updateStyle(e.options),Vi(this.el,"click",e.handler.clickOverlay.bind(e))},updateStyle:function(e){qi(this.el,{zIndex:e.zIndex,backgroundColor:e.bgColor,transition:"opacity\n "+e.transitionDuration+"s\n "+e.transitionTimingFunction})},insert:function(){this.parent.appendChild(this.el)},remove:function(){this.parent.removeChild(this.el)},fadeIn:function(){this.el.offsetWidth,this.el.style.opacity=this.instance.options.bgOpacity},fadeOut:function(){this.el.style.opacity=0}},no="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},ro=function(){function e(e,t){for(var a=0;a<t.length;a++){var l=t[a];l.enumerable=l.enumerable||!1,l.configurable=!0,"value"in l&&(l.writable=!0),Object.defineProperty(e,l.key,l)}}return function(t,a,l){return a&&e(t.prototype,a),l&&e(t,l),t}}(),so=Object.assign||function(e){for(var t=1;t<arguments.length;t++){var a=arguments[t];for(var l in a)Object.prototype.hasOwnProperty.call(a,l)&&(e[l]=a[l])}return e},io={init:function(e,t){this.el=e,this.instance=t,this.srcThumbnail=this.el.getAttribute("src"),this.srcset=this.el.getAttribute("srcset"),this.srcOriginal=Zi(this.el),this.rect=this.el.getBoundingClientRect(),this.translate=null,this.scale=null,this.styleOpen=null,this.styleClose=null},zoomIn:function(){var e=this.instance.options,t=e.zIndex,a=e.enableGrab,l=e.transitionDuration,n=e.transitionTimingFunction;this.translate=this.calculateTranslate(),this.scale=this.calculateScale(),this.styleOpen={position:"relative",zIndex:t+1,cursor:a?Ii:Hi,transition:Xi+"\n "+l+"s\n "+n,transform:"translate3d("+this.translate.x+"px, "+this.translate.y+"px, 0px)\n scale("+this.scale.x+","+this.scale.y+")",height:this.rect.height+"px",width:this.rect.width+"px"},this.el.offsetWidth,this.styleClose=qi(this.el,this.styleOpen,!0)},zoomOut:function(){this.el.offsetWidth,qi(this.el,{transform:"none"})},grab:function(e,t,a){var l=oo(),n=l.x-e,r=l.y-t;qi(this.el,{cursor:Ni,transform:"translate3d(\n "+(this.translate.x+n)+"px, "+(this.translate.y+r)+"px, 0px)\n scale("+(this.scale.x+a)+","+(this.scale.y+a)+")"})},move:function(e,t,a){var l=oo(),n=l.x-e,r=l.y-t;qi(this.el,{transition:Xi,transform:"translate3d(\n "+(this.translate.x+n)+"px, "+(this.translate.y+r)+"px, 0px)\n scale("+(this.scale.x+a)+","+(this.scale.y+a)+")"})},restoreCloseStyle:function(){qi(this.el,this.styleClose)},restoreOpenStyle:function(){qi(this.el,this.styleOpen)},upgradeSource:function(){if(this.srcOriginal){var e=this.el.parentNode;this.srcset&&this.el.removeAttribute("srcset");var t=this.el.cloneNode(!1);t.setAttribute("src",this.srcOriginal),t.style.position="fixed",t.style.visibility="hidden",e.appendChild(t),setTimeout(function(){this.el.setAttribute("src",this.srcOriginal),e.removeChild(t)}.bind(this),50)}},downgradeSource:function(){this.srcOriginal&&(this.srcset&&this.el.setAttribute("srcset",this.srcset),this.el.setAttribute("src",this.srcThumbnail))},calculateTranslate:function(){var e=oo(),t=this.rect.left+this.rect.width/2,a=this.rect.top+this.rect.height/2;return{x:e.x-t,y:e.y-a}},calculateScale:function(){var e=this.el.dataset,t=e.zoomingHeight,a=e.zoomingWidth,l=this.instance.options,n=l.customSize,r=l.scaleBase;if(!n&&t&&a)return{x:a/this.rect.width,y:t/this.rect.height};if(n&&"object"===(void 0===n?"undefined":no(n)))return{x:n.width/this.rect.width,y:n.height/this.rect.height};var s=this.rect.width/2,i=this.rect.height/2,o=oo(),c={x:o.x-s,y:o.y-i},p=c.x/s,u=c.y/i,d=r+Math.min(p,u);if(n&&"string"==typeof n){var h=a||this.el.naturalWidth,g=t||this.el.naturalHeight,v=parseFloat(n)*h/(100*this.rect.width),f=parseFloat(n)*g/(100*this.rect.height);if(d>v||d>f)return{x:v,y:f}}return{x:d,y:d}}};function oo(){var e=document.documentElement;return{x:Math.min(e.clientWidth,window.innerWidth)/2,y:Math.min(e.clientHeight,window.innerHeight)/2}}function co(e,t,a){["mousedown","mousemove","mouseup","touchstart","touchmove","touchend"].forEach((function(l){Vi(e,l,t[l],a)}))}var po=function(){function e(t){!function(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}(this,e),this.target=Object.create(io),this.overlay=Object.create(lo),this.handler=Object.create(eo),this.body=document.body,this.shown=!1,this.lock=!1,this.released=!0,this.lastScrollPosition=null,this.pressTimer=null,this.options=so({},Qi,t),this.overlay.init(this),this.handler.init(this)}return ro(e,[{key:"listen",value:function(e){if("string"==typeof e)for(var t=document.querySelectorAll(e),a=t.length;a--;)this.listen(t[a]);else"IMG"===e.tagName&&(e.style.cursor=$i,Vi(e,"click",this.handler.click),this.options.preloadImage&&Ji(Zi(e)));return this}},{key:"config",value:function(e){return e?(so(this.options,e),this.overlay.updateStyle(this.options),this):this.options}},{key:"open",value:function(e){var t=this,a=arguments.length>1&&void 0!==arguments[1]?arguments[1]:this.options.onOpen;if(!this.shown&&!this.lock){var l="string"==typeof e?document.querySelector(e):e;if("IMG"===l.tagName){if(this.options.onBeforeOpen(l),this.target.init(l,this),!this.options.preloadImage){var n=this.target.srcOriginal;null!=n&&(this.options.onImageLoading(l),Ji(n,this.options.onImageLoaded))}this.shown=!0,this.lock=!0,this.target.zoomIn(),this.overlay.insert(),this.overlay.fadeIn(),Vi(document,"scroll",this.handler.scroll),Vi(document,"keydown",this.handler.keydown),this.options.closeOnWindowResize&&Vi(window,"resize",this.handler.resizeWindow);var r=function e(){Vi(l,Wi,e,!1),t.lock=!1,t.target.upgradeSource(),t.options.enableGrab&&co(document,t.handler,!0),a(l)};return Vi(l,Wi,r),this}}}},{key:"close",value:function(){var e=this,t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:this.options.onClose;if(this.shown&&!this.lock){var a=this.target.el;this.options.onBeforeClose(a),this.lock=!0,this.body.style.cursor=Gi,this.overlay.fadeOut(),this.target.zoomOut(),Vi(document,"scroll",this.handler.scroll,!1),Vi(document,"keydown",this.handler.keydown,!1),this.options.closeOnWindowResize&&Vi(window,"resize",this.handler.resizeWindow,!1);var l=function l(){Vi(a,Wi,l,!1),e.shown=!1,e.lock=!1,e.target.downgradeSource(),e.options.enableGrab&&co(document,e.handler,!1),e.target.restoreCloseStyle(),e.overlay.remove(),t(a)};return Vi(a,Wi,l),this}}},{key:"grab",value:function(e,t){var a=arguments.length>2&&void 0!==arguments[2]?arguments[2]:this.options.scaleExtra,l=arguments.length>3&&void 0!==arguments[3]?arguments[3]:this.options.onGrab;if(this.shown&&!this.lock){var n=this.target.el;this.options.onBeforeGrab(n),this.released=!1,this.target.grab(e,t,a);var r=function e(){Vi(n,Wi,e,!1),l(n)};return Vi(n,Wi,r),this}}},{key:"move",value:function(e,t){var a=arguments.length>2&&void 0!==arguments[2]?arguments[2]:this.options.scaleExtra,l=arguments.length>3&&void 0!==arguments[3]?arguments[3]:this.options.onMove;if(this.shown&&!this.lock){this.released=!1,this.body.style.cursor=Ni,this.target.move(e,t,a);var n=this.target.el,r=function e(){Vi(n,Wi,e,!1),l(n)};return Vi(n,Wi,r),this}}},{key:"release",value:function(){var e=this,t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:this.options.onRelease;if(this.shown&&!this.lock){var a=this.target.el;this.options.onBeforeRelease(a),this.lock=!0,this.body.style.cursor=Gi,this.target.restoreOpenStyle();var l=function l(){Vi(a,Wi,l,!1),e.lock=!1,e.released=!0,t(a)};return Vi(a,Wi,l),this}}}]),e}();const uo=JSON.parse('{"bgColor":"rgba(0,0,0,0.6)"}'),ho=Number("500");class go{constructor(){this.instance=new po(uo)}update(e=".theme-vdoing-content img:not(.no-zoom)"){"undefined"!=typeof window&&this.instance.listen(e)}updateDelay(e=".theme-vdoing-content img:not(.no-zoom)",t=ho){setTimeout(()=>this.update(e),t)}}var vo=[vi,Bi,_i,ki,Ri,{watch:{"$page.path"(){void 0!==this.$vuepress.zooming&&this.$vuepress.zooming.updateDelay()}},mounted(){this.$vuepress.zooming=new go,this.$vuepress.zooming.updateDelay()}}],fo={name:"GlobalLayout",computed:{layout(){const e=this.getLayout();return pi("layout",e),Ja.component(e)}},methods:{getLayout(){if(this.$page.path){const e=this.$page.frontmatter.layout;return e&&(this.$vuepress.getLayoutAsyncComponent(e)||this.$vuepress.getVueComponent(e))?e:"Layout"}return"NotFound"}}},mo=a(3),bo=Object(mo.a)(fo,(function(){return(0,this._self._c)(this.layout,{tag:"component"})}),[],!1,null,null,null).exports;!function(e,t,a){switch(t){case"components":e[t]||(e[t]={}),Object.assign(e[t],a);break;case"mixins":e[t]||(e[t]=[]),e[t].push(...a);break;default:throw new Error("Unknown option name.")}}(bo,"mixins",vo);const Eo=[{name:"v-0673347d",path:"/web/",component:bo,beforeEnter:(e,t,a)=>{ci("Layout","v-0673347d").then(a)}},{path:"/web/index.html",redirect:"/web/"},{path:"/00.目录页/01.前端.html",redirect:"/web/"},{name:"v-4d3769a8",path:"/ui/",component:bo,beforeEnter:(e,t,a)=>{ci("Layout","v-4d3769a8").then(a)}},{path:"/ui/index.html",redirect:"/ui/"},{path:"/00.目录页/02.页面.html",redirect:"/ui/"},{name:"v-6d5c9d43",path:"/technology/",component:bo,beforeEnter:(e,t,a)=>{ci("Layout","v-6d5c9d43").then(a)}},{path:"/technology/index.html",redirect:"/technology/"},{path:"/00.目录页/03.技术.html",redirect:"/technology/"},{name:"v-4b655eaf",path:"/more/",component:bo,beforeEnter:(e,t,a)=>{ci("Layout","v-4b655eaf").then(a)}},{path:"/more/index.html",redirect:"/more/"},{path:"/00.目录页/04.更多.html",redirect:"/more/"},{name:"v-0670c8d3",path:"/pages/a61298/",component:bo,beforeEnter:(e,t,a)=>{ci("Layout","v-0670c8d3").then(a)}},{path:"/pages/a61298/index.html",redirect:"/pages/a61298/"},{path:"/01.前端/25.JavaScript文章/01.33个非常实用的JavaScript一行代码.html",redirect:"/pages/a61298/"},{name:"v-3e16426a",path:"/pages/8143cc480faf9a11/",component:bo,beforeEnter:(e,t,a)=>{ci("Layout","v-3e16426a").then(a)}},{path:"/pages/8143cc480faf9a11/index.html",redirect:"/pages/8143cc480faf9a11/"},{path:"/01.前端/25.JavaScript文章/02.new命令原理.html",redirect:"/pages/8143cc480faf9a11/"},{name:"v-c1e785ce",path:"/pages/b1af5cb8996363c5/",component:bo,beforeEnter:(e,t,a)=>{ci("Layout","v-c1e785ce").then(a)}},{path:"/pages/b1af5cb8996363c5/index.html",redirect:"/pages/b1af5cb8996363c5/"},{path:"/01.前端/25.JavaScript文章/03.ES5面向对象.html",redirect:"/pages/b1af5cb8996363c5/"},{name:"v-5c0d4395",path:"/pages/1f4123be6f45abcd/",component:bo,beforeEnter:(e,t,a)=>{ci("Layout","v-5c0d4395").then(a)}},{path:"/pages/1f4123be6f45abcd/index.html",redirect:"/pages/1f4123be6f45abcd/"},{path:"/01.前端/25.JavaScript文章/04.ES6面向对象.html",redirect:"/pages/1f4123be6f45abcd/"},{name:"v-39670695",path:"/pages/e808fba1fa8fbab2/",component:bo,beforeEnter:(e,t,a)=>{ci("Layout","v-39670695").then(a)}},{path:"/pages/e808fba1fa8fbab2/index.html",redirect:"/pages/e808fba1fa8fbab2/"},{path:"/01.前端/25.JavaScript文章/06.多种数组去重性能对比.html",redirect:"/pages/e808fba1fa8fbab2/"},{name:"v-07b6afc1",path:"/pages/fd4a16d56b83c1bc/",component:bo,beforeEnter:(e,t,a)=>{ci("Layout","v-07b6afc1").then(a)}},{path:"/pages/fd4a16d56b83c1bc/index.html",redirect:"/pages/fd4a16d56b83c1bc/"},{path:"/01.前端/25.JavaScript文章/100.比typeof运算符更准确的类型判断.html",redirect:"/pages/fd4a16d56b83c1bc/"},{name:"v-18dee076",path:"/pages/8481d1/",component:bo,beforeEnter:(e,t,a)=>{ci("Layout","v-18dee076").then(a)}},{path:"/pages/8481d1/index.html",redirect:"/pages/8481d1/"},{path:"/01.前端/25.JavaScript文章/1110.三级目录/00.四级文件.html",redirect:"/pages/8481d1/"},{name:"v-339a55f0",path:"/pages/40b4db2d38ba85f2/",component:bo,beforeEnter:(e,t,a)=>{ci("Layout","v-339a55f0").then(a)}},{path:"/pages/40b4db2d38ba85f2/index.html",redirect:"/pages/40b4db2d38ba85f2/"},{path:"/01.前端/25.JavaScript文章/50.js随机打乱数组.html",redirect:"/pages/40b4db2d38ba85f2/"},{name:"v-b6a4de44",path:"/pages/40f623be692cf8bc/",component:bo,beforeEnter:(e,t,a)=>{ci("Layout","v-b6a4de44").then(a)}},{path:"/pages/40f623be692cf8bc/index.html",redirect:"/pages/40f623be692cf8bc/"},{path:"/01.前端/25.JavaScript文章/60.判断是否为移动端浏览器.html",redirect:"/pages/40f623be692cf8bc/"},{name:"v-197df1cb",path:"/pages/f1acb712033ac8da/",component:bo,beforeEnter:(e,t,a)=>{ci("Layout","v-197df1cb").then(a)}},{path:"/pages/f1acb712033ac8da/index.html",redirect:"/pages/f1acb712033ac8da/"},{path:"/01.前端/25.JavaScript文章/70.将一维数组按指定长度转为二维数组.html",redirect:"/pages/f1acb712033ac8da/"},{name:"v-66343f5a",path:"/pages/0f6a0ac99b62ede5/",component:bo,beforeEnter:(e,t,a)=>{ci("Layout","v-66343f5a").then(a)}},{path:"/pages/0f6a0ac99b62ede5/index.html",redirect:"/pages/0f6a0ac99b62ede5/"},{path:"/01.前端/25.JavaScript文章/80.防抖与节流函数.html",redirect:"/pages/0f6a0ac99b62ede5/"},{name:"v-fe6d8e92",path:"/pages/7a91be2d502346ce/",component:bo,beforeEnter:(e,t,a)=>{ci("Layout","v-fe6d8e92").then(a)}},{path:"/pages/7a91be2d502346ce/index.html",redirect:"/pages/7a91be2d502346ce/"},{path:"/01.前端/25.JavaScript文章/90.JS获取和修改url参数.html",redirect:"/pages/7a91be2d502346ce/"},{name:"v-33c90cbc",path:"/note/javascript/",component:bo,beforeEnter:(e,t,a)=>{ci("Layout","v-33c90cbc").then(a)}},{path:"/note/javascript/index.html",redirect:"/note/javascript/"},{path:"/01.前端/40.学习笔记/00.《JavaScript教程》笔记.html",redirect:"/note/javascript/"},{name:"v-d2af8b28",path:"/note/js/",component:bo,beforeEnter:(e,t,a)=>{ci("Layout","v-d2af8b28").then(a)}},{path:"/note/js/index.html",redirect:"/note/js/"},{path:"/01.前端/40.学习笔记/05.《JavaScript高级程序设计》笔记.html",redirect:"/note/js/"},{name:"v-2a8a0e65",path:"/note/es6/",component:bo,beforeEnter:(e,t,a)=>{ci("Layout","v-2a8a0e65").then(a)}},{path:"/note/es6/index.html",redirect:"/note/es6/"},{path:"/01.前端/40.学习笔记/10.《ES6 教程》笔记.html",redirect:"/note/es6/"},{name:"v-314a49ac",path:"/note/vue/",component:bo,beforeEnter:(e,t,a)=>{ci("Layout","v-314a49ac").then(a)}},{path:"/note/vue/index.html",redirect:"/note/vue/"},{path:"/01.前端/40.学习笔记/20.《Vue》笔记.html",redirect:"/note/vue/"},{name:"v-1950e958",path:"/note/react/",component:bo,beforeEnter:(e,t,a)=>{ci("Layout","v-1950e958").then(a)}},{path:"/note/react/index.html",redirect:"/note/react/"},{path:"/01.前端/40.学习笔记/25.《React》笔记.html",redirect:"/note/react/"},{name:"v-383afc2c",path:"/note/typescript-axios/",component:bo,beforeEnter:(e,t,a)=>{ci("Layout","v-383afc2c").then(a)}},{path:"/note/typescript-axios/index.html",redirect:"/note/typescript-axios/"},{path:"/01.前端/40.学习笔记/30.《TypeScript 从零实现 axios》.html",redirect:"/note/typescript-axios/"},{name:"v-cd2e9a3e",path:"/note/git/",component:bo,beforeEnter:(e,t,a)=>{ci("Layout","v-cd2e9a3e").then(a)}},{path:"/note/git/index.html",redirect:"/note/git/"},{path:"/01.前端/40.学习笔记/33.《Git》学习笔记.html",redirect:"/note/git/"},{name:"v-2bc02ef8",path:"/pages/51afd6/",component:bo,beforeEnter:(e,t,a)=>{ci("Layout","v-2bc02ef8").then(a)}},{path:"/pages/51afd6/index.html",redirect:"/pages/51afd6/"},{path:"/01.前端/40.学习笔记/35.TypeScript笔记.html",redirect:"/pages/51afd6/"},{name:"v-b1ff1b00",path:"/note/wx-miniprogram/",component:bo,beforeEnter:(e,t,a)=>{ci("Layout","v-b1ff1b00").then(a)}},{path:"/note/wx-miniprogram/index.html",redirect:"/note/wx-miniprogram/"},{path:"/01.前端/40.学习笔记/40.小程序笔记.html",redirect:"/note/wx-miniprogram/"},{name:"v-652d413a",path:"/pages/4643cd/",component:bo,beforeEnter:(e,t,a)=>{ci("Layout","v-652d413a").then(a)}},{path:"/pages/4643cd/index.html",redirect:"/pages/4643cd/"},{path:"/01.前端/40.学习笔记/50.JS设计模式总结笔记.html",redirect:"/pages/4643cd/"},{name:"v-ad57a0e0",path:"/pages/8309a5b876fc95e3/",component:bo,beforeEnter:(e,t,a)=>{ci("Layout","v-ad57a0e0").then(a)}},{path:"/pages/8309a5b876fc95e3/index.html",redirect:"/pages/8309a5b876fc95e3/"},{path:"/02.页面/10.HTML/10.常用meta整理.html",redirect:"/pages/8309a5b876fc95e3/"},{name:"v-0eb36c0b",path:"/pages/c8f128/",component:bo,beforeEnter:(e,t,a)=>{ci("Layout","v-0eb36c0b").then(a)}},{path:"/pages/c8f128/index.html",redirect:"/pages/c8f128/"},{path:"/02.页面/20.CSS/00.CSS教程和技巧收藏.html",redirect:"/pages/c8f128/"},{name:"v-2e9c75fc",path:"/pages/0a83b083bdf257cb/",component:bo,beforeEnter:(e,t,a)=>{ci("Layout","v-2e9c75fc").then(a)}},{path:"/pages/0a83b083bdf257cb/index.html",redirect:"/pages/0a83b083bdf257cb/"},{path:"/02.页面/20.CSS/01.flex布局语法.html",redirect:"/pages/0a83b083bdf257cb/"},{name:"v-c86c2402",path:"/pages/ea6db1530c42ad51/",component:bo,beforeEnter:(e,t,a)=>{ci("Layout","v-c86c2402").then(a)}},{path:"/pages/ea6db1530c42ad51/index.html",redirect:"/pages/ea6db1530c42ad51/"},{path:"/02.页面/20.CSS/02.flex布局案例-基础.html",redirect:"/pages/ea6db1530c42ad51/"},{name:"v-9a497a22",path:"/pages/eff61bc8b4f4695d/",component:bo,beforeEnter:(e,t,a)=>{ci("Layout","v-9a497a22").then(a)}},{path:"/pages/eff61bc8b4f4695d/index.html",redirect:"/pages/eff61bc8b4f4695d/"},{path:"/02.页面/20.CSS/03.flex布局案例-骰子.html",redirect:"/pages/eff61bc8b4f4695d/"},{name:"v-f7eabdfa",path:"/pages/df9e7c7214fa5046/",component:bo,beforeEnter:(e,t,a)=>{ci("Layout","v-f7eabdfa").then(a)}},{path:"/pages/df9e7c7214fa5046/index.html",redirect:"/pages/df9e7c7214fa5046/"},{path:"/02.页面/20.CSS/04.flex布局案例-圣杯布局.html",redirect:"/pages/df9e7c7214fa5046/"},{name:"v-295f4dfa",path:"/pages/85b5a3fe218a34b7/",component:bo,beforeEnter:(e,t,a)=>{ci("Layout","v-295f4dfa").then(a)}},{path:"/pages/85b5a3fe218a34b7/index.html",redirect:"/pages/85b5a3fe218a34b7/"},{path:"/02.页面/20.CSS/05.flex布局案例-网格布局.html",redirect:"/pages/85b5a3fe218a34b7/"},{name:"v-5fd74e9f",path:"/pages/05cc577fb51c7998/",component:bo,beforeEnter:(e,t,a)=>{ci("Layout","v-5fd74e9f").then(a)}},{path:"/pages/05cc577fb51c7998/index.html",redirect:"/pages/05cc577fb51c7998/"},{path:"/02.页面/20.CSS/06.flex布局案例-输入框布局.html",redirect:"/pages/05cc577fb51c7998/"},{name:"v-0994be19",path:"/pages/02d7f59d98d87409/",component:bo,beforeEnter:(e,t,a)=>{ci("Layout","v-0994be19").then(a)}},{path:"/pages/02d7f59d98d87409/index.html",redirect:"/pages/02d7f59d98d87409/"},{path:"/02.页面/20.CSS/07.CSS3之transition过渡.html",redirect:"/pages/02d7f59d98d87409/"},{name:"v-89541564",path:"/pages/c2c0432138f6e042/",component:bo,beforeEnter:(e,t,a)=>{ci("Layout","v-89541564").then(a)}},{path:"/pages/c2c0432138f6e042/index.html",redirect:"/pages/c2c0432138f6e042/"},{path:"/02.页面/20.CSS/08.CSS3之animation动画.html",redirect:"/pages/c2c0432138f6e042/"},{name:"v-f2b9c60e",path:"/pages/3d52574260725aea/",component:bo,beforeEnter:(e,t,a)=>{ci("Layout","v-f2b9c60e").then(a)}},{path:"/pages/3d52574260725aea/index.html",redirect:"/pages/3d52574260725aea/"},{path:"/02.页面/20.CSS/20.「布局技巧」图片未加载前自动撑开元素高度.html",redirect:"/pages/3d52574260725aea/"},{name:"v-f675b86a",path:"/pages/42b66999cc27dc25/",component:bo,beforeEnter:(e,t,a)=>{ci("Layout","v-f675b86a").then(a)}},{path:"/pages/42b66999cc27dc25/index.html",redirect:"/pages/42b66999cc27dc25/"},{path:"/02.页面/20.CSS/30.文字在一行或多行时超出显示省略号.html",redirect:"/pages/42b66999cc27dc25/"},{name:"v-5e1a810f",path:"/pages/20a978023139589d/",component:bo,beforeEnter:(e,t,a)=>{ci("Layout","v-5e1a810f").then(a)}},{path:"/pages/20a978023139589d/index.html",redirect:"/pages/20a978023139589d/"},{path:"/02.页面/20.CSS/35.从box-sizing属性入手,了解盒子模型.html",redirect:"/pages/20a978023139589d/"},{name:"v-241e8c29",path:"/pages/cb7cb251adba4bf7/",component:bo,beforeEnter:(e,t,a)=>{ci("Layout","v-241e8c29").then(a)}},{path:"/pages/cb7cb251adba4bf7/index.html",redirect:"/pages/cb7cb251adba4bf7/"},{path:"/02.页面/20.CSS/40.水平垂直居中的几种方式-案例.html",redirect:"/pages/cb7cb251adba4bf7/"},{name:"v-35dec6e4",path:"/pages/5dde351274f1e39d/",component:bo,beforeEnter:(e,t,a)=>{ci("Layout","v-35dec6e4").then(a)}},{path:"/pages/5dde351274f1e39d/index.html",redirect:"/pages/5dde351274f1e39d/"},{path:"/02.页面/20.CSS/45.如何根据系统主题自动响应CSS深色模式.html",redirect:"/pages/5dde351274f1e39d/"},{name:"v-4ce87a2c",path:"/pages/941581927b4a38f8/",component:bo,beforeEnter:(e,t,a)=>{ci("Layout","v-4ce87a2c").then(a)}},{path:"/pages/941581927b4a38f8/index.html",redirect:"/pages/941581927b4a38f8/"},{path:"/02.页面/20.CSS/50.「css技巧」使用hover和attr()定制悬浮提示.html",redirect:"/pages/941581927b4a38f8/"},{name:"v-6057dbe4",path:"/pages/3da0d7/",component:bo,beforeEnter:(e,t,a)=>{ci("Layout","v-6057dbe4").then(a)}},{path:"/pages/3da0d7/index.html",redirect:"/pages/3da0d7/"},{path:"/02.页面/20.CSS/60.CSS-function汇总.html",redirect:"/pages/3da0d7/"},{name:"v-21c0caf7",path:"/pages/55f894/",component:bo,beforeEnter:(e,t,a)=>{ci("Layout","v-21c0caf7").then(a)}},{path:"/pages/55f894/index.html",redirect:"/pages/55f894/"},{path:"/02.页面/20.CSS/70.CSS给table的tbody添加滚动条.html",redirect:"/pages/55f894/"},{name:"v-2be7f4f2",path:"/pages/9a7ee40fc232253e/",component:bo,beforeEnter:(e,t,a)=>{ci("Layout","v-2be7f4f2").then(a)}},{path:"/pages/9a7ee40fc232253e/index.html",redirect:"/pages/9a7ee40fc232253e/"},{path:"/03.技术/01.技术文档/01.Git使用手册.html",redirect:"/pages/9a7ee40fc232253e/"},{name:"v-14863469",path:"/pages/61f2f95fd7da14fd/",component:bo,beforeEnter:(e,t,a)=>{ci("Layout","v-14863469").then(a)}},{path:"/pages/61f2f95fd7da14fd/index.html",redirect:"/pages/61f2f95fd7da14fd/"},{path:"/03.技术/01.技术文档/03.npm常用命令.html",redirect:"/pages/61f2f95fd7da14fd/"},{name:"v-21ef8fa4",path:"/pages/ad247c4332211551/",component:bo,beforeEnter:(e,t,a)=>{ci("Layout","v-21ef8fa4").then(a)}},{path:"/pages/ad247c4332211551/index.html",redirect:"/pages/ad247c4332211551/"},{path:"/03.技术/01.技术文档/02.Markdown使用教程.html",redirect:"/pages/ad247c4332211551/"},{name:"v-097e597e",path:"/pages/dec4f3f00e71a312/",component:bo,beforeEnter:(e,t,a)=>{ci("Layout","v-097e597e").then(a)}},{path:"/pages/dec4f3f00e71a312/index.html",redirect:"/pages/dec4f3f00e71a312/"},{path:"/03.技术/01.技术文档/10.npm packageJson属性详解.html",redirect:"/pages/dec4f3f00e71a312/"},{name:"v-5d7ec670",path:"/pages/4e8444e2d534d14f/",component:bo,beforeEnter:(e,t,a)=>{ci("Layout","v-5d7ec670").then(a)}},{path:"/pages/4e8444e2d534d14f/index.html",redirect:"/pages/4e8444e2d534d14f/"},{path:"/03.技术/01.技术文档/15.yaml语言教程.html",redirect:"/pages/4e8444e2d534d14f/"},{name:"v-86dc64e0",path:"/pages/922650/",component:bo,beforeEnter:(e,t,a)=>{ci("Layout","v-86dc64e0").then(a)}},{path:"/pages/922650/index.html",redirect:"/pages/922650/"},{path:"/03.技术/01.技术文档/20.Git修改分支名.html",redirect:"/pages/922650/"},{name:"v-64a3e558",path:"/pages/4c778760be26d8b3/",component:bo,beforeEnter:(e,t,a)=>{ci("Layout","v-64a3e558").then(a)}},{path:"/pages/4c778760be26d8b3/index.html",redirect:"/pages/4c778760be26d8b3/"},{path:"/03.技术/02.GitHub技巧/01.GitHub高级搜索技巧.html",redirect:"/pages/4c778760be26d8b3/"},{name:"v-2e647478",path:"/pages/6b9d359ec5aa5019/",component:bo,beforeEnter:(e,t,a)=>{ci("Layout","v-2e647478").then(a)}},{path:"/pages/6b9d359ec5aa5019/index.html",redirect:"/pages/6b9d359ec5aa5019/"},{path:"/03.技术/02.GitHub技巧/02.GitHub Actions 实现自动部署静态博客.html",redirect:"/pages/6b9d359ec5aa5019/"},{name:"v-dda145ec",path:"/pages/f44d2f9ad04ab8d3/",component:bo,beforeEnter:(e,t,a)=>{ci("Layout","v-dda145ec").then(a)}},{path:"/pages/f44d2f9ad04ab8d3/index.html",redirect:"/pages/f44d2f9ad04ab8d3/"},{path:"/03.技术/02.GitHub技巧/03.GitHub Actions 定时运行代码:每天定时百度链接推送.html",redirect:"/pages/f44d2f9ad04ab8d3/"},{name:"v-453ba9ae",path:"/pages/95331c6a9613faf8/",component:bo,beforeEnter:(e,t,a)=>{ci("Layout","v-453ba9ae").then(a)}},{path:"/pages/95331c6a9613faf8/index.html",redirect:"/pages/95331c6a9613faf8/"},{path:"/03.技术/02.GitHub技巧/10.GitHub加速下载项目的方法.html",redirect:"/pages/95331c6a9613faf8/"},{name:"v-5d754cb7",path:"/pages/117708e0af7f0bd9/",component:bo,beforeEnter:(e,t,a)=>{ci("Layout","v-5d754cb7").then(a)}},{path:"/pages/117708e0af7f0bd9/index.html",redirect:"/pages/117708e0af7f0bd9/"},{path:"/03.技术/03.Nodejs/01.nodejs递归读取所有文件.html",redirect:"/pages/117708e0af7f0bd9/"},{name:"v-0ad70742",path:"/pages/41f87d890d0a02af/",component:bo,beforeEnter:(e,t,a)=>{ci("Layout","v-0ad70742").then(a)}},{path:"/pages/41f87d890d0a02af/index.html",redirect:"/pages/41f87d890d0a02af/"},{path:"/03.技术/04.博客搭建/01.解决百度无法收录搭建在GitHub上的个人博客的问题.html",redirect:"/pages/41f87d890d0a02af/"},{name:"v-dd2d0f56",path:"/pages/a5f73af5185fdf0a/",component:bo,beforeEnter:(e,t,a)=>{ci("Layout","v-dd2d0f56").then(a)}},{path:"/pages/a5f73af5185fdf0a/index.html",redirect:"/pages/a5f73af5185fdf0a/"},{path:"/03.技术/04.博客搭建/03.GitHub + jsDelivr + TinyPNG+ PicGo 打造稳定快速、高效免费图床.html",redirect:"/pages/a5f73af5185fdf0a/"},{name:"v-5415afba",path:"/pages/1da0bf9a988eafe5/",component:bo,beforeEnter:(e,t,a)=>{ci("Layout","v-5415afba").then(a)}},{path:"/pages/1da0bf9a988eafe5/index.html",redirect:"/pages/1da0bf9a988eafe5/"},{path:"/03.技术/04.博客搭建/02.使用Gitalk实现静态博客无后台评论系统.html",redirect:"/pages/1da0bf9a988eafe5/"},{name:"v-7d8f1dc8",path:"/pages/d557b9a89a215d2e/",component:bo,beforeEnter:(e,t,a)=>{ci("Layout","v-7d8f1dc8").then(a)}},{path:"/pages/d557b9a89a215d2e/index.html",redirect:"/pages/d557b9a89a215d2e/"},{path:"/03.技术/04.博客搭建/10.vdoing主题效果图.html",redirect:"/pages/d557b9a89a215d2e/"},{name:"v-6db74ebb",path:"/pages/f2a556/",component:bo,beforeEnter:(e,t,a)=>{ci("Layout","v-6db74ebb").then(a)}},{path:"/pages/f2a556/index.html",redirect:"/pages/f2a556/"},{path:"/04.更多/01.学习/00.费曼学习法.html",redirect:"/pages/f2a556/"},{name:"v-3fea4c0e",path:"/pages/e60c81/",component:bo,beforeEnter:(e,t,a)=>{ci("Layout","v-3fea4c0e").then(a)}},{path:"/pages/e60c81/index.html",redirect:"/pages/e60c81/"},{path:"/04.更多/01.学习/01.笔记方法.html",redirect:"/pages/e60c81/"},{name:"v-413f1daa",path:"/pages/a8692ab3bdcb4588/",component:bo,beforeEnter:(e,t,a)=>{ci("Layout","v-413f1daa").then(a)}},{path:"/pages/a8692ab3bdcb4588/index.html",redirect:"/pages/a8692ab3bdcb4588/"},{path:"/04.更多/01.学习/02.提高学习效率的策略.html",redirect:"/pages/a8692ab3bdcb4588/"},{name:"v-a6be1c98",path:"/pages/996822b2a2ca6e3b/",component:bo,beforeEnter:(e,t,a)=>{ci("Layout","v-a6be1c98").then(a)}},{path:"/pages/996822b2a2ca6e3b/index.html",redirect:"/pages/996822b2a2ca6e3b/"},{path:"/04.更多/01.学习/03.提高记忆的技巧.html",redirect:"/pages/996822b2a2ca6e3b/"},{name:"v-0379d048",path:"/pages/9ba2b8fb13de1957/",component:bo,beforeEnter:(e,t,a)=>{ci("Layout","v-0379d048").then(a)}},{path:"/pages/9ba2b8fb13de1957/index.html",redirect:"/pages/9ba2b8fb13de1957/"},{path:"/04.更多/01.学习/05.处理问题的思路.html",redirect:"/pages/9ba2b8fb13de1957/"},{name:"v-bca463c4",path:"/pages/c3f302a03c8daf79/",component:bo,beforeEnter:(e,t,a)=>{ci("Layout","v-bca463c4").then(a)}},{path:"/pages/c3f302a03c8daf79/index.html",redirect:"/pages/c3f302a03c8daf79/"},{path:"/04.更多/01.学习/04.自律小建议.html",redirect:"/pages/c3f302a03c8daf79/"},{name:"v-8690b482",path:"/pages/ce818a/",component:bo,beforeEnter:(e,t,a)=>{ci("Layout","v-8690b482").then(a)}},{path:"/pages/ce818a/index.html",redirect:"/pages/ce818a/"},{path:"/04.更多/01.学习/10.搜索引擎使用技巧.html",redirect:"/pages/ce818a/"},{name:"v-6822ed3c",path:"/pages/d6d331/",component:bo,beforeEnter:(e,t,a)=>{ci("Layout","v-6822ed3c").then(a)}},{path:"/pages/d6d331/index.html",redirect:"/pages/d6d331/"},{path:"/04.更多/05.心情杂货/10.反向拆解让人上瘾的套路,找回自律.html",redirect:"/pages/d6d331/"},{name:"v-40ccc080",path:"/pages/2d615df9a36a98ed/",component:bo,beforeEnter:(e,t,a)=>{ci("Layout","v-40ccc080").then(a)}},{path:"/pages/2d615df9a36a98ed/index.html",redirect:"/pages/2d615df9a36a98ed/"},{path:"/04.更多/05.心情杂货/01.一个完美主义者的自我救赎.html",redirect:"/pages/2d615df9a36a98ed/"},{name:"v-17606a76",path:"/pages/baaa02/",component:bo,beforeEnter:(e,t,a)=>{ci("Layout","v-17606a76").then(a)}},{path:"/pages/baaa02/index.html",redirect:"/pages/baaa02/"},{path:"/04.更多/10.实用技巧/01.2分钟规则.html",redirect:"/pages/baaa02/"},{name:"v-2aa32df9",path:"/pages/dcebaf/",component:bo,beforeEnter:(e,t,a)=>{ci("Layout","v-2aa32df9").then(a)}},{path:"/pages/dcebaf/index.html",redirect:"/pages/dcebaf/"},{path:"/04.更多/10.实用技巧/10.一行代码“黑”掉任意网站.html",redirect:"/pages/dcebaf/"},{name:"v-ca5728b6",path:"/about/",component:bo,beforeEnter:(e,t,a)=>{ci("Layout","v-ca5728b6").then(a)}},{path:"/about/index.html",redirect:"/about/"},{path:"/05.关于/01.关于.html",redirect:"/about/"},{name:"v-537e618a",path:"/friends/",component:bo,beforeEnter:(e,t,a)=>{ci("Layout","v-537e618a").then(a)}},{path:"/friends/index.html",redirect:"/friends/"},{path:"/04.更多/99.友情链接.html",redirect:"/friends/"},{name:"v-7d60c5fc",path:"/pages/47cf96/",component:bo,beforeEnter:(e,t,a)=>{ci("Layout","v-7d60c5fc").then(a)}},{path:"/pages/47cf96/index.html",redirect:"/pages/47cf96/"},{path:"/06.收藏夹/02.常用的前端轮子.html",redirect:"/pages/47cf96/"},{name:"v-6d7bd5ac",path:"/pages/beb6c0bd8a66cea6/",component:bo,beforeEnter:(e,t,a)=>{ci("Layout","v-6d7bd5ac").then(a)}},{path:"/pages/beb6c0bd8a66cea6/index.html",redirect:"/pages/beb6c0bd8a66cea6/"},{path:"/06.收藏夹/01.网站.html",redirect:"/pages/beb6c0bd8a66cea6/"},{name:"v-75911aca",path:"/archives/",component:bo,beforeEnter:(e,t,a)=>{ci("Layout","v-75911aca").then(a)}},{path:"/archives/index.html",redirect:"/archives/"},{path:"/@pages/archivesPage.html",redirect:"/archives/"},{name:"v-a52f63ca",path:"/tags/",component:bo,beforeEnter:(e,t,a)=>{ci("Layout","v-a52f63ca").then(a)}},{path:"/tags/index.html",redirect:"/tags/"},{path:"/@pages/tagsPage.html",redirect:"/tags/"},{name:"v-024228c0",path:"/pages/f2e63f/",component:bo,beforeEnter:(e,t,a)=>{ci("Layout","v-024228c0").then(a)}},{path:"/pages/f2e63f/index.html",redirect:"/pages/f2e63f/"},{path:"/_posts/随笔/你知道的越多,不知道的也就越多.html",redirect:"/pages/f2e63f/"},{name:"v-3650fe32",path:"/pages/829589/",component:bo,beforeEnter:(e,t,a)=>{ci("Layout","v-3650fe32").then(a)}},{path:"/pages/829589/index.html",redirect:"/pages/829589/"},{path:"/_posts/随笔/我做了一个手写春联小网页,祝大家虎年暴富.html",redirect:"/pages/829589/"},{name:"v-57a9a6c0",path:"/pages/cd8bde/",component:bo,beforeEnter:(e,t,a)=>{ci("Layout","v-57a9a6c0").then(a)}},{path:"/pages/cd8bde/index.html",redirect:"/pages/cd8bde/"},{path:"/_posts/随笔/拥抱生活,拥抱快乐.html",redirect:"/pages/cd8bde/"},{name:"v-a1c0bf72",path:"/",component:bo,beforeEnter:(e,t,a)=>{ci("Layout","v-a1c0bf72").then(a)}},{path:"/index.html",redirect:"/"},{name:"v-076db5a2",path:"/pages/f344d070a1031ef7/",component:bo,beforeEnter:(e,t,a)=>{ci("Layout","v-076db5a2").then(a)}},{path:"/pages/f344d070a1031ef7/index.html",redirect:"/pages/f344d070a1031ef7/"},{path:"/《ES6 教程》笔记/01.ECMAScript 6 简介.html",redirect:"/pages/f344d070a1031ef7/"},{name:"v-69edcd29",path:"/pages/c1edd70a6b7c7872/",component:bo,beforeEnter:(e,t,a)=>{ci("Layout","v-69edcd29").then(a)}},{path:"/pages/c1edd70a6b7c7872/index.html",redirect:"/pages/c1edd70a6b7c7872/"},{path:"/《ES6 教程》笔记/02.let 和 const 命令.html",redirect:"/pages/c1edd70a6b7c7872/"},{name:"v-0e5bea25",path:"/pages/b1ab10a62f7564da/",component:bo,beforeEnter:(e,t,a)=>{ci("Layout","v-0e5bea25").then(a)}},{path:"/pages/b1ab10a62f7564da/index.html",redirect:"/pages/b1ab10a62f7564da/"},{path:"/《ES6 教程》笔记/03.变量的解构赋值.html",redirect:"/pages/b1ab10a62f7564da/"},{name:"v-5ee9bb3d",path:"/pages/ca89eca8adeba5f4/",component:bo,beforeEnter:(e,t,a)=>{ci("Layout","v-5ee9bb3d").then(a)}},{path:"/pages/ca89eca8adeba5f4/index.html",redirect:"/pages/ca89eca8adeba5f4/"},{path:"/《ES6 教程》笔记/04.字符串的扩展.html",redirect:"/pages/ca89eca8adeba5f4/"},{name:"v-c06b09dc",path:"/pages/aea6571b7a8bae86/",component:bo,beforeEnter:(e,t,a)=>{ci("Layout","v-c06b09dc").then(a)}},{path:"/pages/aea6571b7a8bae86/index.html",redirect:"/pages/aea6571b7a8bae86/"},{path:"/04.更多/03.面试/01.面试问题集锦.html",redirect:"/pages/aea6571b7a8bae86/"},{name:"v-dc4153cc",path:"/pages/0473261a6ab0ee8c/",component:bo,beforeEnter:(e,t,a)=>{ci("Layout","v-dc4153cc").then(a)}},{path:"/pages/0473261a6ab0ee8c/index.html",redirect:"/pages/0473261a6ab0ee8c/"},{path:"/《ES6 教程》笔记/06.正则的扩展.html",redirect:"/pages/0473261a6ab0ee8c/"},{name:"v-a99c1392",path:"/pages/e34009d60d8bc4b2/",component:bo,beforeEnter:(e,t,a)=>{ci("Layout","v-a99c1392").then(a)}},{path:"/pages/e34009d60d8bc4b2/index.html",redirect:"/pages/e34009d60d8bc4b2/"},{path:"/《ES6 教程》笔记/09.数组的扩展.html",redirect:"/pages/e34009d60d8bc4b2/"},{name:"v-1b71fb0a",path:"/pages/5dfea9a0f2d1a392/",component:bo,beforeEnter:(e,t,a)=>{ci("Layout","v-1b71fb0a").then(a)}},{path:"/pages/5dfea9a0f2d1a392/index.html",redirect:"/pages/5dfea9a0f2d1a392/"},{path:"/《ES6 教程》笔记/07.数值的扩展.html",redirect:"/pages/5dfea9a0f2d1a392/"},{name:"v-2b803d8a",path:"/pages/b5e3e0a0ff6e9c25/",component:bo,beforeEnter:(e,t,a)=>{ci("Layout","v-2b803d8a").then(a)}},{path:"/pages/b5e3e0a0ff6e9c25/index.html",redirect:"/pages/b5e3e0a0ff6e9c25/"},{path:"/《ES6 教程》笔记/10.对象的扩展.html",redirect:"/pages/b5e3e0a0ff6e9c25/"},{name:"v-77a99d3a",path:"/pages/e85e68947502cf90/",component:bo,beforeEnter:(e,t,a)=>{ci("Layout","v-77a99d3a").then(a)}},{path:"/pages/e85e68947502cf90/index.html",redirect:"/pages/e85e68947502cf90/"},{path:"/《ES6 教程》笔记/11.对象的新增方法.html",redirect:"/pages/e85e68947502cf90/"},{name:"v-6d6802c0",path:"/pages/02c86eb2792f3262/",component:bo,beforeEnter:(e,t,a)=>{ci("Layout","v-6d6802c0").then(a)}},{path:"/pages/02c86eb2792f3262/index.html",redirect:"/pages/02c86eb2792f3262/"},{path:"/《ES6 教程》笔记/12.Symbol.html",redirect:"/pages/02c86eb2792f3262/"},{name:"v-053ef16e",path:"/pages/0c21dae358fca16b/",component:bo,beforeEnter:(e,t,a)=>{ci("Layout","v-053ef16e").then(a)}},{path:"/pages/0c21dae358fca16b/index.html",redirect:"/pages/0c21dae358fca16b/"},{path:"/《ES6 教程》笔记/13.Set 和 Map 数据结构.html",redirect:"/pages/0c21dae358fca16b/"},{name:"v-6bb735b0",path:"/pages/f56ec2ab97d60483/",component:bo,beforeEnter:(e,t,a)=>{ci("Layout","v-6bb735b0").then(a)}},{path:"/pages/f56ec2ab97d60483/index.html",redirect:"/pages/f56ec2ab97d60483/"},{path:"/《ES6 教程》笔记/14.Proxy.html",redirect:"/pages/f56ec2ab97d60483/"},{name:"v-65229c30",path:"/pages/74de3e45e4491e95/",component:bo,beforeEnter:(e,t,a)=>{ci("Layout","v-65229c30").then(a)}},{path:"/pages/74de3e45e4491e95/index.html",redirect:"/pages/74de3e45e4491e95/"},{path:"/《ES6 教程》笔记/15.Reflect.html",redirect:"/pages/74de3e45e4491e95/"},{name:"v-20acc1fd",path:"/pages/8ed309d668b20264/",component:bo,beforeEnter:(e,t,a)=>{ci("Layout","v-20acc1fd").then(a)}},{path:"/pages/8ed309d668b20264/index.html",redirect:"/pages/8ed309d668b20264/"},{path:"/《ES6 教程》笔记/08.函数的扩展.html",redirect:"/pages/8ed309d668b20264/"},{name:"v-3c13bf1e",path:"/pages/2810ae8985e9bd52/",component:bo,beforeEnter:(e,t,a)=>{ci("Layout","v-3c13bf1e").then(a)}},{path:"/pages/2810ae8985e9bd52/index.html",redirect:"/pages/2810ae8985e9bd52/"},{path:"/《ES6 教程》笔记/16.Promise 对象.html",redirect:"/pages/2810ae8985e9bd52/"},{name:"v-32376b82",path:"/pages/48df907ad3570f3d/",component:bo,beforeEnter:(e,t,a)=>{ci("Layout","v-32376b82").then(a)}},{path:"/pages/48df907ad3570f3d/index.html",redirect:"/pages/48df907ad3570f3d/"},{path:"/《ES6 教程》笔记/17.Iterator 和 for-of 循环.html",redirect:"/pages/48df907ad3570f3d/"},{name:"v-0d35f2fb",path:"/categories/",component:bo,beforeEnter:(e,t,a)=>{ci("Layout","v-0d35f2fb").then(a)}},{path:"/categories/index.html",redirect:"/categories/"},{path:"/@pages/categoriesPage.html",redirect:"/categories/"},{name:"v-01844106",path:"/pages/718b48ed9ce0adce/",component:bo,beforeEnter:(e,t,a)=>{ci("Layout","v-01844106").then(a)}},{path:"/pages/718b48ed9ce0adce/index.html",redirect:"/pages/718b48ed9ce0adce/"},{path:"/《ES6 教程》笔记/18.Generator 函数的语法.html",redirect:"/pages/718b48ed9ce0adce/"},{name:"v-5291dcfc",path:"/pages/3777253e65bac487/",component:bo,beforeEnter:(e,t,a)=>{ci("Layout","v-5291dcfc").then(a)}},{path:"/pages/3777253e65bac487/index.html",redirect:"/pages/3777253e65bac487/"},{path:"/《ES6 教程》笔记/20.async 函数.html",redirect:"/pages/3777253e65bac487/"},{name:"v-851ea476",path:"/pages/75af7031eb66847b/",component:bo,beforeEnter:(e,t,a)=>{ci("Layout","v-851ea476").then(a)}},{path:"/pages/75af7031eb66847b/index.html",redirect:"/pages/75af7031eb66847b/"},{path:"/《ES6 教程》笔记/19.Generator 函数的异步应用.html",redirect:"/pages/75af7031eb66847b/"},{name:"v-4b382ed4",path:"/pages/e831e1593c82bbe0/",component:bo,beforeEnter:(e,t,a)=>{ci("Layout","v-4b382ed4").then(a)}},{path:"/pages/e831e1593c82bbe0/index.html",redirect:"/pages/e831e1593c82bbe0/"},{path:"/《ES6 教程》笔记/21.Class 的基本语法.html",redirect:"/pages/e831e1593c82bbe0/"},{name:"v-5b8db019",path:"/pages/efe2fb04eb8ac5fb/",component:bo,beforeEnter:(e,t,a)=>{ci("Layout","v-5b8db019").then(a)}},{path:"/pages/efe2fb04eb8ac5fb/index.html",redirect:"/pages/efe2fb04eb8ac5fb/"},{path:"/《ES6 教程》笔记/23.Module 的语法.html",redirect:"/pages/efe2fb04eb8ac5fb/"},{name:"v-3bed8ed0",path:"/pages/83f8c3a0cd87dd83/",component:bo,beforeEnter:(e,t,a)=>{ci("Layout","v-3bed8ed0").then(a)}},{path:"/pages/83f8c3a0cd87dd83/index.html",redirect:"/pages/83f8c3a0cd87dd83/"},{path:"/《ES6 教程》笔记/22.Class 的继承.html",redirect:"/pages/83f8c3a0cd87dd83/"},{name:"v-6d4f76c7",path:"/pages/a79ca2e64ceae213/",component:bo,beforeEnter:(e,t,a)=>{ci("Layout","v-6d4f76c7").then(a)}},{path:"/pages/a79ca2e64ceae213/index.html",redirect:"/pages/a79ca2e64ceae213/"},{path:"/《ES6 教程》笔记/24.Module 的加载实现.html",redirect:"/pages/a79ca2e64ceae213/"},{name:"v-ac5acbb4",path:"/pages/984bf549204bb266/",component:bo,beforeEnter:(e,t,a)=>{ci("Layout","v-ac5acbb4").then(a)}},{path:"/pages/984bf549204bb266/index.html",redirect:"/pages/984bf549204bb266/"},{path:"/《ES6 教程》笔记/25.编程风格.html",redirect:"/pages/984bf549204bb266/"},{name:"v-733f50a3",path:"/pages/16121351be68691b/",component:bo,beforeEnter:(e,t,a)=>{ci("Layout","v-733f50a3").then(a)}},{path:"/pages/16121351be68691b/index.html",redirect:"/pages/16121351be68691b/"},{path:"/《ES6 教程》笔记/27.异步遍历器.html",redirect:"/pages/16121351be68691b/"},{name:"v-52c04cf0",path:"/pages/a2ba314746bfdbdd/",component:bo,beforeEnter:(e,t,a)=>{ci("Layout","v-52c04cf0").then(a)}},{path:"/pages/a2ba314746bfdbdd/index.html",redirect:"/pages/a2ba314746bfdbdd/"},{path:"/《ES6 教程》笔记/28.ArrayBuffer.html",redirect:"/pages/a2ba314746bfdbdd/"},{name:"v-13e44e4a",path:"/pages/7188882b8d65af1b/",component:bo,beforeEnter:(e,t,a)=>{ci("Layout","v-13e44e4a").then(a)}},{path:"/pages/7188882b8d65af1b/index.html",redirect:"/pages/7188882b8d65af1b/"},{path:"/《ES6 教程》笔记/29.最新提案.html",redirect:"/pages/7188882b8d65af1b/"},{name:"v-b808d19e",path:"/pages/e97bc1e5626b082c/",component:bo,beforeEnter:(e,t,a)=>{ci("Layout","v-b808d19e").then(a)}},{path:"/pages/e97bc1e5626b082c/index.html",redirect:"/pages/e97bc1e5626b082c/"},{path:"/《ES6 教程》笔记/30.装饰器.html",redirect:"/pages/e97bc1e5626b082c/"},{name:"v-f3b0de10",path:"/pages/1cf50330655efc69/",component:bo,beforeEnter:(e,t,a)=>{ci("Layout","v-f3b0de10").then(a)}},{path:"/pages/1cf50330655efc69/index.html",redirect:"/pages/1cf50330655efc69/"},{path:"/《ES6 教程》笔记/31.函数式编程.html",redirect:"/pages/1cf50330655efc69/"},{name:"v-94937e60",path:"/pages/6a8e2dc558da1b39/",component:bo,beforeEnter:(e,t,a)=>{ci("Layout","v-94937e60").then(a)}},{path:"/pages/6a8e2dc558da1b39/index.html",redirect:"/pages/6a8e2dc558da1b39/"},{path:"/《ES6 教程》笔记/32.Mixin.html",redirect:"/pages/6a8e2dc558da1b39/"},{name:"v-6a3203ee",path:"/pages/32c35f7651d6e58e/",component:bo,beforeEnter:(e,t,a)=>{ci("Layout","v-6a3203ee").then(a)}},{path:"/pages/32c35f7651d6e58e/index.html",redirect:"/pages/32c35f7651d6e58e/"},{path:"/《ES6 教程》笔记/26.读懂 ECMAScript 规格.html",redirect:"/pages/32c35f7651d6e58e/"},{name:"v-04a8e9f4",path:"/pages/8e8f80f69b775a56/",component:bo,beforeEnter:(e,t,a)=>{ci("Layout","v-04a8e9f4").then(a)}},{path:"/pages/8e8f80f69b775a56/index.html",redirect:"/pages/8e8f80f69b775a56/"},{path:"/《ES6 教程》笔记/33.SIMD.html",redirect:"/pages/8e8f80f69b775a56/"},{name:"v-e015545a",path:"/pages/ea6f3b870f6dab69/",component:bo,beforeEnter:(e,t,a)=>{ci("Layout","v-e015545a").then(a)}},{path:"/pages/ea6f3b870f6dab69/index.html",redirect:"/pages/ea6f3b870f6dab69/"},{path:"/《ES6 教程》笔记/34.参考链接.html",redirect:"/pages/ea6f3b870f6dab69/"},{name:"v-06cc8728",path:"/pages/8292d8/",component:bo,beforeEnter:(e,t,a)=>{ci("Layout","v-06cc8728").then(a)}},{path:"/pages/8292d8/index.html",redirect:"/pages/8292d8/"},{path:"/《Git》学习笔记/10.手册/00.常用Git命令清单.html",redirect:"/pages/8292d8/"},{name:"v-57559d9a",path:"/pages/c10281/",component:bo,beforeEnter:(e,t,a)=>{ci("Layout","v-57559d9a").then(a)}},{path:"/pages/c10281/index.html",redirect:"/pages/c10281/"},{path:"/《Git》学习笔记/10.手册/03.Git变基合并.html",redirect:"/pages/c10281/"},{name:"v-57ec6ef3",path:"/pages/4cbc21/",component:bo,beforeEnter:(e,t,a)=>{ci("Layout","v-57ec6ef3").then(a)}},{path:"/pages/4cbc21/index.html",redirect:"/pages/4cbc21/"},{path:"/《Git》学习笔记/10.手册/06.Git命令思维导图.html",redirect:"/pages/4cbc21/"},{name:"v-63d2c7f9",path:"/pages/635088/",component:bo,beforeEnter:(e,t,a)=>{ci("Layout","v-63d2c7f9").then(a)}},{path:"/pages/635088/index.html",redirect:"/pages/635088/"},{path:"/《Git》学习笔记/20.文档笔记/10.Git基础与命令.html",redirect:"/pages/635088/"},{name:"v-285a66d4",path:"/pages/1832fe/",component:bo,beforeEnter:(e,t,a)=>{ci("Layout","v-285a66d4").then(a)}},{path:"/pages/1832fe/index.html",redirect:"/pages/1832fe/"},{path:"/《Git》学习笔记/20.文档笔记/100.Git工具-重写历史.html",redirect:"/pages/1832fe/"},{name:"v-d6ca0284",path:"/pages/d9e9c6/",component:bo,beforeEnter:(e,t,a)=>{ci("Layout","v-d6ca0284").then(a)}},{path:"/pages/d9e9c6/index.html",redirect:"/pages/d9e9c6/"},{path:"/《Git》学习笔记/20.文档笔记/110.Git工具-重置揭密.html",redirect:"/pages/d9e9c6/"},{name:"v-1054fce3",path:"/pages/4bef1a/",component:bo,beforeEnter:(e,t,a)=>{ci("Layout","v-1054fce3").then(a)}},{path:"/pages/4bef1a/index.html",redirect:"/pages/4bef1a/"},{path:"/《Git》学习笔记/20.文档笔记/20.Git分支-分支原理.html",redirect:"/pages/4bef1a/"},{name:"v-3f33f3f9",path:"/pages/ea5a8c/",component:bo,beforeEnter:(e,t,a)=>{ci("Layout","v-3f33f3f9").then(a)}},{path:"/pages/ea5a8c/index.html",redirect:"/pages/ea5a8c/"},{path:"/《Git》学习笔记/20.文档笔记/30.Git分支的新建与合并-分支操作.html",redirect:"/pages/ea5a8c/"},{name:"v-3d0a5f07",path:"/pages/a399b3/",component:bo,beforeEnter:(e,t,a)=>{ci("Layout","v-3d0a5f07").then(a)}},{path:"/pages/a399b3/index.html",redirect:"/pages/a399b3/"},{path:"/《Git》学习笔记/20.文档笔记/40.Git分支管理-查看分支.html",redirect:"/pages/a399b3/"},{name:"v-24eb1861",path:"/pages/49ee30/",component:bo,beforeEnter:(e,t,a)=>{ci("Layout","v-24eb1861").then(a)}},{path:"/pages/49ee30/index.html",redirect:"/pages/49ee30/"},{path:"/《Git》学习笔记/20.文档笔记/50.Git分支开发工作流.html",redirect:"/pages/49ee30/"},{name:"v-569eda30",path:"/pages/574d62/",component:bo,beforeEnter:(e,t,a)=>{ci("Layout","v-569eda30").then(a)}},{path:"/pages/574d62/index.html",redirect:"/pages/574d62/"},{path:"/《Git》学习笔记/20.文档笔记/60.Git分支-远程分支.html",redirect:"/pages/574d62/"},{name:"v-7568c9ac",path:"/pages/3a3247/",component:bo,beforeEnter:(e,t,a)=>{ci("Layout","v-7568c9ac").then(a)}},{path:"/pages/3a3247/index.html",redirect:"/pages/3a3247/"},{path:"/《Git》学习笔记/20.文档笔记/70.Git分支-变基.html",redirect:"/pages/3a3247/"},{name:"v-7c1994b2",path:"/pages/c984d1/",component:bo,beforeEnter:(e,t,a)=>{ci("Layout","v-7c1994b2").then(a)}},{path:"/pages/c984d1/index.html",redirect:"/pages/c984d1/"},{path:"/《Git》学习笔记/20.文档笔记/80.Git工具-查看修订版本.html",redirect:"/pages/c984d1/"},{name:"v-06817859",path:"/pages/0796ba76b4b55368/",component:bo,beforeEnter:(e,t,a)=>{ci("Layout","v-06817859").then(a)}},{path:"/pages/0796ba76b4b55368/index.html",redirect:"/pages/0796ba76b4b55368/"},{path:"/《JavaScript教程》笔记/01.基础.html",redirect:"/pages/0796ba76b4b55368/"},{name:"v-5056cad1",path:"/pages/74d2ab3fbfeaaa68/",component:bo,beforeEnter:(e,t,a)=>{ci("Layout","v-5056cad1").then(a)}},{path:"/pages/74d2ab3fbfeaaa68/index.html",redirect:"/pages/74d2ab3fbfeaaa68/"},{path:"/《JavaScript教程》笔记/02.内置对象.html",redirect:"/pages/74d2ab3fbfeaaa68/"},{name:"v-03da2212",path:"/pages/76d859/",component:bo,beforeEnter:(e,t,a)=>{ci("Layout","v-03da2212").then(a)}},{path:"/pages/76d859/index.html",redirect:"/pages/76d859/"},{path:"/《Git》学习笔记/20.文档笔记/90.Git工具-交互式暂存.html",redirect:"/pages/76d859/"},{name:"v-10292b5b",path:"/pages/659b5af5e2e704e0/",component:bo,beforeEnter:(e,t,a)=>{ci("Layout","v-10292b5b").then(a)}},{path:"/pages/659b5af5e2e704e0/index.html",redirect:"/pages/659b5af5e2e704e0/"},{path:"/《JavaScript教程》笔记/03.面向对象.html",redirect:"/pages/659b5af5e2e704e0/"},{name:"v-a95ce4c4",path:"/pages/d61b1cb4cdac1f63/",component:bo,beforeEnter:(e,t,a)=>{ci("Layout","v-a95ce4c4").then(a)}},{path:"/pages/d61b1cb4cdac1f63/index.html",redirect:"/pages/d61b1cb4cdac1f63/"},{path:"/《JavaScript教程》笔记/04.异步操作.html",redirect:"/pages/d61b1cb4cdac1f63/"},{name:"v-17fb10cd",path:"/pages/10b2761db5a8e089/",component:bo,beforeEnter:(e,t,a)=>{ci("Layout","v-17fb10cd").then(a)}},{path:"/pages/10b2761db5a8e089/index.html",redirect:"/pages/10b2761db5a8e089/"},{path:"/《JavaScript教程》笔记/06.事件.html",redirect:"/pages/10b2761db5a8e089/"},{name:"v-8544531a",path:"/pages/7d961b8030c6099e/",component:bo,beforeEnter:(e,t,a)=>{ci("Layout","v-8544531a").then(a)}},{path:"/pages/7d961b8030c6099e/index.html",redirect:"/pages/7d961b8030c6099e/"},{path:"/《JavaScript教程》笔记/05.DOM.html",redirect:"/pages/7d961b8030c6099e/"},{name:"v-48ef310c",path:"/pages/b5d372/",component:bo,beforeEnter:(e,t,a)=>{ci("Layout","v-48ef310c").then(a)}},{path:"/pages/b5d372/index.html",redirect:"/pages/b5d372/"},{path:"/《React》笔记/01.核心概念/02.元素渲染.html",redirect:"/pages/b5d372/"},{name:"v-d9c25200",path:"/pages/5df969/",component:bo,beforeEnter:(e,t,a)=>{ci("Layout","v-d9c25200").then(a)}},{path:"/pages/5df969/index.html",redirect:"/pages/5df969/"},{path:"/《React》笔记/01.核心概念/01.JSX简介.html",redirect:"/pages/5df969/"},{name:"v-0d70c6ad",path:"/pages/9ac43a/",component:bo,beforeEnter:(e,t,a)=>{ci("Layout","v-0d70c6ad").then(a)}},{path:"/pages/9ac43a/index.html",redirect:"/pages/9ac43a/"},{path:"/《React》笔记/01.核心概念/03.组件&Props.html",redirect:"/pages/9ac43a/"},{name:"v-f632342c",path:"/pages/1e3ca2/",component:bo,beforeEnter:(e,t,a)=>{ci("Layout","v-f632342c").then(a)}},{path:"/pages/1e3ca2/index.html",redirect:"/pages/1e3ca2/"},{path:"/《React》笔记/01.核心概念/04.State&生命周期.html",redirect:"/pages/1e3ca2/"},{name:"v-24027de6",path:"/pages/bab4930124ad2c10/",component:bo,beforeEnter:(e,t,a)=>{ci("Layout","v-24027de6").then(a)}},{path:"/pages/bab4930124ad2c10/index.html",redirect:"/pages/bab4930124ad2c10/"},{path:"/《JavaScript教程》笔记/07.浏览器模型.html",redirect:"/pages/bab4930124ad2c10/"},{name:"v-35bece74",path:"/pages/f27775/",component:bo,beforeEnter:(e,t,a)=>{ci("Layout","v-35bece74").then(a)}},{path:"/pages/f27775/index.html",redirect:"/pages/f27775/"},{path:"/《React》笔记/01.核心概念/05.事件处理.html",redirect:"/pages/f27775/"},{name:"v-5138a674",path:"/pages/8fcda8/",component:bo,beforeEnter:(e,t,a)=>{ci("Layout","v-5138a674").then(a)}},{path:"/pages/8fcda8/index.html",redirect:"/pages/8fcda8/"},{path:"/《React》笔记/01.核心概念/06.条件渲染.html",redirect:"/pages/8fcda8/"},{name:"v-6e6f09f5",path:"/pages/88f4b0/",component:bo,beforeEnter:(e,t,a)=>{ci("Layout","v-6e6f09f5").then(a)}},{path:"/pages/88f4b0/index.html",redirect:"/pages/88f4b0/"},{path:"/《React》笔记/01.核心概念/07.列表&Key.html",redirect:"/pages/88f4b0/"},{name:"v-95dfa2d2",path:"/pages/002db7/",component:bo,beforeEnter:(e,t,a)=>{ci("Layout","v-95dfa2d2").then(a)}},{path:"/pages/002db7/index.html",redirect:"/pages/002db7/"},{path:"/《React》笔记/01.核心概念/08.表单.html",redirect:"/pages/002db7/"},{name:"v-c82e0618",path:"/pages/f0e3d2/",component:bo,beforeEnter:(e,t,a)=>{ci("Layout","v-c82e0618").then(a)}},{path:"/pages/f0e3d2/index.html",redirect:"/pages/f0e3d2/"},{path:"/《React》笔记/01.核心概念/09.状态提升.html",redirect:"/pages/f0e3d2/"},{name:"v-2ee1cd15",path:"/pages/9ae8e8/",component:bo,beforeEnter:(e,t,a)=>{ci("Layout","v-2ee1cd15").then(a)}},{path:"/pages/9ae8e8/index.html",redirect:"/pages/9ae8e8/"},{path:"/《React》笔记/01.核心概念/10.组合vs继承.html",redirect:"/pages/9ae8e8/"},{name:"v-d0f8bc20",path:"/pages/c689bf/",component:bo,beforeEnter:(e,t,a)=>{ci("Layout","v-d0f8bc20").then(a)}},{path:"/pages/c689bf/index.html",redirect:"/pages/c689bf/"},{path:"/《React》笔记/01.核心概念/11.React哲学.html",redirect:"/pages/c689bf/"},{name:"v-0215e4d1",path:"/pages/4c13b9/",component:bo,beforeEnter:(e,t,a)=>{ci("Layout","v-0215e4d1").then(a)}},{path:"/pages/4c13b9/index.html",redirect:"/pages/4c13b9/"},{path:"/《React》笔记/03.Hook/01.Hook概述.html",redirect:"/pages/4c13b9/"},{name:"v-7119c973",path:"/pages/82baa3/",component:bo,beforeEnter:(e,t,a)=>{ci("Layout","v-7119c973").then(a)}},{path:"/pages/82baa3/index.html",redirect:"/pages/82baa3/"},{path:"/《React》笔记/03.Hook/02.使用State Hook.html",redirect:"/pages/82baa3/"},{name:"v-432af96a",path:"/pages/b7ec27/",component:bo,beforeEnter:(e,t,a)=>{ci("Layout","v-432af96a").then(a)}},{path:"/pages/b7ec27/index.html",redirect:"/pages/b7ec27/"},{path:"/《React》笔记/02.高级指引/01.高级指引.html",redirect:"/pages/b7ec27/"},{name:"v-406c1903",path:"/pages/72710d/",component:bo,beforeEnter:(e,t,a)=>{ci("Layout","v-406c1903").then(a)}},{path:"/pages/72710d/index.html",redirect:"/pages/72710d/"},{path:"/《React》笔记/03.Hook/03.使用Effect Hook.html",redirect:"/pages/72710d/"},{name:"v-5e7554b0",path:"/pages/723be7/",component:bo,beforeEnter:(e,t,a)=>{ci("Layout","v-5e7554b0").then(a)}},{path:"/pages/723be7/index.html",redirect:"/pages/723be7/"},{path:"/《React》笔记/03.Hook/04.Hook规则.html",redirect:"/pages/723be7/"},{name:"v-dbcde7e8",path:"/pages/cf1018/",component:bo,beforeEnter:(e,t,a)=>{ci("Layout","v-dbcde7e8").then(a)}},{path:"/pages/cf1018/index.html",redirect:"/pages/cf1018/"},{path:"/《React》笔记/03.Hook/05.自定义 Hook.html",redirect:"/pages/cf1018/"},{name:"v-65020eec",path:"/pages/87146f/",component:bo,beforeEnter:(e,t,a)=>{ci("Layout","v-65020eec").then(a)}},{path:"/pages/87146f/index.html",redirect:"/pages/87146f/"},{path:"/《React》笔记/04.案例演示/01.案例演示.html",redirect:"/pages/87146f/"},{name:"v-2cd86ced",path:"/pages/e05dce83e5129785/",component:bo,beforeEnter:(e,t,a)=>{ci("Layout","v-2cd86ced").then(a)}},{path:"/pages/e05dce83e5129785/index.html",redirect:"/pages/e05dce83e5129785/"},{path:"/《TypeScript 从零实现 axios》/01.初识 TypeScript/01.简介.html",redirect:"/pages/e05dce83e5129785/"},{name:"v-21a55aea",path:"/pages/064e0f7b6b6142c8/",component:bo,beforeEnter:(e,t,a)=>{ci("Layout","v-21a55aea").then(a)}},{path:"/pages/064e0f7b6b6142c8/index.html",redirect:"/pages/064e0f7b6b6142c8/"},{path:"/《TypeScript 从零实现 axios》/01.初识 TypeScript/02.安装 TypeScript.html",redirect:"/pages/064e0f7b6b6142c8/"},{name:"v-0db6efca",path:"/pages/c85249f40e7a3517/",component:bo,beforeEnter:(e,t,a)=>{ci("Layout","v-0db6efca").then(a)}},{path:"/pages/c85249f40e7a3517/index.html",redirect:"/pages/c85249f40e7a3517/"},{path:"/《TypeScript 从零实现 axios》/01.初识 TypeScript/03.编写第一个 TypeScript 程序.html",redirect:"/pages/c85249f40e7a3517/"},{name:"v-4dd95fae",path:"/pages/28672e2743bbc3a7/",component:bo,beforeEnter:(e,t,a)=>{ci("Layout","v-4dd95fae").then(a)}},{path:"/pages/28672e2743bbc3a7/index.html",redirect:"/pages/28672e2743bbc3a7/"},{path:"/《TypeScript 从零实现 axios》/02.TypeScript 常用语法/01.基础类型.html",redirect:"/pages/28672e2743bbc3a7/"},{name:"v-0efbff3a",path:"/pages/54add7f5cf78088e/",component:bo,beforeEnter:(e,t,a)=>{ci("Layout","v-0efbff3a").then(a)}},{path:"/pages/54add7f5cf78088e/index.html",redirect:"/pages/54add7f5cf78088e/"},{path:"/《TypeScript 从零实现 axios》/02.TypeScript 常用语法/02.变量声明.html",redirect:"/pages/54add7f5cf78088e/"},{name:"v-10986fa7",path:"/pages/870a51ba2a9edfad/",component:bo,beforeEnter:(e,t,a)=>{ci("Layout","v-10986fa7").then(a)}},{path:"/pages/870a51ba2a9edfad/index.html",redirect:"/pages/870a51ba2a9edfad/"},{path:"/《TypeScript 从零实现 axios》/02.TypeScript 常用语法/05.函数.html",redirect:"/pages/870a51ba2a9edfad/"},{name:"v-134b6dac",path:"/pages/54ea89b497ec3bb3/",component:bo,beforeEnter:(e,t,a)=>{ci("Layout","v-134b6dac").then(a)}},{path:"/pages/54ea89b497ec3bb3/index.html",redirect:"/pages/54ea89b497ec3bb3/"},{path:"/《TypeScript 从零实现 axios》/02.TypeScript 常用语法/03.接口.html",redirect:"/pages/54ea89b497ec3bb3/"},{name:"v-c0c0d1f6",path:"/pages/fad060bd9a8bfac6/",component:bo,beforeEnter:(e,t,a)=>{ci("Layout","v-c0c0d1f6").then(a)}},{path:"/pages/fad060bd9a8bfac6/index.html",redirect:"/pages/fad060bd9a8bfac6/"},{path:"/《TypeScript 从零实现 axios》/02.TypeScript 常用语法/04.类.html",redirect:"/pages/fad060bd9a8bfac6/"},{name:"v-443e8752",path:"/pages/8045759ec4ad3c01/",component:bo,beforeEnter:(e,t,a)=>{ci("Layout","v-443e8752").then(a)}},{path:"/pages/8045759ec4ad3c01/index.html",redirect:"/pages/8045759ec4ad3c01/"},{path:"/《TypeScript 从零实现 axios》/02.TypeScript 常用语法/06.泛型.html",redirect:"/pages/8045759ec4ad3c01/"},{name:"v-34858c9c",path:"/pages/7279420c899c505d/",component:bo,beforeEnter:(e,t,a)=>{ci("Layout","v-34858c9c").then(a)}},{path:"/pages/7279420c899c505d/index.html",redirect:"/pages/7279420c899c505d/"},{path:"/《TypeScript 从零实现 axios》/02.TypeScript 常用语法/07.类型推断.html",redirect:"/pages/7279420c899c505d/"},{name:"v-34bf194f",path:"/pages/3fb6c2f52ab398e3/",component:bo,beforeEnter:(e,t,a)=>{ci("Layout","v-34bf194f").then(a)}},{path:"/pages/3fb6c2f52ab398e3/index.html",redirect:"/pages/3fb6c2f52ab398e3/"},{path:"/《TypeScript 从零实现 axios》/02.TypeScript 常用语法/08.高级类型.html",redirect:"/pages/3fb6c2f52ab398e3/"},{name:"v-19d47872",path:"/pages/195af93fcc871b8b/",component:bo,beforeEnter:(e,t,a)=>{ci("Layout","v-19d47872").then(a)}},{path:"/pages/195af93fcc871b8b/index.html",redirect:"/pages/195af93fcc871b8b/"},{path:"/《TypeScript 从零实现 axios》/03.ts-axios 项目初始化/01.需求分析.html",redirect:"/pages/195af93fcc871b8b/"},{name:"v-f1863296",path:"/pages/6e11ac76475a2b3e/",component:bo,beforeEnter:(e,t,a)=>{ci("Layout","v-f1863296").then(a)}},{path:"/pages/6e11ac76475a2b3e/index.html",redirect:"/pages/6e11ac76475a2b3e/"},{path:"/《TypeScript 从零实现 axios》/03.ts-axios 项目初始化/02.初始化项目.html",redirect:"/pages/6e11ac76475a2b3e/"},{name:"v-46712360",path:"/pages/acfe1e0b401fa984/",component:bo,beforeEnter:(e,t,a)=>{ci("Layout","v-46712360").then(a)}},{path:"/pages/acfe1e0b401fa984/index.html",redirect:"/pages/acfe1e0b401fa984/"},{path:"/《TypeScript 从零实现 axios》/03.ts-axios 项目初始化/03.编写基础请求代码.html",redirect:"/pages/acfe1e0b401fa984/"},{name:"v-41e01991",path:"/pages/1313dae575f6dddf/",component:bo,beforeEnter:(e,t,a)=>{ci("Layout","v-41e01991").then(a)}},{path:"/pages/1313dae575f6dddf/index.html",redirect:"/pages/1313dae575f6dddf/"},{path:"/《TypeScript 从零实现 axios》/04.ts-axios 基础功能实现/01.处理请求 url 参数.html",redirect:"/pages/1313dae575f6dddf/"},{name:"v-732405d2",path:"/pages/887cd0918e2543d8/",component:bo,beforeEnter:(e,t,a)=>{ci("Layout","v-732405d2").then(a)}},{path:"/pages/887cd0918e2543d8/index.html",redirect:"/pages/887cd0918e2543d8/"},{path:"/《TypeScript 从零实现 axios》/04.ts-axios 基础功能实现/02.处理请求 body 数据.html",redirect:"/pages/887cd0918e2543d8/"},{name:"v-760c8ba6",path:"/pages/35c0ec1bb0b0faaf/",component:bo,beforeEnter:(e,t,a)=>{ci("Layout","v-760c8ba6").then(a)}},{path:"/pages/35c0ec1bb0b0faaf/index.html",redirect:"/pages/35c0ec1bb0b0faaf/"},{path:"/《TypeScript 从零实现 axios》/04.ts-axios 基础功能实现/03.处理请求 header.html",redirect:"/pages/35c0ec1bb0b0faaf/"},{name:"v-09f9a3f8",path:"/pages/a57debe141e1e4f4/",component:bo,beforeEnter:(e,t,a)=>{ci("Layout","v-09f9a3f8").then(a)}},{path:"/pages/a57debe141e1e4f4/index.html",redirect:"/pages/a57debe141e1e4f4/"},{path:"/《TypeScript 从零实现 axios》/04.ts-axios 基础功能实现/04.获取响应数据.html",redirect:"/pages/a57debe141e1e4f4/"},{name:"v-502122bc",path:"/pages/927161662ca32c24/",component:bo,beforeEnter:(e,t,a)=>{ci("Layout","v-502122bc").then(a)}},{path:"/pages/927161662ca32c24/index.html",redirect:"/pages/927161662ca32c24/"},{path:"/《TypeScript 从零实现 axios》/04.ts-axios 基础功能实现/05.处理响应 header.html",redirect:"/pages/927161662ca32c24/"},{name:"v-08b2163c",path:"/pages/922cb4268499dc3f/",component:bo,beforeEnter:(e,t,a)=>{ci("Layout","v-08b2163c").then(a)}},{path:"/pages/922cb4268499dc3f/index.html",redirect:"/pages/922cb4268499dc3f/"},{path:"/《TypeScript 从零实现 axios》/04.ts-axios 基础功能实现/06.处理响应 data.html",redirect:"/pages/922cb4268499dc3f/"},{name:"v-37643070",path:"/pages/6a8bef7b98dfdcf9/",component:bo,beforeEnter:(e,t,a)=>{ci("Layout","v-37643070").then(a)}},{path:"/pages/6a8bef7b98dfdcf9/index.html",redirect:"/pages/6a8bef7b98dfdcf9/"},{path:"/《TypeScript 从零实现 axios》/05.ts-axios 异常情况处理/01.错误处理.html",redirect:"/pages/6a8bef7b98dfdcf9/"},{name:"v-9a5aa036",path:"/pages/22d581d8c2860b8a/",component:bo,beforeEnter:(e,t,a)=>{ci("Layout","v-9a5aa036").then(a)}},{path:"/pages/22d581d8c2860b8a/index.html",redirect:"/pages/22d581d8c2860b8a/"},{path:"/《TypeScript 从零实现 axios》/05.ts-axios 异常情况处理/02.错误信息增强.html",redirect:"/pages/22d581d8c2860b8a/"},{name:"v-3f651f6a",path:"/pages/034e320f4af88bd4/",component:bo,beforeEnter:(e,t,a)=>{ci("Layout","v-3f651f6a").then(a)}},{path:"/pages/034e320f4af88bd4/index.html",redirect:"/pages/034e320f4af88bd4/"},{path:"/《TypeScript 从零实现 axios》/06.ts-axios 接口扩展/01.扩展接口.html",redirect:"/pages/034e320f4af88bd4/"},{name:"v-29539ae8",path:"/pages/8af227eae851ec97/",component:bo,beforeEnter:(e,t,a)=>{ci("Layout","v-29539ae8").then(a)}},{path:"/pages/8af227eae851ec97/index.html",redirect:"/pages/8af227eae851ec97/"},{path:"/《TypeScript 从零实现 axios》/06.ts-axios 接口扩展/02.axios 函数重载.html",redirect:"/pages/8af227eae851ec97/"},{name:"v-e638c7ec",path:"/pages/c4489d0bab02cc0c/",component:bo,beforeEnter:(e,t,a)=>{ci("Layout","v-e638c7ec").then(a)}},{path:"/pages/c4489d0bab02cc0c/index.html",redirect:"/pages/c4489d0bab02cc0c/"},{path:"/《TypeScript 从零实现 axios》/06.ts-axios 接口扩展/03.响应数据支持泛型.html",redirect:"/pages/c4489d0bab02cc0c/"},{name:"v-885bf1fc",path:"/pages/70651900f022f586/",component:bo,beforeEnter:(e,t,a)=>{ci("Layout","v-885bf1fc").then(a)}},{path:"/pages/70651900f022f586/index.html",redirect:"/pages/70651900f022f586/"},{path:"/《TypeScript 从零实现 axios》/07.ts-axios 拦截器实现/01.拦截器设计与实现.html",redirect:"/pages/70651900f022f586/"},{name:"v-cbb9b39c",path:"/pages/937e4de6b81edeca/",component:bo,beforeEnter:(e,t,a)=>{ci("Layout","v-cbb9b39c").then(a)}},{path:"/pages/937e4de6b81edeca/index.html",redirect:"/pages/937e4de6b81edeca/"},{path:"/《TypeScript 从零实现 axios》/08.ts-axios 配置化实现/01.合并配置的设计与实现.html",redirect:"/pages/937e4de6b81edeca/"},{name:"v-057da0ac",path:"/pages/f5b627bfebba87fc/",component:bo,beforeEnter:(e,t,a)=>{ci("Layout","v-057da0ac").then(a)}},{path:"/pages/f5b627bfebba87fc/index.html",redirect:"/pages/f5b627bfebba87fc/"},{path:"/《TypeScript 从零实现 axios》/08.ts-axios 配置化实现/02.请求和响应配置化.html",redirect:"/pages/f5b627bfebba87fc/"},{name:"v-1e486835",path:"/pages/7b49658c26f613bf/",component:bo,beforeEnter:(e,t,a)=>{ci("Layout","v-1e486835").then(a)}},{path:"/pages/7b49658c26f613bf/index.html",redirect:"/pages/7b49658c26f613bf/"},{path:"/《TypeScript 从零实现 axios》/08.ts-axios 配置化实现/03.扩展 create 静态接口.html",redirect:"/pages/7b49658c26f613bf/"},{name:"v-0e979642",path:"/pages/fdc6da5372397430/",component:bo,beforeEnter:(e,t,a)=>{ci("Layout","v-0e979642").then(a)}},{path:"/pages/fdc6da5372397430/index.html",redirect:"/pages/fdc6da5372397430/"},{path:"/《TypeScript 从零实现 axios》/09.ts-axios 取消功能实现/01.取消功能的设计与实现.html",redirect:"/pages/fdc6da5372397430/"},{name:"v-3030d1d7",path:"/pages/5dce43eba796a2ab/",component:bo,beforeEnter:(e,t,a)=>{ci("Layout","v-3030d1d7").then(a)}},{path:"/pages/5dce43eba796a2ab/index.html",redirect:"/pages/5dce43eba796a2ab/"},{path:"/《TypeScript 从零实现 axios》/10.ts-axios 更多功能实现/01.withCredentials.html",redirect:"/pages/5dce43eba796a2ab/"},{name:"v-0ed48d6b",path:"/pages/390cb70e2b619449/",component:bo,beforeEnter:(e,t,a)=>{ci("Layout","v-0ed48d6b").then(a)}},{path:"/pages/390cb70e2b619449/index.html",redirect:"/pages/390cb70e2b619449/"},{path:"/《TypeScript 从零实现 axios》/10.ts-axios 更多功能实现/02.XSRF 防御.html",redirect:"/pages/390cb70e2b619449/"},{name:"v-06765d1e",path:"/pages/1376fd897809036e/",component:bo,beforeEnter:(e,t,a)=>{ci("Layout","v-06765d1e").then(a)}},{path:"/pages/1376fd897809036e/index.html",redirect:"/pages/1376fd897809036e/"},{path:"/《TypeScript 从零实现 axios》/10.ts-axios 更多功能实现/03.上传和下载的进度监控.html",redirect:"/pages/1376fd897809036e/"},{name:"v-4f1ef2f2",path:"/pages/89cd6496c23159ae/",component:bo,beforeEnter:(e,t,a)=>{ci("Layout","v-4f1ef2f2").then(a)}},{path:"/pages/89cd6496c23159ae/index.html",redirect:"/pages/89cd6496c23159ae/"},{path:"/《TypeScript 从零实现 axios》/10.ts-axios 更多功能实现/04.HTTP 授权.html",redirect:"/pages/89cd6496c23159ae/"},{name:"v-5a69f9ba",path:"/pages/40b41ce8e8159567/",component:bo,beforeEnter:(e,t,a)=>{ci("Layout","v-5a69f9ba").then(a)}},{path:"/pages/40b41ce8e8159567/index.html",redirect:"/pages/40b41ce8e8159567/"},{path:"/《TypeScript 从零实现 axios》/10.ts-axios 更多功能实现/05.自定义合法状态码.html",redirect:"/pages/40b41ce8e8159567/"},{name:"v-4e983046",path:"/pages/7753b8141663e54a/",component:bo,beforeEnter:(e,t,a)=>{ci("Layout","v-4e983046").then(a)}},{path:"/pages/7753b8141663e54a/index.html",redirect:"/pages/7753b8141663e54a/"},{path:"/《TypeScript 从零实现 axios》/10.ts-axios 更多功能实现/06.自定义参数序列化.html",redirect:"/pages/7753b8141663e54a/"},{name:"v-6f0eb897",path:"/pages/0b9f2ee2b4dbb728/",component:bo,beforeEnter:(e,t,a)=>{ci("Layout","v-6f0eb897").then(a)}},{path:"/pages/0b9f2ee2b4dbb728/index.html",redirect:"/pages/0b9f2ee2b4dbb728/"},{path:"/《TypeScript 从零实现 axios》/10.ts-axios 更多功能实现/07.baseURL.html",redirect:"/pages/0b9f2ee2b4dbb728/"},{name:"v-42f2e73c",path:"/pages/c26b053540a7dafa/",component:bo,beforeEnter:(e,t,a)=>{ci("Layout","v-42f2e73c").then(a)}},{path:"/pages/c26b053540a7dafa/index.html",redirect:"/pages/c26b053540a7dafa/"},{path:"/《TypeScript 从零实现 axios》/10.ts-axios 更多功能实现/08.静态方法扩展.html",redirect:"/pages/c26b053540a7dafa/"},{name:"v-18ecbe8e",path:"/pages/df36888424843793/",component:bo,beforeEnter:(e,t,a)=>{ci("Layout","v-18ecbe8e").then(a)}},{path:"/pages/df36888424843793/index.html",redirect:"/pages/df36888424843793/"},{path:"/《TypeScript 从零实现 axios》/11.ts-axios 单元测试/01.前言.html",redirect:"/pages/df36888424843793/"},{name:"v-1f85b84c",path:"/pages/bf5c625a35757b37/",component:bo,beforeEnter:(e,t,a)=>{ci("Layout","v-1f85b84c").then(a)}},{path:"/pages/bf5c625a35757b37/index.html",redirect:"/pages/bf5c625a35757b37/"},{path:"/《TypeScript 从零实现 axios》/11.ts-axios 单元测试/02.Jest 安装和配置.html",redirect:"/pages/bf5c625a35757b37/"},{name:"v-4d52e948",path:"/pages/13f147a9b355c4c1/",component:bo,beforeEnter:(e,t,a)=>{ci("Layout","v-4d52e948").then(a)}},{path:"/pages/13f147a9b355c4c1/index.html",redirect:"/pages/13f147a9b355c4c1/"},{path:"/《TypeScript 从零实现 axios》/11.ts-axios 单元测试/03.辅助模块单元测试.html",redirect:"/pages/13f147a9b355c4c1/"},{name:"v-1991f250",path:"/pages/e1d15dec8634e6b5/",component:bo,beforeEnter:(e,t,a)=>{ci("Layout","v-1991f250").then(a)}},{path:"/pages/e1d15dec8634e6b5/index.html",redirect:"/pages/e1d15dec8634e6b5/"},{path:"/《TypeScript 从零实现 axios》/11.ts-axios 单元测试/04.请求模块单元测试.html",redirect:"/pages/e1d15dec8634e6b5/"},{name:"v-3a4a80df",path:"/pages/ddd86ec39b5dfe33/",component:bo,beforeEnter:(e,t,a)=>{ci("Layout","v-3a4a80df").then(a)}},{path:"/pages/ddd86ec39b5dfe33/index.html",redirect:"/pages/ddd86ec39b5dfe33/"},{path:"/《TypeScript 从零实现 axios》/11.ts-axios 单元测试/05.headers 模块单元测试.html",redirect:"/pages/ddd86ec39b5dfe33/"},{name:"v-785d24b6",path:"/pages/2eac7a0a0d644c15/",component:bo,beforeEnter:(e,t,a)=>{ci("Layout","v-785d24b6").then(a)}},{path:"/pages/2eac7a0a0d644c15/index.html",redirect:"/pages/2eac7a0a0d644c15/"},{path:"/《TypeScript 从零实现 axios》/11.ts-axios 单元测试/06.Axios 实例模块单元测试.html",redirect:"/pages/2eac7a0a0d644c15/"},{name:"v-f0c75cea",path:"/pages/97de6fd6293a2c6e/",component:bo,beforeEnter:(e,t,a)=>{ci("Layout","v-f0c75cea").then(a)}},{path:"/pages/97de6fd6293a2c6e/index.html",redirect:"/pages/97de6fd6293a2c6e/"},{path:"/《TypeScript 从零实现 axios》/11.ts-axios 单元测试/07.拦截器模块单元测试.html",redirect:"/pages/97de6fd6293a2c6e/"},{name:"v-5e4620e6",path:"/pages/cdf59840306f9e81/",component:bo,beforeEnter:(e,t,a)=>{ci("Layout","v-5e4620e6").then(a)}},{path:"/pages/cdf59840306f9e81/index.html",redirect:"/pages/cdf59840306f9e81/"},{path:"/《TypeScript 从零实现 axios》/11.ts-axios 单元测试/08.mergeConfig 模块单元测试.html",redirect:"/pages/cdf59840306f9e81/"},{name:"v-0963e9aa",path:"/pages/6fa16aee29527032/",component:bo,beforeEnter:(e,t,a)=>{ci("Layout","v-0963e9aa").then(a)}},{path:"/pages/6fa16aee29527032/index.html",redirect:"/pages/6fa16aee29527032/"},{path:"/《TypeScript 从零实现 axios》/11.ts-axios 单元测试/09.请求取消模块单元测试.html",redirect:"/pages/6fa16aee29527032/"},{name:"v-599969f4",path:"/pages/9572134781ba6a25/",component:bo,beforeEnter:(e,t,a)=>{ci("Layout","v-599969f4").then(a)}},{path:"/pages/9572134781ba6a25/index.html",redirect:"/pages/9572134781ba6a25/"},{path:"/《TypeScript 从零实现 axios》/11.ts-axios 单元测试/10.剩余模块单元测试.html",redirect:"/pages/9572134781ba6a25/"},{name:"v-65c6c1be",path:"/pages/3e5d5a45ad50f198/",component:bo,beforeEnter:(e,t,a)=>{ci("Layout","v-65c6c1be").then(a)}},{path:"/pages/3e5d5a45ad50f198/index.html",redirect:"/pages/3e5d5a45ad50f198/"},{path:"/《TypeScript 从零实现 axios》/12.ts-axios 部署与发布/01.ts-axios 编译与发布.html",redirect:"/pages/3e5d5a45ad50f198/"},{name:"v-f4e25d14",path:"/pages/c6bdbd5bd60adf5a/",component:bo,beforeEnter:(e,t,a)=>{ci("Layout","v-f4e25d14").then(a)}},{path:"/pages/c6bdbd5bd60adf5a/index.html",redirect:"/pages/c6bdbd5bd60adf5a/"},{path:"/《TypeScript 从零实现 axios》/12.ts-axios 部署与发布/02.引用 ts-axios 库.html",redirect:"/pages/c6bdbd5bd60adf5a/"},{name:"v-8f8e259a",path:"/pages/114158caa9e96df0/",component:bo,beforeEnter:(e,t,a)=>{ci("Layout","v-8f8e259a").then(a)}},{path:"/pages/114158caa9e96df0/index.html",redirect:"/pages/114158caa9e96df0/"},{path:"/《Vue》笔记/01.基础/00.MVVM模式.html",redirect:"/pages/114158caa9e96df0/"},{name:"v-168621d0",path:"/pages/73e4064340277b05/",component:bo,beforeEnter:(e,t,a)=>{ci("Layout","v-168621d0").then(a)}},{path:"/pages/73e4064340277b05/index.html",redirect:"/pages/73e4064340277b05/"},{path:"/《Vue》笔记/01.基础/30.v-if vs v-show.html",redirect:"/pages/73e4064340277b05/"},{name:"v-70f8a25c",path:"/pages/176808a1b5f843b8/",component:bo,beforeEnter:(e,t,a)=>{ci("Layout","v-70f8a25c").then(a)}},{path:"/pages/176808a1b5f843b8/index.html",redirect:"/pages/176808a1b5f843b8/"},{path:"/《Vue》笔记/01.基础/10.生命周期.html",redirect:"/pages/176808a1b5f843b8/"},{name:"v-66b2ee2f",path:"/pages/04783a6691cc9d06/",component:bo,beforeEnter:(e,t,a)=>{ci("Layout","v-66b2ee2f").then(a)}},{path:"/pages/04783a6691cc9d06/index.html",redirect:"/pages/04783a6691cc9d06/"},{path:"/《Vue》笔记/01.基础/35.列表渲染之数组、对象更新检测.html",redirect:"/pages/04783a6691cc9d06/"},{name:"v-3b18cac6",path:"/pages/351f72ecd9c41129/",component:bo,beforeEnter:(e,t,a)=>{ci("Layout","v-3b18cac6").then(a)}},{path:"/pages/351f72ecd9c41129/index.html",redirect:"/pages/351f72ecd9c41129/"},{path:"/《Vue》笔记/01.基础/20.计算属性 vs 方法 vs 侦听属性.html",redirect:"/pages/351f72ecd9c41129/"},{name:"v-2d391ad8",path:"/pages/83a1ab785e7fd70c/",component:bo,beforeEnter:(e,t,a)=>{ci("Layout","v-2d391ad8").then(a)}},{path:"/pages/83a1ab785e7fd70c/index.html",redirect:"/pages/83a1ab785e7fd70c/"},{path:"/《Vue》笔记/02.组件/36.使用组件的细节点.html",redirect:"/pages/83a1ab785e7fd70c/"},{name:"v-cc86006a",path:"/pages/0f19a1bcac14fd41/",component:bo,beforeEnter:(e,t,a)=>{ci("Layout","v-cc86006a").then(a)}},{path:"/pages/0f19a1bcac14fd41/index.html",redirect:"/pages/0f19a1bcac14fd41/"},{path:"/《Vue》笔记/02.组件/50.子组件派发事件和值给父组件.html",redirect:"/pages/0f19a1bcac14fd41/"},{name:"v-62450f0c",path:"/pages/a3080f60f6596eb4/",component:bo,beforeEnter:(e,t,a)=>{ci("Layout","v-62450f0c").then(a)}},{path:"/pages/a3080f60f6596eb4/index.html",redirect:"/pages/a3080f60f6596eb4/"},{path:"/《Vue》笔记/02.组件/52.Prop 验证 与 非 Prop 的 Attribute.html",redirect:"/pages/a3080f60f6596eb4/"},{name:"v-72d592b7",path:"/pages/07b384c2e6232e07/",component:bo,beforeEnter:(e,t,a)=>{ci("Layout","v-72d592b7").then(a)}},{path:"/pages/07b384c2e6232e07/index.html",redirect:"/pages/07b384c2e6232e07/"},{path:"/《Vue》笔记/02.组件/40.父组件给子组件传值.html",redirect:"/pages/07b384c2e6232e07/"},{name:"v-10b041f2",path:"/pages/809f4582d9ca9552/",component:bo,beforeEnter:(e,t,a)=>{ci("Layout","v-10b041f2").then(a)}},{path:"/pages/809f4582d9ca9552/index.html",redirect:"/pages/809f4582d9ca9552/"},{path:"/《Vue》笔记/02.组件/60.兄弟组件传值.html",redirect:"/pages/809f4582d9ca9552/"},{name:"v-670b6814",path:"/pages/9651417d08d1779d/",component:bo,beforeEnter:(e,t,a)=>{ci("Layout","v-670b6814").then(a)}},{path:"/pages/9651417d08d1779d/index.html",redirect:"/pages/9651417d08d1779d/"},{path:"/《Vue》笔记/02.组件/55.自定义事件.html",redirect:"/pages/9651417d08d1779d/"},{name:"v-1c39b7d2",path:"/pages/d408e64f666f146d/",component:bo,beforeEnter:(e,t,a)=>{ci("Layout","v-1c39b7d2").then(a)}},{path:"/pages/d408e64f666f146d/index.html",redirect:"/pages/d408e64f666f146d/"},{path:"/《Vue》笔记/02.组件/65.非父子组件传值.html",redirect:"/pages/d408e64f666f146d/"},{name:"v-ba5da5d4",path:"/pages/2e24dab728769e0c/",component:bo,beforeEnter:(e,t,a)=>{ci("Layout","v-ba5da5d4").then(a)}},{path:"/pages/2e24dab728769e0c/index.html",redirect:"/pages/2e24dab728769e0c/"},{path:"/《Vue》笔记/02.组件/70.父组件调用子组件方法并传入值.html",redirect:"/pages/2e24dab728769e0c/"},{name:"v-da46e29e",path:"/pages/055ecee9a4325386/",component:bo,beforeEnter:(e,t,a)=>{ci("Layout","v-da46e29e").then(a)}},{path:"/pages/055ecee9a4325386/index.html",redirect:"/pages/055ecee9a4325386/"},{path:"/《Vue》笔记/02.组件/75.插槽slot.html",redirect:"/pages/055ecee9a4325386/"},{name:"v-3491f880",path:"/pages/636ca33122e9a64b/",component:bo,beforeEnter:(e,t,a)=>{ci("Layout","v-3491f880").then(a)}},{path:"/pages/636ca33122e9a64b/index.html",redirect:"/pages/636ca33122e9a64b/"},{path:"/《Vue》笔记/02.组件/80.动态组件与 v-once 指令.html",redirect:"/pages/636ca33122e9a64b/"},{name:"v-63ce75d4",path:"/pages/184a96b493a97078/",component:bo,beforeEnter:(e,t,a)=>{ci("Layout","v-63ce75d4").then(a)}},{path:"/pages/184a96b493a97078/index.html",redirect:"/pages/184a96b493a97078/"},{path:"/《Vue》笔记/03.过渡&动画/110.transition过渡&动画.html",redirect:"/pages/184a96b493a97078/"},{name:"v-5f8dad4c",path:"/pages/e6cec47efa42d7f1/",component:bo,beforeEnter:(e,t,a)=>{ci("Layout","v-5f8dad4c").then(a)}},{path:"/pages/e6cec47efa42d7f1/index.html",redirect:"/pages/e6cec47efa42d7f1/"},{path:"/《Vue》笔记/02.组件/90.vue父子组件的生命周期顺序.html",redirect:"/pages/e6cec47efa42d7f1/"},{name:"v-4686b2d4",path:"/pages/3b0a20e70805fcea/",component:bo,beforeEnter:(e,t,a)=>{ci("Layout","v-4686b2d4").then(a)}},{path:"/pages/3b0a20e70805fcea/index.html",redirect:"/pages/3b0a20e70805fcea/"},{path:"/《Vue》笔记/03.过渡&动画/112.使用animate库.html",redirect:"/pages/3b0a20e70805fcea/"},{name:"v-4fec822e",path:"/pages/0aa92922ace6bb5e/",component:bo,beforeEnter:(e,t,a)=>{ci("Layout","v-4fec822e").then(a)}},{path:"/pages/0aa92922ace6bb5e/index.html",redirect:"/pages/0aa92922ace6bb5e/"},{path:"/《Vue》笔记/03.过渡&动画/120.transition-group列表过渡.html",redirect:"/pages/0aa92922ace6bb5e/"},{name:"v-705e0c86",path:"/pages/bd36a3c1bc3e0821/",component:bo,beforeEnter:(e,t,a)=>{ci("Layout","v-705e0c86").then(a)}},{path:"/pages/bd36a3c1bc3e0821/index.html",redirect:"/pages/bd36a3c1bc3e0821/"},{path:"/《Vue》笔记/04.可复用性&组合/01.Mixin混入.html",redirect:"/pages/bd36a3c1bc3e0821/"},{name:"v-cf037608",path:"/pages/d00311f8174119b2/",component:bo,beforeEnter:(e,t,a)=>{ci("Layout","v-cf037608").then(a)}},{path:"/pages/d00311f8174119b2/index.html",redirect:"/pages/d00311f8174119b2/"},{path:"/《Vue》笔记/05.工具/10.Vue CLi v3 创建项目使用记录.html",redirect:"/pages/d00311f8174119b2/"},{name:"v-6bcc6732",path:"/pages/d9d62d6ab8ff99a6/",component:bo,beforeEnter:(e,t,a)=>{ci("Layout","v-6bcc6732").then(a)}},{path:"/pages/d9d62d6ab8ff99a6/index.html",redirect:"/pages/d9d62d6ab8ff99a6/"},{path:"/《Vue》笔记/06.规模化/100.vuex操作相关.html",redirect:"/pages/d9d62d6ab8ff99a6/"},{name:"v-45753986",path:"/pages/38ecac9a9b92f037/",component:bo,beforeEnter:(e,t,a)=>{ci("Layout","v-45753986").then(a)}},{path:"/pages/38ecac9a9b92f037/index.html",redirect:"/pages/38ecac9a9b92f037/"},{path:"/《Vue》笔记/06.规模化/140.路由懒加载.html",redirect:"/pages/38ecac9a9b92f037/"},{name:"v-8a781aac",path:"/pages/b30620/",component:bo,beforeEnter:(e,t,a)=>{ci("Layout","v-8a781aac").then(a)}},{path:"/pages/b30620/index.html",redirect:"/pages/b30620/"},{path:"/《Vue》笔记/10.Vuex/01.Vuex.html",redirect:"/pages/b30620/"},{name:"v-a86fccfe",path:"/pages/fb08e252dfd8fdfd/",component:bo,beforeEnter:(e,t,a)=>{ci("Layout","v-a86fccfe").then(a)}},{path:"/pages/fb08e252dfd8fdfd/index.html",redirect:"/pages/fb08e252dfd8fdfd/"},{path:"/《Vue》笔记/99.其他/80.Vue中的防抖函数封装和使用.html",redirect:"/pages/fb08e252dfd8fdfd/"},{name:"v-57e6e686",path:"/pages/30a94dbe96873b33/",component:bo,beforeEnter:(e,t,a)=>{ci("Layout","v-57e6e686").then(a)}},{path:"/pages/30a94dbe96873b33/index.html",redirect:"/pages/30a94dbe96873b33/"},{path:"/《Vue》笔记/99.其他/90.操作本地缓存.html",redirect:"/pages/30a94dbe96873b33/"},{name:"v-0aa90f3c",path:"/pages/a650b4a0ebfc9350/",component:bo,beforeEnter:(e,t,a)=>{ci("Layout","v-0aa90f3c").then(a)}},{path:"/pages/a650b4a0ebfc9350/index.html",redirect:"/pages/a650b4a0ebfc9350/"},{path:"/《ES6 教程》笔记/05.字符串的新增方法.html",redirect:"/pages/a650b4a0ebfc9350/"},{path:"*",component:bo}],yo={title:"",description:"",base:"/blog/",headTags:[["link",{rel:"icon",href:"/blog/img/favicon.ico"}],["meta",{name:"keywords",content:"前端博客,个人技术博客,前端,前端开发,前端框架,web前端,前端面试题,技术文档,学习,面试,JavaScript,js,ES6,TypeScript,vue,python,css3,html5,Node,git,github,markdown"}],["meta",{name:"theme-color",content:"#11a8cd"}]],pages:[{title:"前端",frontmatter:{pageComponent:{name:"Catalogue",data:{path:"01.前端",imgUrl:"/img/web.png",description:"JavaScript、ES6、Vue框架等前端技术"}},title:"前端",date:"2020-03-11T21:50:53.000Z",permalink:"/web/",sidebar:!1,article:!1,comment:!1,editLink:!1,author:{name:"heBody",link:"https://github.com/heBody"}},regularPath:"/00.%E7%9B%AE%E5%BD%95%E9%A1%B5/01.%E5%89%8D%E7%AB%AF.html",relativePath:"00.目录页/01.前端.md",key:"v-0673347d",path:"/web/",lastUpdated:"2022/12/14, 19:36:42",lastUpdatedTimestamp:1671017802e3},{title:"页面",frontmatter:{pageComponent:{name:"Catalogue",data:{path:"02.页面",imgUrl:"/img/ui.png",description:"html(5)/css(3),前端页面相关技术"}},title:"页面",date:"2020-03-11T21:50:54.000Z",permalink:"/ui/",sidebar:!1,article:!1,comment:!1,editLink:!1,author:{name:"heBody",link:"https://github.com/heBody"}},regularPath:"/00.%E7%9B%AE%E5%BD%95%E9%A1%B5/02.%E9%A1%B5%E9%9D%A2.html",relativePath:"00.目录页/02.页面.md",key:"v-4d3769a8",path:"/ui/",lastUpdated:"2022/12/14, 19:36:42",lastUpdatedTimestamp:1671017802e3},{title:"技术",frontmatter:{pageComponent:{name:"Catalogue",data:{path:"03.技术",imgUrl:"/img/other.png",description:"技术文档、教程、技巧、总结等文章"}},title:"技术",date:"2020-03-11T21:50:55.000Z",permalink:"/technology/",sidebar:!1,article:!1,comment:!1,editLink:!1,author:{name:"heBody",link:"https://github.com/heBody"}},regularPath:"/00.%E7%9B%AE%E5%BD%95%E9%A1%B5/03.%E6%8A%80%E6%9C%AF.html",relativePath:"00.目录页/03.技术.md",key:"v-6d5c9d43",path:"/technology/",lastUpdated:"2022/12/14, 19:36:42",lastUpdatedTimestamp:1671017802e3},{title:"更多",frontmatter:{pageComponent:{name:"Catalogue",data:{path:"04.更多",imgUrl:"/img/more.png",description:"学习、面试、在线工具等更多文章和页面"}},title:"更多",date:"2020-03-11T21:50:56.000Z",permalink:"/more/",sidebar:!1,article:!1,comment:!1,editLink:!1,author:{name:"heBody",link:"https://github.com/heBody"}},regularPath:"/00.%E7%9B%AE%E5%BD%95%E9%A1%B5/04.%E6%9B%B4%E5%A4%9A.html",relativePath:"00.目录页/04.更多.md",key:"v-4b655eaf",path:"/more/",lastUpdated:"2022/12/14, 19:36:42",lastUpdatedTimestamp:1671017802e3},{title:"33个非常实用的JavaScript一行代码",frontmatter:{title:"33个非常实用的JavaScript一行代码",date:"2021-11-02T09:51:37.000Z",permalink:"/pages/a61298/",categories:["前端","JavaScript文章"],tags:["JavaScript"],author:"CUGGZ"},regularPath:"/01.%E5%89%8D%E7%AB%AF/25.JavaScript%E6%96%87%E7%AB%A0/01.33%E4%B8%AA%E9%9D%9E%E5%B8%B8%E5%AE%9E%E7%94%A8%E7%9A%84JavaScript%E4%B8%80%E8%A1%8C%E4%BB%A3%E7%A0%81.html",relativePath:"01.前端/25.JavaScript文章/01.33个非常实用的JavaScript一行代码.md",key:"v-0670c8d3",path:"/pages/a61298/",headers:[{level:2,title:"一、日期处理",slug:"一、日期处理"},{level:3,title:"1. 检察日期是否有效",slug:"_1-检察日期是否有效"},{level:3,title:"2. 计算两个日期之间的间隔",slug:"_2-计算两个日期之间的间隔"},{level:3,title:"3. 查找日期位于一年中的第几天",slug:"_3-查找日期位于一年中的第几天"},{level:3,title:"4. 时间格式化",slug:"_4-时间格式化"},{level:2,title:"二、字符串处理",slug:"二、字符串处理"},{level:3,title:"1. 字符串首字母大写",slug:"_1-字符串首字母大写"},{level:3,title:"2. 翻转字符串",slug:"_2-翻转字符串"},{level:3,title:"3. 随机字符串",slug:"_3-随机字符串"},{level:3,title:"4. 截断字符串",slug:"_4-截断字符串"},{level:3,title:"5. 去除字符串中的HTML",slug:"_5-去除字符串中的html"},{level:2,title:"三、数组处理",slug:"三、数组处理"},{level:3,title:"1. 从数组中移除重复项",slug:"_1-从数组中移除重复项"},{level:3,title:"2. 判断数组是否为空",slug:"_2-判断数组是否为空"},{level:3,title:"3. 合并两个数组",slug:"_3-合并两个数组"},{level:2,title:"四、数字操作",slug:"四、数字操作"},{level:3,title:"1. 判断一个数是奇数还是偶数",slug:"_1-判断一个数是奇数还是偶数"},{level:3,title:"2. 获得一组数的平均值",slug:"_2-获得一组数的平均值"},{level:3,title:"3. 获取两个整数之间的随机整数",slug:"_3-获取两个整数之间的随机整数"},{level:3,title:"4. 指定位数四舍五入",slug:"_4-指定位数四舍五入"},{level:2,title:"五、颜色操作",slug:"五、颜色操作"},{level:3,title:"1. 将RGB转化为十六机制",slug:"_1-将rgb转化为十六机制"},{level:3,title:"2. 获取随机十六进制颜色",slug:"_2-获取随机十六进制颜色"},{level:2,title:"六、浏览器操作",slug:"六、浏览器操作"},{level:3,title:"1. 复制内容到剪切板",slug:"_1-复制内容到剪切板"},{level:3,title:"2. 清除所有cookie",slug:"_2-清除所有cookie"},{level:3,title:"3. 获取选中的文本",slug:"_3-获取选中的文本"},{level:3,title:"4. 检测是否是黑暗模式",slug:"_4-检测是否是黑暗模式"},{level:3,title:"5. 滚动到页面顶部",slug:"_5-滚动到页面顶部"},{level:3,title:"6. 判断当前标签页是否激活",slug:"_6-判断当前标签页是否激活"},{level:3,title:"7. 判断当前是否是苹果设备",slug:"_7-判断当前是否是苹果设备"},{level:3,title:"8. 是否滚动到页面底部",slug:"_8-是否滚动到页面底部"},{level:3,title:"9. 重定向到一个URL",slug:"_9-重定向到一个url"},{level:3,title:"10. 打开浏览器打印框",slug:"_10-打开浏览器打印框"},{level:2,title:"七、其他操作",slug:"七、其他操作"},{level:3,title:"1. 随机布尔值",slug:"_1-随机布尔值"},{level:3,title:"2. 变量交换",slug:"_2-变量交换"},{level:3,title:"3. 获取变量的类型",slug:"_3-获取变量的类型"},{level:3,title:"4. 华氏度和摄氏度之间的转化",slug:"_4-华氏度和摄氏度之间的转化"},{level:3,title:"5. 检测对象是否为空",slug:"_5-检测对象是否为空"}],lastUpdated:"2022/12/14, 19:36:42",lastUpdatedTimestamp:1671017802e3},{title:"new命令原理",frontmatter:{title:"new命令原理",date:"2019-12-25T14:27:01.000Z",permalink:"/pages/8143cc480faf9a11",categories:["前端","JavaScript文章"],tags:[null],author:{name:"heBody",link:"https://github.com/heBody"}},regularPath:"/01.%E5%89%8D%E7%AB%AF/25.JavaScript%E6%96%87%E7%AB%A0/02.new%E5%91%BD%E4%BB%A4%E5%8E%9F%E7%90%86.html",relativePath:"01.前端/25.JavaScript文章/02.new命令原理.md",key:"v-3e16426a",path:"/pages/8143cc480faf9a11/",excerpt:'<h1 id="new命令原理"><a class="header-anchor" href="#new命令原理">#</a> new命令原理</h1>\n<p>使用new命令时,它后面的函数依次执行下面的步骤:</p>\n<ol>\n<li>创建一个空对象,作为将要返回的实例对象。</li>\n<li>将这个空对象的原型,指向构造函数的prototype属性。</li>\n<li>将这个空对象赋值给函数内部的this关键字。</li>\n<li>开始执行构造函数内部的代码。</li>\n<li>如果构造函数内有返回值且为对象类型,则返回该对象,否则返回上面创建的实例对象。</li>\n</ol>\n',lastUpdated:"2022/12/14, 19:36:42",lastUpdatedTimestamp:1671017802e3},{title:"ES5面向对象",frontmatter:{title:"ES5面向对象",date:"2020-02-22T10:35:43.000Z",permalink:"/pages/b1af5cb8996363c5",categories:["前端","JavaScript文章"],tags:[null],author:{name:"heBody",link:"https://github.com/heBody"}},regularPath:"/01.%E5%89%8D%E7%AB%AF/25.JavaScript%E6%96%87%E7%AB%A0/03.ES5%E9%9D%A2%E5%90%91%E5%AF%B9%E8%B1%A1.html",relativePath:"01.前端/25.JavaScript文章/03.ES5面向对象.md",key:"v-c1e785ce",path:"/pages/b1af5cb8996363c5/",lastUpdated:"2022/12/14, 19:36:42",lastUpdatedTimestamp:1671017802e3},{title:"ES6面向对象",frontmatter:{title:"ES6面向对象",date:"2019-12-25T14:27:01.000Z",permalink:"/pages/1f4123be6f45abcd",categories:["前端","JavaScript文章"],tags:[null],author:{name:"heBody",link:"https://github.com/heBody"}},regularPath:"/01.%E5%89%8D%E7%AB%AF/25.JavaScript%E6%96%87%E7%AB%A0/04.ES6%E9%9D%A2%E5%90%91%E5%AF%B9%E8%B1%A1.html",relativePath:"01.前端/25.JavaScript文章/04.ES6面向对象.md",key:"v-5c0d4395",path:"/pages/1f4123be6f45abcd/",lastUpdated:"2022/12/14, 19:36:42",lastUpdatedTimestamp:1671017802e3},{title:"多种数组去重性能对比",frontmatter:{title:"多种数组去重性能对比",date:"2019-12-25T14:27:01.000Z",permalink:"/pages/e808fba1fa8fbab2",categories:["前端","JavaScript文章"],tags:[null],author:{name:"heBody",link:"https://github.com/heBody"}},regularPath:"/01.%E5%89%8D%E7%AB%AF/25.JavaScript%E6%96%87%E7%AB%A0/06.%E5%A4%9A%E7%A7%8D%E6%95%B0%E7%BB%84%E5%8E%BB%E9%87%8D%E6%80%A7%E8%83%BD%E5%AF%B9%E6%AF%94.html",relativePath:"01.前端/25.JavaScript文章/06.多种数组去重性能对比.md",key:"v-39670695",path:"/pages/e808fba1fa8fbab2/",headers:[{level:2,title:"测试模板",slug:"测试模板"},{level:2,title:"测试代码",slug:"测试代码"},{level:2,title:"结论",slug:"结论"}],lastUpdated:"2022/12/14, 19:36:42",lastUpdatedTimestamp:1671017802e3},{title:"比typeof运算符更准确的类型判断",frontmatter:{title:"比typeof运算符更准确的类型判断",date:"2020-04-13T15:56:54.000Z",permalink:"/pages/fd4a16d56b83c1bc",categories:["前端","JavaScript文章"],tags:[null],author:{name:"heBody",link:"https://github.com/heBody"}},regularPath:"/01.%E5%89%8D%E7%AB%AF/25.JavaScript%E6%96%87%E7%AB%A0/100.%E6%AF%94typeof%E8%BF%90%E7%AE%97%E7%AC%A6%E6%9B%B4%E5%87%86%E7%A1%AE%E7%9A%84%E7%B1%BB%E5%9E%8B%E5%88%A4%E6%96%AD.html",relativePath:"01.前端/25.JavaScript文章/100.比typeof运算符更准确的类型判断.md",key:"v-07b6afc1",path:"/pages/fd4a16d56b83c1bc/",lastUpdated:"2022/12/14, 19:36:42",lastUpdatedTimestamp:1671017802e3},{title:"四级文件(测试)",frontmatter:{title:"四级文件(测试)",date:"2020-12-11T11:15:53.000Z",permalink:"/pages/8481d1/",categories:["前端","JavaScript文章","三级目录"],tags:[null],author:{name:"heBody",link:"https://github.com/heBody"}},regularPath:"/01.%E5%89%8D%E7%AB%AF/25.JavaScript%E6%96%87%E7%AB%A0/1110.%E4%B8%89%E7%BA%A7%E7%9B%AE%E5%BD%95/00.%E5%9B%9B%E7%BA%A7%E6%96%87%E4%BB%B6.html",relativePath:"01.前端/25.JavaScript文章/1110.三级目录/00.四级文件.md",key:"v-18dee076",path:"/pages/8481d1/",headers:[{level:2,title:"测试文件",slug:"测试文件"}],lastUpdated:"2022/12/14, 19:36:42",lastUpdatedTimestamp:1671017802e3},{title:"JS随机打乱数组",frontmatter:{title:"JS随机打乱数组",date:"2020-02-08T17:42:03.000Z",permalink:"/pages/40b4db2d38ba85f2",categories:["前端","JavaScript文章"],tags:[null],author:{name:"heBody",link:"https://github.com/heBody"}},regularPath:"/01.%E5%89%8D%E7%AB%AF/25.JavaScript%E6%96%87%E7%AB%A0/50.js%E9%9A%8F%E6%9C%BA%E6%89%93%E4%B9%B1%E6%95%B0%E7%BB%84.html",relativePath:"01.前端/25.JavaScript文章/50.js随机打乱数组.md",key:"v-339a55f0",path:"/pages/40b4db2d38ba85f2/",lastUpdated:"2022/12/14, 19:36:42",lastUpdatedTimestamp:1671017802e3},{title:"判断是否为移动端浏览器",frontmatter:{title:"判断是否为移动端浏览器",date:"2020-01-04T15:25:11.000Z",permalink:"/pages/40f623be692cf8bc",categories:["前端","JavaScript文章"],tags:[null],author:{name:"heBody",link:"https://github.com/heBody"}},regularPath:"/01.%E5%89%8D%E7%AB%AF/25.JavaScript%E6%96%87%E7%AB%A0/60.%E5%88%A4%E6%96%AD%E6%98%AF%E5%90%A6%E4%B8%BA%E7%A7%BB%E5%8A%A8%E7%AB%AF%E6%B5%8F%E8%A7%88%E5%99%A8.html",relativePath:"01.前端/25.JavaScript文章/60.判断是否为移动端浏览器.md",key:"v-b6a4de44",path:"/pages/40f623be692cf8bc/",lastUpdated:"2022/12/14, 19:36:42",lastUpdatedTimestamp:1671017802e3},{title:"将一维数组按指定长度转为二维数组",frontmatter:{title:"将一维数组按指定长度转为二维数组",date:"2020-02-23T13:49:31.000Z",permalink:"/pages/f1acb712033ac8da",categories:["前端","JavaScript文章"],tags:[null],author:{name:"heBody",link:"https://github.com/heBody"}},regularPath:"/01.%E5%89%8D%E7%AB%AF/25.JavaScript%E6%96%87%E7%AB%A0/70.%E5%B0%86%E4%B8%80%E7%BB%B4%E6%95%B0%E7%BB%84%E6%8C%89%E6%8C%87%E5%AE%9A%E9%95%BF%E5%BA%A6%E8%BD%AC%E4%B8%BA%E4%BA%8C%E7%BB%B4%E6%95%B0%E7%BB%84.html",relativePath:"01.前端/25.JavaScript文章/70.将一维数组按指定长度转为二维数组.md",key:"v-197df1cb",path:"/pages/f1acb712033ac8da/",headers:[{level:2,title:"应用场景示例",slug:"应用场景示例"}],lastUpdated:"2022/12/14, 19:36:42",lastUpdatedTimestamp:1671017802e3},{title:"防抖与节流函数",frontmatter:{title:"防抖与节流函数",date:"2020-02-29T15:07:47.000Z",permalink:"/pages/0f6a0ac99b62ede5",categories:["前端","JavaScript文章"],tags:[null],author:{name:"heBody",link:"https://github.com/heBody"}},regularPath:"/01.%E5%89%8D%E7%AB%AF/25.JavaScript%E6%96%87%E7%AB%A0/80.%E9%98%B2%E6%8A%96%E4%B8%8E%E8%8A%82%E6%B5%81%E5%87%BD%E6%95%B0.html",relativePath:"01.前端/25.JavaScript文章/80.防抖与节流函数.md",key:"v-66343f5a",path:"/pages/0f6a0ac99b62ede5/",headers:[{level:2,title:"防抖函数",slug:"防抖函数"},{level:3,title:"封装",slug:"封装"},{level:2,title:"节流函数",slug:"节流函数"},{level:3,title:"封装",slug:"封装-2"},{level:2,title:"应用场景",slug:"应用场景"},{level:3,title:"防抖应用场景",slug:"防抖应用场景"},{level:3,title:"节流的应用场景",slug:"节流的应用场景"},{level:2,title:"示例",slug:"示例"}],excerpt:'<h1 id="防抖与节流函数"><a class="header-anchor" href="#防抖与节流函数">#</a> 防抖与节流函数</h1>\n<p>防抖和节流的作用都是在高频事件中防止函数被多次调用,是一种性能优化的方案。</p>\n<p>区别在于,防抖函数只会在高频事件结束后n毫秒调用一次函数,节流函数会在高频事件触发过程当中每隔n毫秒调用一次函数。</p>\n',lastUpdated:"2022/12/14, 19:36:42",lastUpdatedTimestamp:1671017802e3},{title:"JS获取和修改url参数",frontmatter:{title:"JS获取和修改url参数",date:"2020-03-05T12:45:37.000Z",permalink:"/pages/7a91be2d502346ce",categories:["前端","JavaScript文章"],tags:[null],author:{name:"heBody",link:"https://github.com/heBody"}},regularPath:"/01.%E5%89%8D%E7%AB%AF/25.JavaScript%E6%96%87%E7%AB%A0/90.JS%E8%8E%B7%E5%8F%96%E5%92%8C%E4%BF%AE%E6%94%B9url%E5%8F%82%E6%95%B0.html",relativePath:"01.前端/25.JavaScript文章/90.JS获取和修改url参数.md",key:"v-fe6d8e92",path:"/pages/7a91be2d502346ce/",headers:[{level:2,title:"获取url参数",slug:"获取url参数"},{level:2,title:"修改url参数",slug:"修改url参数"},{level:2,title:"不刷新页面修改url参数",slug:"不刷新页面修改url参数"},{level:2,title:"URL 的编码和解码",slug:"url-的编码和解码"}],lastUpdated:"2022/12/14, 19:36:42",lastUpdatedTimestamp:1671017802e3},{title:"《JavaScript教程》笔记",frontmatter:{pageComponent:{name:"Catalogue",data:{path:"《JavaScript教程》笔记",imgUrl:"https://cdn.jsdelivr.net/gh/xugaoyi/image_store/blog/20200112120340.png",description:"本章内容为博主在原教程基础上添加学习笔记,教程版权归原作者所有。来源:<a href='https://wangdoc.com/javascript/' target='_blank'>JavaScript教程</a>"}},title:"《JavaScript教程》笔记",date:"2020-01-12T11:51:53.000Z",permalink:"/note/javascript/",article:!1,comment:!1,editLink:!1,author:{name:"heBody",link:"https://github.com/heBody"}},regularPath:"/01.%E5%89%8D%E7%AB%AF/40.%E5%AD%A6%E4%B9%A0%E7%AC%94%E8%AE%B0/00.%E3%80%8AJavaScript%E6%95%99%E7%A8%8B%E3%80%8B%E7%AC%94%E8%AE%B0.html",relativePath:"01.前端/40.学习笔记/00.《JavaScript教程》笔记.md",key:"v-33c90cbc",path:"/note/javascript/",lastUpdated:"2022/12/14, 19:36:42",lastUpdatedTimestamp:1671017802e3},{title:"《JavaScript高级程序设计》笔记",frontmatter:{title:"《JavaScript高级程序设计》笔记",date:"2020-06-12T12:39:01.000Z",permalink:"/note/js/",categories:["笔记"],tags:["笔记","红宝书"],author:{name:"heBody",link:"https://github.com/heBody"}},regularPath:"/01.%E5%89%8D%E7%AB%AF/40.%E5%AD%A6%E4%B9%A0%E7%AC%94%E8%AE%B0/05.%E3%80%8AJavaScript%E9%AB%98%E7%BA%A7%E7%A8%8B%E5%BA%8F%E8%AE%BE%E8%AE%A1%E3%80%8B%E7%AC%94%E8%AE%B0.html",relativePath:"01.前端/40.学习笔记/05.《JavaScript高级程序设计》笔记.md",key:"v-d2af8b28",path:"/note/js/",headers:[{level:2,title:"第1章 JavaScript简介",slug:"第1章-javascript简介"},{level:2,title:"第2章 在HTML中使用JavaScript",slug:"第2章-在html中使用javascript"},{level:2,title:"第3章 基本概念",slug:"第3章-基本概念"},{level:2,title:"第4章 变量、作用域和内存问题",slug:"第4章-变量、作用域和内存问题"},{level:2,title:"第5章 引用类型",slug:"第5章-引用类型"},{level:3,title:"Array类型",slug:"array类型"},{level:4,title:"join() 转换方法 (不改原数组)",slug:"join-转换方法-不改原数组"},{level:4,title:"栈方法,后进先出 push() 、pop() (改变原数组)",slug:"栈方法-后进先出-push-、pop-改变原数组"},{level:4,title:"队列方法,先进先出 push()、shift() 、unshift() (改变原数组)",slug:"队列方法-先进先出-push-、shift-、unshift-改变原数组"},{level:4,title:"重排序方法 reverse() 反转 sort() 排序 (改变原数组)",slug:"重排序方法-reverse-反转-sort-排序-改变原数组"},{level:4,title:"操作方法 concat() 拼接,slice() 切片,splice() 移接",slug:"操作方法-concat-拼接-slice-切片-splice-移接"},{level:4,title:"位置方法 indexOf()、lastIndexOf()",slug:"位置方法-indexof-、lastindexof"},{level:4,title:"迭代方法 every()、some() 、filter()、map() 、forEach() (都不会改变原数组)",slug:"迭代方法-every-、some-、filter-、map-、foreach-都不会改变原数组"},{level:4,title:"归并方法 reduce() reduceRight()",slug:"归并方法-reduce-reduceright"},{level:2,title:"第6章 面向对象的程序设计",slug:"第6章-面向对象的程序设计"},{level:3,title:"6.1 理解对象",slug:"_6-1-理解对象"},{level:4,title:"6.1.1 对象的属性",slug:"_6-1-1-对象的属性"},{level:5,title:"1.数据属性",slug:"_1-数据属性"},{level:5,title:"2.访问器属性",slug:"_2-访问器属性"},{level:4,title:"6.1.2 定义多个属性",slug:"_6-1-2-定义多个属性"},{level:4,title:"6.1.3 读取属性的特性(描述符对象)",slug:"_6-1-3-读取属性的特性-描述符对象"},{level:3,title:"6.2 创建对象",slug:"_6-2-创建对象"},{level:4,title:"6.2.1 工厂模式",slug:"_6-2-1-工厂模式"},{level:2,title:"第7章 函数表达式",slug:"第7章-函数表达式"},{level:2,title:"第8章 BOM",slug:"第8章-bom"},{level:2,title:"第9章 客户端检测",slug:"第9章-客户端检测"},{level:2,title:"第10章 DOM",slug:"第10章-dom"},{level:2,title:"第11章 DOM扩展",slug:"第11章-dom扩展"},{level:2,title:"第12章 DOM2和DOM3",slug:"第12章-dom2和dom3"},{level:2,title:"第13章 事件",slug:"第13章-事件"},{level:2,title:"第14章 表单脚本",slug:"第14章-表单脚本"},{level:2,title:"第15章 使用Canvas绘图",slug:"第15章-使用canvas绘图"},{level:2,title:"第16章 HTML5脚本编程",slug:"第16章-html5脚本编程"},{level:2,title:"第17章 错误处理与调试",slug:"第17章-错误处理与调试"},{level:2,title:"第18章 JavaScript与XML",slug:"第18章-javascript与xml"},{level:2,title:"第19章 E4X",slug:"第19章-e4x"},{level:2,title:"第20章 JSON",slug:"第20章-json"},{level:2,title:"第21章 Ajax与Comet",slug:"第21章-ajax与comet"},{level:2,title:"第22章 高级技巧",slug:"第22章-高级技巧"},{level:2,title:"第23章 离线应用与客户端存储",slug:"第23章-离线应用与客户端存储"},{level:2,title:"第24章 最佳实践",slug:"第24章-最佳实践"},{level:2,title:"第25章 新兴的API",slug:"第25章-新兴的api"}],lastUpdated:"2022/12/14, 19:36:42",lastUpdatedTimestamp:1671017802e3},{title:"《ES6 教程》笔记",frontmatter:{pageComponent:{name:"Catalogue",data:{path:"《ES6 教程》笔记",imgUrl:"https://cdn.jsdelivr.net/gh/xugaoyi/image_store/blog/20200112160453.png",description:"本章内容为博主在原教程基础上添加学习笔记,教程版权归原作者所有。来源:<a href='https://es6.ruanyifeng.com/' target='_blank'>ES6教程</a>"}},title:"《ES6 教程》笔记",date:"2020-01-12T15:49:22.000Z",permalink:"/note/es6/",article:!1,comment:!1,editLink:!1,author:{name:"heBody",link:"https://github.com/heBody"}},regularPath:"/01.%E5%89%8D%E7%AB%AF/40.%E5%AD%A6%E4%B9%A0%E7%AC%94%E8%AE%B0/10.%E3%80%8AES6%20%E6%95%99%E7%A8%8B%E3%80%8B%E7%AC%94%E8%AE%B0.html",relativePath:"01.前端/40.学习笔记/10.《ES6 教程》笔记.md",key:"v-2a8a0e65",path:"/note/es6/",lastUpdated:"2022/12/14, 19:36:42",lastUpdatedTimestamp:1671017802e3},{title:"《Vue》笔记",frontmatter:{pageComponent:{name:"Catalogue",data:{path:"《Vue》笔记",imgUrl:"https://cdn.jsdelivr.net/gh/xugaoyi/image_store/blog/20200204143633.png",description:"本章内容是博主的Vue学习笔记,非教程文档,请以官方文档为准。"}},title:"《Vue》笔记",date:"2020-02-04T12:16:12.000Z",permalink:"/note/vue/",article:!1,comment:!1,editLink:!1,author:{name:"heBody",link:"https://github.com/heBody"}},regularPath:"/01.%E5%89%8D%E7%AB%AF/40.%E5%AD%A6%E4%B9%A0%E7%AC%94%E8%AE%B0/20.%E3%80%8AVue%E3%80%8B%E7%AC%94%E8%AE%B0.html",relativePath:"01.前端/40.学习笔记/20.《Vue》笔记.md",key:"v-314a49ac",path:"/note/vue/",lastUpdated:"2022/12/14, 19:36:42",lastUpdatedTimestamp:1671017802e3},{title:"《React》笔记",frontmatter:{pageComponent:{name:"Catalogue",data:{path:"《React》笔记",imgUrl:"data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9Ii0xMS41IC0xMC4yMzE3NCAyMyAyMC40NjM0OCI+CiAgPHRpdGxlPlJlYWN0IExvZ288L3RpdGxlPgogIDxjaXJjbGUgY3g9IjAiIGN5PSIwIiByPSIyLjA1IiBmaWxsPSIjNjFkYWZiIi8+CiAgPGcgc3Ryb2tlPSIjNjFkYWZiIiBzdHJva2Utd2lkdGg9IjEiIGZpbGw9Im5vbmUiPgogICAgPGVsbGlwc2Ugcng9IjExIiByeT0iNC4yIi8+CiAgICA8ZWxsaXBzZSByeD0iMTEiIHJ5PSI0LjIiIHRyYW5zZm9ybT0icm90YXRlKDYwKSIvPgogICAgPGVsbGlwc2Ugcng9IjExIiByeT0iNC4yIiB0cmFuc2Zvcm09InJvdGF0ZSgxMjApIi8+CiAgPC9nPgo8L3N2Zz4K",description:"本章内容是博主的React学习笔记,非教程文档,请以官方文档为准。"}},title:"《React》笔记",date:"2021-03-25T19:50:12.000Z",permalink:"/note/react/",article:!1,comment:!1,editLink:!1,author:{name:"heBody",link:"https://github.com/heBody"}},regularPath:"/01.%E5%89%8D%E7%AB%AF/40.%E5%AD%A6%E4%B9%A0%E7%AC%94%E8%AE%B0/25.%E3%80%8AReact%E3%80%8B%E7%AC%94%E8%AE%B0.html",relativePath:"01.前端/40.学习笔记/25.《React》笔记.md",key:"v-1950e958",path:"/note/react/",lastUpdated:"2022/12/14, 19:36:42",lastUpdatedTimestamp:1671017802e3},{title:"《TypeScript 从零实现 axios》",frontmatter:{pageComponent:{name:"Catalogue",data:{path:"《TypeScript 从零实现 axios》",imgUrl:"https://cdn.jsdelivr.net/gh/xugaoyi/image_store/blog/20200105104632.png",description:"学习使用 TypeScript 从零实现 axios 库"}},title:"《TypeScript 从零实现 axios》",date:"2020-01-05T10:40:48.000Z",permalink:"/note/typescript-axios/",article:!1,comment:!1,editLink:!1,author:{name:"heBody",link:"https://github.com/heBody"}},regularPath:"/01.%E5%89%8D%E7%AB%AF/40.%E5%AD%A6%E4%B9%A0%E7%AC%94%E8%AE%B0/30.%E3%80%8ATypeScript%20%E4%BB%8E%E9%9B%B6%E5%AE%9E%E7%8E%B0%20axios%E3%80%8B.html",relativePath:"01.前端/40.学习笔记/30.《TypeScript 从零实现 axios》.md",key:"v-383afc2c",path:"/note/typescript-axios/",lastUpdated:"2022/12/14, 19:36:42",lastUpdatedTimestamp:1671017802e3},{title:"《Git》学习笔记",frontmatter:{pageComponent:{name:"Catalogue",data:{path:"《Git》学习笔记",imgUrl:"https://avatars3.githubusercontent.com/u/18133?s=200&v=4",description:"<a href='https://git-scm.com/book/zh/v2' target='_blank'>Git官网文档</a>的学习笔记,以官方文档为准。"}},title:"《Git》学习笔记",date:"2020-11-18T17:40:48.000Z",permalink:"/note/git/",article:!1,comment:!1,editLink:!1,author:{name:"heBody",link:"https://github.com/heBody"}},regularPath:"/01.%E5%89%8D%E7%AB%AF/40.%E5%AD%A6%E4%B9%A0%E7%AC%94%E8%AE%B0/33.%E3%80%8AGit%E3%80%8B%E5%AD%A6%E4%B9%A0%E7%AC%94%E8%AE%B0.html",relativePath:"01.前端/40.学习笔记/33.《Git》学习笔记.md",key:"v-cd2e9a3e",path:"/note/git/",lastUpdated:"2022/12/14, 19:36:42",lastUpdatedTimestamp:1671017802e3},{title:"TypeScript笔记",frontmatter:{title:"TypeScript笔记",date:"2020-10-08T13:02:48.000Z",permalink:"/pages/51afd6/",categories:["前端","学习笔记"],tags:["TypeScript"],author:{name:"heBody",link:"https://github.com/heBody"}},regularPath:"/01.%E5%89%8D%E7%AB%AF/40.%E5%AD%A6%E4%B9%A0%E7%AC%94%E8%AE%B0/35.TypeScript%E7%AC%94%E8%AE%B0.html",relativePath:"01.前端/40.学习笔记/35.TypeScript笔记.md",key:"v-2bc02ef8",path:"/pages/51afd6/",headers:[{level:2,title:"类型注解",slug:"类型注解"},{level:3,title:"有哪些基础类型注解?",slug:"有哪些基础类型注解"},{level:3,title:"什么是类型注解和类型推断、类型断言?",slug:"什么是类型注解和类型推断、类型断言"},{level:3,title:"类型断言",slug:"类型断言"},{level:3,title:"对象的类型",slug:"对象的类型"},{level:3,title:"函数的类型注解",slug:"函数的类型注解"},{level:4,title:"函数中的this类型",slug:"函数中的this类型"},{level:4,title:"函数重载 (函数参数间的组合约定)",slug:"函数重载-函数参数间的组合约定"},{level:3,title:"数组的类型注解",slug:"数组的类型注解"},{level:2,title:"元组",slug:"元组"},{level:2,title:"接口",slug:"接口"},{level:2,title:"ES6 class类中应用TS",slug:"es6-class类中应用ts"},{level:3,title:"class类的修饰器",slug:"class类的修饰器"},{level:3,title:"class类的构造函数中使用类型校验",slug:"class类的构造函数中使用类型校验"},{level:3,title:"class类的getter、setter和static",slug:"class类的getter、setter和static"},{level:3,title:"class类的只读属性",slug:"class类的只读属性"},{level:3,title:"抽象类",slug:"抽象类"},{level:2,title:"联合类型和类型保护",slug:"联合类型和类型保护"},{level:2,title:"枚举",slug:"枚举"},{level:2,title:"泛型",slug:"泛型"},{level:3,title:"函数中的泛型使用",slug:"函数中的泛型使用"},{level:3,title:"class类中使用泛型",slug:"class类中使用泛型"},{level:2,title:"类型保护",slug:"类型保护"},{level:4,title:"typeof",slug:"typeof"},{level:4,title:"instanceof",slug:"instanceof"},{level:4,title:"in",slug:"in"},{level:4,title:"字面量类型保护",slug:"字面量类型保护"},{level:4,title:"自定义类型保护",slug:"自定义类型保护"},{level:2,title:"类型操作",slug:"类型操作"},{level:4,title:"typeof",slug:"typeof-2"},{level:4,title:"keyof",slug:"keyof"},{level:4,title:"in",slug:"in-2"},{level:2,title:"配置文件tsconfig.json",slug:"配置文件tsconfig-json"}],lastUpdated:"2022/12/14, 19:36:42",lastUpdatedTimestamp:1671017802e3},{title:"小程序笔记",frontmatter:{title:"小程序笔记",date:"2019-12-25T14:27:01.000Z",permalink:"/note/wx-miniprogram/",tags:["小程序"],categories:["前端","学习笔记"],author:{name:"heBody",link:"https://github.com/heBody"}},regularPath:"/01.%E5%89%8D%E7%AB%AF/40.%E5%AD%A6%E4%B9%A0%E7%AC%94%E8%AE%B0/40.%E5%B0%8F%E7%A8%8B%E5%BA%8F%E7%AC%94%E8%AE%B0.html",relativePath:"01.前端/40.学习笔记/40.小程序笔记.md",key:"v-b1ff1b00",path:"/note/wx-miniprogram/",headers:[{level:2,title:"基础课程部分",slug:"基础课程部分"},{level:4,title:"微信公众平台",slug:"微信公众平台"},{level:5,title:"小程序文档API",slug:"小程序文档api"},{level:5,title:"微信开放社区",slug:"微信开放社区"},{level:4,title:"目录说明",slug:"目录说明"},{level:4,title:"文件说明",slug:"文件说明"},{level:5,title:"阻止事件冒泡",slug:"阻止事件冒泡"},{level:4,title:"第三方库",slug:"第三方库"},{level:4,title:"云开发",slug:"云开发"},{level:5,title:"云开发三大基础能力",slug:"云开发三大基础能力"},{level:5,title:"云函数",slug:"云函数"},{level:5,title:"云数据库",slug:"云数据库"},{level:5,title:"云存储",slug:"云存储"},{level:4,title:"云数据库能力",slug:"云数据库能力"},{level:4,title:"数据类型",slug:"数据类型"},{level:4,title:"操作云数据库",slug:"操作云数据库"},{level:4,title:"云数据库权限管理",slug:"云数据库权限管理"},{level:4,title:"操作云数据库",slug:"操作云数据库-2"},{level:2,title:"实战课程部分",slug:"实战课程部分"},{level:4,title:"serverless(无服务)",slug:"serverless-无服务"},{level:4,title:"云开发优势",slug:"云开发优势"},{level:4,title:"云开发提供能力",slug:"云开发提供能力"},{level:4,title:"appID",slug:"appid"},{level:4,title:"云开发项目默认目录结构",slug:"云开发项目默认目录结构"},{level:4,title:"云开发环境",slug:"云开发环境"},{level:4,title:"开发前的准备",slug:"开发前的准备"},{level:4,title:"project.config.json 文件说明",slug:"project-config-json-文件说明"},{level:4,title:"app.json",slug:"app-json"},{level:4,title:"代码规范",slug:"代码规范"},{level:4,title:"《音乐》页面开发",slug:"《音乐》页面开发"},{level:4,title:"自定义组件",slug:"自定义组件"},{level:5,title:"引入组件",slug:"引入组件"},{level:5,title:"组件传值",slug:"组件传值"},{level:4,title:"wx:key 的使用",slug:"wx-key-的使用"},{level:4,title:"async/await 语法",slug:"async-await-语法"},{level:4,title:"云函数的使用",slug:"云函数的使用"},{level:5,title:"数据库操作",slug:"数据库操作"},{level:5,title:"查询数据库",slug:"查询数据库"},{level:5,title:"云函数调试",slug:"云函数调试"},{level:4,title:"定时触发云函数",slug:"定时触发云函数"},{level:4,title:"配置云函数超时时间",slug:"配置云函数超时时间"},{level:4,title:"上拉加载与下拉刷新",slug:"上拉加载与下拉刷新"},{level:4,title:"云函数路由优化tcb-router",slug:"云函数路由优化tcb-router"},{level:4,title:"本地存储(缓存)",slug:"本地存储-缓存"},{level:4,title:"api设置title",slug:"api设置title"},{level:4,title:"背景播放音",slug:"背景播放音"},{level:4,title:"createSelectorQuery查询节点信息",slug:"createselectorquery查询节点信息"},{level:4,title:"组件内的方法",slug:"组件内的方法"},{level:4,title:"组件生命周期",slug:"组件生命周期"},{level:5,title:"组件所在页面的生命周期",slug:"组件所在页面的生命周期"},{level:4,title:"组件对数据的监听",slug:"组件对数据的监听"},{level:4,title:"子组件自定义事件传递给父组件",slug:"子组件自定义事件传递给父组件"},{level:4,title:"父组件自定义事件传递给子组件",slug:"父组件自定义事件传递给子组件"},{level:4,title:"兄弟组件间传递事件和传值",slug:"兄弟组件间传递事件和传值"},{level:4,title:"获取手机信息",slug:"获取手机信息"},{level:4,title:"滚动组件",slug:"滚动组件"},{level:4,title:"全局属性、方法(类似vuex)",slug:"全局属性、方法-类似vuex"},{level:4,title:"消息提示框",slug:"消息提示框"},{level:2,title:"《发现》页面",slug:"《发现》页面"},{level:4,title:"调用组件外部的样式",slug:"调用组件外部的样式"},{level:4,title:"组件插槽slot",slug:"组件插槽slot"},{level:4,title:"判断用户授权",slug:"判断用户授权"},{level:4,title:"button的开发能力(获取用户信息)1",slug:"button的开发能力-获取用户信息-1"},{level:4,title:"原生组件",slug:"原生组件"},{level:4,title:"选择上传图片",slug:"选择上传图片"},{level:4,title:"图片裁剪",slug:"图片裁剪"},{level:4,title:"获取标签自定义属性data-* (删除图片的实现)",slug:"获取标签自定义属性data-删除图片的实现"},{level:4,title:"全屏预览图片(点击图片放大预览)",slug:"全屏预览图片-点击图片放大预览"},{level:4,title:"文件上传云存储(发布博客例子)",slug:"文件上传云存储-发布博客例子"},{level:4,title:"js模块化 (时间格式化)",slug:"js模块化-时间格式化"},{level:4,title:"阻止事件冒泡",slug:"阻止事件冒泡-2"},{level:4,title:"返回上一个页面并执行方法",slug:"返回上一个页面并执行方法"},{level:4,title:"图片懒加载",slug:"图片懒加载"},{level:4,title:"模糊查询",slug:"模糊查询"},{level:4,title:"提升模糊查询的效率 (添加索引,对数据量大的查询效果明显)",slug:"提升模糊查询的效率-添加索引-对数据量大的查询效果明显"},{level:4,title:"小程序端调用云数据库",slug:"小程序端调用云数据库"},{level:4,title:"云数据库权限管理",slug:"云数据库权限管理-2"},{level:4,title:"数据库中1对N关系的三种设计方式",slug:"数据库中1对n关系的三种设计方式"},{level:5,title:"第一种:N的数量较少 几十个以内",slug:"第一种-n的数量较少-几十个以内"},{level:5,title:"第二种:N的数量较多 几十到几百个",slug:"第二种-n的数量较多-几十到几百个"},{level:5,title:"第三种:N的数量巨大 几百成千上万个",slug:"第三种-n的数量巨大-几百成千上万个"},{level:4,title:"云调用",slug:"云调用"},{level:4,title:"模板消息推送",slug:"模板消息推送"},{level:4,title:"云函数多集合查询数据库",slug:"云函数多集合查询数据库"},{level:4,title:"分享功能",slug:"分享功能"},{level:4,title:"不同场景获取用户信息的方式",slug:"不同场景获取用户信息的方式"},{level:5,title:"场景一:只想在界面上显示自己的昵称和头像",slug:"场景一-只想在界面上显示自己的昵称和头像"},{level:5,title:"场景二:在JS中获取用户信息",slug:"场景二-在js中获取用户信息"},{level:5,title:"场景三:获取openId",slug:"场景三-获取openid"},{level:2,title:"《我的》页面",slug:"《我的》页面"},{level:4,title:"导航页面链接跳转",slug:"导航页面链接跳转"},{level:4,title:"背景图片",slug:"背景图片"},{level:4,title:"每个页面都有的page标签",slug:"每个页面都有的page标签"},{level:4,title:"播放历史与本地存储",slug:"播放历史与本地存储"},{level:4,title:"我的发现",slug:"我的发现"},{level:4,title:"小程序码",slug:"小程序码"},{level:5,title:"判断是从扫码小程序码进入,以及参数获取",slug:"判断是从扫码小程序码进入-以及参数获取"},{level:3,title:"版本更新检测",slug:"版本更新检测"},{level:3,title:"性能优化",slug:"性能优化"},{level:3,title:"场景值scene的作用与应用场景",slug:"场景值scene的作用与应用场景"},{level:3,title:'小程序的"SEO"---页面收录sitemap',slug:"小程序的-seo-页面收录sitemap"},{level:3,title:"小程序上线审核流程",slug:"小程序上线审核流程"},{level:2,title:"后台管理系统",slug:"后台管理系统"},{level:4,title:"架构示意图",slug:"架构示意图"},{level:4,title:"vue-admin-template构建管理系统前端",slug:"vue-admin-template构建管理系统前端"},{level:4,title:"Koa2构建管理系统后端",slug:"koa2构建管理系统后端"},{level:4,title:"接口调用凭证 access_token 的缓存与更新",slug:"接口调用凭证-access-token-的缓存与更新"},{level:4,title:"后端代码通过HTTP API 触发云函数获取数据",slug:"后端代码通过http-api-触发云函数获取数据"},{level:4,title:"产生跨域和后端解决跨域问题",slug:"产生跨域和后端解决跨域问题"},{level:4,title:"云数据库的增删改查接口",slug:"云数据库的增删改查接口"},{level:4,title:"后端获取前端post请求传来的数据",slug:"后端获取前端post请求传来的数据"},{level:4,title:"后端获取云存储图片",slug:"后端获取云存储图片"},{level:4,title:"后端上传图片到云存储",slug:"后端上传图片到云存储"}],lastUpdated:"2022/12/14, 19:36:42",lastUpdatedTimestamp:1671017802e3},{title:"JS设计模式总结笔记",frontmatter:{title:"JS设计模式总结笔记",date:"2021-02-27T20:01:18.000Z",permalink:"/pages/4643cd/",categories:["前端","学习笔记"],tags:["设计模式"],author:{name:"heBody",link:"https://github.com/heBody"}},regularPath:"/01.%E5%89%8D%E7%AB%AF/40.%E5%AD%A6%E4%B9%A0%E7%AC%94%E8%AE%B0/50.JS%E8%AE%BE%E8%AE%A1%E6%A8%A1%E5%BC%8F%E6%80%BB%E7%BB%93%E7%AC%94%E8%AE%B0.html",relativePath:"01.前端/40.学习笔记/50.JS设计模式总结笔记.md",key:"v-652d413a",path:"/pages/4643cd/",headers:[{level:2,title:"开篇:前端工程师的成长论",slug:"开篇-前端工程师的成长论"},{level:2,title:"设计模式之“道”",slug:"设计模式之-道"},{level:3,title:"核心思想",slug:"核心思想"},{level:2,title:"设计模式之“术”",slug:"设计模式之-术"},{level:3,title:"创建型",slug:"创建型"},{level:3,title:"结构型",slug:"结构型"},{level:3,title:"行为型",slug:"行为型"},{level:2,title:"小结:",slug:"小结"},{level:2,title:"创建型:工厂模式-简单工厂——区分“变与不变”",slug:"创建型-工厂模式-简单工厂-区分-变与不变"},{level:3,title:"构造器模式",slug:"构造器模式"},{level:3,title:"简单工厂模式",slug:"简单工厂模式"}],lastUpdated:"2022/12/14, 19:36:42",lastUpdatedTimestamp:1671017802e3},{title:"常用meta整理",frontmatter:{title:"常用meta整理",date:"2020-02-21T12:20:10.000Z",permalink:"/pages/8309a5b876fc95e3",categories:["页面","HTML"],tags:[null],author:{name:"heBody",link:"https://github.com/heBody"}},regularPath:"/02.%E9%A1%B5%E9%9D%A2/10.HTML/10.%E5%B8%B8%E7%94%A8meta%E6%95%B4%E7%90%86.html",relativePath:"02.页面/10.HTML/10.常用meta整理.md",key:"v-ad57a0e0",path:"/pages/8309a5b876fc95e3/",headers:[{level:2,title:"元素",slug:"meta-元素"},{level:3,title:"概要",slug:"概要"},{level:3,title:"网页相关",slug:"网页相关"},{level:3,title:"SEO优化",slug:"seo优化"},{level:3,title:"移动设备",slug:"移动设备"},{level:3,title:"一个常用的移动端页面meta设置",slug:"一个常用的移动端页面meta设置"}],excerpt:'<h1 id="常用meta整理"><a class="header-anchor" href="#常用meta整理">#</a> 常用meta整理</h1>\n<h2 id="meta-元素"><a class="header-anchor" href="#meta-元素">#</a> &lt;meta&gt; 元素</h2>\n<h3 id="概要"><a class="header-anchor" href="#概要">#</a> 概要</h3>\n<p>meta标签提供关于HTML文档的元数据。元数据不会显示在页面上,但是对于机器是可读的。它可用于浏览器(如何显示内容或重新加载页面),搜索引擎(关键词),或其他 web 服务。</p>\n',lastUpdated:"2022/12/14, 19:36:42",lastUpdatedTimestamp:1671017802e3},{title:"CSS教程和技巧收藏",frontmatter:{title:"CSS教程和技巧收藏",date:"2020-08-11T17:13:52.000Z",permalink:"/pages/c8f128/",categories:["页面","CSS"],tags:[null],author:{name:"heBody",link:"https://github.com/heBody"}},regularPath:"/02.%E9%A1%B5%E9%9D%A2/20.CSS/00.CSS%E6%95%99%E7%A8%8B%E5%92%8C%E6%8A%80%E5%B7%A7%E6%94%B6%E8%97%8F.html",relativePath:"02.页面/20.CSS/00.CSS教程和技巧收藏.md",key:"v-0eb36c0b",path:"/pages/c8f128/",headers:[{level:2,title:"Flex 布局教程:语法篇",slug:"flex-布局教程-语法篇"},{level:2,title:"CSS Grid 网格布局教程",slug:"css-grid-网格布局教程"},{level:2,title:"只要一行代码,实现五种 CSS 经典布局",slug:"只要一行代码-实现五种-css-经典布局"}],lastUpdated:"2022/12/14, 19:36:42",lastUpdatedTimestamp:1671017802e3},{title:"flex布局语法",frontmatter:{title:"flex布局语法",date:"2019-12-25T14:27:01.000Z",permalink:"/pages/0a83b083bdf257cb",author:{name:"阮一峰"},categories:["页面","CSS"],tags:[null]},regularPath:"/02.%E9%A1%B5%E9%9D%A2/20.CSS/01.flex%E5%B8%83%E5%B1%80%E8%AF%AD%E6%B3%95.html",relativePath:"02.页面/20.CSS/01.flex布局语法.md",key:"v-2e9c75fc",path:"/pages/0a83b083bdf257cb/",headers:[{level:2,title:"一、flex 布局是什么?",slug:"一、flex-布局是什么"},{level:2,title:"二、基本概念",slug:"二、基本概念"},{level:2,title:"三、容器的属性",slug:"三、容器的属性"},{level:3,title:"3.1 flex-direction属性",slug:"_3-1-flex-direction属性"},{level:3,title:"3.2 flex-wrap属性",slug:"_3-2-flex-wrap属性"},{level:3,title:"3.3 flex-flow",slug:"_3-3-flex-flow"},{level:3,title:"3.4 justify-content属性",slug:"_3-4-justify-content属性"},{level:3,title:"3.5 align-items属性",slug:"_3-5-align-items属性"},{level:3,title:"3.6 align-content属性",slug:"_3-6-align-content属性"},{level:2,title:"四、项目的属性",slug:"四、项目的属性"},{level:3,title:"4.1 order属性",slug:"_4-1-order属性"},{level:3,title:"4.2 flex-grow属性",slug:"_4-2-flex-grow属性"},{level:3,title:"4.3 flex-shrink属性",slug:"_4-3-flex-shrink属性"},{level:3,title:"4.4 flex-basis属性",slug:"_4-4-flex-basis属性"},{level:3,title:"4.5 flex属性",slug:"_4-5-flex属性"},{level:3,title:"4.6 align-self属性",slug:"_4-6-align-self属性"}],excerpt:'<h1 id="flex布局语法"><a class="header-anchor" href="#flex布局语法">#</a> flex布局语法</h1>\n<h2 id="一、flex-布局是什么"><a class="header-anchor" href="#一、flex-布局是什么">#</a> 一、flex 布局是什么?</h2>\n<p>Flex是 Flexible Box 的缩写,意为&quot;弹性布局&quot;,用来为盒状模型提供最大的灵活性。</p>\n<p><strong>任何一个容器</strong> 都可以指定为 Flex 布局。</p>\n',lastUpdated:"2022/12/14, 19:36:42",lastUpdatedTimestamp:1671017802e3},{title:"flex布局案例-基础",frontmatter:{title:"flex布局案例-基础",date:"2019-12-25T14:27:01.000Z",permalink:"/pages/ea6db1530c42ad51",categories:["页面","CSS"],tags:[null],author:{name:"heBody",link:"https://github.com/heBody"}},regularPath:"/02.%E9%A1%B5%E9%9D%A2/20.CSS/02.flex%E5%B8%83%E5%B1%80%E6%A1%88%E4%BE%8B-%E5%9F%BA%E7%A1%80.html",relativePath:"02.页面/20.CSS/02.flex布局案例-基础.md",key:"v-c86c2402",path:"/pages/ea6db1530c42ad51/",lastUpdated:"2022/12/14, 19:36:42",lastUpdatedTimestamp:1671017802e3},{title:"flex布局案例-骰子",frontmatter:{title:"flex布局案例-骰子",date:"2019-12-25T14:27:01.000Z",permalink:"/pages/eff61bc8b4f4695d",categories:["页面","CSS"],tags:[null],author:{name:"heBody",link:"https://github.com/heBody"}},regularPath:"/02.%E9%A1%B5%E9%9D%A2/20.CSS/03.flex%E5%B8%83%E5%B1%80%E6%A1%88%E4%BE%8B-%E9%AA%B0%E5%AD%90.html",relativePath:"02.页面/20.CSS/03.flex布局案例-骰子.md",key:"v-9a497a22",path:"/pages/eff61bc8b4f4695d/",lastUpdated:"2022/12/14, 19:36:42",lastUpdatedTimestamp:1671017802e3},{title:"flex布局案例-圣杯布局",frontmatter:{title:"flex布局案例-圣杯布局",date:"2019-12-25T14:27:01.000Z",permalink:"/pages/df9e7c7214fa5046",categories:["页面","CSS"],tags:[null],author:{name:"heBody",link:"https://github.com/heBody"}},regularPath:"/02.%E9%A1%B5%E9%9D%A2/20.CSS/04.flex%E5%B8%83%E5%B1%80%E6%A1%88%E4%BE%8B-%E5%9C%A3%E6%9D%AF%E5%B8%83%E5%B1%80.html",relativePath:"02.页面/20.CSS/04.flex布局案例-圣杯布局.md",key:"v-f7eabdfa",path:"/pages/df9e7c7214fa5046/",lastUpdated:"2022/12/14, 19:36:42",lastUpdatedTimestamp:1671017802e3},{title:"flex布局案例-网格布局",frontmatter:{title:"flex布局案例-网格布局",date:"2019-12-25T14:27:01.000Z",permalink:"/pages/85b5a3fe218a34b7",categories:["页面","CSS"],tags:[null],author:{name:"heBody",link:"https://github.com/heBody"}},regularPath:"/02.%E9%A1%B5%E9%9D%A2/20.CSS/05.flex%E5%B8%83%E5%B1%80%E6%A1%88%E4%BE%8B-%E7%BD%91%E6%A0%BC%E5%B8%83%E5%B1%80.html",relativePath:"02.页面/20.CSS/05.flex布局案例-网格布局.md",key:"v-295f4dfa",path:"/pages/85b5a3fe218a34b7/",lastUpdated:"2022/12/14, 19:36:42",lastUpdatedTimestamp:1671017802e3},{title:"flex布局案例-输入框布局",frontmatter:{title:"flex布局案例-输入框布局",date:"2019-12-25T14:27:01.000Z",permalink:"/pages/05cc577fb51c7998",categories:["页面","CSS"],tags:[null],author:{name:"heBody",link:"https://github.com/heBody"}},regularPath:"/02.%E9%A1%B5%E9%9D%A2/20.CSS/06.flex%E5%B8%83%E5%B1%80%E6%A1%88%E4%BE%8B-%E8%BE%93%E5%85%A5%E6%A1%86%E5%B8%83%E5%B1%80.html",relativePath:"02.页面/20.CSS/06.flex布局案例-输入框布局.md",key:"v-5fd74e9f",path:"/pages/05cc577fb51c7998/",lastUpdated:"2022/12/14, 19:36:42",lastUpdatedTimestamp:1671017802e3},{title:"CSS3之transition过渡",frontmatter:{title:"CSS3之transition过渡",date:"2019-12-25T14:27:01.000Z",permalink:"/pages/02d7f59d98d87409",categories:["页面","CSS"],tags:[null],author:{name:"heBody",link:"https://github.com/heBody"}},regularPath:"/02.%E9%A1%B5%E9%9D%A2/20.CSS/07.CSS3%E4%B9%8Btransition%E8%BF%87%E6%B8%A1.html",relativePath:"02.页面/20.CSS/07.CSS3之transition过渡.md",key:"v-0994be19",path:"/pages/02d7f59d98d87409/",lastUpdated:"2022/12/14, 19:36:42",lastUpdatedTimestamp:1671017802e3},{title:"CSS3之animation动画",frontmatter:{title:"CSS3之animation动画",date:"2019-12-25T14:27:01.000Z",permalink:"/pages/c2c0432138f6e042",categories:["页面","CSS"],tags:[null],author:{name:"heBody",link:"https://github.com/heBody"}},regularPath:"/02.%E9%A1%B5%E9%9D%A2/20.CSS/08.CSS3%E4%B9%8Banimation%E5%8A%A8%E7%94%BB.html",relativePath:"02.页面/20.CSS/08.CSS3之animation动画.md",key:"v-89541564",path:"/pages/c2c0432138f6e042/",headers:[{level:3,title:"贝塞尔曲线 cubic-bezier(x1,y1,x2,y2)",slug:"贝塞尔曲线-cubic-bezier-x1-y1-x2-y2"}],lastUpdated:"2022/12/14, 19:36:42",lastUpdatedTimestamp:1671017802e3},{title:"「布局技巧」图片未加载前自动撑开元素高度",frontmatter:{title:"「布局技巧」图片未加载前自动撑开元素高度",date:"2020-02-22T16:37:10.000Z",permalink:"/pages/3d52574260725aea",categories:["页面","CSS"],tags:[null],author:{name:"heBody",link:"https://github.com/heBody"}},regularPath:"/02.%E9%A1%B5%E9%9D%A2/20.CSS/20.%E3%80%8C%E5%B8%83%E5%B1%80%E6%8A%80%E5%B7%A7%E3%80%8D%E5%9B%BE%E7%89%87%E6%9C%AA%E5%8A%A0%E8%BD%BD%E5%89%8D%E8%87%AA%E5%8A%A8%E6%92%91%E5%BC%80%E5%85%83%E7%B4%A0%E9%AB%98%E5%BA%A6.html",relativePath:"02.页面/20.CSS/20.「布局技巧」图片未加载前自动撑开元素高度.md",key:"v-f2b9c60e",path:"/pages/3d52574260725aea/",excerpt:'<h1 id="「布局技巧」图片未加载前自动撑开元素高度"><a class="header-anchor" href="#「布局技巧」图片未加载前自动撑开元素高度">#</a> 「布局技巧」图片未加载前自动撑开元素高度</h1>\n<p>在移动端开发中,有一些元素是根据图片高度来自动撑开的 ,高度不能写死(如轮播图的外层元素)。在网络较慢的情况下,图片加载需要一些时间,此时该元素的高度没有被撑开,在网页布局上会有一些不想看到的效果。</p>\n',lastUpdated:"2022/12/14, 19:36:42",lastUpdatedTimestamp:1671017802e3},{title:"文字在一行或多行时超出显示省略号",frontmatter:{title:"文字在一行或多行时超出显示省略号",date:"2020-02-23T15:07:08.000Z",permalink:"/pages/42b66999cc27dc25",categories:["页面","CSS"],tags:[null],author:{name:"heBody",link:"https://github.com/heBody"}},regularPath:"/02.%E9%A1%B5%E9%9D%A2/20.CSS/30.%E6%96%87%E5%AD%97%E5%9C%A8%E4%B8%80%E8%A1%8C%E6%88%96%E5%A4%9A%E8%A1%8C%E6%97%B6%E8%B6%85%E5%87%BA%E6%98%BE%E7%A4%BA%E7%9C%81%E7%95%A5%E5%8F%B7.html",relativePath:"02.页面/20.CSS/30.文字在一行或多行时超出显示省略号.md",key:"v-f675b86a",path:"/pages/42b66999cc27dc25/",headers:[{level:2,title:"一行超出显示省略",slug:"一行超出显示省略"},{level:2,title:"两行(多行)超出显示省略号",slug:"两行-多行-超出显示省略号"},{level:2,title:"JS判断是否显示了省略号",slug:"js判断是否显示了省略号"},{level:4,title:"知识点拓展",slug:"知识点拓展"}],excerpt:'<h1 id="文字在一行或多行时超出显示省略号"><a class="header-anchor" href="#文字在一行或多行时超出显示省略号">#</a> 文字在一行或多行时超出显示省略号</h1>\n<h2 id="一行超出显示省略"><a class="header-anchor" href="#一行超出显示省略">#</a> 一行超出显示省略</h2>\n\x3c!--beforebegin--\x3e<div class="language-css line-numbers-mode">\x3c!--afterbegin--\x3e<pre v-pre class="language-css"><code><span class="token property">overflow</span><span class="token punctuation">:</span> hidden<span class="token punctuation">;</span>\n<span class="token property">white-space</span><span class="token punctuation">:</span> nowrap<span class="token punctuation">;</span>\n<span class="token property">text-overflow</span><span class="token punctuation">:</span> ellipsis<span class="token punctuation">;</span>\n</code></pre>\n<div class="line-numbers-wrapper"><span class="line-number">1</span><br><span class="line-number">2</span><br><span class="line-number">3</span><br></div>\x3c!--beforeend--\x3e</div>\x3c!--afterend--\x3e',lastUpdated:"2022/12/14, 19:36:42",lastUpdatedTimestamp:1671017802e3},{title:"从box-sizing属性入手,了解盒子模型",frontmatter:{title:"从box-sizing属性入手,了解盒子模型",date:"2020-02-27T17:08:48.000Z",permalink:"/pages/20a978023139589d",categories:["页面","CSS"],tags:[null],author:{name:"heBody",link:"https://github.com/heBody"}},regularPath:"/02.%E9%A1%B5%E9%9D%A2/20.CSS/35.%E4%BB%8Ebox-sizing%E5%B1%9E%E6%80%A7%E5%85%A5%E6%89%8B%EF%BC%8C%E4%BA%86%E8%A7%A3%E7%9B%92%E5%AD%90%E6%A8%A1%E5%9E%8B.html",relativePath:"02.页面/20.CSS/35.从box-sizing属性入手,了解盒子模型.md",key:"v-5e1a810f",path:"/pages/20a978023139589d/",headers:[{level:2,title:"背景",slug:"背景"},{level:2,title:"什么是CSS 盒模型?",slug:"什么是css-盒模型"},{level:2,title:"标准盒模型",slug:"标准盒模型"},{level:2,title:"代替(IE)盒模型",slug:"代替-ie-盒模型"},{level:2,title:"box-sizing属性",slug:"box-sizing属性"}],excerpt:'<h1 id="从box-sizing属性入手-了解盒子模型"><a class="header-anchor" href="#从box-sizing属性入手-了解盒子模型">#</a> 从box-sizing属性入手,了解盒子模型</h1>\n<h2 id="背景"><a class="header-anchor" href="#背景">#</a> 背景</h2>\n<p>先声明一下运用的场景,假如项目布局使用的是<strong>自适应</strong>的布局方式,div给出的宽度是<strong>百分比</strong>的形式,即占窗口宽度的100%,但边框<code>border</code>和内边距<code>padding</code>是用像素来表示的,此时就会造成一个问题是div总宽度超过窗口宽度。为了避免这种问题,可以使用属性<code>box-sizing:border-box</code>来把 <strong>标准盒模型</strong> 变成 <strong>代替(IE)盒模型</strong> ,从而使div的总宽度依然是100%</p>\n',lastUpdated:"2022/12/14, 19:36:42",lastUpdatedTimestamp:1671017802e3},{title:"水平垂直居中的几种方式-案例",frontmatter:{title:"水平垂直居中的几种方式-案例",date:"2020-03-13T16:13:43.000Z",permalink:"/pages/cb7cb251adba4bf7",categories:["页面","CSS"],tags:[null],author:{name:"heBody",link:"https://github.com/heBody"}},regularPath:"/02.%E9%A1%B5%E9%9D%A2/20.CSS/40.%E6%B0%B4%E5%B9%B3%E5%9E%82%E7%9B%B4%E5%B1%85%E4%B8%AD%E7%9A%84%E5%87%A0%E7%A7%8D%E6%96%B9%E5%BC%8F-%E6%A1%88%E4%BE%8B.html",relativePath:"02.页面/20.CSS/40.水平垂直居中的几种方式-案例.md",key:"v-241e8c29",path:"/pages/cb7cb251adba4bf7/",lastUpdated:"2022/12/14, 19:36:42",lastUpdatedTimestamp:1671017802e3},{title:"如何根据系统主题自动响应CSS深色模式",frontmatter:{title:"如何根据系统主题自动响应CSS深色模式",date:"2020-03-31T14:06:26.000Z",permalink:"/pages/5dde351274f1e39d",categories:["页面","CSS"],tags:["css"],author:{name:"heBody",link:"https://github.com/heBody"}},regularPath:"/02.%E9%A1%B5%E9%9D%A2/20.CSS/45.%E5%A6%82%E4%BD%95%E6%A0%B9%E6%8D%AE%E7%B3%BB%E7%BB%9F%E4%B8%BB%E9%A2%98%E8%87%AA%E5%8A%A8%E5%93%8D%E5%BA%94CSS%E6%B7%B1%E8%89%B2%E6%A8%A1%E5%BC%8F.html",relativePath:"02.页面/20.CSS/45.如何根据系统主题自动响应CSS深色模式.md",key:"v-35dec6e4",path:"/pages/5dde351274f1e39d/",headers:[{level:2,title:"CSS 深色模式 (Dark Mode)",slug:"css-深色模式-dark-mode"},{level:2,title:"添加深色模式自动响应",slug:"添加深色模式自动响应"},{level:2,title:"JS判断深色模式",slug:"js判断深色模式"},{level:2,title:"结论",slug:"结论"}],excerpt:'<h1 id="如何根据系统主题自动响应css深色模式"><a class="header-anchor" href="#如何根据系统主题自动响应css深色模式">#</a> 如何根据系统主题自动响应CSS深色模式</h1>\n<p align="center">\n <img src="https://cdn.jsdelivr.net/gh/xugaoyi/image_store/blog/20200427163531.jpg" width="500">\n</p>\n<p>很多人喜欢选择APP或网站中的深色模式,也许他们更喜欢这样的外观,或者他们想让自己的眼睛免受疲劳。这篇文章将告诉你如何在网站中实现一个自动的CSS深色模式,根据访客的系统主题来自动响应。</p>\n',lastUpdated:"2022/12/14, 19:36:42",lastUpdatedTimestamp:1671017802e3},{title:"「css技巧」使用hover和attr()定制悬浮提示",frontmatter:{title:"「css技巧」使用hover和attr()定制悬浮提示",date:"2020-04-18T12:14:09.000Z",permalink:"/pages/941581927b4a38f8",categories:["页面","CSS"],tags:[null],author:{name:"heBody",link:"https://github.com/heBody"}},regularPath:"/02.%E9%A1%B5%E9%9D%A2/20.CSS/50.%E3%80%8Ccss%E6%8A%80%E5%B7%A7%E3%80%8D%E4%BD%BF%E7%94%A8hover%E5%92%8Cattr()%E5%AE%9A%E5%88%B6%E6%82%AC%E6%B5%AE%E6%8F%90%E7%A4%BA.html",relativePath:"02.页面/20.CSS/50.「css技巧」使用hover和attr()定制悬浮提示.md",key:"v-4ce87a2c",path:"/pages/941581927b4a38f8/",excerpt:'<h1 id="「css技巧」使用hover和attr-定制悬浮提示-demo"><a class="header-anchor" href="#「css技巧」使用hover和attr-定制悬浮提示-demo">#</a> 「css技巧」使用hover和attr()定制悬浮提示-demo</h1>\n<iframe height="400" style="width: 100%;" scrolling="no" title="【CSS:行为】使用:hover和attr()定制悬浮提示" src="https://codepen.io/heBody/embed/vYNKNaq?height=400&theme-id=light&default-tab=css,result" frameborder="no" allowtransparency="true" allowfullscreen="true" loading="lazy">\n See the Pen <a href=\'https://codepen.io/heBody/pen/vYNKNaq\'>【CSS:行为】使用:hover和attr()定制悬浮提示</a> by heBody\n (<a href=\'https://codepen.io/heBody\'>@heBody</a>) on <a href=\'https://codepen.io\'>CodePen</a>.\n</iframe>\n',lastUpdated:"2022/12/14, 19:36:42",lastUpdatedTimestamp:1671017802e3},{title:"CSS-function汇总",frontmatter:{title:"CSS-function汇总",date:"2020-05-12T09:36:44.000Z",permalink:"/pages/3da0d7",categories:["页面","CSS"],tags:[null],author:{name:"heBody",link:"https://github.com/heBody"}},regularPath:"/02.%E9%A1%B5%E9%9D%A2/20.CSS/60.CSS-function%E6%B1%87%E6%80%BB.html",relativePath:"02.页面/20.CSS/60.CSS-function汇总.md",key:"v-6057dbe4",path:"/pages/3da0d7/",lastUpdated:"2022/12/14, 19:36:42",lastUpdatedTimestamp:1671017802e3},{title:"CSS给table的tbody添加滚动条",frontmatter:{title:"CSS给table的tbody添加滚动条",date:"2022-06-29T09:34:23.000Z",permalink:"/pages/55f894/",categories:["页面","CSS"],tags:[null],author:{name:"heBody",link:"https://github.com/heBody"}},regularPath:"/02.%E9%A1%B5%E9%9D%A2/20.CSS/70.CSS%E7%BB%99table%E7%9A%84tbody%E6%B7%BB%E5%8A%A0%E6%BB%9A%E5%8A%A8%E6%9D%A1.html",relativePath:"02.页面/20.CSS/70.CSS给table的tbody添加滚动条.md",key:"v-21c0caf7",path:"/pages/55f894/",lastUpdated:"2022/12/14, 19:36:42",lastUpdatedTimestamp:1671017802e3},{title:"Git使用手册",frontmatter:{title:"Git使用手册",date:"2019-12-25T14:27:01.000Z",permalink:"/pages/9a7ee40fc232253e",categories:["技术","技术文档"],tags:[null],author:{name:"heBody",link:"https://github.com/heBody"}},regularPath:"/03.%E6%8A%80%E6%9C%AF/01.%E6%8A%80%E6%9C%AF%E6%96%87%E6%A1%A3/01.Git%E4%BD%BF%E7%94%A8%E6%89%8B%E5%86%8C.html",relativePath:"03.技术/01.技术文档/01.Git使用手册.md",key:"v-2be7f4f2",path:"/pages/9a7ee40fc232253e/",headers:[{level:2,title:"安装",slug:"安装"},{level:2,title:"创建版本库(仓库)",slug:"创建版本库-仓库"},{level:2,title:"添加文件到仓库",slug:"添加文件到仓库"},{level:4,title:"提交描述规范",slug:"提交描述规范"},{level:2,title:"版本管理",slug:"版本管理"},{level:4,title:"提交修改",slug:"提交修改"},{level:4,title:"查看版本记录",slug:"查看版本记录"},{level:4,title:"回退版本",slug:"回退版本"},{level:4,title:"撤销修改",slug:"撤销修改"},{level:4,title:"删除文件",slug:"删除文件"},{level:2,title:"远程仓库",slug:"远程仓库"},{level:4,title:"SSH验证",slug:"ssh验证"},{level:4,title:"关联远程仓库",slug:"关联远程仓库"},{level:4,title:"查看远程仓库",slug:"查看远程仓库"},{level:4,title:"删除远程仓库",slug:"删除远程仓库"},{level:4,title:"从远程库克隆项目",slug:"从远程库克隆项目"},{level:5,title:"克隆指定分支",slug:"克隆指定分支"},{level:2,title:"分支管理",slug:"分支管理"},{level:4,title:"创建分支",slug:"创建分支"},{level:4,title:"查看分支",slug:"查看分支"},{level:4,title:"切换分支",slug:"切换分支"},{level:4,title:"合并分支",slug:"合并分支"},{level:4,title:"删除分支",slug:"删除分支"},{level:4,title:"修改分支名",slug:"修改分支名"},{level:2,title:"帮助命令",slug:"帮助命令"},{level:2,title:"参考文档",slug:"参考文档"}],excerpt:'<h1 id="git使用手册"><a class="header-anchor" href="#git使用手册">#</a> Git使用手册</h1>\n<h2 id="安装"><a class="header-anchor" href="#安装">#</a> 安装</h2>\n<p>官网下载:<a href="https://git-scm.com/downloads" target="_blank" rel="noopener noreferrer">https://git-scm.com/downloads<OutboundLink/></a> 下载完成后使用默认进行安装。</p>\n<p>安装完成后,在开始菜单里找到 <code>Git</code> -&gt; <code>Git Bash</code>,蹦出一个类似命令行窗口的东西,就说明Git安装成功!\n还需要最后一步设置,在命令行输入:</p>\n\x3c!--beforebegin--\x3e<div class="language-bash line-numbers-mode">\x3c!--afterbegin--\x3e<pre v-pre class="language-bash"><code><span class="token function">git</span> config <span class="token parameter variable">--global</span> user.name <span class="token string">"Your Name"</span>\n<span class="token function">git</span> config <span class="token parameter variable">--global</span> user.email <span class="token string">"email@example.com"</span>\n</code></pre>\n<div class="line-numbers-wrapper"><span class="line-number">1</span><br><span class="line-number">2</span><br></div>\x3c!--beforeend--\x3e</div>\x3c!--afterend--\x3e<p>因为Git是分布式版本控制系统,所以,每个机器都必须自报家门:你的名字和Email地址。</p>\n',lastUpdated:"2022/12/14, 19:36:42",lastUpdatedTimestamp:1671017802e3},{title:"npm常用命令",frontmatter:{title:"npm常用命令",date:"2019-12-25T14:27:01.000Z",permalink:"/pages/61f2f95fd7da14fd",categories:["技术","技术文档"],tags:[null],author:{name:"heBody",link:"https://github.com/heBody"}},regularPath:"/03.%E6%8A%80%E6%9C%AF/01.%E6%8A%80%E6%9C%AF%E6%96%87%E6%A1%A3/03.npm%E5%B8%B8%E7%94%A8%E5%91%BD%E4%BB%A4.html",relativePath:"03.技术/01.技术文档/03.npm常用命令.md",key:"v-14863469",path:"/pages/61f2f95fd7da14fd/",headers:[{level:2,title:"简介",slug:"简介"},{level:2,title:"常用命令",slug:"常用命令"},{level:4,title:"检测是否安装及版本",slug:"检测是否安装及版本"},{level:4,title:"生成package.json文件",slug:"生成package-json文件"},{level:4,title:"安装模块",slug:"安装模块"},{level:4,title:"查看",slug:"查看"},{level:4,title:"更新模块",slug:"更新模块"},{level:4,title:"卸载模块",slug:"卸载模块"},{level:4,title:"清空缓存",slug:"清空缓存"},{level:4,title:"使用淘宝镜像",slug:"使用淘宝镜像"},{level:4,title:"其他",slug:"其他"},{level:2,title:"使用技巧",slug:"使用技巧"},{level:4,title:"多次安装不成功尝试先清除缓存",slug:"多次安装不成功尝试先清除缓存"},{level:4,title:"查看已安装的依赖包版本号",slug:"查看已安装的依赖包版本号"},{level:2,title:"npm发布包教程",slug:"npm发布包教程"},{level:2,title:"nrm的作用与使用",slug:"nrm的作用与使用"},{level:4,title:"nrm是什么?",slug:"nrm是什么"},{level:4,title:"nrm的安装",slug:"nrm的安装"},{level:4,title:"nrm命令",slug:"nrm命令"},{level:4,title:"nrm使用",slug:"nrm使用"}],excerpt:'<h1 id="npm常用命令"><a class="header-anchor" href="#npm常用命令">#</a> npm常用命令</h1>\n<h2 id="简介"><a class="header-anchor" href="#简介">#</a> 简介</h2>\n<p>npm是跟随node一起安装的包(模块)管理器。常见的使用场景有以下几种:</p>\n<ul>\n<li>允许用户从npm服务器下载别人编写的第三方包到本地使用。</li>\n<li>允许用户从npm服务器下载并安装别人编写的命令行程序到本地使用。</li>\n<li>允许用户将自己编写的包或命令行程序上传到npm服务器供别人使用。</li>\n</ul>\n',lastUpdated:"2022/12/14, 19:36:42",lastUpdatedTimestamp:1671017802e3},{title:"Markdown使用教程",frontmatter:{title:"Markdown使用教程",date:"2019-12-25T14:27:01.000Z",permalink:"/pages/ad247c4332211551",categories:["技术","技术文档"],tags:[null],author:{name:"heBody",link:"https://github.com/heBody"}},regularPath:"/03.%E6%8A%80%E6%9C%AF/01.%E6%8A%80%E6%9C%AF%E6%96%87%E6%A1%A3/02.Markdown%E4%BD%BF%E7%94%A8%E6%95%99%E7%A8%8B.html",relativePath:"03.技术/01.技术文档/02.Markdown使用教程.md",key:"v-21ef8fa4",path:"/pages/ad247c4332211551/",headers:[{level:2,title:"一、Markdown",slug:"一、markdown"},{level:3,title:"简介",slug:"简介"},{level:3,title:"应用",slug:"应用"},{level:3,title:"编辑器",slug:"编辑器"},{level:2,title:"二、徽章",slug:"二、徽章"},{level:4,title:"什么是徽章",slug:"什么是徽章"},{level:4,title:"徽章的使用",slug:"徽章的使用"},{level:2,title:"三、设置目录",slug:"三、设置目录"},{level:2,title:"四、标题",slug:"四、标题"},{level:2,title:"二级标题",slug:"二级标题"},{level:3,title:"三级标题",slug:"三级标题"},{level:4,title:"四级标题",slug:"四级标题"},{level:5,title:"五级标题",slug:"五级标题"},{level:6,title:"六级标题",slug:"六级标题"},{level:2,title:"五、文本",slug:"五、文本"},{level:3,title:"段落",slug:"段落"},{level:3,title:"字体",slug:"字体"},{level:3,title:"删除线",slug:"删除线"},{level:3,title:"下划线",slug:"下划线"},{level:3,title:"文字高亮",slug:"文字高亮"},{level:3,title:"分隔线",slug:"分隔线"},{level:3,title:"脚注",slug:"脚注"},{level:2,title:"六、列表",slug:"六、列表"},{level:3,title:"无序列表",slug:"无序列表"},{level:3,title:"有序列表",slug:"有序列表"},{level:3,title:"折叠列表",slug:"折叠列表"},{level:3,title:"带复选框列表",slug:"带复选框列表"},{level:3,title:"列表嵌套",slug:"列表嵌套"},{level:2,title:"七、区块引用",slug:"七、区块引用"},{level:4,title:"区块嵌套",slug:"区块嵌套"},{level:4,title:"区块中使用列表",slug:"区块中使用列表"},{level:4,title:"列表中使用区块",slug:"列表中使用区块"},{level:2,title:"八、代码",slug:"八、代码"},{level:3,title:"代码区块",slug:"代码区块"},{level:2,title:"九、链接",slug:"九、链接"},{level:3,title:"变量链接",slug:"变量链接"},{level:3,title:"Github仓库中使用内部链接",slug:"github仓库中使用内部链接"},{level:3,title:"锚点链接",slug:"锚点链接"},{level:2,title:"十、图片",slug:"十、图片"},{level:3,title:"图片宽高",slug:"图片宽高"},{level:3,title:"相对路径以及Github中使用图片",slug:"相对路径以及github中使用图片"},{level:2,title:"十一、表格",slug:"十一、表格"},{level:2,title:"十二、Emoji表情包",slug:"十二、emoji表情包"},{level:2,title:"十三、其他技巧",slug:"十三、其他技巧"},{level:3,title:"支持的 HTML 元素",slug:"支持的-html-元素"},{level:3,title:"转义",slug:"转义"},{level:3,title:"数学公式",slug:"数学公式"},{level:3,title:"图表",slug:"图表"},{level:3,title:"流程图",slug:"流程图"},{level:3,title:"时序图",slug:"时序图"},{level:3,title:"甘特图",slug:"甘特图"}],excerpt:'<h1 id="markdown使用教程"><a class="header-anchor" href="#markdown使用教程">#</a> Markdown使用教程</h1>\n<h2 id="一、markdown"><a class="header-anchor" href="#一、markdown">#</a> 一、Markdown</h2>\n<h3 id="简介"><a class="header-anchor" href="#简介">#</a> 简介</h3>\n<p><img src="https://raw.githubusercontent.com/heBody/image_store/master/blog/md_logo.png" alt="logo"></p>\n<p><code>Markdown</code> 是一种轻量级标记语言,它允许人们使用易读易写的纯文本格式编写文档。</p>\n',lastUpdated:"2022/12/14, 19:36:42",lastUpdatedTimestamp:1671017802e3},{title:"npm packageJson属性详解",frontmatter:{author:{name:"heBody",link:"https://github.com/heBody"},title:"npm packageJson属性详解",date:"2020-04-08T17:16:38.000Z",permalink:"/pages/dec4f3f00e71a312",categories:["技术","技术文档"],tags:[null]},regularPath:"/03.%E6%8A%80%E6%9C%AF/01.%E6%8A%80%E6%9C%AF%E6%96%87%E6%A1%A3/10.npm%20packageJson%E5%B1%9E%E6%80%A7%E8%AF%A6%E8%A7%A3.html",relativePath:"03.技术/01.技术文档/10.npm packageJson属性详解.md",key:"v-097e597e",path:"/pages/dec4f3f00e71a312/",headers:[{level:2,title:"概述",slug:"概述"},{level:2,title:"name",slug:"name"},{level:2,title:"version",slug:"version"},{level:2,title:"description",slug:"description"},{level:2,title:"keywords",slug:"keywords"},{level:2,title:"homepage",slug:"homepage"},{level:2,title:"bugs",slug:"bugs"},{level:2,title:"license",slug:"license"},{level:2,title:"和用户相关的属性: author, contributors",slug:"和用户相关的属性-author-contributors"},{level:2,title:"files",slug:"files"},{level:2,title:"main",slug:"main"},{level:2,title:"bin",slug:"bin"},{level:2,title:"man",slug:"man"},{level:2,title:"directories",slug:"directories"},{level:3,title:"directories.lib",slug:"directories-lib"},{level:3,title:"directories.bin",slug:"directories-bin"},{level:3,title:"directories.man",slug:"directories-man"},{level:3,title:"directories.doc",slug:"directories-doc"},{level:3,title:"directories.example",slug:"directories-example"},{level:2,title:"repository",slug:"repository"},{level:2,title:"scripts",slug:"scripts"},{level:2,title:"config",slug:"config"},{level:2,title:"dependencies",slug:"dependencies"},{level:2,title:"URLs as Dependencies",slug:"urls-as-dependencies"},{level:2,title:"Git URLs as Dependencies",slug:"git-urls-as-dependencies"},{level:2,title:"GitHub URLs",slug:"github-urls"},{level:2,title:"Local Paths",slug:"local-paths"},{level:2,title:"devDependencies",slug:"devdependencies"},{level:2,title:"peerDependencies",slug:"peerdependencies"},{level:2,title:"bundledDependencies",slug:"bundleddependencies"},{level:2,title:"optionalDependencies",slug:"optionaldependencies"},{level:2,title:"engines",slug:"engines"},{level:2,title:"engineStrict",slug:"enginestrict"},{level:2,title:"os",slug:"os"},{level:2,title:"cpu",slug:"cpu"},{level:2,title:"preferGlobal",slug:"preferglobal"},{level:2,title:"private",slug:"private"},{level:2,title:"publishConfig",slug:"publishconfig"},{level:2,title:"DEFAULT VALUES",slug:"default-values"},{level:2,title:"参考文档列表(https://docs.npmjs.com/)",slug:"参考文档列表-https-docs-npmjs-com"}],excerpt:'<h1 id="npm-package-json属性详解"><a class="header-anchor" href="#npm-package-json属性详解">#</a> npm package.json属性详解</h1>\n<blockquote>\n<p>本文转自<a href="https://www.cnblogs.com/tzyy/p/5193811.html" target="_blank" rel="noopener noreferrer">https://www.cnblogs.com/tzyy/p/5193811.html<OutboundLink/></a>,作者:TZYY</p>\n</blockquote>\n<h2 id="概述"><a class="header-anchor" href="#概述">#</a> 概述</h2>\n<p><code>package.json</code>必须是一个严格的json文件,而不仅仅是js里边的一个对象。其中很多属性可以通过<code>npm-config</code>来生成</p>\n',lastUpdated:"2022/12/14, 19:36:42",lastUpdatedTimestamp:1671017802e3},{title:"yaml语言教程",frontmatter:{title:"yaml语言教程",date:"2019-12-25T14:27:01.000Z",permalink:"/pages/4e8444e2d534d14f",categories:["技术","技术文档"],tags:[null],author:{name:"heBody",link:"https://github.com/heBody"}},regularPath:"/03.%E6%8A%80%E6%9C%AF/01.%E6%8A%80%E6%9C%AF%E6%96%87%E6%A1%A3/15.yaml%E8%AF%AD%E8%A8%80%E6%95%99%E7%A8%8B.html",relativePath:"03.技术/01.技术文档/15.yaml语言教程.md",key:"v-5d7ec670",path:"/pages/4e8444e2d534d14f/",headers:[{level:2,title:"简介",slug:"简介"},{level:2,title:"基本语法",slug:"基本语法"},{level:2,title:"数据类型",slug:"数据类型"},{level:2,title:"YAML 对象",slug:"yaml-对象"},{level:2,title:"YAML 数组",slug:"yaml-数组"},{level:2,title:"复合结构(对象和数组组合)",slug:"复合结构-对象和数组组合"},{level:2,title:"纯量",slug:"纯量"},{level:2,title:"转换数据格式",slug:"转换数据格式"},{level:2,title:"锚点引用",slug:"锚点引用"}],excerpt:'<h1 id="yaml语言教程"><a class="header-anchor" href="#yaml语言教程">#</a> yaml语言教程</h1>\n<h2 id="简介"><a class="header-anchor" href="#简介">#</a> 简介</h2>\n<p>YAML 是 &quot;YAML Ain\'t a Markup Language&quot;(YAML 不是一种标记语言)的递归缩写。在开发的这种语言时,YAML 的意思其实是:&quot;Yet Another Markup Language&quot;(仍是一种标记语言)。</p>\n',lastUpdated:"2022/12/14, 19:36:42",lastUpdatedTimestamp:1671017802e3},{title:"Git修改分支名",frontmatter:{title:"Git修改分支名",date:"2022-08-11T10:51:18.000Z",permalink:"/pages/922650/",categories:["技术","技术文档"],tags:[null],author:{name:"heBody",link:"https://github.com/heBody"}},regularPath:"/03.%E6%8A%80%E6%9C%AF/01.%E6%8A%80%E6%9C%AF%E6%96%87%E6%A1%A3/20.Git%E4%BF%AE%E6%94%B9%E5%88%86%E6%94%AF%E5%90%8D.html",relativePath:"03.技术/01.技术文档/20.Git修改分支名.md",key:"v-86dc64e0",path:"/pages/922650/",headers:[{level:2,title:"同时修改本地分支名和对应的远程分支名",slug:"同时修改本地分支名和对应的远程分支名"}],lastUpdated:"2022/12/14, 19:36:42",lastUpdatedTimestamp:1671017802e3},{title:"GitHub高级搜索技巧",frontmatter:{title:"GitHub高级搜索技巧",date:"2019-12-25T14:27:01.000Z",permalink:"/pages/4c778760be26d8b3",categories:["技术","GitHub技巧"],tags:[null],author:{name:"heBody",link:"https://github.com/heBody"}},regularPath:"/03.%E6%8A%80%E6%9C%AF/02.GitHub%E6%8A%80%E5%B7%A7/01.GitHub%E9%AB%98%E7%BA%A7%E6%90%9C%E7%B4%A2%E6%8A%80%E5%B7%A7.html",relativePath:"03.技术/02.GitHub技巧/01.GitHub高级搜索技巧.md",key:"v-64a3e558",path:"/pages/4c778760be26d8b3/",excerpt:'<h1 id="github高级搜索技巧"><a class="header-anchor" href="#github高级搜索技巧">#</a> GitHub高级搜索技巧</h1>\n<p><code>in:name &lt;关键字&gt;</code>\n仓库名称带关键字查询</p>\n<p><code>in:description &lt;关键字&gt;</code>\n仓库描述带关键字查询</p>\n<p><code>in:readme &lt;关键字&gt;</code>\nREADME文件带关键字查询</p>\n',lastUpdated:"2022/12/14, 19:36:42",lastUpdatedTimestamp:1671017802e3},{title:"GitHub Actions 实现自动部署静态博客",frontmatter:{title:"GitHub Actions 实现自动部署静态博客",date:"2019-12-27T11:44:41.000Z",permalink:"/pages/6b9d359ec5aa5019",categories:["技术","GitHub技巧"],tags:[null],author:{name:"heBody",link:"https://github.com/heBody"}},regularPath:"/03.%E6%8A%80%E6%9C%AF/02.GitHub%E6%8A%80%E5%B7%A7/02.GitHub%20Actions%20%E5%AE%9E%E7%8E%B0%E8%87%AA%E5%8A%A8%E9%83%A8%E7%BD%B2%E9%9D%99%E6%80%81%E5%8D%9A%E5%AE%A2.html",relativePath:"03.技术/02.GitHub技巧/02.GitHub Actions 实现自动部署静态博客.md",key:"v-2e647478",path:"/pages/6b9d359ec5aa5019/",headers:[{level:2,title:"前言",slug:"前言"},{level:2,title:"实现",slug:"实现"},{level:2,title:"相关文章",slug:"相关文章"}],excerpt:'<h1 id="github-actions-实现自动部署静态博客"><a class="header-anchor" href="#github-actions-实现自动部署静态博客">#</a> GitHub Actions 实现自动部署静态博客</h1>\n<h2 id="前言"><a class="header-anchor" href="#前言">#</a> 前言</h2>\n<p>我使用vuepress搭建了一个静态博客,挂在了Github pages和<a href="https://dev.tencent.com/" target="_blank" rel="noopener noreferrer">Coding pages<OutboundLink/></a>上面。</p>\n<p>coding pages在国内的访问速度比github pages要快很多,而且还可以被百度收录。</p>\n',lastUpdated:"2022/12/14, 19:36:42",lastUpdatedTimestamp:1671017802e3},{title:"GitHub Actions 定时运行代码:每天定时百度链接推送",frontmatter:{title:"GitHub Actions 定时运行代码:每天定时百度链接推送",date:"2019-12-30T21:23:00.000Z",permalink:"/pages/f44d2f9ad04ab8d3",categories:["技术","GitHub技巧"],tags:["github","博客"],author:{name:"heBody",link:"https://github.com/heBody"}},regularPath:"/03.%E6%8A%80%E6%9C%AF/02.GitHub%E6%8A%80%E5%B7%A7/03.GitHub%20Actions%20%E5%AE%9A%E6%97%B6%E8%BF%90%E8%A1%8C%E4%BB%A3%E7%A0%81%EF%BC%9A%E6%AF%8F%E5%A4%A9%E5%AE%9A%E6%97%B6%E7%99%BE%E5%BA%A6%E9%93%BE%E6%8E%A5%E6%8E%A8%E9%80%81.html",relativePath:"03.技术/02.GitHub技巧/03.GitHub Actions 定时运行代码:每天定时百度链接推送.md",key:"v-dda145ec",path:"/pages/f44d2f9ad04ab8d3/",headers:[{level:2,title:"百度主动链接推送",slug:"百度主动链接推送"},{level:2,title:"自动生成urls.txt",slug:"自动生成urls-txt"},{level:2,title:"GitHub Actions 定时运行代码",slug:"github-actions-定时运行代码"},{level:3,title:"配置 GitHub Actions",slug:"配置-github-actions"},{level:3,title:"baiduPush命令在package.json配置",slug:"baidupush命令在package-json配置"},{level:3,title:"baiduPush.sh执行百度推送命令",slug:"baidupush-sh执行百度推送命令"},{level:2,title:"相关文章",slug:"相关文章"}],excerpt:'<h1 id="github-actions-定时运行代码-每天定时百度链接推送"><a class="header-anchor" href="#github-actions-定时运行代码-每天定时百度链接推送">#</a> GitHub Actions 定时运行代码:每天定时百度链接推送</h1>\n<p>博客上线已经有些日子了,却发现百度迟迟没有收录我的博客页面,在百度推送工具当中除了有自动推送的代码嵌入网站之外,还有一个实时的主动推送更高效。</p>\n<p>最近刚好了解到GitHub Actions的定时运行代码功能,可以用它来每天自动运行命令生成所有博客链接并进行一次性推送给百度。</p>\n<p>GitHub Actions 是一个 CI/CD(持续集成/持续部署)工具,但也可用作代码运行环境。<strong>功能非常强大,能够玩出许多花样。</strong></p>\n',lastUpdated:"2022/12/14, 19:36:42",lastUpdatedTimestamp:1671017802e3},{title:"GitHub加速下载项目的方法",frontmatter:{title:"GitHub加速下载项目的方法",date:"2020-03-09T10:28:09.000Z",permalink:"/pages/95331c6a9613faf8",categories:["技术","GitHub技巧"],tags:[null],author:{name:"heBody",link:"https://github.com/heBody"}},regularPath:"/03.%E6%8A%80%E6%9C%AF/02.GitHub%E6%8A%80%E5%B7%A7/10.GitHub%E5%8A%A0%E9%80%9F%E4%B8%8B%E8%BD%BD%E9%A1%B9%E7%9B%AE%E7%9A%84%E6%96%B9%E6%B3%95.html",relativePath:"03.技术/02.GitHub技巧/10.GitHub加速下载项目的方法.md",key:"v-453ba9ae",path:"/pages/95331c6a9613faf8/",headers:[{level:2,title:"利用码云来转接做下载加速",slug:"利用码云来转接做下载加速"}],excerpt:'<h1 id="github加速下载项目的方法"><a class="header-anchor" href="#github加速下载项目的方法">#</a> GitHub加速下载项目的方法</h1>\n<p>国内在github上克隆项目总是异常的慢,据我多次克隆观察,下载速度最快就20k/s左右,特别是在克隆比较大的项目时简直慢得无法忍受!下面介绍一种加载克隆项目的方法。</p>\n',lastUpdated:"2022/12/14, 19:36:42",lastUpdatedTimestamp:1671017802e3},{title:"nodejs递归读取所有文件",frontmatter:{title:"nodejs递归读取所有文件",date:"2019-12-26T15:57:32.000Z",permalink:"/pages/117708e0af7f0bd9",categories:["技术","Nodejs"],tags:[null],author:{name:"heBody",link:"https://github.com/heBody"}},regularPath:"/03.%E6%8A%80%E6%9C%AF/03.Nodejs/01.nodejs%E9%80%92%E5%BD%92%E8%AF%BB%E5%8F%96%E6%89%80%E6%9C%89%E6%96%87%E4%BB%B6.html",relativePath:"03.技术/03.Nodejs/01.nodejs递归读取所有文件.md",key:"v-5d754cb7",path:"/pages/117708e0af7f0bd9/",lastUpdated:"2022/12/14, 19:36:42",lastUpdatedTimestamp:1671017802e3},{title:"解决百度无法收录搭建在GitHub上的个人博客的问题",frontmatter:{title:"解决百度无法收录搭建在GitHub上的个人博客的问题",date:"2019-12-25T14:27:01.000Z",permalink:"/pages/41f87d890d0a02af",categories:["技术","博客搭建"],tags:[null],author:{name:"heBody",link:"https://github.com/heBody"}},regularPath:"/03.%E6%8A%80%E6%9C%AF/04.%E5%8D%9A%E5%AE%A2%E6%90%AD%E5%BB%BA/01.%E8%A7%A3%E5%86%B3%E7%99%BE%E5%BA%A6%E6%97%A0%E6%B3%95%E6%94%B6%E5%BD%95%E6%90%AD%E5%BB%BA%E5%9C%A8GitHub%E4%B8%8A%E7%9A%84%E4%B8%AA%E4%BA%BA%E5%8D%9A%E5%AE%A2%E7%9A%84%E9%97%AE%E9%A2%98.html",relativePath:"03.技术/04.博客搭建/01.解决百度无法收录搭建在GitHub上的个人博客的问题.md",key:"v-0ad70742",path:"/pages/41f87d890d0a02af/",headers:[{level:2,title:"背景",slug:"背景"},{level:2,title:"解决方案",slug:"解决方案"},{level:3,title:"如何知道百度有没有收录?",slug:"如何知道百度有没有收录"},{level:2,title:"相关文章",slug:"相关文章"}],excerpt:'<h1 id="解决百度无法收录搭建在github上的静态博客的问题"><a class="header-anchor" href="#解决百度无法收录搭建在github上的静态博客的问题">#</a> 解决百度无法收录搭建在GitHub上的静态博客的问题</h1>\n<div class="custom-block warning"><p class="custom-block-title">注意</p>\n<p>如果你正在寻找本博客的搭建文档,博主建议您查看这个仓库的<a href="https://github.com/heBody" target="_blank" rel="noopener noreferrer">README<OutboundLink/></a>。</p>\n</div>\n<h2 id="背景"><a class="header-anchor" href="#背景">#</a> 背景</h2>\n<p>由于GitHub禁止百度爬虫访问,造成托管在GitHub Pages上的博客无法被百度收录。相关问题可以通过百度站长平台的<code>抓取诊断</code>再现,每次都是403 Forbidden的错误。</p>\n',lastUpdated:"2022/12/14, 19:36:42",lastUpdatedTimestamp:1671017802e3},{title:"GitHub + jsDelivr + TinyPNG+ PicGo 打造稳定快速、高效免费图床",frontmatter:{title:"GitHub + jsDelivr + TinyPNG+ PicGo 打造稳定快速、高效免费图床",date:"2020-01-03T12:55:43.000Z",permalink:"/pages/a5f73af5185fdf0a",categories:["技术","博客搭建"],tags:[null],author:{name:"heBody",link:"https://github.com/heBody"}},regularPath:"/03.%E6%8A%80%E6%9C%AF/04.%E5%8D%9A%E5%AE%A2%E6%90%AD%E5%BB%BA/03.GitHub%20+%20jsDelivr%20+%20TinyPNG+%20PicGo%20%E6%89%93%E9%80%A0%E7%A8%B3%E5%AE%9A%E5%BF%AB%E9%80%9F%E3%80%81%E9%AB%98%E6%95%88%E5%85%8D%E8%B4%B9%E5%9B%BE%E5%BA%8A.html",relativePath:"03.技术/04.博客搭建/03.GitHub + jsDelivr + TinyPNG+ PicGo 打造稳定快速、高效免费图床.md",key:"v-dd2d0f56",path:"/pages/a5f73af5185fdf0a/",headers:[{level:2,title:"前言",slug:"前言"},{level:2,title:"图床打造",slug:"图床打造"}],excerpt:'<h1 id="github-jsdelivr-tinypng-picgo-打造稳定快速、高效免费图床"><a class="header-anchor" href="#github-jsdelivr-tinypng-picgo-打造稳定快速、高效免费图床">#</a> GitHub + jsDelivr + TinyPNG+ PicGo 打造稳定快速、高效免费图床</h1>\n<h2 id="前言"><a class="header-anchor" href="#前言">#</a> 前言</h2>\n<p><strong>Q:为什么要使用图床呢?什么是图床?</strong></p>\n<p>A:写博客文章时,图片的上传和存放是一个问题,有的朋友可能会把图片放到和博客同一个仓库当中,使用相对路径来引用,这样后期维护起来会比较麻烦。还有的朋友会在不同的平台发布同一篇文章,这样一来每个平台都要上传图片,为了解决这些问题,比较推荐的做法是把图片统一上传到一个在线的第三方静态资源库中,我们把这个资源库称为图床,其返回一个图片的URL,使用<code>markdown+图片url</code>的方式写作文章,一次编写,到处使用~</p>\n',lastUpdated:"2022/12/14, 19:36:42",lastUpdatedTimestamp:1671017802e3},{title:"使用Gitalk实现静态博客无后台评论系统",frontmatter:{title:"使用Gitalk实现静态博客无后台评论系统",date:"2019-12-25T14:27:01.000Z",permalink:"/pages/1da0bf9a988eafe5",categories:["技术","博客搭建"],tags:[null],author:{name:"heBody",link:"https://github.com/heBody"}},regularPath:"/03.%E6%8A%80%E6%9C%AF/04.%E5%8D%9A%E5%AE%A2%E6%90%AD%E5%BB%BA/02.%E4%BD%BF%E7%94%A8Gitalk%E5%AE%9E%E7%8E%B0%E9%9D%99%E6%80%81%E5%8D%9A%E5%AE%A2%E6%97%A0%E5%90%8E%E5%8F%B0%E8%AF%84%E8%AE%BA%E7%B3%BB%E7%BB%9F.html",relativePath:"03.技术/04.博客搭建/02.使用Gitalk实现静态博客无后台评论系统.md",key:"v-5415afba",path:"/pages/1da0bf9a988eafe5/",headers:[{level:2,title:"前言",slug:"前言"},{level:2,title:"准备",slug:"准备"},{level:2,title:"实现",slug:"实现"},{level:3,title:"安装",slug:"安装"},{level:3,title:"使用",slug:"使用"},{level:3,title:"BUG修复",slug:"bug修复"}],excerpt:'<h1 id="使用gitalk实现静态博客无后台评论系统"><a class="header-anchor" href="#使用gitalk实现静态博客无后台评论系统">#</a> 使用Gitalk实现静态博客无后台评论系统</h1>\n<h2 id="前言"><a class="header-anchor" href="#前言">#</a> 前言</h2>\n<p>Gitalk,一个基于 Github Issue 和 Preact 开发的评论插件。</p>\n<p>下面我们来用它在vuepress搭建的博客中搭建评论区吧</p>\n',lastUpdated:"2022/12/14, 19:36:42",lastUpdatedTimestamp:1671017802e3},{title:"vdoing主题效果图",frontmatter:{title:"vdoing主题效果图",date:"2020-04-08T11:27:22.000Z",permalink:"/pages/d557b9a89a215d2e",article:!1,author:{name:"heBody",link:"https://github.com/heBody"}},regularPath:"/03.%E6%8A%80%E6%9C%AF/04.%E5%8D%9A%E5%AE%A2%E6%90%AD%E5%BB%BA/10.vdoing%E4%B8%BB%E9%A2%98%E6%95%88%E6%9E%9C%E5%9B%BE.html",relativePath:"03.技术/04.博客搭建/10.vdoing主题效果图.md",key:"v-7d8f1dc8",path:"/pages/d557b9a89a215d2e/",headers:[{level:2,title:"PC端",slug:"pc端"},{level:2,title:"首页个性化大图",slug:"首页个性化大图"},{level:2,title:"深色模式和阅读模式",slug:"深色模式和阅读模式"},{level:2,title:"移动端",slug:"移动端"}],lastUpdated:"2022/12/14, 19:36:42",lastUpdatedTimestamp:1671017802e3},{title:"费曼学习法",frontmatter:{title:"费曼学习法",date:"2020-07-16T10:04:14.000Z",permalink:"/pages/f2a556/",categories:["更多","学习"],tags:["学习方法"],author:{name:"heBody",link:"https://github.com/heBody"}},regularPath:"/04.%E6%9B%B4%E5%A4%9A/01.%E5%AD%A6%E4%B9%A0/00.%E8%B4%B9%E6%9B%BC%E5%AD%A6%E4%B9%A0%E6%B3%95.html",relativePath:"04.更多/01.学习/00.费曼学习法.md",key:"v-6db74ebb",path:"/pages/f2a556/",headers:[{level:3,title:"步骤",slug:"步骤"}],lastUpdated:"2022/12/14, 19:36:42",lastUpdatedTimestamp:1671017802e3},{title:"笔记方法",frontmatter:{title:"笔记方法",date:"2020-07-16T11:00:55.000Z",permalink:"/pages/e60c81/",categories:["更多","学习"],tags:["笔记方法"],author:{name:"heBody",link:"https://github.com/heBody"}},regularPath:"/04.%E6%9B%B4%E5%A4%9A/01.%E5%AD%A6%E4%B9%A0/01.%E7%AC%94%E8%AE%B0%E6%96%B9%E6%B3%95.html",relativePath:"04.更多/01.学习/01.笔记方法.md",key:"v-3fea4c0e",path:"/pages/e60c81/",headers:[{level:2,title:"康奈尔笔记法",slug:"康奈尔笔记法"},{level:2,title:"思维导图法",slug:"思维导图法"},{level:2,title:"金三角笔记法",slug:"金三角笔记法"},{level:2,title:"曼陀罗九宫格笔记法",slug:"曼陀罗九宫格笔记法"},{level:2,title:"记号记录法",slug:"记号记录法"},{level:2,title:"六色笔记法",slug:"六色笔记法"},{level:2,title:"加工笔记法",slug:"加工笔记法"},{level:2,title:"整理笔记要点1-科学标记重点",slug:"整理笔记要点1-科学标记重点"},{level:2,title:"整理笔记要点2-修改不涂改",slug:"整理笔记要点2-修改不涂改"}],lastUpdated:"2022/12/14, 19:36:42",lastUpdatedTimestamp:1671017802e3},{title:"提高学习效率的策略",frontmatter:{title:"提高学习效率的策略",date:"2020-01-04T11:54:14.000Z",permalink:"/pages/a8692ab3bdcb4588",categories:["更多","学习"],tags:[null],author:{name:"heBody",link:"https://github.com/heBody"}},regularPath:"/04.%E6%9B%B4%E5%A4%9A/01.%E5%AD%A6%E4%B9%A0/02.%E6%8F%90%E9%AB%98%E5%AD%A6%E4%B9%A0%E6%95%88%E7%8E%87%E7%9A%84%E7%AD%96%E7%95%A5.html",relativePath:"04.更多/01.学习/02.提高学习效率的策略.md",key:"v-413f1daa",path:"/pages/a8692ab3bdcb4588/",headers:[{level:3,title:"检索式学习",slug:"检索式学习"},{level:3,title:"频繁的集中练习只会产生短期记忆",slug:"频繁的集中练习只会产生短期记忆"},{level:3,title:"间隔练习使知识存储更牢固",slug:"间隔练习使知识存储更牢固"},{level:3,title:"穿插练习有助于长期记忆",slug:"穿插练习有助于长期记忆"},{level:3,title:"多样化练习促进知识的活学活用",slug:"多样化练习促进知识的活学活用"},{level:3,title:"小总结",slug:"小总结"},{level:3,title:"知识的“滚雪球”效应",slug:"知识的-滚雪球-效应"}],excerpt:'<h1 id="提高学习效率的策略"><a class="header-anchor" href="#提高学习效率的策略">#</a> 提高学习效率的策略</h1>\n<p>推荐一本关于学习方法的书《认知天性》,里面有讲到有一些简单实用的学习策略,能让大家学的更好、记得更牢,而且这些策略人人可用,时时可用。这些方法包括各种形式的<strong>检索练习</strong>——例如小的测试和自测,<strong>间隔练习</strong>、<strong>穿插</strong>不同但相关科目或技能的练习(<strong>多样化练习</strong>),在别人教给你解决方案前自己先试着解决问题,从不同类型问题中提取基本原理和规则。由于学习是反复的过程,需要复习早先学过的东西,持续更新已知,并把它们和新知识联系起来。</p>\n',lastUpdated:"2022/12/14, 19:36:42",lastUpdatedTimestamp:1671017802e3},{title:"提高记忆的技巧",frontmatter:{title:"提高记忆的技巧",date:"2020-01-03T14:34:48.000Z",permalink:"/pages/996822b2a2ca6e3b",categories:["更多","学习"],tags:[null],author:{name:"heBody",link:"https://github.com/heBody"}},regularPath:"/04.%E6%9B%B4%E5%A4%9A/01.%E5%AD%A6%E4%B9%A0/03.%E6%8F%90%E9%AB%98%E8%AE%B0%E5%BF%86%E7%9A%84%E6%8A%80%E5%B7%A7.html",relativePath:"04.更多/01.学习/03.提高记忆的技巧.md",key:"v-a6be1c98",path:"/pages/996822b2a2ca6e3b/",excerpt:'<h1 id="提高记忆的技巧"><a class="header-anchor" href="#提高记忆的技巧">#</a> 提高记忆的技巧</h1>\n<ol>\n<li><strong>多个感官并用</strong>\n记忆时调用一切感官。没人的话可以大声阅读,有人的话可以默念,轻微摇晃手指等,有助于保持专注。</li>\n</ol>\n',lastUpdated:"2022/12/14, 19:36:42",lastUpdatedTimestamp:1671017802e3},{title:"处理问题的思路",frontmatter:{title:"处理问题的思路",date:"2020-01-03T14:36:02.000Z",permalink:"/pages/9ba2b8fb13de1957",categories:["更多","学习"],tags:[null],author:{name:"heBody",link:"https://github.com/heBody"}},regularPath:"/04.%E6%9B%B4%E5%A4%9A/01.%E5%AD%A6%E4%B9%A0/05.%E5%A4%84%E7%90%86%E9%97%AE%E9%A2%98%E7%9A%84%E6%80%9D%E8%B7%AF.html",relativePath:"04.更多/01.学习/05.处理问题的思路.md",key:"v-0379d048",path:"/pages/9ba2b8fb13de1957/",headers:[{level:2,title:"工作中遇到问题?",slug:"工作中遇到问题"},{level:2,title:"这个问题我该怎么解决呢?",slug:"这个问题我该怎么解决呢"}],lastUpdated:"2022/12/14, 19:36:42",lastUpdatedTimestamp:1671017802e3},{title:"自律小建议",frontmatter:{title:"自律小建议",date:"2020-01-03T14:35:18.000Z",permalink:"/pages/c3f302a03c8daf79",categories:["更多","学习"],tags:[null],author:{name:"heBody",link:"https://github.com/heBody"}},regularPath:"/04.%E6%9B%B4%E5%A4%9A/01.%E5%AD%A6%E4%B9%A0/04.%E8%87%AA%E5%BE%8B%E5%B0%8F%E5%BB%BA%E8%AE%AE.html",relativePath:"04.更多/01.学习/04.自律小建议.md",key:"v-bca463c4",path:"/pages/c3f302a03c8daf79/",excerpt:'<h1 id="自律小建议"><a class="header-anchor" href="#自律小建议">#</a> 自律小建议</h1>\n<ul>\n<li><strong>培养专注</strong>\n<ul>\n<li>练习冥想、瑜伽等</li>\n</ul>\n</li>\n<li><strong>排除外界干扰</strong>\n<ul>\n<li>手机调到勿扰,在图书馆学习等</li>\n</ul>\n</li>\n</ul>\n',lastUpdated:"2022/12/14, 19:36:42",lastUpdatedTimestamp:1671017802e3},{title:"搜索引擎使用技巧",frontmatter:{title:"搜索引擎使用技巧",date:"2020-05-24T11:44:19.000Z",permalink:"/pages/ce818a",categories:["更多","学习"],tags:["搜索技巧"],author:{name:"heBody",link:"https://github.com/heBody"}},regularPath:"/04.%E6%9B%B4%E5%A4%9A/01.%E5%AD%A6%E4%B9%A0/10.%E6%90%9C%E7%B4%A2%E5%BC%95%E6%93%8E%E4%BD%BF%E7%94%A8%E6%8A%80%E5%B7%A7.html",relativePath:"04.更多/01.学习/10.搜索引擎使用技巧.md",key:"v-8690b482",path:"/pages/ce818a/",headers:[{level:3,title:"技巧1:排除干扰项",slug:"技巧1-排除干扰项"},{level:3,title:"技巧2:精确搜索",slug:"技巧2-精确搜索"},{level:3,title:"技巧3:指定网站内搜索",slug:"技巧3-指定网站内搜索"},{level:3,title:"技巧4:指定文件格式",slug:"技巧4-指定文件格式"},{level:3,title:"技巧5:指定在标题搜索",slug:"技巧5-指定在标题搜索"},{level:3,title:"技巧6:指定在内容中搜索",slug:"技巧6-指定在内容中搜索"},{level:3,title:"技巧7:多种搜索技巧叠加使用",slug:"技巧7-多种搜索技巧叠加使用"},{level:3,title:"注意事项",slug:"注意事项"}],lastUpdated:"2022/12/14, 19:36:42",lastUpdatedTimestamp:1671017802e3},{title:"反向拆解让人上瘾的套路,找回自律",frontmatter:{title:"反向拆解让人上瘾的套路,找回自律",date:"2020-07-22T13:05:49.000Z",permalink:"/pages/d6d331/",categories:["更多","心情杂货"],tags:["心理","自律"],author:{name:"heBody",link:"https://github.com/heBody"}},regularPath:"/04.%E6%9B%B4%E5%A4%9A/05.%E5%BF%83%E6%83%85%E6%9D%82%E8%B4%A7/10.%E5%8F%8D%E5%90%91%E6%8B%86%E8%A7%A3%E8%AE%A9%E4%BA%BA%E4%B8%8A%E7%98%BE%E7%9A%84%E5%A5%97%E8%B7%AF%EF%BC%8C%E6%89%BE%E5%9B%9E%E8%87%AA%E5%BE%8B.html",relativePath:"04.更多/05.心情杂货/10.反向拆解让人上瘾的套路,找回自律.md",key:"v-6822ed3c",path:"/pages/d6d331/",headers:[{level:3,title:"1.诱人的目标",slug:"_1-诱人的目标"},{level:3,title:"2.无法抵挡无法预知的积极反馈",slug:"_2-无法抵挡无法预知的积极反馈"},{level:3,title:"3.渐进式的进步和改善的感觉",slug:"_3-渐进式的进步和改善的感觉"},{level:3,title:"4.随着时间的推移越来越困难的任务",slug:"_4-随着时间的推移越来越困难的任务"},{level:3,title:"5.需要解决却又暂未解决的紧张感",slug:"_5-需要解决却又暂未解决的紧张感"},{level:3,title:"6.强大的社会联系",slug:"_6-强大的社会联系"},{level:2,title:"找回自律,收获积极而长久的快乐",slug:"找回自律-收获积极而长久的快乐"}],excerpt:'<h1 id="反向拆解让人上瘾的套路-找回自律"><a class="header-anchor" href="#反向拆解让人上瘾的套路-找回自律">#</a> 反向拆解让人上瘾的套路,找回自律</h1>\n<p>当你打开手机准备学习或者查个资料的时候,很有可能不知不觉的就脱离的正规... 某某app发来通知:xx明星官宣啦、xx手游重磅上线,一起开启修仙之旅吧! xx结衣发布新番-4k画质&amp;AR体验、99+未读信息、支付宝到账100万元.... 你心想,就看一会,就一会儿... 不知不觉两三个小时过去了,你开始焦躁、后悔、自责。第二天,你又掉进相同的坑里。你可能会纳闷,为什么我的自制力这么差?为什么对某件事欲罢不能?</p>\n',lastUpdated:"2022/12/14, 19:36:42",lastUpdatedTimestamp:1671017802e3},{title:"一个完美主义者的自我救赎",frontmatter:{title:"一个完美主义者的自我救赎",date:"2020-01-16T15:15:27.000Z",permalink:"/pages/2d615df9a36a98ed",categories:["更多","心情杂货"],tags:[null],author:{name:"heBody",link:"https://github.com/heBody"}},regularPath:"/04.%E6%9B%B4%E5%A4%9A/05.%E5%BF%83%E6%83%85%E6%9D%82%E8%B4%A7/01.%E4%B8%80%E4%B8%AA%E5%AE%8C%E7%BE%8E%E4%B8%BB%E4%B9%89%E8%80%85%E7%9A%84%E8%87%AA%E6%88%91%E6%95%91%E8%B5%8E.html",relativePath:"04.更多/05.心情杂货/01.一个完美主义者的自我救赎.md",key:"v-40ccc080",path:"/pages/2d615df9a36a98ed/",excerpt:'<h1 id="一个完美主义者的自我救赎"><a class="header-anchor" href="#一个完美主义者的自我救赎">#</a> 一个完美主义者的自我救赎</h1>\n<p>最近,看到一个心理测试题是测试你是否有完美主义:</p>\n<blockquote>\n<p>(1)你是不是经常为自己设定目标,而且最终往往达不到那些目标?</p>\n<p>(2)当一件事件做得不够好时,你是否有再试一次的想法?</p>\n<p>(3)你是否休息时仍想着学习、工作、或者其他还没有解决的事?</p>\n<p>(4)如果遇到别人说话或打岔,破坏了你的注意力,你是否觉得不太高兴?</p>\n<p>(5)你是否常常会在事后想,如果当时能换成另一种方式来解决,也许会更加理想?</p>\n</blockquote>\n<p>如果上面的问题,你的回答大部分是肯定的,那么你就有完美主义倾向。</p>\n',lastUpdated:"2022/12/14, 19:36:42",lastUpdatedTimestamp:1671017802e3},{title:"2分钟规则",frontmatter:{title:"2分钟规则",date:"2020-11-09T11:05:29.000Z",permalink:"/pages/baaa02/",categories:["更多","实用技巧"],tags:["实用技巧","文摘"],author:{name:"heBody",link:"https://github.com/heBody"}},regularPath:"/04.%E6%9B%B4%E5%A4%9A/10.%E5%AE%9E%E7%94%A8%E6%8A%80%E5%B7%A7/01.2%E5%88%86%E9%92%9F%E8%A7%84%E5%88%99.html",relativePath:"04.更多/10.实用技巧/01.2分钟规则.md",key:"v-17606a76",path:"/pages/baaa02/",excerpt:"<p>每当你发现很难开始执行某项任务时,可以试试将其缩减成2分钟的版本。</p>\n<ul>\n<li>看一本书 → 看一页书</li>\n<li>写一篇文章 → 写一句话</li>\n<li>跑10公里 → 穿上跑鞋</li>\n<li>做100次俯卧撑 → 做1次俯卧撑</li>\n<li>多吃蔬菜水果 → 吃一个水果</li>\n<li>编写一个程序 → 编写一个函数 → 编写一行代码</li>\n</ul>\n",lastUpdated:"2022/12/14, 19:36:42",lastUpdatedTimestamp:1671017802e3},{title:"一行代码“黑”掉任意网站",frontmatter:{title:"一行代码“黑”掉任意网站",date:"2021-11-25T14:33:51.000Z",permalink:"/pages/dcebaf/",titleTag:"原创",sticky:1,categories:["更多","实用技巧"],tags:["JavaScript","css","实用技巧"],author:{name:"heBody",link:"https://github.com/heBody"}},regularPath:"/04.%E6%9B%B4%E5%A4%9A/10.%E5%AE%9E%E7%94%A8%E6%8A%80%E5%B7%A7/10.%E4%B8%80%E8%A1%8C%E4%BB%A3%E7%A0%81%E2%80%9C%E9%BB%91%E2%80%9D%E6%8E%89%E4%BB%BB%E6%84%8F%E7%BD%91%E7%AB%99.html",relativePath:"04.更多/10.实用技巧/10.一行代码“黑”掉任意网站.md",key:"v-2aa32df9",path:"/pages/dcebaf/",excerpt:'<h1 id="一行代码-黑-掉任意网站"><a class="header-anchor" href="#一行代码-黑-掉任意网站">#</a> 一行代码“黑”掉任意网站</h1>\n<p>实用技巧:只需一行代码,轻轻一点就可以把任意网站变成暗黑模式。\n<p align="center"><img src="https://cdn.jsdelivr.net/gh/xugaoyi/image_store@master/blog/QQ20211125-163111.2tmjlvz28n80.png" width="500" style="cursor: zoom-in;"></p></p>\n',lastUpdated:"2022/12/14, 19:36:42",lastUpdatedTimestamp:1671017802e3},{title:"关于",frontmatter:{title:"关于",date:"2019-12-25T14:27:01.000Z",permalink:"/about/",sidebar:!1,article:!1,author:{name:"heBody",link:"https://github.com/heBody"}},regularPath:"/05.%E5%85%B3%E4%BA%8E/01.%E5%85%B3%E4%BA%8E.html",relativePath:"05.关于/01.关于.md",key:"v-ca5728b6",path:"/about/",headers:[{level:2,title:"📚Blog",slug:"📚blog"},{level:3,title:"技能",slug:"技能"},{level:2,title:"✉️ 联系",slug:"联系"}],lastUpdated:"2022/12/14, 19:36:42",lastUpdatedTimestamp:1671017802e3},{title:"友情链接",frontmatter:{title:"友情链接",date:"2019-12-25T14:27:01.000Z",permalink:"/friends",article:!1,sidebar:!1,author:{name:"heBody",link:"https://github.com/heBody"}},regularPath:"/04.%E6%9B%B4%E5%A4%9A/99.%E5%8F%8B%E6%83%85%E9%93%BE%E6%8E%A5.html",relativePath:"04.更多/99.友情链接.md",key:"v-537e618a",path:"/friends/",headers:[{level:3,title:"友链申请",slug:"友链申请"}],lastUpdated:"2022/12/14, 19:36:42",lastUpdatedTimestamp:1671017802e3},{title:"常用的前端轮子",frontmatter:{title:"常用的前端轮子",date:"2021-10-09T19:42:02.000Z",permalink:"/pages/47cf96/",article:!1,author:{name:"heBody",link:"https://github.com/heBody"}},regularPath:"/06.%E6%94%B6%E8%97%8F%E5%A4%B9/02.%E5%B8%B8%E7%94%A8%E7%9A%84%E5%89%8D%E7%AB%AF%E8%BD%AE%E5%AD%90.html",relativePath:"06.收藏夹/02.常用的前端轮子.md",key:"v-7d60c5fc",path:"/pages/47cf96/",headers:[{level:2,title:"React UI 组件库",slug:"react-ui-组件库"},{level:2,title:"Vue UI组件库",slug:"vue-ui组件库"},{level:2,title:"常用效果组件",slug:"常用效果组件"},{level:2,title:"工具类",slug:"工具类"},{level:2,title:"Vue工具类",slug:"vue工具类"},{level:2,title:"其他",slug:"其他"}],lastUpdated:"2022/12/14, 19:36:42",lastUpdatedTimestamp:1671017802e3},{title:"网站",frontmatter:{title:"网站",permalink:"/pages/beb6c0bd8a66cea6/",date:"2020-04-19T11:33:04.000Z",article:!1,author:{name:"heBody",link:"https://github.com/heBody"}},regularPath:"/06.%E6%94%B6%E8%97%8F%E5%A4%B9/01.%E7%BD%91%E7%AB%99.html",relativePath:"06.收藏夹/01.网站.md",key:"v-6d7bd5ac",path:"/pages/beb6c0bd8a66cea6/",headers:[{level:2,title:"推荐",slug:"推荐"},{level:2,title:"文档",slug:"文档"},{level:2,title:"社区",slug:"社区"},{level:3,title:"社区互动",slug:"社区互动"},{level:2,title:"技巧",slug:"技巧"},{level:2,title:"博客",slug:"博客"},{level:2,title:"电子书",slug:"电子书"},{level:2,title:"优秀文章",slug:"优秀文章"},{level:2,title:"视频",slug:"视频"},{level:2,title:"Github",slug:"github"},{level:2,title:"评论系统",slug:"评论系统"},{level:2,title:"前端小工具",slug:"前端小工具"},{level:2,title:"代码编辑",slug:"代码编辑"},{level:2,title:"Emoji表情",slug:"emoji表情"},{level:2,title:"图片工具",slug:"图片工具"},{level:2,title:"SVG",slug:"svg"},{level:2,title:"音视频工具",slug:"音视频工具"},{level:2,title:"思维导图",slug:"思维导图"},{level:2,title:"CSS",slug:"css"},{level:2,title:"CDN加速",slug:"cdn加速"},{level:2,title:"网站托管",slug:"网站托管"},{level:2,title:"正则",slug:"正则"},{level:2,title:"其他",slug:"其他"},{level:2,title:"设计",slug:"设计"},{level:2,title:"图库",slug:"图库"},{level:2,title:"3D",slug:"_3d"},{level:2,title:"交互",slug:"交互"},{level:2,title:"有趣",slug:"有趣"},{level:2,title:"生成器",slug:"生成器"},{level:2,title:"元宇宙",slug:"元宇宙"},{level:2,title:"教程",slug:"教程"},{level:2,title:"产品",slug:"产品"},{level:2,title:"实用",slug:"实用"},{level:2,title:"Talk",slug:"talk"},{level:2,title:"算法",slug:"算法"},{level:2,title:"nginx",slug:"nginx"},{level:2,title:"生活",slug:"生活"}],excerpt:'<h1 id="个人收藏夹"><a class="header-anchor" href="#个人收藏夹">#</a> 个人收藏夹</h1>\n<h2 id="推荐"><a class="header-anchor" href="#推荐">#</a> 推荐</h2>\n<ul>\n<li><a href="https://panjiachen.github.io/awesome-bookmarks/" target="_blank" rel="noopener noreferrer">panjiachen<OutboundLink/></a> by 花裤衩</li>\n<li><a href="https://www.code-nav.cn/" target="_blank" rel="noopener noreferrer">编程导航<OutboundLink/></a> by 程序员鱼皮</li>\n<li><a href="https://r2coding.com/" target="_blank" rel="noopener noreferrer">编程自学之路<OutboundLink/></a> by 程序羊</li>\n<li><a href="https://gitee.com/jishupang/web_atlas" target="_blank" rel="noopener noreferrer">前端知识图谱+B站资源整合<OutboundLink/></a> by 技术胖</li>\n<li><a href="https://shengxinjing.cn/" target="_blank" rel="noopener noreferrer">大圣编程自学网<OutboundLink/></a> by 大圣</li>\n<li><a href="https://devtool.tech/" target="_blank" rel="noopener noreferrer">开发者武器库<OutboundLink/></a></li>\n<li><a href="https://www.fly63.com/tool/home.html" target="_blank" rel="noopener noreferrer">工具大全<OutboundLink/></a></li>\n</ul>\n<p align="center">\n<img src="https://fastly.jsdelivr.net/gh/xugaoyi/image_store@master/blog/qrcode.zdqv9mlfc0g.jpg" width="200">\n</p>\n<div class="center-container"><p>关注公众号[有趣研究社],回复<code>前端资源</code>,获取 <a href="https://github.com/heBodyblog-gitalk-comment/wiki/Front-end-Study" target="_blank" rel="noopener noreferrer">前端学习资料<OutboundLink/></a></p>\n</div>',lastUpdated:"2022/12/14, 19:36:42",lastUpdatedTimestamp:1671017802e3},{title:"归档",frontmatter:{archivesPage:!0,title:"归档",permalink:"/archives/",article:!1},regularPath:"/@pages/archivesPage.html",relativePath:"@pages/archivesPage.md",key:"v-75911aca",path:"/archives/",lastUpdated:"2022/12/14, 19:36:42",lastUpdatedTimestamp:1671017802e3},{title:"标签",frontmatter:{tagsPage:!0,title:"标签",permalink:"/tags/",article:!1},regularPath:"/@pages/tagsPage.html",relativePath:"@pages/tagsPage.md",key:"v-a52f63ca",path:"/tags/",lastUpdated:"2022/12/14, 19:36:42",lastUpdatedTimestamp:1671017802e3},{title:"你知道的越多,不知道的也就越多",frontmatter:{title:"你知道的越多,不知道的也就越多",date:"2020-05-06T15:52:40.000Z",permalink:"/pages/f2e63f",sidebar:"auto",categories:["随笔"],tags:["学习","知识","鸡汤"],author:{name:"heBody",link:"https://github.com/heBody"}},regularPath:"/_posts/%E9%9A%8F%E7%AC%94/%E4%BD%A0%E7%9F%A5%E9%81%93%E7%9A%84%E8%B6%8A%E5%A4%9A%EF%BC%8C%E4%B8%8D%E7%9F%A5%E9%81%93%E7%9A%84%E4%B9%9F%E5%B0%B1%E8%B6%8A%E5%A4%9A.html",relativePath:"_posts/随笔/你知道的越多,不知道的也就越多.md",key:"v-024228c0",path:"/pages/f2e63f/",excerpt:"<p>不知道大家有没有发现,我们身边经常有这样的人,他们越是有能力的,越是有知识的,越是低调,越是谦逊,因为他们深知,知道的越多,不知道的也就越多。</p>\n",lastUpdated:"2022/12/14, 19:36:42",lastUpdatedTimestamp:1671017802e3},{title:"我做了一个手写春联小网页,祝大家虎年暴富",frontmatter:{title:"我做了一个手写春联小网页,祝大家虎年暴富",date:"2022-01-28T14:59:51.000Z",permalink:"/pages/829589/",titleTag:"原创",sidebar:"auto",categories:["随笔"],tags:[null],author:{name:"heBody",link:"https://github.com/heBody"}},regularPath:"/_posts/%E9%9A%8F%E7%AC%94/%E6%88%91%E5%81%9A%E4%BA%86%E4%B8%80%E4%B8%AA%E6%89%8B%E5%86%99%E6%98%A5%E8%81%94%E5%B0%8F%E7%BD%91%E9%A1%B5%EF%BC%8C%E7%A5%9D%E5%A4%A7%E5%AE%B6%E8%99%8E%E5%B9%B4%E6%9A%B4%E5%AF%8C.html",relativePath:"_posts/随笔/我做了一个手写春联小网页,祝大家虎年暴富.md",key:"v-3650fe32",path:"/pages/829589/",headers:[{level:3,title:"前言",slug:"前言"},{level:3,title:"产品构思",slug:"产品构思"},{level:3,title:"设计",slug:"设计"},{level:3,title:"开发",slug:"开发"}],excerpt:'<p>手写春联:<a href="https://cl.heBody.com/" target="_blank" rel="noopener noreferrer">https://cl.heBody.com/<OutboundLink/></a></p>\n<h3 id="前言"><a class="header-anchor" href="#前言">#</a> 前言</h3>\n<p>虎年春节快到了,首先祝大家新年快乐,轻松暴富。\n最近在网上经常看到生成春联的文章,不过这些小demo要么功能简陋,要么UI特别‘程序员’,满足不了我挑剔的眼光。干脆我自己做一个吧,顺便简单体验一下vite+vue3。(因为页面相对简单,vue组件风格还是使用选项式api,重点还是想把产品快速做出来。)</p>\n',lastUpdated:"2022/12/14, 19:36:42",lastUpdatedTimestamp:1671017802e3},{title:"拥抱生活,拥抱快乐",frontmatter:{title:"拥抱生活,拥抱快乐",date:"2020-06-26T20:40:38.000Z",permalink:"/pages/cd8bde/",sidebar:"auto",categories:["随笔"],tags:["鸡汤"],author:{name:"heBody",link:"https://github.com/heBody"}},regularPath:"/_posts/%E9%9A%8F%E7%AC%94/%E6%8B%A5%E6%8A%B1%E7%94%9F%E6%B4%BB%EF%BC%8C%E6%8B%A5%E6%8A%B1%E5%BF%AB%E4%B9%90.html",relativePath:"_posts/随笔/拥抱生活,拥抱快乐.md",key:"v-57a9a6c0",path:"/pages/cd8bde/",excerpt:"<p>生活在后现代的今天,很多人都有一种虚无感,认为人生没有意义。但是,人生不可能没有意义,因为当你认为没有意义的时候,一定有一个与之相对应的概念叫有意义。</p>\n",lastUpdated:"2022/12/14, 19:36:42",lastUpdatedTimestamp:1671017802e3},{title:"Home",frontmatter:{home:!0,heroText:"彪哥博客",tagline:"Web前端技术博客,积跬步以至千里,致敬每个爱学习的你。",features:[{title:"前端",details:"JavaScript、ES6、Vue框架等前端技术",link:"/web/",imgUrl:"/img/web.png"},{title:"页面",details:"html(5)/css(3),前端页面相关技术",link:"/ui/",imgUrl:"/img/ui.png"},{title:"技术",details:"技术文档、教程、技巧、总结等文章",link:"/technology/",imgUrl:"/img/other.png"}]},regularPath:"/",relativePath:"index.md",key:"v-a1c0bf72",path:"/",lastUpdated:"2022/12/14, 19:36:42",lastUpdatedTimestamp:1671017802e3},{title:"ECMAScript 6 简介",frontmatter:{title:"ECMAScript 6 简介",date:"2020-01-12T15:45:35.000Z",permalink:"/pages/f344d070a1031ef7",author:"阮一峰",categories:["《ES6 教程》笔记"],tags:["ES6"]},regularPath:"/%E3%80%8AES6%20%E6%95%99%E7%A8%8B%E3%80%8B%E7%AC%94%E8%AE%B0/01.ECMAScript%206%20%E7%AE%80%E4%BB%8B.html",relativePath:"《ES6 教程》笔记/01.ECMAScript 6 简介.md",key:"v-076db5a2",path:"/pages/f344d070a1031ef7/",headers:[{level:2,title:"ECMAScript 和 JavaScript 的关系",slug:"ecmascript-和-javascript-的关系"},{level:2,title:"ES6 与 ECMAScript 2015 的关系",slug:"es6-与-ecmascript-2015-的关系"},{level:2,title:"语法提案的批准流程",slug:"语法提案的批准流程"},{level:2,title:"ECMAScript 的历史",slug:"ecmascript-的历史"},{level:2,title:"部署进度",slug:"部署进度"},{level:2,title:"Babel 转码器",slug:"babel-转码器"},{level:3,title:"配置文件.babelrc",slug:"配置文件-babelrc"},{level:3,title:"命令行转码",slug:"命令行转码"},{level:3,title:"babel-node",slug:"babel-node"},{level:3,title:"@babel/register 模块",slug:"babel-register-模块"},{level:3,title:"babel API",slug:"babel-api"},{level:3,title:"@babel/polyfill",slug:"babel-polyfill"},{level:3,title:"浏览器环境",slug:"浏览器环境"},{level:2,title:"Traceur 转码器",slug:"traceur-转码器"},{level:3,title:"直接插入网页",slug:"直接插入网页"},{level:3,title:"在线转换",slug:"在线转换"},{level:3,title:"命令行转换",slug:"命令行转换"},{level:3,title:"Node 环境的用法",slug:"node-环境的用法"}],excerpt:'<blockquote>\n<p>说明:本章内容为博主在原教程基础上添加自己的学习笔记,来源<a href="http://es6.ruanyifeng.com/" target="_blank" rel="noopener noreferrer">http://es6.ruanyifeng.com/<OutboundLink/></a>,教程版权归原作者所有。</p>\n</blockquote>\n<h1 id="ecmascript-6-简介"><a class="header-anchor" href="#ecmascript-6-简介">#</a> ECMAScript 6 简介</h1>\n<p>ECMAScript 6.0(以下简称 ES6)是 JavaScript 语言的下一代标准,已经在 2015 年 6 月正式发布了。它的目标,是使得 JavaScript 语言可以用来编写复杂的大型应用程序,成为企业级开发语言。</p>\n',lastUpdated:"2022/12/14, 19:36:42",lastUpdatedTimestamp:1671017802e3},{title:"let 和 const 命令",frontmatter:{title:"let 和 const 命令",date:"2020-02-09T16:00:29.000Z",permalink:"/pages/c1edd70a6b7c7872",author:"阮一峰",categories:["《ES6 教程》笔记"],tags:["ES6"]},regularPath:"/%E3%80%8AES6%20%E6%95%99%E7%A8%8B%E3%80%8B%E7%AC%94%E8%AE%B0/02.let%20%E5%92%8C%20const%20%E5%91%BD%E4%BB%A4.html",relativePath:"《ES6 教程》笔记/02.let 和 const 命令.md",key:"v-69edcd29",path:"/pages/c1edd70a6b7c7872/",headers:[{level:2,title:"let 命令",slug:"let-命令"},{level:3,title:"基本用法",slug:"基本用法"},{level:3,title:"不存在变量提升",slug:"不存在变量提升"},{level:3,title:"暂时性死区",slug:"暂时性死区"},{level:3,title:"不允许重复声明",slug:"不允许重复声明"},{level:2,title:"块级作用域",slug:"块级作用域"},{level:3,title:"为什么需要块级作用域?",slug:"为什么需要块级作用域"},{level:3,title:"ES6 的块级作用域",slug:"es6-的块级作用域"},{level:3,title:"块级作用域与函数声明",slug:"块级作用域与函数声明"},{level:2,title:"const 命令",slug:"const-命令"},{level:3,title:"基本用法",slug:"基本用法-2"},{level:3,title:"本质",slug:"本质"},{level:3,title:"ES6 声明变量的六种方法",slug:"es6-声明变量的六种方法"},{level:2,title:"顶层对象的属性",slug:"顶层对象的属性"},{level:2,title:"globalThis 对象",slug:"globalthis-对象"}],excerpt:'<h1 id="let-和-const-命令"><a class="header-anchor" href="#let-和-const-命令">#</a> let 和 const 命令</h1>\n<h2 id="let-命令"><a class="header-anchor" href="#let-命令">#</a> let 命令</h2>\n<h3 id="基本用法"><a class="header-anchor" href="#基本用法">#</a> 基本用法</h3>\n<p>ES6 新增了<code>let</code>命令,用来声明变量。它的用法类似于<code>var</code>,但是所声明的变量,<strong>只在<code>let</code>命令所在的代码块内有效(块级作用域)</strong>。</p>\n\x3c!--beforebegin--\x3e<div class="language-javascript line-numbers-mode">\x3c!--afterbegin--\x3e<pre v-pre class="language-javascript"><code><span class="token punctuation">{</span>\n <span class="token keyword">let</span> a <span class="token operator">=</span> <span class="token number">10</span><span class="token punctuation">;</span>\n <span class="token keyword">var</span> b <span class="token operator">=</span> <span class="token number">1</span><span class="token punctuation">;</span>\n<span class="token punctuation">}</span>\n\na <span class="token comment">// ReferenceError: a is not defined.</span>\nb <span class="token comment">// 1</span>\n</code></pre>\n<div class="line-numbers-wrapper"><span class="line-number">1</span><br><span class="line-number">2</span><br><span class="line-number">3</span><br><span class="line-number">4</span><br><span class="line-number">5</span><br><span class="line-number">6</span><br><span class="line-number">7</span><br></div>\x3c!--beforeend--\x3e</div>\x3c!--afterend--\x3e',lastUpdated:"2022/12/14, 19:36:42",lastUpdatedTimestamp:1671017802e3},{title:"变量的解构赋值",frontmatter:{title:"变量的解构赋值",date:"2020-02-09T16:00:29.000Z",permalink:"/pages/b1ab10a62f7564da",author:"阮一峰",categories:["《ES6 教程》笔记"],tags:["ES6"]},regularPath:"/%E3%80%8AES6%20%E6%95%99%E7%A8%8B%E3%80%8B%E7%AC%94%E8%AE%B0/03.%E5%8F%98%E9%87%8F%E7%9A%84%E8%A7%A3%E6%9E%84%E8%B5%8B%E5%80%BC.html",relativePath:"《ES6 教程》笔记/03.变量的解构赋值.md",key:"v-0e5bea25",path:"/pages/b1ab10a62f7564da/",headers:[{level:2,title:"数组的解构赋值",slug:"数组的解构赋值"},{level:3,title:"基本用法",slug:"基本用法"},{level:3,title:"默认值",slug:"默认值"},{level:2,title:"对象的解构赋值",slug:"对象的解构赋值"},{level:3,title:"简介",slug:"简介"},{level:3,title:"默认值",slug:"默认值-2"},{level:3,title:"注意点",slug:"注意点"},{level:2,title:"字符串的解构赋值",slug:"字符串的解构赋值"},{level:2,title:"数值和布尔值的解构赋值",slug:"数值和布尔值的解构赋值"},{level:2,title:"函数参数的解构赋值",slug:"函数参数的解构赋值"},{level:2,title:"圆括号问题",slug:"圆括号问题"},{level:3,title:"不能使用圆括号的情况",slug:"不能使用圆括号的情况"},{level:3,title:"可以使用圆括号的情况",slug:"可以使用圆括号的情况"},{level:2,title:"用途",slug:"用途"}],excerpt:'<h1 id="变量的解构赋值"><a class="header-anchor" href="#变量的解构赋值">#</a> 变量的解构赋值</h1>\n<h2 id="数组的解构赋值"><a class="header-anchor" href="#数组的解构赋值">#</a> 数组的解构赋值</h2>\n<h3 id="基本用法"><a class="header-anchor" href="#基本用法">#</a> 基本用法</h3>\n<p>ES6 允许按照一定模式,<strong>从数组和对象中提取值,对变量进行赋值,这被称为解构</strong>(Destructuring)。</p>\n<p>以前,为变量赋值,只能直接指定值。</p>\n\x3c!--beforebegin--\x3e<div class="language-javascript line-numbers-mode">\x3c!--afterbegin--\x3e<pre v-pre class="language-javascript"><code><span class="token keyword">let</span> a <span class="token operator">=</span> <span class="token number">1</span><span class="token punctuation">;</span>\n<span class="token keyword">let</span> b <span class="token operator">=</span> <span class="token number">2</span><span class="token punctuation">;</span>\n<span class="token keyword">let</span> c <span class="token operator">=</span> <span class="token number">3</span><span class="token punctuation">;</span>\n</code></pre>\n<div class="line-numbers-wrapper"><span class="line-number">1</span><br><span class="line-number">2</span><br><span class="line-number">3</span><br></div>\x3c!--beforeend--\x3e</div>\x3c!--afterend--\x3e',lastUpdated:"2022/12/14, 19:36:42",lastUpdatedTimestamp:1671017802e3},{title:"字符串的扩展",frontmatter:{title:"字符串的扩展",date:"2020-02-09T16:00:29.000Z",permalink:"/pages/ca89eca8adeba5f4",author:"阮一峰",categories:["《ES6 教程》笔记"],tags:["ES6"]},regularPath:"/%E3%80%8AES6%20%E6%95%99%E7%A8%8B%E3%80%8B%E7%AC%94%E8%AE%B0/04.%E5%AD%97%E7%AC%A6%E4%B8%B2%E7%9A%84%E6%89%A9%E5%B1%95.html",relativePath:"《ES6 教程》笔记/04.字符串的扩展.md",key:"v-5ee9bb3d",path:"/pages/ca89eca8adeba5f4/",headers:[{level:2,title:"字符的 Unicode 表示法",slug:"字符的-unicode-表示法"},{level:2,title:"字符串的遍历器接口",slug:"字符串的遍历器接口"},{level:2,title:"直接输入 U+2028 和 U+2029",slug:"直接输入-u-2028-和-u-2029"},{level:2,title:"JSON.stringify() 的改造",slug:"json-stringify-的改造"},{level:2,title:"模板字符串",slug:"模板字符串"},{level:2,title:"实例:模板编译",slug:"实例-模板编译"},{level:2,title:"标签模板",slug:"标签模板"},{level:2,title:"模板字符串的限制",slug:"模板字符串的限制"}],excerpt:'<h1 id="字符串的扩展"><a class="header-anchor" href="#字符串的扩展">#</a> 字符串的扩展</h1>\n<p>本章介绍 ES6 对字符串的改造和增强,下一章介绍字符串对象的新增方法。</p>\n<h2 id="字符的-unicode-表示法"><a class="header-anchor" href="#字符的-unicode-表示法">#</a> 字符的 Unicode 表示法</h2>\n<p>ES6 加强了对 Unicode 的支持,允许采用<code>\\uxxxx</code>形式表示一个字符,其中<code>xxxx</code>表示字符的 Unicode 码点。</p>\n\x3c!--beforebegin--\x3e<div class="language-javascript line-numbers-mode">\x3c!--afterbegin--\x3e<pre v-pre class="language-javascript"><code><span class="token string">"\\u0061"</span>\n<span class="token comment">// "a"</span>\n</code></pre>\n<div class="line-numbers-wrapper"><span class="line-number">1</span><br><span class="line-number">2</span><br></div>\x3c!--beforeend--\x3e</div>\x3c!--afterend--\x3e',lastUpdated:"2022/12/14, 19:36:42",lastUpdatedTimestamp:1671017802e3},{title:"面试问题集锦",frontmatter:{title:"面试问题集锦",date:"2019-12-25T14:27:01.000Z",permalink:"/pages/aea6571b7a8bae86",categories:["更多","面试"],tags:[null],author:{name:"heBody",link:"https://github.com/heBody"}},regularPath:"/04.%E6%9B%B4%E5%A4%9A/03.%E9%9D%A2%E8%AF%95/01.%E9%9D%A2%E8%AF%95%E9%97%AE%E9%A2%98%E9%9B%86%E9%94%A6.html",relativePath:"04.更多/03.面试/01.面试问题集锦.md",key:"v-c06b09dc",path:"/pages/aea6571b7a8bae86/",headers:[{level:2,title:"请做一下自我介绍",slug:"请做一下自我介绍"},{level:2,title:"你最大的优点是什么?",slug:"你最大的优点是什么"},{level:2,title:"说说你最大的缺点?",slug:"说说你最大的缺点"},{level:2,title:"说说你对加班的看法?",slug:"说说你对加班的看法"},{level:2,title:"说说你对薪资的要求?",slug:"说说你对薪资的要求"},{level:2,title:"在五年内,你的职业规划?",slug:"在五年内-你的职业规划"},{level:2,title:"你朋友对你的评价?",slug:"你朋友对你的评价"},{level:2,title:"你还有什么问题要问吗?",slug:"你还有什么问题要问吗"},{level:2,title:"录用后发现不适合这个职位,怎么办?",slug:"录用后发现不适合这个职位-怎么办"},{level:2,title:"工作时跟领导意见不同怎么办?",slug:"工作时跟领导意见不同怎么办"},{level:2,title:"工作出现失误并造成损失,你会怎么做?",slug:"工作出现失误并造成损失-你会怎么做"},{level:2,title:"谈谈你对跳槽的看法?",slug:"谈谈你对跳槽的看法"},{level:2,title:"和同事、上司难以相处,你怎么办?",slug:"和同事、上司难以相处-你怎么办"},{level:2,title:"上级领导抢了你的功劳怎么办?",slug:"上级领导抢了你的功劳怎么办"},{level:2,title:"同事孤立你,你怎么办?",slug:"同事孤立你-你怎么办"},{level:2,title:"你最近是否参加了培训课程?",slug:"你最近是否参加了培训课程"},{level:2,title:"你对于我们公司了解多少?",slug:"你对于我们公司了解多少"},{level:2,title:"你最擅长的技术方向是什么?",slug:"你最擅长的技术方向是什么"},{level:2,title:"请说出你选择这份工作的动机?",slug:"请说出你选择这份工作的动机"},{level:2,title:"你能为我们公司带来什么呢?",slug:"你能为我们公司带来什么呢"},{level:2,title:"最能概括你自己的三个词?",slug:"最能概括你自己的三个词"},{level:2,title:"作为被面试者给我打一下分?",slug:"作为被面试者给我打一下分"},{level:2,title:"你怎么理解你应聘的职位?",slug:"你怎么理解你应聘的职位"},{level:2,title:"喜欢这份工作的哪一点?",slug:"喜欢这份工作的哪一点"},{level:2,title:"为什么要离职?",slug:"为什么要离职"},{level:2,title:"说说你对行业、技术发展趋势的看法?",slug:"说说你对行业、技术发展趋势的看法"},{level:2,title:"对工作的期望与目标何在?",slug:"对工作的期望与目标何在"},{level:2,title:"谈谈你的家庭?",slug:"谈谈你的家庭"},{level:2,title:"你认为自己申请这个职位还欠缺什么?",slug:"你认为自己申请这个职位还欠缺什么"},{level:2,title:"你欣赏哪种性格的人?",slug:"你欣赏哪种性格的人"},{level:2,title:"你通常如何处理别人的批评?",slug:"你通常如何处理别人的批评"},{level:2,title:"怎样对待自己的失败?",slug:"怎样对待自己的失败"},{level:2,title:"什么会让你有成就感?",slug:"什么会让你有成就感"},{level:2,title:"眼下你生活中最重要的是什么?",slug:"眼下你生活中最重要的是什么"},{level:2,title:"你为什么愿意到我们公司来工作?",slug:"你为什么愿意到我们公司来工作"},{level:2,title:"你和别人发生过争执吗?",slug:"你和别人发生过争执吗"},{level:2,title:"你做过的哪件事最令自己感到骄傲?",slug:"你做过的哪件事最令自己感到骄傲"},{level:2,title:"对这项工作,你有哪些可预见的困难?",slug:"对这项工作-你有哪些可预见的困难"},{level:2,title:"录用后你将怎样开展工作?",slug:"录用后你将怎样开展工作"},{level:2,title:"你希望与什么样的上级共事?",slug:"你希望与什么样的上级共事"},{level:2,title:"你工作经验欠缺,如何能胜任这项工作?",slug:"你工作经验欠缺-如何能胜任这项工作"},{level:2,title:"你会怎样获得同事的帮助?",slug:"你会怎样获得同事的帮助"},{level:2,title:"如果你没被录用,你怎么打算?",slug:"如果你没被录用-你怎么打算"},{level:2,title:"最令你沮丧的事情?",slug:"最令你沮丧的事情"},{level:2,title:"想过创业吗?",slug:"想过创业吗"},{level:2,title:"为什么我们要在众多的面试者中选择你?",slug:"为什么我们要在众多的面试者中选择你"},{level:2,title:"除了本公司外,还应聘了哪些公司?",slug:"除了本公司外-还应聘了哪些公司"},{level:2,title:"你并非毕业于名牌院校?",slug:"你并非毕业于名牌院校"},{level:2,title:"怎样看待学历和能力?",slug:"怎样看待学历和能力"},{level:2,title:"谈谈如何适应办公室工作的新环境?",slug:"谈谈如何适应办公室工作的新环境"},{level:2,title:"谈谈对这个职务的期许?",slug:"谈谈对这个职务的期许"},{level:2,title:"何时可以到职?",slug:"何时可以到职"}],lastUpdated:"2022/12/14, 19:36:42",lastUpdatedTimestamp:1671017802e3},{title:"正则的扩展",frontmatter:{title:"正则的扩展",date:"2020-02-09T16:00:29.000Z",permalink:"/pages/0473261a6ab0ee8c",author:"阮一峰",categories:["《ES6 教程》笔记"],tags:["ES6"]},regularPath:"/%E3%80%8AES6%20%E6%95%99%E7%A8%8B%E3%80%8B%E7%AC%94%E8%AE%B0/06.%E6%AD%A3%E5%88%99%E7%9A%84%E6%89%A9%E5%B1%95.html",relativePath:"《ES6 教程》笔记/06.正则的扩展.md",key:"v-dc4153cc",path:"/pages/0473261a6ab0ee8c/",headers:[{level:2,title:"RegExp 构造函数",slug:"regexp-构造函数"},{level:2,title:"字符串的正则方法",slug:"字符串的正则方法"},{level:2,title:"u 修饰符",slug:"u-修饰符"},{level:2,title:"RegExp.prototype.unicode 属性",slug:"regexp-prototype-unicode-属性"},{level:2,title:"y 修饰符",slug:"y-修饰符"},{level:2,title:"RegExp.prototype.sticky 属性",slug:"regexp-prototype-sticky-属性"},{level:2,title:"RegExp.prototype.flags 属性",slug:"regexp-prototype-flags-属性"},{level:2,title:"s 修饰符:dotAll 模式",slug:"s-修饰符-dotall-模式"},{level:2,title:"后行断言",slug:"后行断言"},{level:2,title:"Unicode 属性类",slug:"unicode-属性类"},{level:2,title:"具名组匹配",slug:"具名组匹配"},{level:3,title:"简介",slug:"简介"},{level:3,title:"解构赋值和替换",slug:"解构赋值和替换"},{level:3,title:"引用",slug:"引用"},{level:2,title:"String.prototype.matchAll()",slug:"string-prototype-matchall"}],excerpt:'<h1 id="正则的扩展"><a class="header-anchor" href="#正则的扩展">#</a> 正则的扩展</h1>\n<h2 id="regexp-构造函数"><a class="header-anchor" href="#regexp-构造函数">#</a> RegExp 构造函数</h2>\n<p>在 ES5 中,<code>RegExp</code>构造函数的参数有两种情况。</p>\n<p>第一种情况是,参数是字符串,这时第二个参数表示正则表达式的修饰符(flag)。</p>\n\x3c!--beforebegin--\x3e<div class="language-javascript line-numbers-mode">\x3c!--afterbegin--\x3e<pre v-pre class="language-javascript"><code><span class="token keyword">var</span> regex <span class="token operator">=</span> <span class="token keyword">new</span> <span class="token class-name">RegExp</span><span class="token punctuation">(</span><span class="token string">\'xyz\'</span><span class="token punctuation">,</span> <span class="token string">\'i\'</span><span class="token punctuation">)</span><span class="token punctuation">;</span>\n<span class="token comment">// 等价于</span>\n<span class="token keyword">var</span> regex <span class="token operator">=</span> <span class="token regex"><span class="token regex-delimiter">/</span><span class="token regex-source language-regex">xyz</span><span class="token regex-delimiter">/</span><span class="token regex-flags">i</span></span><span class="token punctuation">;</span>\n</code></pre>\n<div class="line-numbers-wrapper"><span class="line-number">1</span><br><span class="line-number">2</span><br><span class="line-number">3</span><br></div>\x3c!--beforeend--\x3e</div>\x3c!--afterend--\x3e',lastUpdated:"2022/12/14, 19:36:42",lastUpdatedTimestamp:1671017802e3},{title:"数组的扩展",frontmatter:{title:"数组的扩展",date:"2020-02-09T16:00:29.000Z",permalink:"/pages/e34009d60d8bc4b2",author:"阮一峰",categories:["《ES6 教程》笔记"],tags:["ES6"]},regularPath:"/%E3%80%8AES6%20%E6%95%99%E7%A8%8B%E3%80%8B%E7%AC%94%E8%AE%B0/09.%E6%95%B0%E7%BB%84%E7%9A%84%E6%89%A9%E5%B1%95.html",relativePath:"《ES6 教程》笔记/09.数组的扩展.md",key:"v-a99c1392",path:"/pages/e34009d60d8bc4b2/",headers:[{level:2,title:"扩展运算符",slug:"扩展运算符"},{level:3,title:"含义",slug:"含义"},{level:3,title:"替代函数的 apply 方法",slug:"替代函数的-apply-方法"},{level:3,title:"扩展运算符的应用",slug:"扩展运算符的应用"},{level:2,title:"Array.from()",slug:"array-from"},{level:2,title:"Array.of() 总是返回参数值组成的数组",slug:"array-of-总是返回参数值组成的数组"},{level:2,title:"数组实例的 copyWithin()",slug:"数组实例的-copywithin"},{level:2,title:"数组实例的 find() 和 findIndex()",slug:"数组实例的-find-和-findindex"},{level:2,title:"数组实例的 fill()",slug:"数组实例的-fill"},{level:2,title:"数组实例的 entries(),keys() 和 values()",slug:"数组实例的-entries-keys-和-values"},{level:2,title:"数组实例的 includes()",slug:"数组实例的-includes"},{level:2,title:"数组实例的 flat(),flatMap()",slug:"数组实例的-flat-flatmap"},{level:2,title:"数组的空位",slug:"数组的空位"},{level:2,title:"Array.prototype.sort() 的排序稳定性",slug:"array-prototype-sort-的排序稳定性"}],excerpt:'<h1 id="数组的扩展"><a class="header-anchor" href="#数组的扩展">#</a> 数组的扩展</h1>\n<h2 id="扩展运算符"><a class="header-anchor" href="#扩展运算符">#</a> 扩展运算符</h2>\n<h3 id="含义"><a class="header-anchor" href="#含义">#</a> 含义</h3>\n<p>扩展运算符(spread)是三个点(<code>...</code>)。它好比 rest 参数的逆运算,<strong>将一个数组转为用逗号分隔的参数序列</strong>。</p>\n\x3c!--beforebegin--\x3e<div class="language-javascript line-numbers-mode">\x3c!--afterbegin--\x3e<pre v-pre class="language-javascript"><code>console<span class="token punctuation">.</span><span class="token function">log</span><span class="token punctuation">(</span><span class="token operator">...</span><span class="token punctuation">[</span><span class="token number">1</span><span class="token punctuation">,</span> <span class="token number">2</span><span class="token punctuation">,</span> <span class="token number">3</span><span class="token punctuation">]</span><span class="token punctuation">)</span>\n<span class="token comment">// 1 2 3</span>\n\nconsole<span class="token punctuation">.</span><span class="token function">log</span><span class="token punctuation">(</span><span class="token number">1</span><span class="token punctuation">,</span> <span class="token operator">...</span><span class="token punctuation">[</span><span class="token number">2</span><span class="token punctuation">,</span> <span class="token number">3</span><span class="token punctuation">,</span> <span class="token number">4</span><span class="token punctuation">]</span><span class="token punctuation">,</span> <span class="token number">5</span><span class="token punctuation">)</span>\n<span class="token comment">// 1 2 3 4 5</span>\n\n<span class="token punctuation">[</span><span class="token operator">...</span>document<span class="token punctuation">.</span><span class="token function">querySelectorAll</span><span class="token punctuation">(</span><span class="token string">\'div\'</span><span class="token punctuation">)</span><span class="token punctuation">]</span>\n<span class="token comment">// [&lt;div>, &lt;div>, &lt;div>]</span>\n</code></pre>\n<div class="line-numbers-wrapper"><span class="line-number">1</span><br><span class="line-number">2</span><br><span class="line-number">3</span><br><span class="line-number">4</span><br><span class="line-number">5</span><br><span class="line-number">6</span><br><span class="line-number">7</span><br><span class="line-number">8</span><br></div>\x3c!--beforeend--\x3e</div>\x3c!--afterend--\x3e',lastUpdated:"2022/12/14, 19:36:42",lastUpdatedTimestamp:1671017802e3},{title:"数值的扩展",frontmatter:{title:"数值的扩展",date:"2020-02-09T16:00:29.000Z",permalink:"/pages/5dfea9a0f2d1a392",author:"阮一峰",categories:["《ES6 教程》笔记"],tags:["ES6"]},regularPath:"/%E3%80%8AES6%20%E6%95%99%E7%A8%8B%E3%80%8B%E7%AC%94%E8%AE%B0/07.%E6%95%B0%E5%80%BC%E7%9A%84%E6%89%A9%E5%B1%95.html",relativePath:"《ES6 教程》笔记/07.数值的扩展.md",key:"v-1b71fb0a",path:"/pages/5dfea9a0f2d1a392/",headers:[{level:2,title:"二进制和八进制表示法",slug:"二进制和八进制表示法"},{level:2,title:"Number.isFinite() 是否为有限, Number.isNaN() 是否为NaN",slug:"number-isfinite-是否为有限-number-isnan-是否为nan"},{level:2,title:"Number.parseInt(), Number.parseFloat()",slug:"number-parseint-number-parsefloat"},{level:2,title:"Number.isInteger() 是否为整数",slug:"number-isinteger-是否为整数"},{level:2,title:"Number.EPSILON 用于浮点数误差检查",slug:"number-epsilon-用于浮点数误差检查"},{level:2,title:"安全整数和 Number.isSafeInteger()",slug:"安全整数和-number-issafeinteger"},{level:2,title:"Math 对象的扩展",slug:"math-对象的扩展"},{level:3,title:"Math.trunc() 去除一个数的小数部分,返回整数部分",slug:"math-trunc-去除一个数的小数部分-返回整数部分"},{level:3,title:"Math.sign() 判断一个数是正数、负数、还是零",slug:"math-sign-判断一个数是正数、负数、还是零"},{level:3,title:"Math.cbrt() 计算一个数的立方根",slug:"math-cbrt-计算一个数的立方根"},{level:3,title:"Math.clz32()",slug:"math-clz32"},{level:3,title:"Math.imul()",slug:"math-imul"},{level:3,title:"Math.fround()",slug:"math-fround"},{level:3,title:"Math.hypot()",slug:"math-hypot"},{level:3,title:"对数方法",slug:"对数方法"},{level:3,title:"双曲函数方法",slug:"双曲函数方法"},{level:2,title:"指数运算符",slug:"指数运算符"},{level:2,title:"BigInt 数据类型",slug:"bigint-数据类型"},{level:3,title:"简介",slug:"简介"},{level:3,title:"BigInt 对象",slug:"bigint-对象"},{level:3,title:"转换规则",slug:"转换规则"},{level:3,title:"数学运算",slug:"数学运算"},{level:3,title:"其他运算",slug:"其他运算"}],excerpt:'<h1 id="数值的扩展"><a class="header-anchor" href="#数值的扩展">#</a> 数值的扩展</h1>\n<h2 id="二进制和八进制表示法"><a class="header-anchor" href="#二进制和八进制表示法">#</a> 二进制和八进制表示法</h2>\n<p>ES6 提供了二进制和八进制数值的新的写法,分别用前缀<code>0b</code>(或<code>0B</code>)和<code>0o</code>(或<code>0O</code>)表示。</p>\n\x3c!--beforebegin--\x3e<div class="language-javascript line-numbers-mode">\x3c!--afterbegin--\x3e<pre v-pre class="language-javascript"><code><span class="token number">0b111110111</span> <span class="token operator">===</span> <span class="token number">503</span> <span class="token comment">// true</span>\n<span class="token number">0o767</span> <span class="token operator">===</span> <span class="token number">503</span> <span class="token comment">// true</span>\n</code></pre>\n<div class="line-numbers-wrapper"><span class="line-number">1</span><br><span class="line-number">2</span><br></div>\x3c!--beforeend--\x3e</div>\x3c!--afterend--\x3e',lastUpdated:"2022/12/14, 19:36:42",lastUpdatedTimestamp:1671017802e3},{title:"对象的扩展",frontmatter:{title:"对象的扩展",date:"2020-02-09T16:00:29.000Z",permalink:"/pages/b5e3e0a0ff6e9c25",author:"阮一峰",categories:["《ES6 教程》笔记"],tags:["ES6"]},regularPath:"/%E3%80%8AES6%20%E6%95%99%E7%A8%8B%E3%80%8B%E7%AC%94%E8%AE%B0/10.%E5%AF%B9%E8%B1%A1%E7%9A%84%E6%89%A9%E5%B1%95.html",relativePath:"《ES6 教程》笔记/10.对象的扩展.md",key:"v-2b803d8a",path:"/pages/b5e3e0a0ff6e9c25/",headers:[{level:2,title:"属性的简洁表示法",slug:"属性的简洁表示法"},{level:2,title:"属性名表达式",slug:"属性名表达式"},{level:2,title:"方法的 name 属性",slug:"方法的-name-属性"},{level:2,title:"属性的可枚举性和遍历",slug:"属性的可枚举性和遍历"},{level:3,title:"可枚举性",slug:"可枚举性"},{level:3,title:"属性的遍历",slug:"属性的遍历"},{level:2,title:"super 关键字",slug:"super-关键字"},{level:2,title:"对象的扩展运算符",slug:"对象的扩展运算符"},{level:3,title:"解构赋值",slug:"解构赋值"},{level:3,title:"扩展运算符",slug:"扩展运算符"},{level:2,title:"链判断运算符",slug:"链判断运算符"},{level:2,title:"Null 判断运算符",slug:"null-判断运算符"}],excerpt:'<h1 id="对象的扩展"><a class="header-anchor" href="#对象的扩展">#</a> 对象的扩展</h1>\n<p>对象(object)是 JavaScript 最重要的数据结构。ES6 对它进行了重大升级,本章介绍数据结构本身的改变,下一章介绍<code>Object</code>对象的新增方法。</p>\n',lastUpdated:"2022/12/14, 19:36:42",lastUpdatedTimestamp:1671017802e3},{title:"对象的新增方法",frontmatter:{title:"对象的新增方法",date:"2020-02-09T16:00:29.000Z",permalink:"/pages/e85e68947502cf90",author:"阮一峰",categories:["《ES6 教程》笔记"],tags:["ES6"]},regularPath:"/%E3%80%8AES6%20%E6%95%99%E7%A8%8B%E3%80%8B%E7%AC%94%E8%AE%B0/11.%E5%AF%B9%E8%B1%A1%E7%9A%84%E6%96%B0%E5%A2%9E%E6%96%B9%E6%B3%95.html",relativePath:"《ES6 教程》笔记/11.对象的新增方法.md",key:"v-77a99d3a",path:"/pages/e85e68947502cf90/",headers:[{level:2,title:"Object.is()",slug:"object-is"},{level:2,title:"Object.assign()",slug:"object-assign"},{level:3,title:"基本用法",slug:"基本用法"},{level:3,title:"注意点",slug:"注意点"},{level:3,title:"常见用途",slug:"常见用途"},{level:2,title:"Object.getOwnPropertyDescriptors()",slug:"object-getownpropertydescriptors"},{level:2,title:"__proto__属性,Object.setPrototypeOf(),Object.getPrototypeOf()",slug:"proto-属性-object-setprototypeof-object-getprototypeof"},{level:3,title:"__proto__属性",slug:"proto-属性"},{level:3,title:"Object.setPrototypeOf()",slug:"object-setprototypeof"},{level:3,title:"Object.getPrototypeOf()",slug:"object-getprototypeof"},{level:2,title:"Object.keys(),Object.values(),Object.entries()",slug:"object-keys-object-values-object-entries"},{level:3,title:"Object.keys()",slug:"object-keys"},{level:3,title:"Object.values()",slug:"object-values"},{level:3,title:"Object.entries()",slug:"object-entries"},{level:2,title:"Object.fromEntries()",slug:"object-fromentries"}],excerpt:'<h1 id="对象的新增方法"><a class="header-anchor" href="#对象的新增方法">#</a> 对象的新增方法</h1>\n<p>本章介绍 Object 对象的新增方法。</p>\n<h2 id="object-is"><a class="header-anchor" href="#object-is">#</a> Object.is()</h2>\n<p>ES5 比较两个值是否相等,只有两个运算符:相等运算符(<code>==</code>)和严格相等运算符(<code>===</code>)。它们都有缺点,前者会自动转换数据类型,后者的<code>NaN</code>不等于自身,以及<code>+0</code>等于<code>-0</code>。JavaScript 缺乏一种运算,在所有环境中,只要两个值是一样的,它们就应该相等。</p>\n<p>ES6 提出“Same-value equality”(同值相等)算法,用来解决这个问题。<code>Object.is</code>就是部署这个算法的新方法。它用来比较两个值是否严格相等,与严格比较运算符(===)的行为基本一致。</p>\n',lastUpdated:"2022/12/14, 19:36:42",lastUpdatedTimestamp:1671017802e3},{title:"Symbol",frontmatter:{title:"Symbol",date:"2020-02-09T16:00:29.000Z",permalink:"/pages/02c86eb2792f3262",author:"阮一峰",categories:["《ES6 教程》笔记"],tags:["ES6"]},regularPath:"/%E3%80%8AES6%20%E6%95%99%E7%A8%8B%E3%80%8B%E7%AC%94%E8%AE%B0/12.Symbol.html",relativePath:"《ES6 教程》笔记/12.Symbol.md",key:"v-6d6802c0",path:"/pages/02c86eb2792f3262/",headers:[{level:2,title:"概述",slug:"概述"},{level:2,title:"Symbol.prototype.description",slug:"symbol-prototype-description"},{level:2,title:"作为属性名的 Symbol",slug:"作为属性名的-symbol"},{level:2,title:"实例:消除魔术字符串",slug:"实例-消除魔术字符串"},{level:2,title:"属性名的遍历",slug:"属性名的遍历"},{level:2,title:"Symbol.for(),Symbol.keyFor()",slug:"symbol-for-symbol-keyfor"},{level:2,title:"实例:模块的 Singleton 模式",slug:"实例-模块的-singleton-模式"},{level:2,title:"内置的 Symbol 值",slug:"内置的-symbol-值"},{level:3,title:"Symbol.hasInstance",slug:"symbol-hasinstance"},{level:3,title:"Symbol.isConcatSpreadable",slug:"symbol-isconcatspreadable"},{level:3,title:"Symbol.species",slug:"symbol-species"},{level:3,title:"Symbol.match",slug:"symbol-match"},{level:3,title:"Symbol.replace",slug:"symbol-replace"},{level:3,title:"Symbol.search",slug:"symbol-search"},{level:3,title:"Symbol.split",slug:"symbol-split"},{level:3,title:"Symbol.iterator",slug:"symbol-iterator"},{level:3,title:"Symbol.toPrimitive",slug:"symbol-toprimitive"},{level:3,title:"Symbol.toStringTag",slug:"symbol-tostringtag"},{level:3,title:"Symbol.unscopables",slug:"symbol-unscopables"}],excerpt:'<h1 id="symbol"><a class="header-anchor" href="#symbol">#</a> Symbol</h1>\n<h2 id="概述"><a class="header-anchor" href="#概述">#</a> 概述</h2>\n<p>ES5 的对象属性名都是字符串,这容易造成属性名的冲突。比如,你使用了一个他人提供的对象,但又想为这个对象添加新的方法(mixin 模式),新方法的名字就有可能与现有方法产生冲突。如果有一种机制,<strong>保证每个属性的名字都是独一无二</strong>的就好了,这样就从根本上防止属性名的冲突。这就是 ES6 引入<code>Symbol</code>的原因。</p>\n',lastUpdated:"2022/12/14, 19:36:42",lastUpdatedTimestamp:1671017802e3},{title:"Set 和 Map 数据结构",frontmatter:{title:"Set 和 Map 数据结构",date:"2020-02-09T16:00:29.000Z",permalink:"/pages/0c21dae358fca16b",author:"阮一峰",categories:["《ES6 教程》笔记"],tags:["ES6"]},regularPath:"/%E3%80%8AES6%20%E6%95%99%E7%A8%8B%E3%80%8B%E7%AC%94%E8%AE%B0/13.Set%20%E5%92%8C%20Map%20%E6%95%B0%E6%8D%AE%E7%BB%93%E6%9E%84.html",relativePath:"《ES6 教程》笔记/13.Set 和 Map 数据结构.md",key:"v-053ef16e",path:"/pages/0c21dae358fca16b/",headers:[{level:2,title:"Set",slug:"set"},{level:3,title:"基本用法",slug:"基本用法"},{level:3,title:"Set 实例的属性和方法",slug:"set-实例的属性和方法"},{level:3,title:"遍历操作",slug:"遍历操作"},{level:2,title:"WeakSet",slug:"weakset"},{level:3,title:"含义",slug:"含义"},{level:3,title:"语法",slug:"语法"},{level:2,title:"Map",slug:"map"},{level:3,title:"含义和基本用法",slug:"含义和基本用法"},{level:3,title:"实例的属性和操作方法",slug:"实例的属性和操作方法"},{level:3,title:"遍历方法",slug:"遍历方法"},{level:3,title:"与其他数据结构的互相转换",slug:"与其他数据结构的互相转换"},{level:2,title:"WeakMap",slug:"weakmap"},{level:3,title:"含义",slug:"含义-2"},{level:3,title:"WeakMap 的语法",slug:"weakmap-的语法"},{level:3,title:"WeakMap 的示例",slug:"weakmap-的示例"},{level:3,title:"WeakMap 的用途",slug:"weakmap-的用途"}],excerpt:'<h1 id="set-和-map-数据结构"><a class="header-anchor" href="#set-和-map-数据结构">#</a> Set 和 Map 数据结构</h1>\n<h2 id="set"><a class="header-anchor" href="#set">#</a> Set</h2>\n<h3 id="基本用法"><a class="header-anchor" href="#基本用法">#</a> 基本用法</h3>\n<p>ES6 提供了新的数据结构 Set。它<strong>类似于数组,但是成员的值都是唯一的,没有重复的值</strong>。</p>\n<p><strong><code>Set</code>本身是一个构造函数,用来生成 Set 数据结构</strong>。</p>\n\x3c!--beforebegin--\x3e<div class="language-javascript line-numbers-mode">\x3c!--afterbegin--\x3e<pre v-pre class="language-javascript"><code><span class="token keyword">const</span> s <span class="token operator">=</span> <span class="token keyword">new</span> <span class="token class-name">Set</span><span class="token punctuation">(</span><span class="token punctuation">)</span><span class="token punctuation">;</span>\n\n<span class="token punctuation">[</span><span class="token number">2</span><span class="token punctuation">,</span> <span class="token number">3</span><span class="token punctuation">,</span> <span class="token number">5</span><span class="token punctuation">,</span> <span class="token number">4</span><span class="token punctuation">,</span> <span class="token number">5</span><span class="token punctuation">,</span> <span class="token number">2</span><span class="token punctuation">,</span> <span class="token number">2</span><span class="token punctuation">]</span><span class="token punctuation">.</span><span class="token function">forEach</span><span class="token punctuation">(</span><span class="token parameter">x</span> <span class="token operator">=></span> s<span class="token punctuation">.</span><span class="token function">add</span><span class="token punctuation">(</span>x<span class="token punctuation">)</span><span class="token punctuation">)</span><span class="token punctuation">;</span>\n\n<span class="token keyword">for</span> <span class="token punctuation">(</span><span class="token keyword">let</span> i <span class="token keyword">of</span> s<span class="token punctuation">)</span> <span class="token punctuation">{</span>\n console<span class="token punctuation">.</span><span class="token function">log</span><span class="token punctuation">(</span>i<span class="token punctuation">)</span><span class="token punctuation">;</span>\n<span class="token punctuation">}</span>\n<span class="token comment">// 2 3 5 4</span>\n</code></pre>\n<div class="line-numbers-wrapper"><span class="line-number">1</span><br><span class="line-number">2</span><br><span class="line-number">3</span><br><span class="line-number">4</span><br><span class="line-number">5</span><br><span class="line-number">6</span><br><span class="line-number">7</span><br><span class="line-number">8</span><br></div>\x3c!--beforeend--\x3e</div>\x3c!--afterend--\x3e',lastUpdated:"2022/12/14, 19:36:42",lastUpdatedTimestamp:1671017802e3},{title:"Proxy",frontmatter:{title:"Proxy",date:"2020-02-09T16:00:29.000Z",permalink:"/pages/f56ec2ab97d60483",author:"阮一峰",categories:["《ES6 教程》笔记"],tags:["ES6"]},regularPath:"/%E3%80%8AES6%20%E6%95%99%E7%A8%8B%E3%80%8B%E7%AC%94%E8%AE%B0/14.Proxy.html",relativePath:"《ES6 教程》笔记/14.Proxy.md",key:"v-6bb735b0",path:"/pages/f56ec2ab97d60483/",headers:[{level:2,title:"概述",slug:"概述"},{level:2,title:"Proxy 实例的方法",slug:"proxy-实例的方法"},{level:3,title:"get()",slug:"get"},{level:3,title:"set()",slug:"set"},{level:3,title:"apply()",slug:"apply"},{level:3,title:"has()",slug:"has"},{level:3,title:"construct()",slug:"construct"},{level:3,title:"deleteProperty()",slug:"deleteproperty"},{level:3,title:"defineProperty()",slug:"defineproperty"},{level:3,title:"getOwnPropertyDescriptor()",slug:"getownpropertydescriptor"},{level:3,title:"getPrototypeOf()",slug:"getprototypeof"},{level:3,title:"isExtensible()",slug:"isextensible"},{level:3,title:"ownKeys()",slug:"ownkeys"},{level:3,title:"preventExtensions()",slug:"preventextensions"},{level:3,title:"setPrototypeOf()",slug:"setprototypeof"},{level:2,title:"Proxy.revocable()",slug:"proxy-revocable"},{level:2,title:"this 问题",slug:"this-问题"},{level:2,title:"实例:Web 服务的客户端",slug:"实例-web-服务的客户端"}],excerpt:'<h1 id="proxy"><a class="header-anchor" href="#proxy">#</a> Proxy</h1>\n<h2 id="概述"><a class="header-anchor" href="#概述">#</a> 概述</h2>\n<p>Proxy 用于修改某些操作的默认行为,等同于在语言层面做出修改,所以属于一种“<strong>元编程</strong>”(meta programming),即<strong>对编程语言进行编程</strong>。</p>\n<p>Proxy 可以理解成,在目标对象之前架设一层“拦截”,<strong>外界对该对象的访问,都必须先通过这层拦截</strong>,因此提供了一种机制,可以对外界的访问进行过滤和改写。Proxy 这个词的原意是代理,用在这里表示由它来“代理”某些操作,可以译为“代理器”。</p>\n',lastUpdated:"2022/12/14, 19:36:42",lastUpdatedTimestamp:1671017802e3},{title:"Reflect",frontmatter:{title:"Reflect",date:"2020-02-09T16:00:29.000Z",permalink:"/pages/74de3e45e4491e95",author:"阮一峰",categories:["《ES6 教程》笔记"],tags:["ES6"]},regularPath:"/%E3%80%8AES6%20%E6%95%99%E7%A8%8B%E3%80%8B%E7%AC%94%E8%AE%B0/15.Reflect.html",relativePath:"《ES6 教程》笔记/15.Reflect.md",key:"v-65229c30",path:"/pages/74de3e45e4491e95/",headers:[{level:2,title:"概述",slug:"概述"},{level:2,title:"静态方法",slug:"静态方法"},{level:3,title:"Reflect.get(target, name, receiver)",slug:"reflect-get-target-name-receiver"},{level:3,title:"Reflect.set(target, name, value, receiver)",slug:"reflect-set-target-name-value-receiver"},{level:3,title:"Reflect.has(obj, name)",slug:"reflect-has-obj-name"},{level:3,title:"Reflect.deleteProperty(obj, name)",slug:"reflect-deleteproperty-obj-name"},{level:3,title:"Reflect.construct(target, args)",slug:"reflect-construct-target-args"},{level:3,title:"Reflect.getPrototypeOf(obj)",slug:"reflect-getprototypeof-obj"},{level:3,title:"Reflect.setPrototypeOf(obj, newProto)",slug:"reflect-setprototypeof-obj-newproto"},{level:3,title:"Reflect.apply(func, thisArg, args)",slug:"reflect-apply-func-thisarg-args"},{level:3,title:"Reflect.defineProperty(target, propertyKey, attributes)",slug:"reflect-defineproperty-target-propertykey-attributes"},{level:3,title:"Reflect.getOwnPropertyDescriptor(target, propertyKey)",slug:"reflect-getownpropertydescriptor-target-propertykey"},{level:3,title:"Reflect.isExtensible (target)",slug:"reflect-isextensible-target"},{level:3,title:"Reflect.preventExtensions(target)",slug:"reflect-preventextensions-target"},{level:3,title:"Reflect.ownKeys (target)",slug:"reflect-ownkeys-target"},{level:2,title:"实例:使用 Proxy 实现观察者模式",slug:"实例-使用-proxy-实现观察者模式"}],excerpt:'<h1 id="reflect"><a class="header-anchor" href="#reflect">#</a> Reflect</h1>\n<h2 id="概述"><a class="header-anchor" href="#概述">#</a> 概述</h2>\n<p><code>Reflect</code>对象与<code>Proxy</code>对象一样,也是 ES6 为了操作对象而提供的新 API。<code>Reflect</code>对象的设计目的有这样几个。</p>\n<p>(1) **将<code>Object</code>对象的一些明显属于语言内部的方法(比如<code>Object.defineProperty</code>),放到<code>Reflect</code>对象上。**现阶段,某些方法同时在<code>Object</code>和<code>Reflect</code>对象上部署,未来的新方法将只部署在<code>Reflect</code>对象上。也就是说,从<code>Reflect</code>对象上可以拿到语言内部的方法。</p>\n',lastUpdated:"2022/12/14, 19:36:42",lastUpdatedTimestamp:1671017802e3},{title:"函数的扩展",frontmatter:{title:"函数的扩展",date:"2020-02-09T16:00:29.000Z",permalink:"/pages/8ed309d668b20264",author:"阮一峰",categories:["《ES6 教程》笔记"],tags:["ES6"]},regularPath:"/%E3%80%8AES6%20%E6%95%99%E7%A8%8B%E3%80%8B%E7%AC%94%E8%AE%B0/08.%E5%87%BD%E6%95%B0%E7%9A%84%E6%89%A9%E5%B1%95.html",relativePath:"《ES6 教程》笔记/08.函数的扩展.md",key:"v-20acc1fd",path:"/pages/8ed309d668b20264/",headers:[{level:2,title:"函数参数的默认值",slug:"函数参数的默认值"},{level:3,title:"基本用法",slug:"基本用法"},{level:3,title:"与解构赋值默认值结合使用",slug:"与解构赋值默认值结合使用"},{level:3,title:"参数默认值的位置",slug:"参数默认值的位置"},{level:3,title:"函数的 length 属性",slug:"函数的-length-属性"},{level:3,title:"作用域",slug:"作用域"},{level:3,title:"应用",slug:"应用"},{level:2,title:"rest 参数",slug:"rest-参数"},{level:2,title:"严格模式",slug:"严格模式"},{level:2,title:"name 属性",slug:"name-属性"},{level:2,title:"箭头函数",slug:"箭头函数"},{level:3,title:"基本用法",slug:"基本用法-2"},{level:3,title:"使用注意点",slug:"使用注意点"},{level:3,title:"不适用场合",slug:"不适用场合"},{level:3,title:"嵌套的箭头函数",slug:"嵌套的箭头函数"},{level:2,title:"尾调用优化",slug:"尾调用优化"},{level:3,title:"什么是尾调用?",slug:"什么是尾调用"},{level:3,title:"尾调用优化",slug:"尾调用优化-2"},{level:3,title:"尾递归",slug:"尾递归"},{level:3,title:"递归函数的改写",slug:"递归函数的改写"},{level:3,title:"严格模式",slug:"严格模式-2"},{level:3,title:"尾递归优化的实现",slug:"尾递归优化的实现"},{level:2,title:"函数参数的尾逗号",slug:"函数参数的尾逗号"},{level:2,title:"Function.prototype.toString()",slug:"function-prototype-tostring"},{level:2,title:"catch 命令的参数省略",slug:"catch-命令的参数省略"}],excerpt:'<h1 id="函数的扩展"><a class="header-anchor" href="#函数的扩展">#</a> 函数的扩展</h1>\n<h2 id="函数参数的默认值"><a class="header-anchor" href="#函数参数的默认值">#</a> 函数参数的默认值</h2>\n<h3 id="基本用法"><a class="header-anchor" href="#基本用法">#</a> 基本用法</h3>\n<p>ES6 之前,不能直接为函数的参数指定默认值,只能采用变通的方法。</p>\n\x3c!--beforebegin--\x3e<div class="language-javascript line-numbers-mode">\x3c!--afterbegin--\x3e<pre v-pre class="language-javascript"><code><span class="token keyword">function</span> <span class="token function">log</span><span class="token punctuation">(</span><span class="token parameter">x<span class="token punctuation">,</span> y</span><span class="token punctuation">)</span> <span class="token punctuation">{</span>\n y <span class="token operator">=</span> y <span class="token operator">||</span> <span class="token string">\'World\'</span><span class="token punctuation">;</span>\n console<span class="token punctuation">.</span><span class="token function">log</span><span class="token punctuation">(</span>x<span class="token punctuation">,</span> y<span class="token punctuation">)</span><span class="token punctuation">;</span>\n<span class="token punctuation">}</span>\n\n<span class="token function">log</span><span class="token punctuation">(</span><span class="token string">\'Hello\'</span><span class="token punctuation">)</span> <span class="token comment">// Hello World</span>\n<span class="token function">log</span><span class="token punctuation">(</span><span class="token string">\'Hello\'</span><span class="token punctuation">,</span> <span class="token string">\'China\'</span><span class="token punctuation">)</span> <span class="token comment">// Hello China</span>\n<span class="token function">log</span><span class="token punctuation">(</span><span class="token string">\'Hello\'</span><span class="token punctuation">,</span> <span class="token string">\'\'</span><span class="token punctuation">)</span> <span class="token comment">// Hello World</span>\n</code></pre>\n<div class="line-numbers-wrapper"><span class="line-number">1</span><br><span class="line-number">2</span><br><span class="line-number">3</span><br><span class="line-number">4</span><br><span class="line-number">5</span><br><span class="line-number">6</span><br><span class="line-number">7</span><br><span class="line-number">8</span><br></div>\x3c!--beforeend--\x3e</div>\x3c!--afterend--\x3e',lastUpdated:"2022/12/14, 19:36:42",lastUpdatedTimestamp:1671017802e3},{title:"Promise 对象",frontmatter:{title:"Promise 对象",date:"2020-02-09T16:00:29.000Z",permalink:"/pages/2810ae8985e9bd52",author:"阮一峰",categories:["《ES6 教程》笔记"],tags:["ES6"]},regularPath:"/%E3%80%8AES6%20%E6%95%99%E7%A8%8B%E3%80%8B%E7%AC%94%E8%AE%B0/16.Promise%20%E5%AF%B9%E8%B1%A1.html",relativePath:"《ES6 教程》笔记/16.Promise 对象.md",key:"v-3c13bf1e",path:"/pages/2810ae8985e9bd52/",headers:[{level:2,title:"Promise 的含义",slug:"promise-的含义"},{level:2,title:"基本用法",slug:"基本用法"},{level:2,title:"Promise.prototype.then()",slug:"promise-prototype-then"},{level:2,title:"Promise.prototype.catch()",slug:"promise-prototype-catch"},{level:2,title:"Promise.prototype.finally()",slug:"promise-prototype-finally"},{level:2,title:"Promise.all()",slug:"promise-all"},{level:2,title:"Promise.race()",slug:"promise-race"},{level:2,title:"Promise.allSettled()",slug:"promise-allsettled"},{level:2,title:"Promise.any()",slug:"promise-any"},{level:2,title:"Promise.resolve()",slug:"promise-resolve"},{level:2,title:"Promise.reject()",slug:"promise-reject"},{level:2,title:"应用",slug:"应用"},{level:3,title:"加载图片",slug:"加载图片"},{level:3,title:"Generator 函数与 Promise 的结合",slug:"generator-函数与-promise-的结合"},{level:2,title:"Promise.try()",slug:"promise-try"}],excerpt:'<h1 id="promise-对象"><a class="header-anchor" href="#promise-对象">#</a> Promise 对象</h1>\n<h2 id="promise-的含义"><a class="header-anchor" href="#promise-的含义">#</a> Promise 的含义</h2>\n<p>Promise 是异步编程的一种解决方案,比传统的解决方案——回调函数和事件——更合理和更强大。它由社区最早提出和实现,ES6 将其写进了语言标准,统一了用法,原生提供了<code>Promise</code>对象。</p>\n',lastUpdated:"2022/12/14, 19:36:42",lastUpdatedTimestamp:1671017802e3},{title:"Iterator 和 for-of 循环",frontmatter:{title:"Iterator 和 for-of 循环",date:"2020-02-09T16:00:29.000Z",permalink:"/pages/48df907ad3570f3d",author:"阮一峰",categories:["《ES6 教程》笔记"],tags:["ES6"]},regularPath:"/%E3%80%8AES6%20%E6%95%99%E7%A8%8B%E3%80%8B%E7%AC%94%E8%AE%B0/17.Iterator%20%E5%92%8C%20for-of%20%E5%BE%AA%E7%8E%AF.html",relativePath:"《ES6 教程》笔记/17.Iterator 和 for-of 循环.md",key:"v-32376b82",path:"/pages/48df907ad3570f3d/",headers:[{level:2,title:"Iterator(遍历器)的概念",slug:"iterator-遍历器-的概念"},{level:2,title:"默认 Iterator 接口",slug:"默认-iterator-接口"},{level:2,title:"调用 Iterator 接口的场合",slug:"调用-iterator-接口的场合"},{level:2,title:"字符串的 Iterator 接口",slug:"字符串的-iterator-接口"},{level:2,title:"Iterator 接口与 Generator 函数",slug:"iterator-接口与-generator-函数"},{level:2,title:"遍历器对象的 return(),throw()",slug:"遍历器对象的-return-throw"},{level:2,title:"for...of 循环",slug:"for-of-循环"},{level:3,title:"数组",slug:"数组"},{level:3,title:"Set 和 Map 结构",slug:"set-和-map-结构"},{level:3,title:"计算生成的数据结构",slug:"计算生成的数据结构"},{level:3,title:"类似数组的对象",slug:"类似数组的对象"},{level:3,title:"对象",slug:"对象"},{level:3,title:"与其他遍历语法的比较",slug:"与其他遍历语法的比较"}],excerpt:'<h1 id="iterator-和-for-of-循环"><a class="header-anchor" href="#iterator-和-for-of-循环">#</a> Iterator 和 for...of 循环</h1>\n<h2 id="iterator-遍历器-的概念"><a class="header-anchor" href="#iterator-遍历器-的概念">#</a> Iterator(遍历器)的概念</h2>\n<p>JavaScript 原有的表示“集合”的数据结构,主要是数组(<code>Array</code>)和对象(<code>Object</code>),ES6 又添加了<code>Map</code>和<code>Set</code>。这样就有了四种数据集合,用户还可以组合使用它们,定义自己的数据结构,比如数组的成员是<code>Map</code>,<code>Map</code>的成员是对象。这样就需要一种统一的接口机制,来处理所有不同的数据结构。</p>\n',lastUpdated:"2022/12/14, 19:36:42",lastUpdatedTimestamp:1671017802e3},{title:"分类",frontmatter:{categoriesPage:!0,title:"分类",permalink:"/categories/",article:!1},regularPath:"/@pages/categoriesPage.html",relativePath:"@pages/categoriesPage.md",key:"v-0d35f2fb",path:"/categories/",lastUpdated:"2022/12/14, 19:36:42",lastUpdatedTimestamp:1671017802e3},{title:"Generator 函数的语法",frontmatter:{title:"Generator 函数的语法",date:"2020-02-09T16:00:29.000Z",permalink:"/pages/718b48ed9ce0adce",author:"阮一峰",categories:["《ES6 教程》笔记"],tags:["ES6"]},regularPath:"/%E3%80%8AES6%20%E6%95%99%E7%A8%8B%E3%80%8B%E7%AC%94%E8%AE%B0/18.Generator%20%E5%87%BD%E6%95%B0%E7%9A%84%E8%AF%AD%E6%B3%95.html",relativePath:"《ES6 教程》笔记/18.Generator 函数的语法.md",key:"v-01844106",path:"/pages/718b48ed9ce0adce/",headers:[{level:2,title:"简介",slug:"简介"},{level:3,title:"基本概念",slug:"基本概念"},{level:3,title:"yield 表达式",slug:"yield-表达式"},{level:3,title:"与 Iterator 接口的关系",slug:"与-iterator-接口的关系"},{level:2,title:"next 方法的参数",slug:"next-方法的参数"},{level:2,title:"for...of 循环",slug:"for-of-循环"},{level:2,title:"Generator.prototype.throw()",slug:"generator-prototype-throw"},{level:2,title:"Generator.prototype.return()",slug:"generator-prototype-return"},{level:2,title:"next()、throw()、return() 的共同点",slug:"next-、throw-、return-的共同点"},{level:2,title:"yield* 表达式",slug:"yield-表达式-2"},{level:2,title:"作为对象属性的 Generator 函数",slug:"作为对象属性的-generator-函数"},{level:2,title:"Generator 函数的this",slug:"generator-函数的this"},{level:2,title:"含义",slug:"含义"},{level:3,title:"Generator 与状态机",slug:"generator-与状态机"},{level:3,title:"Generator 与协程",slug:"generator-与协程"},{level:3,title:"Generator 与上下文",slug:"generator-与上下文"},{level:2,title:"应用",slug:"应用"},{level:3,title:"(1)异步操作的同步化表达",slug:"_1-异步操作的同步化表达"},{level:3,title:"(2)控制流管理",slug:"_2-控制流管理"},{level:3,title:"(3)部署 Iterator 接口",slug:"_3-部署-iterator-接口"},{level:3,title:"(4)作为数据结构",slug:"_4-作为数据结构"}],excerpt:'<h1 id="generator-函数的语法"><a class="header-anchor" href="#generator-函数的语法">#</a> Generator 函数的语法</h1>\n<h2 id="简介"><a class="header-anchor" href="#简介">#</a> 简介</h2>\n<h3 id="基本概念"><a class="header-anchor" href="#基本概念">#</a> 基本概念</h3>\n<p>Generator 函数是 ES6 提供的一种<strong>异步编程解决方案</strong>,语法行为与传统函数完全不同。本章详细介绍 Generator 函数的语法和 API,它的异步编程应用请看《Generator 函数的异步应用》一章。</p>\n',lastUpdated:"2022/12/14, 19:36:42",lastUpdatedTimestamp:1671017802e3},{title:"async 函数",frontmatter:{title:"async 函数",date:"2020-02-09T16:00:29.000Z",permalink:"/pages/3777253e65bac487",author:"阮一峰",categories:["《ES6 教程》笔记"],tags:["ES6"]},regularPath:"/%E3%80%8AES6%20%E6%95%99%E7%A8%8B%E3%80%8B%E7%AC%94%E8%AE%B0/20.async%20%E5%87%BD%E6%95%B0.html",relativePath:"《ES6 教程》笔记/20.async 函数.md",key:"v-5291dcfc",path:"/pages/3777253e65bac487/",headers:[{level:2,title:"含义",slug:"含义"},{level:2,title:"基本用法",slug:"基本用法"},{level:2,title:"语法",slug:"语法"},{level:3,title:"返回 Promise 对象",slug:"返回-promise-对象"},{level:3,title:"Promise 对象的状态变化",slug:"promise-对象的状态变化"},{level:3,title:"await 命令",slug:"await-命令"},{level:3,title:"错误处理",slug:"错误处理"},{level:3,title:"使用注意点",slug:"使用注意点"},{level:2,title:"async 函数的实现原理",slug:"async-函数的实现原理"},{level:2,title:"与其他异步处理方法的比较",slug:"与其他异步处理方法的比较"},{level:2,title:"实例:按顺序完成异步操作",slug:"实例-按顺序完成异步操作"},{level:2,title:"顶层 await",slug:"顶层-await"}],excerpt:'<h1 id="async-函数"><a class="header-anchor" href="#async-函数">#</a> async 函数</h1>\n<h2 id="含义"><a class="header-anchor" href="#含义">#</a> 含义</h2>\n<p>ES2017 标准引入了 async 函数,使得异步操作变得更加方便。</p>\n<p>async 函数是什么?一句话,它就<strong>是 Generator 函数的语法糖</strong>。</p>\n<p>前文有一个 Generator 函数,依次读取两个文件。</p>\n',lastUpdated:"2022/12/14, 19:36:42",lastUpdatedTimestamp:1671017802e3},{title:"Generator 函数的异步应用",frontmatter:{title:"Generator 函数的异步应用",date:"2020-02-09T16:00:29.000Z",permalink:"/pages/75af7031eb66847b",author:"阮一峰",categories:["《ES6 教程》笔记"],tags:["ES6"]},regularPath:"/%E3%80%8AES6%20%E6%95%99%E7%A8%8B%E3%80%8B%E7%AC%94%E8%AE%B0/19.Generator%20%E5%87%BD%E6%95%B0%E7%9A%84%E5%BC%82%E6%AD%A5%E5%BA%94%E7%94%A8.html",relativePath:"《ES6 教程》笔记/19.Generator 函数的异步应用.md",key:"v-851ea476",path:"/pages/75af7031eb66847b/",headers:[{level:2,title:"传统方法",slug:"传统方法"},{level:2,title:"基本概念",slug:"基本概念"},{level:3,title:"异步",slug:"异步"},{level:3,title:"回调函数",slug:"回调函数"},{level:3,title:"Promise",slug:"promise"},{level:2,title:"Generator 函数",slug:"generator-函数"},{level:3,title:"协程",slug:"协程"},{level:3,title:"协程的 Generator 函数实现",slug:"协程的-generator-函数实现"},{level:3,title:"Generator 函数的数据交换和错误处理",slug:"generator-函数的数据交换和错误处理"},{level:3,title:"异步任务的封装",slug:"异步任务的封装"},{level:2,title:"Thunk 函数",slug:"thunk-函数"},{level:3,title:"参数的求值策略",slug:"参数的求值策略"},{level:3,title:"Thunk 函数的含义",slug:"thunk-函数的含义"},{level:3,title:"JavaScript 语言的 Thunk 函数",slug:"javascript-语言的-thunk-函数"},{level:3,title:"Thunkify 模块",slug:"thunkify-模块"},{level:3,title:"Generator 函数的流程管理",slug:"generator-函数的流程管理"},{level:3,title:"Thunk 函数的自动流程管理",slug:"thunk-函数的自动流程管理"},{level:2,title:"co 模块",slug:"co-模块"},{level:3,title:"基本用法",slug:"基本用法"},{level:3,title:"co 模块的原理",slug:"co-模块的原理"},{level:3,title:"基于 Promise 对象的自动执行",slug:"基于-promise-对象的自动执行"},{level:3,title:"co 模块的源码",slug:"co-模块的源码"},{level:3,title:"处理并发的异步操作",slug:"处理并发的异步操作"},{level:3,title:"实例:处理 Stream",slug:"实例-处理-stream"}],excerpt:'<h1 id="generator-函数的异步应用"><a class="header-anchor" href="#generator-函数的异步应用">#</a> Generator 函数的异步应用</h1>\n<p>异步编程对 JavaScript 语言太重要。JavaScript 语言的执行环境是“单线程”的,如果没有异步编程,根本没法用,非卡死不可。本章主要介绍 Generator 函数如何完成异步操作。</p>\n',lastUpdated:"2022/12/14, 19:36:42",lastUpdatedTimestamp:1671017802e3},{title:"Class 的基本语法",frontmatter:{title:"Class 的基本语法",date:"2020-02-09T16:00:29.000Z",permalink:"/pages/e831e1593c82bbe0",author:"阮一峰",categories:["《ES6 教程》笔记"],tags:["ES6"]},regularPath:"/%E3%80%8AES6%20%E6%95%99%E7%A8%8B%E3%80%8B%E7%AC%94%E8%AE%B0/21.Class%20%E7%9A%84%E5%9F%BA%E6%9C%AC%E8%AF%AD%E6%B3%95.html",relativePath:"《ES6 教程》笔记/21.Class 的基本语法.md",key:"v-4b382ed4",path:"/pages/e831e1593c82bbe0/",headers:[{level:2,title:"简介",slug:"简介"},{level:3,title:"类的由来",slug:"类的由来"},{level:3,title:"constructor 方法",slug:"constructor-方法"},{level:3,title:"类的实例",slug:"类的实例"},{level:3,title:"取值函数(getter)和存值函数(setter)",slug:"取值函数-getter-和存值函数-setter"},{level:3,title:"属性表达式",slug:"属性表达式"},{level:3,title:"Class 表达式",slug:"class-表达式"},{level:3,title:"注意点",slug:"注意点"},{level:2,title:"静态方法",slug:"静态方法"},{level:2,title:"实例属性的新写法",slug:"实例属性的新写法"},{level:2,title:"静态属性",slug:"静态属性"},{level:2,title:"私有方法和私有属性",slug:"私有方法和私有属性"},{level:3,title:"现有的解决方案",slug:"现有的解决方案"},{level:3,title:"私有属性的提案",slug:"私有属性的提案"},{level:2,title:"new.target 属性",slug:"new-target-属性"}],excerpt:'<h1 id="class-的基本语法"><a class="header-anchor" href="#class-的基本语法">#</a> Class 的基本语法</h1>\n<h2 id="简介"><a class="header-anchor" href="#简介">#</a> 简介</h2>\n<h3 id="类的由来"><a class="header-anchor" href="#类的由来">#</a> 类的由来</h3>\n<p>JavaScript 语言中,生成实例对象的传统方法是通过构造函数。下面是一个例子。</p>\n\x3c!--beforebegin--\x3e<div class="language-javascript line-numbers-mode">\x3c!--afterbegin--\x3e<pre v-pre class="language-javascript"><code><span class="token keyword">function</span> <span class="token function">Point</span><span class="token punctuation">(</span><span class="token parameter">x<span class="token punctuation">,</span> y</span><span class="token punctuation">)</span> <span class="token punctuation">{</span>\n <span class="token keyword">this</span><span class="token punctuation">.</span>x <span class="token operator">=</span> x<span class="token punctuation">;</span>\n <span class="token keyword">this</span><span class="token punctuation">.</span>y <span class="token operator">=</span> y<span class="token punctuation">;</span>\n<span class="token punctuation">}</span>\n\n<span class="token class-name">Point</span><span class="token punctuation">.</span>prototype<span class="token punctuation">.</span><span class="token function-variable function">toString</span> <span class="token operator">=</span> <span class="token keyword">function</span> <span class="token punctuation">(</span><span class="token punctuation">)</span> <span class="token punctuation">{</span>\n <span class="token keyword">return</span> <span class="token string">\'(\'</span> <span class="token operator">+</span> <span class="token keyword">this</span><span class="token punctuation">.</span>x <span class="token operator">+</span> <span class="token string">\', \'</span> <span class="token operator">+</span> <span class="token keyword">this</span><span class="token punctuation">.</span>y <span class="token operator">+</span> <span class="token string">\')\'</span><span class="token punctuation">;</span>\n<span class="token punctuation">}</span><span class="token punctuation">;</span>\n\n<span class="token keyword">var</span> p <span class="token operator">=</span> <span class="token keyword">new</span> <span class="token class-name">Point</span><span class="token punctuation">(</span><span class="token number">1</span><span class="token punctuation">,</span> <span class="token number">2</span><span class="token punctuation">)</span><span class="token punctuation">;</span>\n</code></pre>\n<div class="line-numbers-wrapper"><span class="line-number">1</span><br><span class="line-number">2</span><br><span class="line-number">3</span><br><span class="line-number">4</span><br><span class="line-number">5</span><br><span class="line-number">6</span><br><span class="line-number">7</span><br><span class="line-number">8</span><br><span class="line-number">9</span><br><span class="line-number">10</span><br></div>\x3c!--beforeend--\x3e</div>\x3c!--afterend--\x3e',lastUpdated:"2022/12/14, 19:36:42",lastUpdatedTimestamp:1671017802e3},{title:"Module 的语法",frontmatter:{title:"Module 的语法",date:"2020-02-09T16:00:29.000Z",permalink:"/pages/efe2fb04eb8ac5fb",author:"阮一峰",categories:["《ES6 教程》笔记"],tags:["ES6"]},regularPath:"/%E3%80%8AES6%20%E6%95%99%E7%A8%8B%E3%80%8B%E7%AC%94%E8%AE%B0/23.Module%20%E7%9A%84%E8%AF%AD%E6%B3%95.html",relativePath:"《ES6 教程》笔记/23.Module 的语法.md",key:"v-5b8db019",path:"/pages/efe2fb04eb8ac5fb/",headers:[{level:2,title:"概述",slug:"概述"},{level:2,title:"严格模式",slug:"严格模式"},{level:2,title:"export 命令",slug:"export-命令"},{level:2,title:"import 命令",slug:"import-命令"},{level:2,title:"模块的整体加载-(星号*)",slug:"模块的整体加载-星号"},{level:2,title:"export default 命令",slug:"export-default-命令"},{level:2,title:"export 与 import 的复合写法",slug:"export-与-import-的复合写法"},{level:2,title:"模块的继承",slug:"模块的继承"},{level:2,title:"跨模块常量",slug:"跨模块常量"},{level:2,title:"import()",slug:"import"},{level:3,title:"简介",slug:"简介"},{level:3,title:"适用场合",slug:"适用场合"},{level:3,title:"注意点",slug:"注意点"}],excerpt:'<h1 id="module-的语法"><a class="header-anchor" href="#module-的语法">#</a> Module 的语法</h1>\n<h2 id="概述"><a class="header-anchor" href="#概述">#</a> 概述</h2>\n<p>历史上,JavaScript 一直没有模块(module)体系,无法将一个大程序拆分成互相依赖的小文件,再用简单的方法拼装起来。其他语言都有这项功能,比如 Ruby 的<code>require</code>、Python 的<code>import</code>,甚至就连 CSS 都有<code>@import</code>,但是 JavaScript 任何这方面的支持都没有,这对开发大型的、复杂的项目形成了巨大障碍。</p>\n',lastUpdated:"2022/12/14, 19:36:42",lastUpdatedTimestamp:1671017802e3},{title:"Class 的继承",frontmatter:{title:"Class 的继承",date:"2020-02-09T16:00:29.000Z",permalink:"/pages/83f8c3a0cd87dd83",author:"阮一峰",categories:["《ES6 教程》笔记"],tags:["ES6"]},regularPath:"/%E3%80%8AES6%20%E6%95%99%E7%A8%8B%E3%80%8B%E7%AC%94%E8%AE%B0/22.Class%20%E7%9A%84%E7%BB%A7%E6%89%BF.html",relativePath:"《ES6 教程》笔记/22.Class 的继承.md",key:"v-3bed8ed0",path:"/pages/83f8c3a0cd87dd83/",headers:[{level:2,title:"简介",slug:"简介"},{level:2,title:"Object.getPrototypeOf()",slug:"object-getprototypeof"},{level:2,title:"super 关键字",slug:"super-关键字"},{level:2,title:"类的 prototype 属性和__proto__属性",slug:"类的-prototype-属性和-proto-属性"},{level:3,title:"实例的 __proto__ 属性",slug:"实例的-proto-属性"},{level:2,title:"原生构造函数的继承",slug:"原生构造函数的继承"},{level:2,title:"Mixin 模式的实现",slug:"mixin-模式的实现"}],excerpt:'<h1 id="class-的继承"><a class="header-anchor" href="#class-的继承">#</a> Class 的继承</h1>\n<h2 id="简介"><a class="header-anchor" href="#简介">#</a> 简介</h2>\n<p>Class 可以通过<code>extends</code>关键字实现继承,这比 ES5 的通过修改原型链实现继承,要清晰和方便很多。</p>\n\x3c!--beforebegin--\x3e<div class="language-javascript line-numbers-mode">\x3c!--afterbegin--\x3e<pre v-pre class="language-javascript"><code><span class="token keyword">class</span> <span class="token class-name">Point</span> <span class="token punctuation">{</span>\n<span class="token punctuation">}</span>\n\n<span class="token keyword">class</span> <span class="token class-name">ColorPoint</span> <span class="token keyword">extends</span> <span class="token class-name">Point</span> <span class="token punctuation">{</span>\n<span class="token punctuation">}</span>\n</code></pre>\n<div class="line-numbers-wrapper"><span class="line-number">1</span><br><span class="line-number">2</span><br><span class="line-number">3</span><br><span class="line-number">4</span><br><span class="line-number">5</span><br></div>\x3c!--beforeend--\x3e</div>\x3c!--afterend--\x3e',lastUpdated:"2022/12/14, 19:36:42",lastUpdatedTimestamp:1671017802e3},{title:"Module 的加载实现",frontmatter:{title:"Module 的加载实现",date:"2020-02-09T16:00:29.000Z",permalink:"/pages/a79ca2e64ceae213",author:"阮一峰",categories:["《ES6 教程》笔记"],tags:["ES6"]},regularPath:"/%E3%80%8AES6%20%E6%95%99%E7%A8%8B%E3%80%8B%E7%AC%94%E8%AE%B0/24.Module%20%E7%9A%84%E5%8A%A0%E8%BD%BD%E5%AE%9E%E7%8E%B0.html",relativePath:"《ES6 教程》笔记/24.Module 的加载实现.md",key:"v-6d4f76c7",path:"/pages/a79ca2e64ceae213/",headers:[{level:2,title:"浏览器加载",slug:"浏览器加载"},{level:3,title:"传统方法",slug:"传统方法"},{level:3,title:"加载规则",slug:"加载规则"},{level:2,title:"ES6 模块与 CommonJS 模块的差异",slug:"es6-模块与-commonjs-模块的差异"},{level:2,title:"Node.js 加载",slug:"node-js-加载"},{level:3,title:"概述",slug:"概述"},{level:3,title:"main 字段",slug:"main-字段"},{level:3,title:"exports 字段",slug:"exports-字段"},{level:3,title:"ES6 模块加载 CommonJS 模块",slug:"es6-模块加载-commonjs-模块"},{level:3,title:"CommonJS 模块加载 ES6 模块",slug:"commonjs-模块加载-es6-模块"},{level:3,title:"Node.js 的内置模块",slug:"node-js-的内置模块"},{level:3,title:"加载路径",slug:"加载路径"},{level:3,title:"内部变量",slug:"内部变量"},{level:2,title:"循环加载",slug:"循环加载"},{level:3,title:"CommonJS 模块的加载原理",slug:"commonjs-模块的加载原理"},{level:3,title:"CommonJS 模块的循环加载",slug:"commonjs-模块的循环加载"},{level:3,title:"ES6 模块的循环加载",slug:"es6-模块的循环加载"}],excerpt:'<h1 id="module-的加载实现"><a class="header-anchor" href="#module-的加载实现">#</a> Module 的加载实现</h1>\n<p>上一章介绍了模块的语法,本章介绍如何在浏览器和 Node.js 之中加载 ES6 模块,以及实际开发中经常遇到的一些问题(比如循环加载)。</p>\n',lastUpdated:"2022/12/14, 19:36:42",lastUpdatedTimestamp:1671017802e3},{title:"编程风格",frontmatter:{title:"编程风格",date:"2020-02-09T16:00:29.000Z",permalink:"/pages/984bf549204bb266",author:"阮一峰",categories:["《ES6 教程》笔记"],tags:["ES6"]},regularPath:"/%E3%80%8AES6%20%E6%95%99%E7%A8%8B%E3%80%8B%E7%AC%94%E8%AE%B0/25.%E7%BC%96%E7%A8%8B%E9%A3%8E%E6%A0%BC.html",relativePath:"《ES6 教程》笔记/25.编程风格.md",key:"v-ac5acbb4",path:"/pages/984bf549204bb266/",headers:[{level:2,title:"块级作用域",slug:"块级作用域"},{level:2,title:"字符串",slug:"字符串"},{level:2,title:"解构赋值",slug:"解构赋值"},{level:2,title:"对象",slug:"对象"},{level:2,title:"数组",slug:"数组"},{level:2,title:"函数",slug:"函数"},{level:2,title:"Map 结构",slug:"map-结构"},{level:2,title:"Class",slug:"class"},{level:2,title:"模块",slug:"模块"},{level:2,title:"ESLint 的使用",slug:"eslint-的使用"}],excerpt:'<h1 id="编程风格"><a class="header-anchor" href="#编程风格">#</a> 编程风格</h1>\n<p>本章探讨如何将 ES6 的新语法,运用到编码实践之中,与传统的 JavaScript 语法结合在一起,写出合理的、易于阅读和维护的代码。</p>\n<p>多家公司和组织已经公开了它们的风格规范,下面的内容主要参考了 <a href="https://github.com/airbnb/javascript" target="_blank" rel="noopener noreferrer">Airbnb<OutboundLink/></a> 公司的 JavaScript 风格规范。</p>\n',lastUpdated:"2022/12/14, 19:36:42",lastUpdatedTimestamp:1671017802e3},{title:"异步遍历器",frontmatter:{title:"异步遍历器",date:"2020-02-09T16:00:29.000Z",permalink:"/pages/16121351be68691b",author:"阮一峰",categories:["《ES6 教程》笔记"],tags:["ES6"]},regularPath:"/%E3%80%8AES6%20%E6%95%99%E7%A8%8B%E3%80%8B%E7%AC%94%E8%AE%B0/27.%E5%BC%82%E6%AD%A5%E9%81%8D%E5%8E%86%E5%99%A8.html",relativePath:"《ES6 教程》笔记/27.异步遍历器.md",key:"v-733f50a3",path:"/pages/16121351be68691b/",headers:[{level:2,title:"同步遍历器的问题",slug:"同步遍历器的问题"},{level:2,title:"异步遍历的接口",slug:"异步遍历的接口"},{level:2,title:"for await...of",slug:"for-await-of"},{level:2,title:"异步 Generator 函数",slug:"异步-generator-函数"},{level:2,title:"yield* 语句",slug:"yield-语句"}],excerpt:'<h1 id="异步遍历器"><a class="header-anchor" href="#异步遍历器">#</a> 异步遍历器</h1>\n<h2 id="同步遍历器的问题"><a class="header-anchor" href="#同步遍历器的问题">#</a> 同步遍历器的问题</h2>\n<p>《遍历器》一章说过,Iterator 接口是一种数据遍历的协议,只要调用遍历器对象的<code>next</code>方法,就会得到一个对象,表示当前遍历指针所在的那个位置的信息。<code>next</code>方法返回的对象的结构是<code>{value, done}</code>,其中<code>value</code>表示当前的数据的值,<code>done</code>是一个布尔值,表示遍历是否结束。</p>\n',lastUpdated:"2022/12/14, 19:36:42",lastUpdatedTimestamp:1671017802e3},{title:"ArrayBuffer",frontmatter:{title:"ArrayBuffer",date:"2020-02-09T16:00:29.000Z",permalink:"/pages/a2ba314746bfdbdd",author:"阮一峰",categories:["《ES6 教程》笔记"],tags:["ES6"]},regularPath:"/%E3%80%8AES6%20%E6%95%99%E7%A8%8B%E3%80%8B%E7%AC%94%E8%AE%B0/28.ArrayBuffer.html",relativePath:"《ES6 教程》笔记/28.ArrayBuffer.md",key:"v-52c04cf0",path:"/pages/a2ba314746bfdbdd/",headers:[{level:2,title:"ArrayBuffer 对象",slug:"arraybuffer-对象"},{level:3,title:"概述",slug:"概述"},{level:3,title:"ArrayBuffer.prototype.byteLength",slug:"arraybuffer-prototype-bytelength"},{level:3,title:"ArrayBuffer.prototype.slice()",slug:"arraybuffer-prototype-slice"},{level:3,title:"ArrayBuffer.isView()",slug:"arraybuffer-isview"},{level:2,title:"TypedArray 视图",slug:"typedarray-视图"},{level:3,title:"概述",slug:"概述-2"},{level:3,title:"构造函数",slug:"构造函数"},{level:3,title:"数组方法",slug:"数组方法"},{level:3,title:"字节序",slug:"字节序"},{level:3,title:"BYTESPERELEMENT 属性",slug:"bytes-per-element-属性"},{level:3,title:"ArrayBuffer 与字符串的互相转换",slug:"arraybuffer-与字符串的互相转换"},{level:3,title:"溢出",slug:"溢出"},{level:3,title:"TypedArray.prototype.buffer",slug:"typedarray-prototype-buffer"},{level:3,title:"TypedArray.prototype.byteLength,TypedArray.prototype.byteOffset",slug:"typedarray-prototype-bytelength-typedarray-prototype-byteoffset"},{level:3,title:"TypedArray.prototype.length",slug:"typedarray-prototype-length"},{level:3,title:"TypedArray.prototype.set()",slug:"typedarray-prototype-set"},{level:3,title:"TypedArray.prototype.subarray()",slug:"typedarray-prototype-subarray"},{level:3,title:"TypedArray.prototype.slice()",slug:"typedarray-prototype-slice"},{level:3,title:"TypedArray.of()",slug:"typedarray-of"},{level:3,title:"TypedArray.from()",slug:"typedarray-from"},{level:2,title:"复合视图",slug:"复合视图"},{level:2,title:"DataView 视图",slug:"dataview-视图"},{level:2,title:"二进制数组的应用",slug:"二进制数组的应用"},{level:3,title:"AJAX",slug:"ajax"},{level:3,title:"Canvas",slug:"canvas"},{level:3,title:"WebSocket",slug:"websocket"},{level:3,title:"Fetch API",slug:"fetch-api"},{level:3,title:"File API",slug:"file-api"},{level:2,title:"SharedArrayBuffer",slug:"sharedarraybuffer"},{level:2,title:"Atomics 对象",slug:"atomics-对象"}],excerpt:'<h1 id="arraybuffer"><a class="header-anchor" href="#arraybuffer">#</a> ArrayBuffer</h1>\n<p><code>ArrayBuffer</code>对象、<code>TypedArray</code>视图和<code>DataView</code>视图是 JavaScript 操作二进制数据的一个接口。这些对象早就存在,属于独立的规格(2011 年 2 月发布),ES6 将它们纳入了 ECMAScript 规格,并且增加了新的方法。它们都是以数组的语法处理二进制数据,所以统称为二进制数组。</p>\n',lastUpdated:"2022/12/14, 19:36:42",lastUpdatedTimestamp:1671017802e3},{title:"最新提案",frontmatter:{title:"最新提案",date:"2020-02-09T16:00:30.000Z",permalink:"/pages/7188882b8d65af1b",author:"阮一峰",categories:["《ES6 教程》笔记"],tags:["ES6"]},regularPath:"/%E3%80%8AES6%20%E6%95%99%E7%A8%8B%E3%80%8B%E7%AC%94%E8%AE%B0/29.%E6%9C%80%E6%96%B0%E6%8F%90%E6%A1%88.html",relativePath:"《ES6 教程》笔记/29.最新提案.md",key:"v-13e44e4a",path:"/pages/7188882b8d65af1b/",headers:[{level:2,title:"do 表达式",slug:"do-表达式"},{level:2,title:"throw 表达式",slug:"throw-表达式"},{level:2,title:"函数的部分执行",slug:"函数的部分执行"},{level:3,title:"语法",slug:"语法"},{level:3,title:"注意点",slug:"注意点"},{level:2,title:"管道运算符",slug:"管道运算符"},{level:2,title:"数值分隔符",slug:"数值分隔符"},{level:2,title:"Math.signbit()",slug:"math-signbit"},{level:2,title:"双冒号运算符",slug:"双冒号运算符"},{level:2,title:"Realm API",slug:"realm-api"},{level:2,title:"#!命令",slug:"命令"},{level:2,title:"import.meta",slug:"import-meta"}],excerpt:'<h1 id="最新提案"><a class="header-anchor" href="#最新提案">#</a> 最新提案</h1>\n<p>本章介绍一些尚未进入标准、但很有希望的最新提案。</p>\n<h2 id="do-表达式"><a class="header-anchor" href="#do-表达式">#</a> do 表达式</h2>\n<p>本质上,块级作用域是一个语句,将多个操作封装在一起,没有返回值。</p>\n\x3c!--beforebegin--\x3e<div class="language-javascript line-numbers-mode">\x3c!--afterbegin--\x3e<pre v-pre class="language-javascript"><code><span class="token punctuation">{</span>\n <span class="token keyword">let</span> t <span class="token operator">=</span> <span class="token function">f</span><span class="token punctuation">(</span><span class="token punctuation">)</span><span class="token punctuation">;</span>\n t <span class="token operator">=</span> t <span class="token operator">*</span> t <span class="token operator">+</span> <span class="token number">1</span><span class="token punctuation">;</span>\n<span class="token punctuation">}</span>\n</code></pre>\n<div class="line-numbers-wrapper"><span class="line-number">1</span><br><span class="line-number">2</span><br><span class="line-number">3</span><br><span class="line-number">4</span><br></div>\x3c!--beforeend--\x3e</div>\x3c!--afterend--\x3e',lastUpdated:"2022/12/14, 19:36:42",lastUpdatedTimestamp:1671017802e3},{title:"装饰器",frontmatter:{title:"装饰器",date:"2020-02-09T16:00:30.000Z",permalink:"/pages/e97bc1e5626b082c",author:"阮一峰",categories:["《ES6 教程》笔记"],tags:["ES6"]},regularPath:"/%E3%80%8AES6%20%E6%95%99%E7%A8%8B%E3%80%8B%E7%AC%94%E8%AE%B0/30.%E8%A3%85%E9%A5%B0%E5%99%A8.html",relativePath:"《ES6 教程》笔记/30.装饰器.md",key:"v-b808d19e",path:"/pages/e97bc1e5626b082c/",headers:[{level:2,title:"类的装饰",slug:"类的装饰"},{level:2,title:"方法的装饰",slug:"方法的装饰"},{level:2,title:"为什么装饰器不能用于函数?",slug:"为什么装饰器不能用于函数"},{level:2,title:"core-decorators.js",slug:"core-decorators-js"},{level:2,title:"使用装饰器实现自动发布事件",slug:"使用装饰器实现自动发布事件"},{level:2,title:"Mixin",slug:"mixin"},{level:2,title:"Trait",slug:"trait"}],excerpt:'<h1 id="装饰器"><a class="header-anchor" href="#装饰器">#</a> 装饰器</h1>\n<p>[说明] Decorator 提案经过了大幅修改,目前还没有定案,不知道语法会不会再变。下面的内容完全依据以前的提案,已经有点过时了。等待定案以后,需要完全重写。</p>\n<p>装饰器(Decorator)是一种与类(class)相关的语法,用来注释或修改类和类方法。许多面向对象的语言都有这项功能,目前有一个<a href="https://github.com/tc39/proposal-decorators" target="_blank" rel="noopener noreferrer">提案<OutboundLink/></a>将其引入了 ECMAScript。</p>\n',lastUpdated:"2022/12/14, 19:36:42",lastUpdatedTimestamp:1671017802e3},{title:"函数式编程",frontmatter:{title:"函数式编程",date:"2020-02-09T16:00:30.000Z",permalink:"/pages/1cf50330655efc69",author:"阮一峰",categories:["《ES6 教程》笔记"],tags:["ES6"]},regularPath:"/%E3%80%8AES6%20%E6%95%99%E7%A8%8B%E3%80%8B%E7%AC%94%E8%AE%B0/31.%E5%87%BD%E6%95%B0%E5%BC%8F%E7%BC%96%E7%A8%8B.html",relativePath:"《ES6 教程》笔记/31.函数式编程.md",key:"v-f3b0de10",path:"/pages/1cf50330655efc69/",headers:[{level:2,title:"柯里化",slug:"柯里化"},{level:2,title:"函数合成",slug:"函数合成"},{level:2,title:"参数倒置",slug:"参数倒置"},{level:2,title:"执行边界",slug:"执行边界"},{level:2,title:"队列操作",slug:"队列操作"},{level:2,title:"合并操作",slug:"合并操作"},{level:2,title:"配对操作",slug:"配对操作"},{level:2,title:"参考链接",slug:"参考链接"}],excerpt:'<h1 id="函数式编程"><a class="header-anchor" href="#函数式编程">#</a> 函数式编程</h1>\n<p>JavaScript 语言从一诞生,就具有函数式编程的烙印。它将函数作为一种独立的数据类型,与其他数据类型处于完全平等的地位。在 JavaScript 语言中,你可以采用面向对象编程,也可以采用函数式编程。有人甚至说,JavaScript 是有史以来第一种被大规模采用的函数式编程语言。</p>\n',lastUpdated:"2022/12/14, 19:36:42",lastUpdatedTimestamp:1671017802e3},{title:"Mixin",frontmatter:{title:"Mixin",date:"2020-02-09T16:00:30.000Z",permalink:"/pages/6a8e2dc558da1b39",author:"阮一峰",categories:["《ES6 教程》笔记"],tags:["ES6"]},regularPath:"/%E3%80%8AES6%20%E6%95%99%E7%A8%8B%E3%80%8B%E7%AC%94%E8%AE%B0/32.Mixin.html",relativePath:"《ES6 教程》笔记/32.Mixin.md",key:"v-94937e60",path:"/pages/6a8e2dc558da1b39/",headers:[{level:2,title:"含义",slug:"含义"},{level:2,title:"Trait",slug:"trait"}],excerpt:'<h1 id="mixin"><a class="header-anchor" href="#mixin">#</a> Mixin</h1>\n<p>JavaScript 语言的设计是单一继承,即子类只能继承一个父类,不允许继承多个父类。这种设计保证了对象继承的层次结构是树状的,而不是复杂的<a href="https://en.wikipedia.org/wiki/Multiple_inheritance#The_diamond_problem" target="_blank" rel="noopener noreferrer">网状结构<OutboundLink/></a>。</p>\n',lastUpdated:"2022/12/14, 19:36:42",lastUpdatedTimestamp:1671017802e3},{title:"读懂 ECMAScript 规格",frontmatter:{title:"读懂 ECMAScript 规格",date:"2020-02-09T16:00:29.000Z",permalink:"/pages/32c35f7651d6e58e",author:"阮一峰",categories:["《ES6 教程》笔记"],tags:["ES6"]},regularPath:"/%E3%80%8AES6%20%E6%95%99%E7%A8%8B%E3%80%8B%E7%AC%94%E8%AE%B0/26.%E8%AF%BB%E6%87%82%20ECMAScript%20%E8%A7%84%E6%A0%BC.html",relativePath:"《ES6 教程》笔记/26.读懂 ECMAScript 规格.md",key:"v-6a3203ee",path:"/pages/32c35f7651d6e58e/",headers:[{level:2,title:"概述",slug:"概述"},{level:2,title:"术语",slug:"术语"},{level:3,title:"抽象操作",slug:"抽象操作"},{level:3,title:"Record 和 field",slug:"record-和-field"},{level:3,title:"[[Notation]]",slug:"notation"},{level:3,title:"Completion Record",slug:"completion-record"},{level:2,title:"抽象操作的标准流程",slug:"抽象操作的标准流程"},{level:2,title:"相等运算符",slug:"相等运算符"},{level:2,title:"数组的空位",slug:"数组的空位"},{level:2,title:"数组的 map 方法",slug:"数组的-map-方法"}],excerpt:'<h1 id="读懂-ecmascript-规格"><a class="header-anchor" href="#读懂-ecmascript-规格">#</a> 读懂 ECMAScript 规格</h1>\n<h2 id="概述"><a class="header-anchor" href="#概述">#</a> 概述</h2>\n<p>规格文件是计算机语言的官方标准,详细描述语法规则和实现方法。</p>\n<p>一般来说,没有必要阅读规格,除非你要写编译器。因为规格写得非常抽象和精炼,又缺乏实例,不容易理解,而且对于解决实际的应用问题,帮助不大。但是,如果你遇到疑难的语法问题,实在找不到答案,这时可以去查看规格文件,了解语言标准是怎么说的。规格是解决问题的“最后一招”。</p>\n',lastUpdated:"2022/12/14, 19:36:42",lastUpdatedTimestamp:1671017802e3},{title:"SIMD",frontmatter:{title:"SIMD",date:"2020-02-09T16:00:30.000Z",permalink:"/pages/8e8f80f69b775a56",author:"阮一峰",categories:["《ES6 教程》笔记"],tags:["ES6"]},regularPath:"/%E3%80%8AES6%20%E6%95%99%E7%A8%8B%E3%80%8B%E7%AC%94%E8%AE%B0/33.SIMD.html",relativePath:"《ES6 教程》笔记/33.SIMD.md",key:"v-04a8e9f4",path:"/pages/8e8f80f69b775a56/",headers:[{level:2,title:"概述",slug:"概述"},{level:2,title:"数据类型",slug:"数据类型"},{level:2,title:"静态方法:数学运算",slug:"静态方法-数学运算"},{level:3,title:"SIMD.%type%.abs(),SIMD.%type%.neg()",slug:"simd-type-abs-simd-type-neg"},{level:3,title:"SIMD.%type%.add(),SIMD.%type%.addSaturate()",slug:"simd-type-add-simd-type-addsaturate"},{level:3,title:"SIMD.%type%.sub(),SIMD.%type%.subSaturate()",slug:"simd-type-sub-simd-type-subsaturate"},{level:3,title:"SIMD.%type%.mul(),SIMD.%type%.div(),SIMD.%type%.sqrt()",slug:"simd-type-mul-simd-type-div-simd-type-sqrt"},{level:3,title:"SIMD.%FloatType%.reciprocalApproximation(),SIMD.%type%.reciprocalSqrtApproximation()",slug:"simd-floattype-reciprocalapproximation-simd-type-reciprocalsqrtapproximation"},{level:3,title:"SIMD.%IntegerType%.shiftLeftByScalar()",slug:"simd-integertype-shiftleftbyscalar"},{level:3,title:"SIMD.%IntegerType%.shiftRightByScalar()",slug:"simd-integertype-shiftrightbyscalar"},{level:2,title:"静态方法:通道处理",slug:"静态方法-通道处理"},{level:3,title:"SIMD.%type%.check()",slug:"simd-type-check"},{level:3,title:"SIMD.%type%.extractLane(),SIMD.%type%.replaceLane()",slug:"simd-type-extractlane-simd-type-replacelane"},{level:3,title:"SIMD.%type%.load()",slug:"simd-type-load"},{level:3,title:"SIMD.%type%.store()",slug:"simd-type-store"},{level:3,title:"SIMD.%type%.splat()",slug:"simd-type-splat"},{level:3,title:"SIMD.%type%.swizzle()",slug:"simd-type-swizzle"},{level:3,title:"SIMD.%type%.shuffle()",slug:"simd-type-shuffle"},{level:2,title:"静态方法:比较运算",slug:"静态方法-比较运算"},{level:3,title:"SIMD.%type%.equal(),SIMD.%type%.notEqual()",slug:"simd-type-equal-simd-type-notequal"},{level:3,title:"SIMD.%type%.greaterThan(),SIMD.%type%.greaterThanOrEqual()",slug:"simd-type-greaterthan-simd-type-greaterthanorequal"},{level:3,title:"SIMD.%type%.lessThan(),SIMD.%type%.lessThanOrEqual()",slug:"simd-type-lessthan-simd-type-lessthanorequal"},{level:3,title:"SIMD.%type%.select()",slug:"simd-type-select"},{level:3,title:"SIMD.%BooleanType%.allTrue(),SIMD.%BooleanType%.anyTrue()",slug:"simd-booleantype-alltrue-simd-booleantype-anytrue"},{level:3,title:"SIMD.%type%.min(),SIMD.%type%.minNum()",slug:"simd-type-min-simd-type-minnum"},{level:3,title:"SIMD.%type%.max(),SIMD.%type%.maxNum()",slug:"simd-type-max-simd-type-maxnum"},{level:2,title:"静态方法:位运算",slug:"静态方法-位运算"},{level:3,title:"SIMD.%type%.and(),SIMD.%type%.or(),SIMD.%type%.xor(),SIMD.%type%.not()",slug:"simd-type-and-simd-type-or-simd-type-xor-simd-type-not"},{level:2,title:"静态方法:数据类型转换",slug:"静态方法-数据类型转换"},{level:2,title:"实例方法",slug:"实例方法"},{level:3,title:"SIMD.%type%.prototype.toString()",slug:"simd-type-prototype-tostring"},{level:2,title:"实例:求平均值",slug:"实例-求平均值"}],excerpt:'<h1 id="simd"><a class="header-anchor" href="#simd">#</a> SIMD</h1>\n<h2 id="概述"><a class="header-anchor" href="#概述">#</a> 概述</h2>\n<p>SIMD(发音<code>/sim-dee/</code>)是“Single Instruction/Multiple Data”的缩写,意为“单指令,多数据”。它是 JavaScript 操作 CPU 对应指令的接口,你可以看做这是一种不同的运算执行模式。与它相对的是 SISD(“Single Instruction/Single Data”),即“单指令,单数据”。</p>\n',lastUpdated:"2022/12/14, 19:36:42",lastUpdatedTimestamp:1671017802e3},{title:"参考链接",frontmatter:{title:"参考链接",date:"2020-02-09T16:00:30.000Z",permalink:"/pages/ea6f3b870f6dab69",author:"阮一峰",categories:["《ES6 教程》笔记"],tags:["ES6"]},regularPath:"/%E3%80%8AES6%20%E6%95%99%E7%A8%8B%E3%80%8B%E7%AC%94%E8%AE%B0/34.%E5%8F%82%E8%80%83%E9%93%BE%E6%8E%A5.html",relativePath:"《ES6 教程》笔记/34.参考链接.md",key:"v-e015545a",path:"/pages/ea6f3b870f6dab69/",headers:[{level:2,title:"官方文件",slug:"官方文件"},{level:2,title:"综合介绍",slug:"综合介绍"},{level:2,title:"let 和 const",slug:"let-和-const"},{level:2,title:"解构赋值",slug:"解构赋值"},{level:2,title:"字符串",slug:"字符串"},{level:2,title:"正则",slug:"正则"},{level:2,title:"数值",slug:"数值"},{level:2,title:"数组",slug:"数组"},{level:2,title:"函数",slug:"函数"},{level:2,title:"对象",slug:"对象"},{level:2,title:"Symbol",slug:"symbol"},{level:2,title:"Set 和 Map",slug:"set-和-map"},{level:2,title:"Proxy 和 Reflect",slug:"proxy-和-reflect"},{level:2,title:"Promise 对象",slug:"promise-对象"},{level:2,title:"Iterator",slug:"iterator"},{level:2,title:"Generator",slug:"generator"},{level:2,title:"异步操作和 Async 函数",slug:"异步操作和-async-函数"},{level:2,title:"Class",slug:"class"},{level:2,title:"Decorator",slug:"decorator"},{level:2,title:"Module",slug:"module"},{level:2,title:"二进制数组",slug:"二进制数组"},{level:2,title:"SIMD",slug:"simd"},{level:2,title:"工具",slug:"工具"}],lastUpdated:"2022/12/14, 19:36:42",lastUpdatedTimestamp:1671017802e3},{title:"常用Git命令清单",frontmatter:{title:"常用Git命令清单",date:"2020-11-18T17:43:57.000Z",permalink:"/pages/8292d8/",categories:["《Git》学习笔记"],tags:["Git"],author:{name:"heBody",link:"https://github.com/heBody"}},regularPath:"/%E3%80%8AGit%E3%80%8B%E5%AD%A6%E4%B9%A0%E7%AC%94%E8%AE%B0/10.%E6%89%8B%E5%86%8C/00.%E5%B8%B8%E7%94%A8Git%E5%91%BD%E4%BB%A4%E6%B8%85%E5%8D%95.html",relativePath:"《Git》学习笔记/10.手册/00.常用Git命令清单.md",key:"v-06cc8728",path:"/pages/8292d8/",headers:[{level:2,title:"一、新建代码库",slug:"一、新建代码库"},{level:2,title:"二、配置",slug:"二、配置"},{level:2,title:"三、增加/删除文件",slug:"三、增加-删除文件"},{level:2,title:"四、代码提交",slug:"四、代码提交"},{level:2,title:"五、分支",slug:"五、分支"},{level:2,title:"六、标签",slug:"六、标签"},{level:2,title:"七、查看信息",slug:"七、查看信息"},{level:2,title:"八、远程同步",slug:"八、远程同步"},{level:2,title:"九、撤销",slug:"九、撤销"},{level:2,title:"十、常用操作组合",slug:"十、常用操作组合"},{level:3,title:"1. 修改本地分支名和远程分支名",slug:"_1-修改本地分支名和远程分支名"}],lastUpdated:"2022/12/14, 19:36:42",lastUpdatedTimestamp:1671017802e3},{title:"Git变基合并",frontmatter:{title:"Git变基合并",date:"2020-11-18T17:43:57.000Z",permalink:"/pages/c10281/",categories:["《Git》学习笔记"],tags:["Git"],author:{name:"heBody",link:"https://github.com/heBody"}},regularPath:"/%E3%80%8AGit%E3%80%8B%E5%AD%A6%E4%B9%A0%E7%AC%94%E8%AE%B0/10.%E6%89%8B%E5%86%8C/03.Git%E5%8F%98%E5%9F%BA%E5%90%88%E5%B9%B6.html",relativePath:"《Git》学习笔记/10.手册/03.Git变基合并.md",key:"v-57559d9a",path:"/pages/c10281/",headers:[{level:2,title:"说明",slug:"说明"},{level:3,title:"变基要遵守的准则",slug:"变基要遵守的准则"},{level:3,title:"变基的实质",slug:"变基的实质"},{level:2,title:"后悔药",slug:"后悔药"},{level:2,title:"开发期间的rebase操作",slug:"开发期间的rebase操作"},{level:3,title:"背景",slug:"背景"},{level:3,title:"操作步骤",slug:"操作步骤"},{level:2,title:"git cherry-pick",slug:"git-cherry-pick"},{level:3,title:"基本应用",slug:"基本应用"},{level:3,title:"转移多个提交",slug:"转移多个提交"}],lastUpdated:"2022/12/14, 19:36:42",lastUpdatedTimestamp:1671017802e3},{title:"Git命令思维导图",frontmatter:{title:"Git命令思维导图",date:"2020-11-18T17:46:22.000Z",permalink:"/pages/4cbc21/",categories:["《Git》学习笔记"],tags:["Git"],author:{name:"heBody",link:"https://github.com/heBody"}},regularPath:"/%E3%80%8AGit%E3%80%8B%E5%AD%A6%E4%B9%A0%E7%AC%94%E8%AE%B0/10.%E6%89%8B%E5%86%8C/06.Git%E5%91%BD%E4%BB%A4%E6%80%9D%E7%BB%B4%E5%AF%BC%E5%9B%BE.html",relativePath:"《Git》学习笔记/10.手册/06.Git命令思维导图.md",key:"v-57ec6ef3",path:"/pages/4cbc21/",lastUpdated:"2022/12/14, 19:36:42",lastUpdatedTimestamp:1671017802e3},{title:"Git基础与命令",frontmatter:{title:"Git基础与命令",date:"2020-11-18T17:43:57.000Z",permalink:"/pages/635088/",categories:["《Git》学习笔记"],tags:["Git"],author:{name:"heBody",link:"https://github.com/heBody"}},regularPath:"/%E3%80%8AGit%E3%80%8B%E5%AD%A6%E4%B9%A0%E7%AC%94%E8%AE%B0/20.%E6%96%87%E6%A1%A3%E7%AC%94%E8%AE%B0/10.Git%E5%9F%BA%E7%A1%80%E4%B8%8E%E5%91%BD%E4%BB%A4.html",relativePath:"《Git》学习笔记/20.文档笔记/10.Git基础与命令.md",key:"v-63d2c7f9",path:"/pages/635088/",headers:[{level:2,title:"Git基础",slug:"git基础"},{level:3,title:"全局配置",slug:"全局配置"},{level:3,title:"检查配置信息",slug:"检查配置信息"},{level:3,title:"获取帮助",slug:"获取帮助"},{level:3,title:"初始化仓库",slug:"初始化仓库"},{level:3,title:"克隆远程仓库",slug:"克隆远程仓库"},{level:3,title:"检查文件状态",slug:"检查文件状态"},{level:3,title:"加入暂存区 (跟踪文件)",slug:"加入暂存区-跟踪文件"},{level:3,title:"忽略文件",slug:"忽略文件"},{level:3,title:"查看修改的具体内容",slug:"查看修改的具体内容"},{level:3,title:"提交更新",slug:"提交更新"},{level:3,title:"跳过使用暂存区域",slug:"跳过使用暂存区域"},{level:2,title:"Git 基础 - 查看提交历史",slug:"git-基础-查看提交历史"},{level:2,title:"Git 基础 - 撤消操作",slug:"git-基础-撤消操作"},{level:2,title:"Git 基础 - 远程仓库的使用",slug:"git-基础-远程仓库的使用"},{level:3,title:"查看远程仓库",slug:"查看远程仓库"},{level:3,title:"添加远程仓库",slug:"添加远程仓库"},{level:3,title:"从远程仓库中抓取与拉取",slug:"从远程仓库中抓取与拉取"},{level:3,title:"推送到远程仓库",slug:"推送到远程仓库"},{level:3,title:"查看某个远程仓库",slug:"查看某个远程仓库"},{level:3,title:"远程仓库的重命名与移除",slug:"远程仓库的重命名与移除"},{level:2,title:"Git 基础 - 打标签",slug:"git-基础-打标签"},{level:3,title:"列出标签",slug:"列出标签"},{level:3,title:"创建标签",slug:"创建标签"},{level:3,title:"附注标签",slug:"附注标签"},{level:3,title:"轻量标签",slug:"轻量标签"},{level:3,title:"后期打标签",slug:"后期打标签"},{level:3,title:"共享标签",slug:"共享标签"},{level:3,title:"删除标签",slug:"删除标签"},{level:3,title:"检出标签",slug:"检出标签"},{level:2,title:"Git 命令别名",slug:"git-命令别名"}],lastUpdated:"2022/12/14, 19:36:42",lastUpdatedTimestamp:1671017802e3},{title:"Git工具-重写历史",frontmatter:{title:"Git工具-重写历史",date:"2020-11-18T17:43:57.000Z",permalink:"/pages/1832fe/",categories:["《Git》学习笔记"],tags:["Git"],author:{name:"heBody",link:"https://github.com/heBody"}},regularPath:"/%E3%80%8AGit%E3%80%8B%E5%AD%A6%E4%B9%A0%E7%AC%94%E8%AE%B0/20.%E6%96%87%E6%A1%A3%E7%AC%94%E8%AE%B0/100.Git%E5%B7%A5%E5%85%B7-%E9%87%8D%E5%86%99%E5%8E%86%E5%8F%B2.html",relativePath:"《Git》学习笔记/20.文档笔记/100.Git工具-重写历史.md",key:"v-285a66d4",path:"/pages/1832fe/",headers:[{level:2,title:"修改最后一次提交",slug:"修改最后一次提交"},{level:3,title:"修改提交信息",slug:"修改提交信息"},{level:3,title:"修改实际内容",slug:"修改实际内容"},{level:2,title:"修改多个提交信息",slug:"修改多个提交信息"},{level:2,title:"重新排序提交",slug:"重新排序提交"},{level:2,title:"压缩提交",slug:"压缩提交"},{level:2,title:"拆分提交",slug:"拆分提交"},{level:2,title:"核武器级选项:filter-branch",slug:"核武器级选项-filter-branch"},{level:3,title:"从每一个提交中移除一个文件",slug:"从每一个提交中移除一个文件"},{level:3,title:"使一个子目录做为新的根目录",slug:"使一个子目录做为新的根目录"},{level:3,title:"全局修改邮箱地址",slug:"全局修改邮箱地址"}],lastUpdated:"2022/12/14, 19:36:42",lastUpdatedTimestamp:1671017802e3},{title:"Git工具-重置揭密",frontmatter:{title:"Git工具-重置揭密",date:"2020-11-18T17:43:57.000Z",permalink:"/pages/d9e9c6/",categories:["《Git》学习笔记"],tags:["Git"],author:{name:"heBody",link:"https://github.com/heBody"}},regularPath:"/%E3%80%8AGit%E3%80%8B%E5%AD%A6%E4%B9%A0%E7%AC%94%E8%AE%B0/20.%E6%96%87%E6%A1%A3%E7%AC%94%E8%AE%B0/110.Git%E5%B7%A5%E5%85%B7-%E9%87%8D%E7%BD%AE%E6%8F%AD%E5%AF%86.html",relativePath:"《Git》学习笔记/20.文档笔记/110.Git工具-重置揭密.md",key:"v-d6ca0284",path:"/pages/d9e9c6/",headers:[{level:2,title:"三棵树",slug:"三棵树"},{level:3,title:"HEAD",slug:"head"},{level:3,title:"索引",slug:"索引"},{level:3,title:"工作目录",slug:"工作目录"},{level:2,title:"工作流程",slug:"工作流程"},{level:2,title:"重置的作用",slug:"重置的作用"},{level:3,title:"第 1 步:移动 HEAD",slug:"第-1-步-移动-head"},{level:3,title:"第 2 步:更新索引(--mixed)",slug:"第-2-步-更新索引-mixed"},{level:3,title:"第 3 步:更新工作目录(--hard)",slug:"第-3-步-更新工作目录-hard"},{level:3,title:"回顾",slug:"回顾"},{level:2,title:"通过路径来重置",slug:"通过路径来重置"},{level:2,title:"压缩",slug:"压缩"},{level:2,title:"检出",slug:"检出"},{level:3,title:"不带路径",slug:"不带路径"},{level:3,title:"带路径",slug:"带路径"},{level:2,title:"总结",slug:"总结"}],lastUpdated:"2022/12/14, 19:36:42",lastUpdatedTimestamp:1671017802e3},{title:"Git分支-分支原理",frontmatter:{title:"Git分支-分支原理",date:"2020-11-18T17:43:57.000Z",permalink:"/pages/4bef1a/",categories:["《Git》学习笔记"],tags:["Git"],author:{name:"heBody",link:"https://github.com/heBody"}},regularPath:"/%E3%80%8AGit%E3%80%8B%E5%AD%A6%E4%B9%A0%E7%AC%94%E8%AE%B0/20.%E6%96%87%E6%A1%A3%E7%AC%94%E8%AE%B0/20.Git%E5%88%86%E6%94%AF-%E5%88%86%E6%94%AF%E5%8E%9F%E7%90%86.html",relativePath:"《Git》学习笔记/20.文档笔记/20.Git分支-分支原理.md",key:"v-1054fce3",path:"/pages/4bef1a/",headers:[{level:3,title:"首次提交",slug:"首次提交"},{level:4,title:"小结:",slug:"小结"},{level:3,title:"再次提交",slug:"再次提交"},{level:3,title:"Git 的分支",slug:"git-的分支"},{level:3,title:"创建分支",slug:"创建分支"},{level:3,title:"当前分支的指针",slug:"当前分支的指针"},{level:3,title:"查看当前所在分支",slug:"查看当前所在分支"},{level:3,title:"分支切换",slug:"分支切换"},{level:3,title:"创建分支同时切换",slug:"创建分支同时切换"}],lastUpdated:"2022/12/14, 19:36:42",lastUpdatedTimestamp:1671017802e3},{title:"Git分支的新建与合并-分支操作",frontmatter:{title:"Git分支的新建与合并-分支操作",date:"2020-11-18T17:43:57.000Z",permalink:"/pages/ea5a8c/",categories:["《Git》学习笔记"],tags:["Git"],author:{name:"heBody",link:"https://github.com/heBody"}},regularPath:"/%E3%80%8AGit%E3%80%8B%E5%AD%A6%E4%B9%A0%E7%AC%94%E8%AE%B0/20.%E6%96%87%E6%A1%A3%E7%AC%94%E8%AE%B0/30.Git%E5%88%86%E6%94%AF%E7%9A%84%E6%96%B0%E5%BB%BA%E4%B8%8E%E5%90%88%E5%B9%B6-%E5%88%86%E6%94%AF%E6%93%8D%E4%BD%9C.html",relativePath:"《Git》学习笔记/20.文档笔记/30.Git分支的新建与合并-分支操作.md",key:"v-3f33f3f9",path:"/pages/ea5a8c/",headers:[{level:3,title:"创建分支并切换",slug:"创建分支并切换"},{level:3,title:"切换分支",slug:"切换分支"},{level:3,title:"合并分支",slug:"合并分支"},{level:3,title:"删除分支",slug:"删除分支"},{level:3,title:"多次提交之后合并分支",slug:"多次提交之后合并分支"},{level:3,title:"遇到冲突时的分支合并",slug:"遇到冲突时的分支合并"}],lastUpdated:"2022/12/14, 19:36:42",lastUpdatedTimestamp:1671017802e3},{title:"Git分支管理-查看分支",frontmatter:{title:"Git分支管理-查看分支",date:"2020-11-18T17:43:57.000Z",permalink:"/pages/a399b3/",categories:["《Git》学习笔记"],tags:["Git"],author:{name:"heBody",link:"https://github.com/heBody"}},regularPath:"/%E3%80%8AGit%E3%80%8B%E5%AD%A6%E4%B9%A0%E7%AC%94%E8%AE%B0/20.%E6%96%87%E6%A1%A3%E7%AC%94%E8%AE%B0/40.Git%E5%88%86%E6%94%AF%E7%AE%A1%E7%90%86-%E6%9F%A5%E7%9C%8B%E5%88%86%E6%94%AF.html",relativePath:"《Git》学习笔记/20.文档笔记/40.Git分支管理-查看分支.md",key:"v-3d0a5f07",path:"/pages/a399b3/",headers:[{level:3,title:"查看分支",slug:"查看分支"},{level:3,title:"查看每个分支的最后提交",slug:"查看每个分支的最后提交"},{level:3,title:"查看已(未)合并的分支",slug:"查看已-未-合并的分支"},{level:4,title:"查看指定分支的已(未)合并的分支",slug:"查看指定分支的已-未-合并的分支"}],lastUpdated:"2022/12/14, 19:36:42",lastUpdatedTimestamp:1671017802e3},{title:"Git分支开发工作流",frontmatter:{title:"Git分支开发工作流",date:"2020-11-18T17:43:57.000Z",permalink:"/pages/49ee30/",categories:["《Git》学习笔记"],tags:["Git"],author:{name:"heBody",link:"https://github.com/heBody"}},regularPath:"/%E3%80%8AGit%E3%80%8B%E5%AD%A6%E4%B9%A0%E7%AC%94%E8%AE%B0/20.%E6%96%87%E6%A1%A3%E7%AC%94%E8%AE%B0/50.Git%E5%88%86%E6%94%AF%E5%BC%80%E5%8F%91%E5%B7%A5%E4%BD%9C%E6%B5%81.html",relativePath:"《Git》学习笔记/20.文档笔记/50.Git分支开发工作流.md",key:"v-24eb1861",path:"/pages/49ee30/",headers:[{level:3,title:"长期分支",slug:"长期分支"},{level:3,title:"主题分支 (短期分支)",slug:"主题分支-短期分支"}],lastUpdated:"2022/12/14, 19:36:42",lastUpdatedTimestamp:1671017802e3},{title:"Git分支-远程分支",frontmatter:{title:"Git分支-远程分支",date:"2020-11-18T17:43:57.000Z",permalink:"/pages/574d62/",categories:["《Git》学习笔记"],tags:["Git"],author:{name:"heBody",link:"https://github.com/heBody"}},regularPath:"/%E3%80%8AGit%E3%80%8B%E5%AD%A6%E4%B9%A0%E7%AC%94%E8%AE%B0/20.%E6%96%87%E6%A1%A3%E7%AC%94%E8%AE%B0/60.Git%E5%88%86%E6%94%AF-%E8%BF%9C%E7%A8%8B%E5%88%86%E6%94%AF.html",relativePath:"《Git》学习笔记/20.文档笔记/60.Git分支-远程分支.md",key:"v-569eda30",path:"/pages/574d62/",headers:[{level:3,title:"查看远程引用列表与信息",slug:"查看远程引用列表与信息"},{level:3,title:"远程跟踪分支",slug:"远程跟踪分支"},{level:3,title:"推送",slug:"推送"},{level:4,title:"重命名远程仓库上的分支名",slug:"重命名远程仓库上的分支名"},{level:3,title:"跟踪分支",slug:"跟踪分支"},{level:3,title:"查看跟踪分支",slug:"查看跟踪分支"},{level:3,title:"拉取",slug:"拉取"},{level:3,title:"删除远程分支",slug:"删除远程分支"}],lastUpdated:"2022/12/14, 19:36:42",lastUpdatedTimestamp:1671017802e3},{title:"Git分支-变基",frontmatter:{title:"Git分支-变基",date:"2020-11-18T17:43:57.000Z",permalink:"/pages/3a3247/",categories:["《Git》学习笔记"],tags:["Git"],author:{name:"heBody",link:"https://github.com/heBody"}},regularPath:"/%E3%80%8AGit%E3%80%8B%E5%AD%A6%E4%B9%A0%E7%AC%94%E8%AE%B0/20.%E6%96%87%E6%A1%A3%E7%AC%94%E8%AE%B0/70.Git%E5%88%86%E6%94%AF-%E5%8F%98%E5%9F%BA.html",relativePath:"《Git》学习笔记/20.文档笔记/70.Git分支-变基.md",key:"v-7568c9ac",path:"/pages/3a3247/",headers:[{level:2,title:"变基的基本操作",slug:"变基的基本操作"},{level:3,title:"概念",slug:"概念"},{level:3,title:"原理",slug:"原理"},{level:3,title:"步骤",slug:"步骤"},{level:3,title:"优点",slug:"优点"},{level:2,title:"更有趣的变基例子",slug:"更有趣的变基例子"},{level:3,title:"更有趣的变基例子",slug:"更有趣的变基例子-2"},{level:3,title:"--onto选项",slug:"onto选项"},{level:3,title:"省去先切换到源分支的步骤",slug:"省去先切换到源分支的步骤"},{level:2,title:"变基的风险",slug:"变基的风险"},{level:3,title:"金科玉律",slug:"金科玉律"},{level:3,title:"变基的实质",slug:"变基的实质"},{level:2,title:"用变基解决变基",slug:"用变基解决变基"},{level:2,title:"变基 vs. 合并",slug:"变基-vs-合并"}],lastUpdated:"2022/12/14, 19:36:42",lastUpdatedTimestamp:1671017802e3},{title:"Git工具-查看修订版本",frontmatter:{title:"Git工具-查看修订版本",date:"2020-11-18T17:43:57.000Z",permalink:"/pages/c984d1/",categories:["《Git》学习笔记"],tags:["Git"],author:{name:"heBody",link:"https://github.com/heBody"}},regularPath:"/%E3%80%8AGit%E3%80%8B%E5%AD%A6%E4%B9%A0%E7%AC%94%E8%AE%B0/20.%E6%96%87%E6%A1%A3%E7%AC%94%E8%AE%B0/80.Git%E5%B7%A5%E5%85%B7-%E6%9F%A5%E7%9C%8B%E4%BF%AE%E8%AE%A2%E7%89%88%E6%9C%AC.html",relativePath:"《Git》学习笔记/20.文档笔记/80.Git工具-查看修订版本.md",key:"v-7c1994b2",path:"/pages/c984d1/",headers:[{level:2,title:"单个修订版本",slug:"单个修订版本"},{level:2,title:"简短的 SHA-1",slug:"简短的-sha-1"},{level:3,title:"查看给定SHA-1值的提交",slug:"查看给定sha-1值的提交"},{level:2,title:"分支引用",slug:"分支引用"},{level:3,title:"查看最后一次提交",slug:"查看最后一次提交"},{level:2,title:"引用日志",slug:"引用日志"},{level:3,title:"HEAD的指向历史",slug:"head的指向历史"},{level:2,title:"祖先引用",slug:"祖先引用"},{level:2,title:"提交区间",slug:"提交区间"},{level:3,title:"双点",slug:"双点"},{level:4,title:"查看即将推送到远端的内容",slug:"查看即将推送到远端的内容"},{level:3,title:"多点",slug:"多点"},{level:3,title:"三点",slug:"三点"}],lastUpdated:"2022/12/14, 19:36:42",lastUpdatedTimestamp:1671017802e3},{title:"基础",frontmatter:{title:"基础",date:"2020-01-12T11:49:16.000Z",permalink:"/pages/0796ba76b4b55368",categories:["《JavaScript教程》笔记"],tags:["JavaScript"],author:{name:"heBody",link:"https://github.com/heBody"}},regularPath:"/%E3%80%8AJavaScript%E6%95%99%E7%A8%8B%E3%80%8B%E7%AC%94%E8%AE%B0/01.%E5%9F%BA%E7%A1%80.html",relativePath:"《JavaScript教程》笔记/01.基础.md",key:"v-06817859",path:"/pages/0796ba76b4b55368/",headers:[{level:2,title:"一、JS的一些名词概念",slug:"一、js的一些名词概念"},{level:4,title:"什么是作用域?",slug:"什么是作用域"},{level:4,title:"什么是闭包?",slug:"什么是闭包"},{level:4,title:"什么是构造函数?",slug:"什么是构造函数"},{level:4,title:"什么是实例对象?",slug:"什么是实例对象"},{level:4,title:"什么是this?",slug:"什么是this"},{level:4,title:"什么是原型?",slug:"什么是原型"},{level:4,title:"什么是原型链?",slug:"什么是原型链"},{level:4,title:"什么是constructor?",slug:"什么是constructor"},{level:4,title:"什么是包装对象?",slug:"什么是包装对象"},{level:2,title:"二、数据类型的转换",slug:"二、数据类型的转换"},{level:3,title:"1、强制(手动)转换",slug:"_1、强制-手动-转换"},{level:4,title:"Number()",slug:"number"},{level:4,title:"String()",slug:"string"},{level:4,title:"Boolean()",slug:"boolean"},{level:3,title:"2、自动转换",slug:"_2、自动转换"},{level:4,title:"自动转换为布尔值(Boolean)",slug:"自动转换为布尔值-boolean"},{level:4,title:"自动转换为字符串(String)",slug:"自动转换为字符串-string"},{level:5,title:"所有类型的值与字符串相加都会变成字符串",slug:"所有类型的值与字符串相加都会变成字符串"},{level:5,title:"",slug:""},{level:4,title:"自动转换为数值(Number)",slug:"自动转换为数值-number"},{level:5,title:"除加号与字符串运行会转成字符串外,其他运行基本都会自动转成数值",slug:"除加号与字符串运行会转成字符串外-其他运行基本都会自动转成数值"},{level:2,title:"三、错误处理机制",slug:"三、错误处理机制"},{level:3,title:"1、Error实例对象",slug:"_1、error实例对象"},{level:3,title:"2、原生错误类型",slug:"_2、原生错误类型"},{level:4,title:"SyntaxError 对象(语法错误)",slug:"syntaxerror-对象-语法错误"},{level:4,title:"ReferenceError 对象(引用错误)",slug:"referenceerror-对象-引用错误"},{level:4,title:"RangeError 对象(范围错误)",slug:"rangeerror-对象-范围错误"},{level:4,title:"TypeError 对象(类型错误)",slug:"typeerror-对象-类型错误"},{level:4,title:"URIError 对象 (URI错误)",slug:"urierror-对象-uri错误"},{level:4,title:"EvalError 对象 (eval错误)",slug:"evalerror-对象-eval错误"},{level:4,title:"总结(开发者手动使用)",slug:"总结-开发者手动使用"},{level:3,title:"3、自定义错误",slug:"_3、自定义错误"},{level:3,title:"4、throw 语句 (中断程序并抛出错误)",slug:"_4、throw-语句-中断程序并抛出错误"},{level:3,title:"5、try...catch 结构(捕获错误,对错误进行处理,不中断)",slug:"_5、try-catch-结构-捕获错误-对错误进行处理-不中断"},{level:3,title:"6、finally 代码块(在try..catch最后,必执行的)",slug:"_6、finally-代码块-在try-catch最后-必执行的"},{level:2,title:"四、console对象",slug:"四、console对象"},{level:3,title:"console.time(),console.timeEnd() (用于计算程序的用时)",slug:"console-time-console-timeend-用于计算程序的用时"},{level:2,title:"文档",slug:"文档"}],lastUpdated:"2022/12/14, 19:36:42",lastUpdatedTimestamp:1671017802e3},{title:"内置对象",frontmatter:{title:"内置对象",date:"2020-01-12T11:49:16.000Z",permalink:"/pages/74d2ab3fbfeaaa68",categories:["《JavaScript教程》笔记"],tags:["JavaScript"],author:{name:"heBody",link:"https://github.com/heBody"}},regularPath:"/%E3%80%8AJavaScript%E6%95%99%E7%A8%8B%E3%80%8B%E7%AC%94%E8%AE%B0/02.%E5%86%85%E7%BD%AE%E5%AF%B9%E8%B1%A1.html",relativePath:"《JavaScript教程》笔记/02.内置对象.md",key:"v-5056cad1",path:"/pages/74d2ab3fbfeaaa68/",headers:[{level:2,title:"一、Object对象",slug:"一、object对象"},{level:2,title:"1、概述",slug:"_1、概述"},{level:2,title:"2、Object() 当作工具方法(不通过new创建)",slug:"_2、object-当作工具方法-不通过new创建"},{level:2,title:"3、Object构造函数(通过new创建)",slug:"_3、object构造函数-通过new创建"},{level:2,title:"4、Object 的静态方法",slug:"_4、object-的静态方法"},{level:3,title:"Object.keys()",slug:"object-keys"},{level:3,title:"Object.getOwnPropertyNames()",slug:"object-getownpropertynames"},{level:3,title:"Object的其他静态方法",slug:"object的其他静态方法"},{level:4,title:"(1)对象属性模型的相关方法",slug:"_1-对象属性模型的相关方法"},{level:4,title:"(2)控制对象状态的方法",slug:"_2-控制对象状态的方法"},{level:4,title:"(3)原型链相关方法",slug:"_3-原型链相关方法"},{level:2,title:"5、Object 的实例方法",slug:"_5、object-的实例方法"},{level:3,title:"Object.prototype.valueOf()",slug:"object-prototype-valueof"},{level:3,title:"Object.prototype.toString()",slug:"object-prototype-tostring"},{level:4,title:"toString() 的应用:判断数据类型",slug:"tostring-的应用-判断数据类型"},{level:3,title:"Object.prototype.toLocaleString()",slug:"object-prototype-tolocalestring"},{level:3,title:"Object.prototype.hasOwnProperty()",slug:"object-prototype-hasownproperty"},{level:2,title:"二、属性描述对象",slug:"二、属性描述对象"},{level:2,title:"1、概述",slug:"_1、概述-2"},{level:2,title:"2、Object.getOwnPropertyDescriptor()",slug:"_2、object-getownpropertydescriptor"},{level:2,title:"3、Object.getOwnPropertyNames()",slug:"_3、object-getownpropertynames"},{level:2,title:"4、Object.defineProperty(),Object.defineProperties()",slug:"_4、object-defineproperty-object-defineproperties"},{level:2,title:"5、Object.prototype.propertyIsEnumerable()",slug:"_5、object-prototype-propertyisenumerable"},{level:2,title:"6、元属性",slug:"_6、元属性"},{level:3,title:"value目标属性的值",slug:"value目标属性的值"},{level:3,title:"writable可写性",slug:"writable可写性"},{level:3,title:"enumerable可遍历性",slug:"enumerable可遍历性"},{level:3,title:"configurable可配置性",slug:"configurable可配置性"},{level:2,title:"7、存取器(get和set)",slug:"_7、存取器-get和set"},{level:2,title:"8、对象的拷贝",slug:"_8、对象的拷贝"},{level:2,title:"9、控制对象读写状态",slug:"_9、控制对象读写状态"},{level:3,title:"Object.preventExtensions() 防止新增",slug:"object-preventextensions-防止新增"},{level:3,title:"Object.isExtensible() 是可新增的?",slug:"object-isextensible-是可新增的"},{level:3,title:"Object.seal() 密封",slug:"object-seal-密封"},{level:3,title:"Object.isSealed() 是密封的?",slug:"object-issealed-是密封的"},{level:3,title:"Object.freeze() 冻结",slug:"object-freeze-冻结"},{level:3,title:"Object.isFrozen() 是冻结的?",slug:"object-isfrozen-是冻结的"},{level:3,title:"局限性",slug:"局限性"},{level:2,title:"三、Array对象",slug:"三、array对象"},{level:2,title:"1、Array构造函数",slug:"_1、array构造函数"},{level:2,title:"2、静态方法",slug:"_2、静态方法"},{level:3,title:"Array.isArray()",slug:"array-isarray"},{level:2,title:"3、实例方法",slug:"_3、实例方法"},{level:3,title:"valueOf() 原数组,toString() 转字符串",slug:"valueof-原数组-tostring-转字符串"},{level:3,title:"push() 末尾添加,pop() 删除末尾",slug:"push-末尾添加-pop-删除末尾"},{level:3,title:"unshift() 首位添加, shift() 删除首位",slug:"unshift-首位添加-shift-删除首位"},{level:3,title:"join() 连接每个成员-转字符串",slug:"join-连接每个成员-转字符串"},{level:3,title:"concat() 合并数组",slug:"concat-合并数组"},{level:3,title:"reverse() 反转",slug:"reverse-反转"},{level:3,title:"slice() 部分-提取部分成员",slug:"slice-部分-提取部分成员"},{level:4,title:"应用-类数组转数组",slug:"应用-类数组转数组"},{level:3,title:"splice() 从第几个开始,删除几个,并添加成员,返回被删除成员。",slug:"splice-从第几个开始-删除几个-并添加成员-返回被删除成员。"},{level:4,title:"应用-拆分数组",slug:"应用-拆分数组"},{level:3,title:"sort() 排序",slug:"sort-排序"},{level:4,title:"应用-自定义排序",slug:"应用-自定义排序"},{level:3,title:"map() 映射 每个成员 并返回",slug:"map-映射-每个成员-并返回"},{level:3,title:"forEach() 循环每个成员",slug:"foreach-循环每个成员"},{level:3,title:"filter() 过滤",slug:"filter-过滤"},{level:3,title:"some()某个,every()每个",slug:"some-某个-every-每个"},{level:3,title:"reduce() 累计器,reduceRight() 反向累计器",slug:"reduce-累计器-reduceright-反向累计器"},{level:4,title:"应用-找出字符最长的数组成员",slug:"应用-找出字符最长的数组成员"},{level:4,title:"应用-按属性对object分类",slug:"应用-按属性对object分类"},{level:3,title:"indexOf() 搜索成员第一个出现的位置,lastIndexOf() 搜索成员最后出现的位置",slug:"indexof-搜索成员第一个出现的位置-lastindexof-搜索成员最后出现的位置"},{level:3,title:"链式使用",slug:"链式使用"},{level:2,title:"四、包装对象",slug:"四、包装对象"},{level:2,title:"1、定义",slug:"_1、定义"},{level:2,title:"2、实例方法",slug:"_2、实例方法"},{level:3,title:"2.1 valueOf()",slug:"_2-1-valueof"},{level:3,title:"2.2 toString()",slug:"_2-2-tostring"},{level:2,title:"3、原始类型与实例对象的自动转换",slug:"_3、原始类型与实例对象的自动转换"},{level:2,title:"4、自定义方法",slug:"_4、自定义方法"},{level:2,title:"五、Boolean对象",slug:"五、boolean对象"},{level:2,title:"1、概述",slug:"_1、概述-3"},{level:2,title:"2、Boolean 函数的类型转换作用",slug:"_2、boolean-函数的类型转换作用"},{level:2,title:"六、Number对象",slug:"六、number对象"},{level:2,title:"1、概述",slug:"_1、概述-4"},{level:2,title:"2、静态属性",slug:"_2、静态属性"},{level:2,title:"3、实例方法",slug:"_3、实例方法-2"},{level:3,title:"3.1 Number.prototype.toString() 可转成多种进制字符串",slug:"_3-1-number-prototype-tostring-可转成多种进制字符串"},{level:3,title:"3.2 Number.prototype.toFixed() 转成保留指定小数位数的字符串",slug:"_3-2-number-prototype-tofixed-转成保留指定小数位数的字符串"},{level:3,title:"3.3 Number.prototype.toExponential() 转成科学计数法形式字符串",slug:"_3-3-number-prototype-toexponential-转成科学计数法形式字符串"},{level:3,title:"3.4 Number.prototype.toPrecision()转为指定位数的有效数字",slug:"_3-4-number-prototype-toprecision-转为指定位数的有效数字"},{level:3,title:"4.5 Number.prototype.toLocaleString()",slug:"_4-5-number-prototype-tolocalestring"},{level:4,title:"应用-添加千位分隔符",slug:"应用-添加千位分隔符"},{level:2,title:"4、自定义方法",slug:"_4、自定义方法-2"},{level:2,title:"七、String对象",slug:"七、string对象"},{level:2,title:"1、概述",slug:"_1、概述-5"},{level:2,title:"2、静态方法",slug:"_2、静态方法-2"},{level:3,title:"String.fromCharCode()",slug:"string-fromcharcode"},{level:2,title:"3、实例属性",slug:"_3、实例属性"},{level:3,title:"String.prototype.length",slug:"string-prototype-length"},{level:2,title:"4、实例方法",slug:"_4、实例方法"},{level:3,title:"4.1 String.prototype.charAt() 返回指定位置的字符",slug:"_4-1-string-prototype-charat-返回指定位置的字符"},{level:3,title:"4.2 String.prototype.charCodeAt()返回字符串指定位置的 Unicode 码点(十进制表示)",slug:"_4-2-string-prototype-charcodeat-返回字符串指定位置的-unicode-码点-十进制表示"},{level:3,title:"4.3 String.prototype.concat() 合并字符串,返回新字符串,不改变原字符串",slug:"_4-3-string-prototype-concat-合并字符串-返回新字符串-不改变原字符串"},{level:3,title:"4.4 String.prototype.slice() 取出部分子字符串,不改变原字符串",slug:"_4-4-string-prototype-slice-取出部分子字符串-不改变原字符串"},{level:5,title:"负数表示倒数",slug:"负数表示倒数"},{level:3,title:"4.5 String.prototype.substring() 和slice类似",slug:"_4-5-string-prototype-substring-和slice类似"},{level:4,title:"小总结:substring() 和 slice() 的区别,有两个。",slug:"小总结-substring-和-slice-的区别-有两个。"},{level:3,title:"4.6 String.prototype.substr() 和 slice、substring类似,区别是参数二表示长度",slug:"_4-6-string-prototype-substr-和-slice、substring类似-区别是参数二表示长度"},{level:3,title:"4.7 String.prototype.indexOf() 搜索子串第一个出现的位置,String.prototype.lastIndexOf() 搜索子串最后出现的位置",slug:"_4-7-string-prototype-indexof-搜索子串第一个出现的位置-string-prototype-lastindexof-搜索子串最后出现的位置"},{level:3,title:"4.8 String.prototype.trim() ''修剪'‘两端空格,不改变原字符串",slug:"_4-8-string-prototype-trim-修剪-两端空格-不改变原字符串"},{level:3,title:"4.9 String.prototype.toLowerCase() 全转小写,String.prototype.toUpperCase() 全转大写,都不改变原字符串",slug:"_4-9-string-prototype-tolowercase-全转小写-string-prototype-touppercase-全转大写-都不改变原字符串"},{level:3,title:"4.10 String.prototype.match() 匹配子串,返回数组(数组带index、input属性)",slug:"_4-10-string-prototype-match-匹配子串-返回数组-数组带index、input属性"},{level:3,title:"4.11 String.prototype.search() 搜索子串第一次出现的位置,没有则返-1,String.prototype.replace() 替换子串,参数二替换参数一,不改变原字符串",slug:"_4-11-string-prototype-search-搜索子串第一次出现的位置-没有则返-1-string-prototype-replace-替换子串-参数二替换参数一-不改变原字符串"},{level:3,title:"4.12 String.prototype.split() 按给定规则分割字符串,返回数组",slug:"_4-12-string-prototype-split-按给定规则分割字符串-返回数组"},{level:3,title:"4.13 String.prototype.localeCompare() 比较两个字符串,返回整数。",slug:"_4-13-string-prototype-localecompare-比较两个字符串-返回整数。"},{level:2,title:"八、Math对象",slug:"八、math对象"},{level:2,title:"1、静态属性",slug:"_1、静态属性"},{level:2,title:"2、静态方法",slug:"_2、静态方法-3"},{level:3,title:"2.1 Math.abs() 绝对值",slug:"_2-1-math-abs-绝对值"},{level:3,title:"2.2 Math.max() 最大值,Math.min()最 小值",slug:"_2-2-math-max-最大值-math-min-最-小值"},{level:3,title:"2.3 Math.floor() 向下取整,Math.ceil() 向上取整",slug:"_2-3-math-floor-向下取整-math-ceil-向上取整"},{level:3,title:"2.4 Math.round() 四舍五入",slug:"_2-4-math-round-四舍五入"},{level:3,title:"2.5 Math.pow() 指数运算 (次方运算)",slug:"_2-5-math-pow-指数运算-次方运算"},{level:3,title:"2.6 Math.sqrt() 平方根",slug:"_2-6-math-sqrt-平方根"},{level:3,title:"2.7 Math.log() 自然对数",slug:"_2-7-math-log-自然对数"},{level:3,title:"2.8 Math.exp() e的指数",slug:"_2-8-math-exp-e的指数"},{level:3,title:"2.9 Math.random() 0到1的随机数(可能等于0,但一定小于1)",slug:"_2-9-math-random-0到1的随机数-可能等于0-但一定小于1"},{level:3,title:"2.10 三角函数方法",slug:"_2-10-三角函数方法"},{level:2,title:"九、Date对象",slug:"九、date对象"},{level:2,title:"1、普通函数的用法",slug:"_1、普通函数的用法"},{level:2,title:"2、构造函数的用法",slug:"_2、构造函数的用法"},{level:2,title:"3、日期的运算",slug:"_3、日期的运算"},{level:2,title:"4、静态方法",slug:"_4、静态方法"},{level:3,title:"4.1 Date.now() 当前时间戳",slug:"_4-1-date-now-当前时间戳"},{level:3,title:"4.2 Date.parse() 解析日期字符串,返回该时间点的时间戳",slug:"_4-2-date-parse-解析日期字符串-返回该时间点的时间戳"},{level:3,title:"4.3 Date.UTC() 以年、月、日等变量作为参数,返回该时间点的时间戳",slug:"_4-3-date-utc-以年、月、日等变量作为参数-返回该时间点的时间戳"},{level:2,title:"5、实例方法",slug:"_5、实例方法"},{level:3,title:"5.1 Date.prototype.valueOf() 返回时间戳,等同于getTime()。(减法运算默认调用)",slug:"_5-1-date-prototype-valueof-返回时间戳-等同于gettime-。-减法运算默认调用"},{level:3,title:"5.2 to 类方法(返回字符串相关)",slug:"_5-2-to-类方法-返回字符串相关"},{level:4,title:"(1)Date.prototype.toString() 返回一个完整的日期字符串(直接读取实例默认调用此方法)",slug:"_1-date-prototype-tostring-返回一个完整的日期字符串-直接读取实例默认调用此方法"},{level:4,title:"(2)Date.prototype.toUTCString() 返回对应的UTC时间(世界标准时),比北京时间晚8小时",slug:"_2-date-prototype-toutcstring-返回对应的utc时间-世界标准时-比北京时间晚8小时"},{level:4,title:"(3)Date.prototype.toISOString() 返回对应时间的 ISO8601 写法(UTC时间)",slug:"_3-date-prototype-toisostring-返回对应时间的-iso8601-写法-utc时间"},{level:4,title:"(4)Date.prototype.toJSON() 返回符合JSON格式字符串,与toISOString方法的返回结果完全相同。",slug:"_4-date-prototype-tojson-返回符合json格式字符串-与toisostring方法的返回结果完全相同。"},{level:4,title:"(5)Date.prototype.toDateString() 返回日期字符串(不含时分秒)",slug:"_5-date-prototype-todatestring-返回日期字符串-不含时分秒"},{level:4,title:"(6)Date.prototype.toTimeString() 返回时间字符串(不含年月日)",slug:"_6-date-prototype-totimestring-返回时间字符串-不含年月日"},{level:4,title:"(7)本地时间",slug:"_7-本地时间"},{level:3,title:"5.3 get类 (获取年、月、日、时、分、秒等)",slug:"_5-3-get类-获取年、月、日、时、分、秒等"},{level:6,title:"例子:计算本年度还剩下多少天",slug:"例子-计算本年度还剩下多少天"},{level:3,title:"5.4 set 类方法",slug:"_5-4-set-类方法"},{level:2,title:"十、RegExp 对象",slug:"十、regexp-对象"},{level:2,title:"1、概述",slug:"_1、概述-6"},{level:2,title:"2、实例属性",slug:"_2、实例属性"},{level:2,title:"3、实例方法",slug:"_3、实例方法-3"},{level:3,title:"3.1 RegExp.prototype.test() 当前模式是否匹配参数字符串,返回布尔值",slug:"_3-1-regexp-prototype-test-当前模式是否匹配参数字符串-返回布尔值"},{level:3,title:"3.2 RegExp.prototype.exec() 返回匹配结果,如匹配则返回一个数组,成员是匹配到的子字符串,否则返回null",slug:"_3-2-regexp-prototype-exec-返回匹配结果-如匹配则返回一个数组-成员是匹配到的子字符串-否则返回null"},{level:2,title:"4、字符串的实例方法",slug:"_4、字符串的实例方法"},{level:3,title:"4.1 String.prototype.match() 匹配,返回匹配结果数组或null",slug:"_4-1-string-prototype-match-匹配-返回匹配结果数组或null"},{level:3,title:"4.2 String.prototype.search() 返回第一个满足匹配条件的位置,不满足则返-1",slug:"_4-2-string-prototype-search-返回第一个满足匹配条件的位置-不满足则返-1"},{level:3,title:"4.3 String.prototype.replace() 替换匹配的值,参数一是子串或正则,参数二是替换内容",slug:"_4-3-string-prototype-replace-替换匹配的值-参数一是子串或正则-参数二是替换内容"},{level:3,title:"4.4 String.prototype.split() 按给定规则分割字符串,返回数组",slug:"_4-4-string-prototype-split-按给定规则分割字符串-返回数组"},{level:2,title:"5、匹配规则",slug:"_5、匹配规则"},{level:3,title:"5.1 字面量字符和元字符",slug:"_5-1-字面量字符和元字符"},{level:4,title:"(1)点字符(.) 类似通配",slug:"_1-点字符-类似通配"},{level:4,title:"(2)位置字符(^) ($) 开始位置和结束位置",slug:"_2-位置字符-开始位置和结束位置"},{level:4,title:"(3)选择符(|) 表示''或关系''",slug:"_3-选择符-表示-或关系"},{level:3,title:"5.2 转义符(\\ 反斜杠)",slug:"_5-2-转义符-反斜杠"},{level:3,title:"5.3 特殊字符",slug:"_5-3-特殊字符"},{level:3,title:"5.4 字符类",slug:"_5-4-字符类"},{level:5,title:"(1)脱字符(^ 排除)",slug:"_1-脱字符-排除"},{level:5,title:"(2)连字符(- 字符连续范围)",slug:"_2-连字符-字符连续范围"},{level:3,title:"5.5 预定义模式 (常见模式简写\\d\\D\\w\\W\\s\\S\\b\\B)",slug:"_5-5-预定义模式-常见模式简写-d-d-w-w-s-s-b-b"},{level:3,title:"5.6 重复类 ( {n} {n,} {n,m} )",slug:"_5-6-重复类-n-n-n-m"},{level:3,title:"5.7 量词符(?)(*)(+)",slug:"_5-7-量词符"},{level:3,title:"5.8 贪婪模式(对量词符可使用非贪婪模式)",slug:"_5-8-贪婪模式-对量词符可使用非贪婪模式"},{level:3,title:"5.9 修饰符",slug:"_5-9-修饰符"},{level:4,title:"(1)g 修饰符 (全局匹配)",slug:"_1-g-修饰符-全局匹配"},{level:4,title:"(2)i 修饰符 (不区分大小写)",slug:"_2-i-修饰符-不区分大小写"},{level:4,title:"(3)m 修饰符(让^和$识别换行符)",slug:"_3-m-修饰符-让-和-识别换行符"},{level:3,title:"5.10 组匹配",slug:"_5-10-组匹配"},{level:4,title:"(1)概述 (圆括号分组)",slug:"_1-概述-圆括号分组"},{level:4,title:"(2)非捕获组",slug:"_2-非捕获组"},{level:4,title:"(3)先行断言",slug:"_3-先行断言"},{level:4,title:"(4)先行否定断言",slug:"_4-先行否定断言"},{level:2,title:"十一、JSON对象",slug:"十一、json对象"},{level:2,title:"1、JSON 格式",slug:"_1、json-格式"},{level:2,title:"2、JSON 对象",slug:"_2、json-对象"},{level:2,title:"3、JSON.stringify() 转为JSON字符串",slug:"_3、json-stringify-转为json字符串"},{level:3,title:"3.1 基本用法",slug:"_3-1-基本用法"},{level:3,title:"3.2 第二个参数 (一个数组,对象属性白名单;或一个函数,改写返回值)",slug:"_3-2-第二个参数-一个数组-对象属性白名单-或一个函数-改写返回值"},{level:3,title:"3.3 第三个参数 (增加返回JSON字符串的可读性;json格式)",slug:"_3-3-第三个参数-增加返回json字符串的可读性-json格式"},{level:3,title:"3.4 参数对象的 toJSON 方法(对象自定义toJSON方法,转字符串只取该方法返回值)",slug:"_3-4-参数对象的-tojson-方法-对象自定义tojson方法-转字符串只取该方法返回值"},{level:2,title:"4、JSON.parse()",slug:"_4、json-parse"},{level:2,title:"文档",slug:"文档"}],lastUpdated:"2022/12/14, 19:36:42",lastUpdatedTimestamp:1671017802e3},{title:"Git工具-交互式暂存",frontmatter:{title:"Git工具-交互式暂存",date:"2020-11-18T17:43:57.000Z",permalink:"/pages/76d859/",categories:["《Git》学习笔记"],tags:["Git"],author:{name:"heBody",link:"https://github.com/heBody"}},regularPath:"/%E3%80%8AGit%E3%80%8B%E5%AD%A6%E4%B9%A0%E7%AC%94%E8%AE%B0/20.%E6%96%87%E6%A1%A3%E7%AC%94%E8%AE%B0/90.Git%E5%B7%A5%E5%85%B7-%E4%BA%A4%E4%BA%92%E5%BC%8F%E6%9A%82%E5%AD%98.html",relativePath:"《Git》学习笔记/20.文档笔记/90.Git工具-交互式暂存.md",key:"v-03da2212",path:"/pages/76d859/",headers:[{level:2,title:"暂存与取消暂存文件",slug:"暂存与取消暂存文件"},{level:2,title:"暂存补丁",slug:"暂存补丁"}],lastUpdated:"2022/12/14, 19:36:42",lastUpdatedTimestamp:1671017802e3},{title:"面向对象",frontmatter:{title:"面向对象",date:"2020-01-12T11:49:16.000Z",permalink:"/pages/659b5af5e2e704e0",categories:["《JavaScript教程》笔记"],tags:["JavaScript"],author:{name:"heBody",link:"https://github.com/heBody"}},regularPath:"/%E3%80%8AJavaScript%E6%95%99%E7%A8%8B%E3%80%8B%E7%AC%94%E8%AE%B0/03.%E9%9D%A2%E5%90%91%E5%AF%B9%E8%B1%A1.html",relativePath:"《JavaScript教程》笔记/03.面向对象.md",key:"v-10292b5b",path:"/pages/659b5af5e2e704e0/",headers:[{level:2,title:"一、实例对象与new命令",slug:"一、实例对象与new命令"},{level:3,title:"1、对象是什么",slug:"_1、对象是什么"},{level:3,title:"2、构造函数",slug:"_2、构造函数"},{level:3,title:"3、new命令",slug:"_3、new命令"},{level:4,title:"基本用法",slug:"基本用法"},{level:4,title:"new 命令的原理",slug:"new-命令的原理"},{level:4,title:"new.target 属性",slug:"new-target-属性"},{level:3,title:"4、Object.create()创建实例对象",slug:"_4、object-create-创建实例对象"},{level:2,title:"二、this关键字",slug:"二、this关键字"},{level:3,title:"1、涵义",slug:"_1、涵义"},{level:3,title:"2、实质",slug:"_2、实质"},{level:3,title:"3、使用场合",slug:"_3、使用场合"},{level:4,title:"(1)全局环境",slug:"_1-全局环境"},{level:4,title:"(2)构造函数",slug:"_2-构造函数"},{level:4,title:"(3)对象的方法",slug:"_3-对象的方法"},{level:3,title:"4、使用注意点",slug:"_4、使用注意点"},{level:4,title:"(1)避免多层 this",slug:"_1-避免多层-this"},{level:4,title:"(2)避免数组处理方法中的 this",slug:"_2-避免数组处理方法中的-this"},{level:4,title:"(3)避免回调函数中的 this",slug:"_3-避免回调函数中的-this"},{level:3,title:"5、绑定 this 的方法",slug:"_5、绑定-this-的方法"},{level:4,title:"Function.prototype.call()",slug:"function-prototype-call"},{level:5,title:"语法",slug:"语法"},{level:5,title:"应用:调用对象的原生方法",slug:"应用-调用对象的原生方法"},{level:4,title:"Function.prototype.apply()",slug:"function-prototype-apply"},{level:5,title:"语法",slug:"语法-2"},{level:5,title:"应用:",slug:"应用"},{level:5,title:"(1)获取数组最大/最小元素",slug:"_1-获取数组最大-最小元素"},{level:5,title:"(2)将数组的空元素变为undefined",slug:"_2-将数组的空元素变为undefined"},{level:5,title:"(3)转换类似数组的对象",slug:"_3-转换类似数组的对象"},{level:5,title:"(4)绑定回调函数的对象",slug:"_4-绑定回调函数的对象"},{level:4,title:"Function.prototype.bind()",slug:"function-prototype-bind"},{level:5,title:"语法",slug:"语法-3"},{level:5,title:"bind要注意的点:",slug:"bind要注意的点"},{level:5,title:"(1)每一次返回一个新函数",slug:"_1-每一次返回一个新函数"},{level:5,title:"(2)结合回调函数使用",slug:"_2-结合回调函数使用"},{level:5,title:"(3)结合call方法使用(改写数组方法调用形式)",slug:"_3-结合call方法使用-改写数组方法调用形式"},{level:4,title:"总结,call()、apply()、bind()的区别",slug:"总结-call-、apply-、bind-的区别"},{level:2,title:"三、对象的继承",slug:"三、对象的继承"},{level:3,title:"1、原型对象概述",slug:"_1、原型对象概述"},{level:4,title:"(1)构造函数的缺点",slug:"_1-构造函数的缺点"},{level:4,title:"(2)prototype 属性的作用",slug:"_2-prototype-属性的作用"},{level:4,title:"(3)原型链",slug:"_3-原型链"},{level:4,title:"(4)constructor 属性",slug:"_4-constructor-属性"},{level:5,title:"作用",slug:"作用"},{level:3,title:"2、instanceof 运算符",slug:"_2、instanceof-运算符"},{level:4,title:"语法",slug:"语法-4"},{level:4,title:"用处",slug:"用处"},{level:3,title:"3、构造函数的继承",slug:"_3、构造函数的继承"},{level:3,title:"4、多重继承",slug:"_4、多重继承"},{level:3,title:"5、模块",slug:"_5、模块"},{level:4,title:"(1)基本的实现方法",slug:"_1-基本的实现方法"},{level:4,title:"(2)封装私有变量:",slug:"_2-封装私有变量"},{level:5,title:"(2-1)构造函数的写法",slug:"_2-1-构造函数的写法"},{level:5,title:"(2-2)立即执行函数的写法",slug:"_2-2-立即执行函数的写法"},{level:4,title:"(3)模块的放大模式(向模块添加新方法)",slug:"_3-模块的放大模式-向模块添加新方法"},{level:4,title:"(4)输入全局变量(保证独立性)",slug:"_4-输入全局变量-保证独立性"},{level:2,title:"四、Object 对象的相关方法",slug:"四、object-对象的相关方法"},{level:3,title:"1、Object.getPrototypeOf() 获取原型对象",slug:"_1、object-getprototypeof-获取原型对象"},{level:3,title:"2、Object.setPrototypeOf() 设置原型对象",slug:"_2、object-setprototypeof-设置原型对象"},{level:5,title:"使用`Object.setPrototypeOf`方法模拟`new`命令",slug:"使用object-setprototypeof方法模拟new命令"},{level:3,title:"3、 Object.create() 创建实例对象,指向目标对象的原型",slug:"_3、-object-create-创建实例对象-指向目标对象的原型"},{level:5,title:"内部实现原理",slug:"内部实现原理"},{level:3,title:"4、Object.prototype.isPrototypeOf()判断某个对象是否为参数对象的原型",slug:"_4、object-prototype-isprototypeof-判断某个对象是否为参数对象的原型"},{level:3,title:"5、Object.prototype.__proto__ 返回该对象的原型,可读写",slug:"_5、object-prototype-proto-返回该对象的原型-可读写"},{level:3,title:"6、获取原型对象方法的比较",slug:"_6、获取原型对象方法的比较"},{level:3,title:"7、Object.getOwnPropertyNames()",slug:"_7、object-getownpropertynames"},{level:3,title:"8、Object.prototype.hasOwnProperty()",slug:"_8、object-prototype-hasownproperty"},{level:3,title:"9、in 运算符和 for...in 循环",slug:"_9、in-运算符和-for-in-循环"},{level:3,title:"10、对象的拷贝",slug:"_10、对象的拷贝"},{level:2,title:"五、严格模式",slug:"五、严格模式"},{level:3,title:"1、设计目的",slug:"_1、设计目的"},{level:3,title:"2、启用方法",slug:"_2、启用方法"},{level:2,title:"文档",slug:"文档"}],lastUpdated:"2022/12/14, 19:36:42",lastUpdatedTimestamp:1671017802e3},{title:"异步操作",frontmatter:{title:"异步操作",date:"2020-01-12T11:49:16.000Z",permalink:"/pages/d61b1cb4cdac1f63",categories:["《JavaScript教程》笔记"],tags:["JavaScript"],author:{name:"heBody",link:"https://github.com/heBody"}},regularPath:"/%E3%80%8AJavaScript%E6%95%99%E7%A8%8B%E3%80%8B%E7%AC%94%E8%AE%B0/04.%E5%BC%82%E6%AD%A5%E6%93%8D%E4%BD%9C.html",relativePath:"《JavaScript教程》笔记/04.异步操作.md",key:"v-a95ce4c4",path:"/pages/d61b1cb4cdac1f63/",headers:[{level:2,title:"一、异步操作概述",slug:"一、异步操作概述"},{level:3,title:"1、单线程模型",slug:"_1、单线程模型"},{level:3,title:"2、同步任务和异步任务",slug:"_2、同步任务和异步任务"},{level:3,title:"3、任务队列和事件循环",slug:"_3、任务队列和事件循环"},{level:3,title:"4、异步操作的模式",slug:"_4、异步操作的模式"},{level:4,title:"(1)回调函数",slug:"_1-回调函数"},{level:4,title:"(2)事件监听",slug:"_2-事件监听"},{level:4,title:"(3)发布/订阅",slug:"_3-发布-订阅"},{level:3,title:"5、异步操作的流程控制",slug:"_5、异步操作的流程控制"},{level:4,title:"(1)串行执行",slug:"_1-串行执行"},{level:4,title:"(2)并行执行",slug:"_2-并行执行"},{level:4,title:"(3)并行与串行的结合",slug:"_3-并行与串行的结合"},{level:2,title:"文档",slug:"文档"}],lastUpdated:"2022/12/14, 19:36:42",lastUpdatedTimestamp:1671017802e3},{title:"事件",frontmatter:{title:"事件",date:"2020-01-12T11:49:16.000Z",permalink:"/pages/10b2761db5a8e089",categories:["《JavaScript教程》笔记"],tags:["JavaScript"],author:{name:"heBody",link:"https://github.com/heBody"}},regularPath:"/%E3%80%8AJavaScript%E6%95%99%E7%A8%8B%E3%80%8B%E7%AC%94%E8%AE%B0/06.%E4%BA%8B%E4%BB%B6.html",relativePath:"《JavaScript教程》笔记/06.事件.md",key:"v-17fb10cd",path:"/pages/10b2761db5a8e089/",headers:[{level:2,title:"一、EventTarget 接口",slug:"一、eventtarget-接口"},{level:3,title:"1、概述",slug:"_1、概述"},{level:3,title:"2、EventTarget.addEventListener()",slug:"_2、eventtarget-addeventlistener"},{level:3,title:"3、EventTarget.removeEventListener()",slug:"_3、eventtarget-removeeventlistener"},{level:3,title:"4、EventTarget.dispatchEvent()",slug:"_4、eventtarget-dispatchevent"},{level:2,title:"二、事件模型",slug:"二、事件模型"},{level:3,title:"1、监听函数",slug:"_1、监听函数"},{level:4,title:"1.2 HTML 的 on- 属性",slug:"_1-2-html-的-on-属性"},{level:4,title:"1.2 元素节点的事件属性 (例:el.onclick)",slug:"_1-2-元素节点的事件属性-例-el-onclick"},{level:4,title:"1.3 EventTarget.addEventListener()",slug:"_1-3-eventtarget-addeventlistener"},{level:4,title:"1.4 小结",slug:"_1-4-小结"},{level:3,title:"2、this 的指向 (指向元素节点)",slug:"_2、this-的指向-指向元素节点"},{level:3,title:"3、事件的传播(捕获、目标、冒泡)",slug:"_3、事件的传播-捕获、目标、冒泡"},{level:3,title:"4、事件的代理",slug:"_4、事件的代理"},{level:5,title:"阻止事件冒泡 event.stopPropagation()",slug:"阻止事件冒泡-event-stoppropagation"},{level:2,title:"三、Event 对象",slug:"三、event-对象"},{level:3,title:"1. 概述",slug:"_1-概述"},{level:3,title:"2. 实例属性",slug:"_2-实例属性"},{level:4,title:"2.1 Event.bubbles 是否会冒泡,只读,Event.eventPhase 返回整数,表示事件所处阶段,只读",slug:"_2-1-event-bubbles-是否会冒泡-只读-event-eventphase-返回整数-表示事件所处阶段-只读"},{level:4,title:"2.2 Event.cancelable 是否可取消默认行为,Event.cancelBubble是否阻止冒泡,event.defaultPrevented 是否调用过取消默认行为方法",slug:"_2-2-event-cancelable-是否可取消默认行为-event-cancelbubble是否阻止冒泡-event-defaultprevented-是否调用过取消默认行为方法"},{level:4,title:"2.3 Event.currentTarget当前正在通过的节点,Event.target目标节点",slug:"_2-3-event-currenttarget当前正在通过的节点-event-target目标节点"},{level:4,title:"2.4 Event.type 事件类型(如:'click')",slug:"_2-4-event-type-事件类型-如-click"},{level:4,title:"2.5 Event.timeStamp 相对于打开网页后的毫秒时间戳",slug:"_2-5-event-timestamp-相对于打开网页后的毫秒时间戳"},{level:6,title:"例子:计算鼠标移动速度",slug:"例子-计算鼠标移动速度"},{level:4,title:"2.6 Event.isTrusted 是否由真实用户行为产生的事件",slug:"_2-6-event-istrusted-是否由真实用户行为产生的事件"},{level:4,title:"2.7 Event.detail 事件的细节(单击or双击等)",slug:"_2-7-event-detail-事件的细节-单击or双击等"},{level:3,title:"3、实例方法",slug:"_3、实例方法"},{level:4,title:"3.1 Event.preventDefault() 取消浏览器对当前事件的默认行为",slug:"_3-1-event-preventdefault-取消浏览器对当前事件的默认行为"},{level:6,title:"例子:只能输入字母的输入框",slug:"例子-只能输入字母的输入框"},{level:4,title:"3.2 Event.stopPropagation() 阻止事件传播",slug:"_3-2-event-stoppropagation-阻止事件传播"},{level:4,title:"3.3 Event.stopImmediatePropagation() 阻止同一个事件的其他监听函数被调用",slug:"_3-3-event-stopimmediatepropagation-阻止同一个事件的其他监听函数被调用"},{level:4,title:"3.4 Event.composedPath() 数组,目标和冒泡的节点",slug:"_3-4-event-composedpath-数组-目标和冒泡的节点"},{level:2,title:"四、鼠标事件",slug:"四、鼠标事件"},{level:3,title:"1、鼠标事件的种类",slug:"_1、鼠标事件的种类"},{level:3,title:"2、MouseEvent 接口概述",slug:"_2、mouseevent-接口概述"},{level:3,title:"3、MouseEvent 接口的实例属性",slug:"_3、mouseevent-接口的实例属性"},{level:4,title:"3.1 MouseEvent.altKey,MouseEvent.ctrlKey,MouseEvent.metaKey,MouseEvent.shiftKey",slug:"_3-1-mouseevent-altkey-mouseevent-ctrlkey-mouseevent-metakey-mouseevent-shiftkey"},{level:4,title:"3.2 MouseEvent.button 鼠标的哪个键,MouseEvent.buttons同时按哪些键",slug:"_3-2-mouseevent-button-鼠标的哪个键-mouseevent-buttons同时按哪些键"},{level:4,title:"3.3 MouseEvent.clientX 相对浏览器X坐标,MouseEvent.clientY 相对浏览器Y坐标",slug:"_3-3-mouseevent-clientx-相对浏览器x坐标-mouseevent-clienty-相对浏览器y坐标"},{level:4,title:"3.4 MouseEvent.movementX 上一个鼠标经过事件的X距离,MouseEvent.movementY 上一个鼠标经过事件的Y距离",slug:"_3-4-mouseevent-movementx-上一个鼠标经过事件的x距离-mouseevent-movementy-上一个鼠标经过事件的y距离"},{level:4,title:"3.5 MouseEvent.screenX 相对屏幕X坐标,MouseEvent.screenY 相对屏幕Y坐标",slug:"_3-5-mouseevent-screenx-相对屏幕x坐标-mouseevent-screeny-相对屏幕y坐标"},{level:4,title:"3.6 MouseEvent.offsetX 偏移量X,MouseEvent.offsetY 偏移量Y",slug:"_3-6-mouseevent-offsetx-偏移量x-mouseevent-offsety-偏移量y"},{level:4,title:"3.7 MouseEvent.pageX 文档X坐标,MouseEvent.pageY 文档Y坐标",slug:"_3-7-mouseevent-pagex-文档x坐标-mouseevent-pagey-文档y坐标"},{level:4,title:"3.8 MouseEvent.relatedTarget 事件的相关节点",slug:"_3-8-mouseevent-relatedtarget-事件的相关节点"},{level:3,title:"4、MouseEvent 接口的实例方法",slug:"_4、mouseevent-接口的实例方法"},{level:4,title:"4.1 MouseEvent.getModifierState() 是否按下指定功能键",slug:"_4-1-mouseevent-getmodifierstate-是否按下指定功能键"},{level:3,title:"5、WheelEvent 接口 (滚轮)",slug:"_5、wheelevent-接口-滚轮"},{level:4,title:"5.1 概述",slug:"_5-1-概述"},{level:4,title:"5.2 实例属性",slug:"_5-2-实例属性"},{level:2,title:"五、键盘事件",slug:"五、键盘事件"},{level:3,title:"1、键盘事件的种类",slug:"_1、键盘事件的种类"},{level:3,title:"2、KeyboardEvent 接口概述",slug:"_2、keyboardevent-接口概述"},{level:3,title:"3、KeyboardEvent 的实例属性",slug:"_3、keyboardevent-的实例属性"},{level:4,title:"3.1 KeyboardEvent.altKey,KeyboardEvent.ctrlKey,KeyboardEvent.metaKey,KeyboardEvent.shiftKey 【是否按下对应键,布尔值】",slug:"_3-1-keyboardevent-altkey-keyboardevent-ctrlkey-keyboardevent-metakey-keyboardevent-shiftkey-【是否按下对应键-布尔值】"},{level:4,title:"3.2 KeyboardEvent.code 键码",slug:"_3-2-keyboardevent-code-键码"},{level:4,title:"3.3 KeyboardEvent.key 键名",slug:"_3-3-keyboardevent-key-键名"},{level:4,title:"3.4 KeyboardEvent.location 键处于哪个位置,整数",slug:"_3-4-keyboardevent-location-键处于哪个位置-整数"},{level:4,title:"3.5 KeyboardEvent.repeat 是否长按",slug:"_3-5-keyboardevent-repeat-是否长按"},{level:3,title:"4、KeyboardEvent 的实例方法",slug:"_4、keyboardevent-的实例方法"},{level:4,title:"4.1 KeyboardEvent.getModifierState() 是否按下指定功能键",slug:"_4-1-keyboardevent-getmodifierstate-是否按下指定功能键"},{level:2,title:"六、进度事件",slug:"六、进度事件"},{level:3,title:"1、进度事件的种类",slug:"_1、进度事件的种类"},{level:3,title:"2、ProgressEvent 接口",slug:"_2、progressevent-接口"},{level:4,title:"2.1 概述",slug:"_2-1-概述"},{level:4,title:"2.2 ProgressEvent的实例属性。",slug:"_2-2-progressevent的实例属性。"},{level:2,title:"七、表单事件",slug:"七、表单事件"},{level:3,title:"1、表单事件的种类",slug:"_1、表单事件的种类"},{level:4,title:"1.1 input 事件 (值发生变化触发,会连续)",slug:"_1-1-input-事件-值发生变化触发-会连续"},{level:4,title:"1.2 select 事件 (选中文本时触发)",slug:"_1-2-select-事件-选中文本时触发"},{level:4,title:"1.3 change 事件 (值发生变化时触发,单次)",slug:"_1-3-change-事件-值发生变化时触发-单次"},{level:4,title:"1.4 invalid 事件 (表单提交不满足条件触发)",slug:"_1-4-invalid-事件-表单提交不满足条件触发"},{level:4,title:"1.5 reset 事件(重置),submit 事件(提交)",slug:"_1-5-reset-事件-重置-submit-事件-提交"},{level:3,title:"2、InputEvent 接口(input事件的实例)",slug:"_2、inputevent-接口-input事件的实例"},{level:4,title:"(1)InputEvent.data 变动的那部分内容",slug:"_1-inputevent-data-变动的那部分内容"},{level:4,title:"(2)InputEvent.inputType 变更类型",slug:"_2-inputevent-inputtype-变更类型"},{level:4,title:"(3)InputEvent.dataTransfer",slug:"_3-inputevent-datatransfer"},{level:2,title:"八、触摸事件",slug:"八、触摸事件"},{level:3,title:"1、触摸操作概述",slug:"_1、触摸操作概述"},{level:3,title:"2、Touch 接口",slug:"_2、touch-接口"},{level:4,title:"2.1 Touch 接口概述 (单个触摸点)",slug:"_2-1-touch-接口概述-单个触摸点"},{level:4,title:"2.2 Touch 接口的实例属性",slug:"_2-2-touch-接口的实例属性"},{level:5,title:"(1)Touch.identifier 触摸点的ID",slug:"_1-touch-identifier-触摸点的id"},{level:5,title:"(2)Touch.screenX,Touch.screenY,Touch.clientX,Touch.clientY,pageX,pageY (相对屏幕、浏览器、文档的坐标)",slug:"_2-touch-screenx-touch-screeny-touch-clientx-touch-clienty-pagex-pagey-相对屏幕、浏览器、文档的坐标"},{level:5,title:"(3)Touch.radiusX,Touch.radiusY,Touch.rotationAngle (触摸椭圆区域半径、角度)",slug:"_3-touch-radiusx-touch-radiusy-touch-rotationangle-触摸椭圆区域半径、角度"},{level:5,title:"(4)Touch.force 触摸压力",slug:"_4-touch-force-触摸压力"},{level:5,title:"(5)Touch.target 开始触摸时的元素",slug:"_5-touch-target-开始触摸时的元素"},{level:3,title:"3、TouchList 接口",slug:"_3、touchlist-接口"},{level:3,title:"4、TouchEvent 接口",slug:"_4、touchevent-接口"},{level:4,title:"4.1 概述",slug:"_4-1-概述"},{level:4,title:"4.2 实例属性",slug:"_4-2-实例属性"},{level:5,title:"(1)TouchEvent.altKey,TouchEvent.ctrlKey,TouchEvent.shiftKey,TouchEvent.metaKey (是否同时按某些功能键)",slug:"_1-touchevent-altkey-touchevent-ctrlkey-touchevent-shiftkey-touchevent-metakey-是否同时按某些功能键"},{level:5,title:"(2)TouchEvent.changedTouches (触摸点集合,不同触摸事件,含义不同)",slug:"_2-touchevent-changedtouches-触摸点集合-不同触摸事件-含义不同"},{level:5,title:"(3)TouchEvent.touches (仍然活动的触摸点集合)",slug:"_3-touchevent-touches-仍然活动的触摸点集合"},{level:5,title:"(4)TouchEvent.targetTouches (目标元素内活动的触摸点集合)",slug:"_4-touchevent-targettouches-目标元素内活动的触摸点集合"},{level:3,title:"5、触摸事件的种类",slug:"_5、触摸事件的种类"},{level:2,title:"九、拖拉事件",slug:"九、拖拉事件"},{level:3,title:"1、拖拉事件的种类",slug:"_1、拖拉事件的种类"},{level:3,title:"2、DragEvent 接口",slug:"_2、dragevent-接口"},{level:3,title:"3、DataTransfer 接口概述",slug:"_3、datatransfer-接口概述"},{level:3,title:"4、DataTransfer 的实例属性",slug:"_4、datatransfer-的实例属性"},{level:4,title:"4.1 DataTransfer.dropEffect 设置接受拖拉的区域的效果",slug:"_4-1-datatransfer-dropeffect-设置接受拖拉的区域的效果"},{level:4,title:"4.2 DataTransfer.effectAllowed 设置被拖拉的节点允许的效果",slug:"_4-2-datatransfer-effectallowed-设置被拖拉的节点允许的效果"},{level:4,title:"4.3 DataTransfer.files 本地文件",slug:"_4-3-datatransfer-files-本地文件"},{level:5,title:"例子:接收拖拉文件",slug:"例子-接收拖拉文件"},{level:4,title:"4.4 DataTransfer.types 数据格式",slug:"_4-4-datatransfer-types-数据格式"},{level:4,title:"4.5 DataTransfer.items",slug:"_4-5-datatransfer-items"},{level:3,title:"5、DataTransfer 的实例方法",slug:"_5、datatransfer-的实例方法"},{level:4,title:"5.1 DataTransfer.setData() 设置拖拉事件所带有的数据",slug:"_5-1-datatransfer-setdata-设置拖拉事件所带有的数据"},{level:4,title:"5.2 DataTransfer.getData() 返回指定类型的数据",slug:"_5-2-datatransfer-getdata-返回指定类型的数据"},{level:4,title:"5.3 DataTransfer.clearData() 清除指定或全部数据",slug:"_5-3-datatransfer-cleardata-清除指定或全部数据"},{level:4,title:"5.4 DataTransfer.setDragImage() 设置拖动过程中的图片",slug:"_5-4-datatransfer-setdragimage-设置拖动过程中的图片"},{level:2,title:"十、其他常见事件",slug:"十、其他常见事件"},{level:3,title:"1、资源事件",slug:"_1、资源事件"},{level:4,title:"1.1 beforeunload 事件 (关闭窗口前调用)",slug:"_1-1-beforeunload-事件-关闭窗口前调用"},{level:4,title:"1.2 unload 事件 (即将关闭窗口时调用)",slug:"_1-2-unload-事件-即将关闭窗口时调用"},{level:4,title:"1.3 load 事件,error 事件 ,abort事件 (页面或某个资源加载成功/失败/取消时调用)",slug:"_1-3-load-事件-error-事件-abort事件-页面或某个资源加载成功-失败-取消时调用"},{level:3,title:"2、session 历史事件",slug:"_2、session-历史事件"},{level:4,title:"2.1 pageshow 事件(页面显示,加载页面后执行),pagehide 事件(退出当前页面触发)",slug:"_2-1-pageshow-事件-页面显示-加载页面后执行-pagehide-事件-退出当前页面触发"},{level:4,title:"2.2 popstate 事件(在浏览器的history对象的当前记录发生显式切换时触发)",slug:"_2-2-popstate-事件-在浏览器的history对象的当前记录发生显式切换时触发"},{level:4,title:"2.3 hashchange 事件 (hash发生变化时触发)",slug:"_2-3-hashchange-事件-hash发生变化时触发"},{level:3,title:"3、网页状态事件",slug:"_3、网页状态事件"},{level:4,title:"3.1 DOMContentLoaded 事件 (DOM内容加载完成后触发)",slug:"_3-1-domcontentloaded-事件-dom内容加载完成后触发"},{level:4,title:"3.2 readystatechange 事件(Document 对象和 XMLHttpRequest 对象的readyState属性发生变化时触发)",slug:"_3-2-readystatechange-事件-document-对象和-xmlhttprequest-对象的readystate属性发生变化时触发"},{level:3,title:"4、窗口事件",slug:"_4、窗口事件"},{level:4,title:"4.1 scroll 事件 (文档或文档元素滚动时触发)",slug:"_4-1-scroll-事件-文档或文档元素滚动时触发"},{level:4,title:"4.2 resize 事件(窗口大小变化时触发)",slug:"_4-2-resize-事件-窗口大小变化时触发"},{level:4,title:"4.3 fullscreenchange 事件(元素进入/退出全屏时触发),fullscreenerror 事件(无法切换全屏时触发)",slug:"_4-3-fullscreenchange-事件-元素进入-退出全屏时触发-fullscreenerror-事件-无法切换全屏时触发"},{level:3,title:"5、剪贴板事件",slug:"_5、剪贴板事件"},{level:3,title:"6、焦点事件",slug:"_6、焦点事件"},{level:3,title:"7、CustomEvent 接口(自定义事件)",slug:"_7、customevent-接口-自定义事件"},{level:2,title:"十一、GlobalEventHandlers 接口 (全局事件处理接口)",slug:"十一、globaleventhandlers-接口-全局事件处理接口"},{level:3,title:"1、GlobalEventHandlers.onabort (中断事件)",slug:"_1、globaleventhandlers-onabort-中断事件"},{level:3,title:"2、GlobalEventHandlers.onerror (错误事件)",slug:"_2、globaleventhandlers-onerror-错误事件"},{level:3,title:"3、GlobalEventHandlers.onload(加载完成事件)、GlobalEventHandlers.onloadstart(开始加载事件)",slug:"_3、globaleventhandlers-onload-加载完成事件-、globaleventhandlers-onloadstart-开始加载事件"},{level:3,title:"4、GlobalEventHandlers.onfocus(获取焦点事件),GlobalEventHandlers.onblur(失去焦点事件)",slug:"_4、globaleventhandlers-onfocus-获取焦点事件-globaleventhandlers-onblur-失去焦点事件"},{level:3,title:"5、GlobalEventHandlers.onscroll(滚动事件)",slug:"_5、globaleventhandlers-onscroll-滚动事件"},{level:3,title:"6、GlobalEventHandlers.oncontextmenu(右键菜单事件),GlobalEventHandlers.onshow(显示右键菜单时触发)",slug:"_6、globaleventhandlers-oncontextmenu-右键菜单事件-globaleventhandlers-onshow-显示右键菜单时触发"},{level:3,title:"7、其他的事件属性",slug:"_7、其他的事件属性"},{level:2,title:"文档",slug:"文档"}],lastUpdated:"2022/12/14, 19:36:42",lastUpdatedTimestamp:1671017802e3},{title:"DOM",frontmatter:{title:"DOM",date:"2020-01-12T11:49:16.000Z",permalink:"/pages/7d961b8030c6099e",categories:["《JavaScript教程》笔记"],tags:["JavaScript"],author:{name:"heBody",link:"https://github.com/heBody"}},regularPath:"/%E3%80%8AJavaScript%E6%95%99%E7%A8%8B%E3%80%8B%E7%AC%94%E8%AE%B0/05.DOM.html",relativePath:"《JavaScript教程》笔记/05.DOM.md",key:"v-8544531a",path:"/pages/7d961b8030c6099e/",headers:[{level:2,title:"一、概述",slug:"一、概述"},{level:3,title:"1、DOM",slug:"_1、dom"},{level:3,title:"2、节点",slug:"_2、节点"},{level:3,title:"3、节点树",slug:"_3、节点树"},{level:2,title:"二、Node接口",slug:"二、node接口"},{level:3,title:"1、属性",slug:"_1、属性"},{level:4,title:"1.1 Node.prototype.nodeType节点类型",slug:"_1-1-node-prototype-nodetype节点类型"},{level:4,title:"1.2 Node.prototype.nodeName节点名称",slug:"_1-2-node-prototype-nodename节点名称"},{level:4,title:"1.3 Node.prototype.nodeValue当前节点文本",slug:"_1-3-node-prototype-nodevalue当前节点文本"},{level:4,title:"1.4 Node.prototype.textContent所有文本内容",slug:"_1-4-node-prototype-textcontent所有文本内容"},{level:4,title:"1.5 Node.prototype.baseURI 获取网页路径",slug:"_1-5-node-prototype-baseuri-获取网页路径"},{level:4,title:"1.6 Node.prototype.ownerDocument顶层文档对象",slug:"_1-6-node-prototype-ownerdocument顶层文档对象"},{level:4,title:"1.7 Node.prototype.nextSibling下一个同级节点",slug:"_1-7-node-prototype-nextsibling下一个同级节点"},{level:4,title:"1.8 Node.prototype.previousSibling上一个同级节点",slug:"_1-8-node-prototype-previoussibling上一个同级节点"},{level:4,title:"1.9 Node.prototype.parentNode父节点",slug:"_1-9-node-prototype-parentnode父节点"},{level:4,title:"1.10 Node.prototype.parentElement 父元素节点",slug:"_1-10-node-prototype-parentelement-父元素节点"},{level:4,title:"1.11 Node.prototype.firstChild 第一个子节点,Node.prototype.lastChild 最后一个子节点",slug:"_1-11-node-prototype-firstchild-第一个子节点-node-prototype-lastchild-最后一个子节点"},{level:4,title:"1.12 Node.prototype.childNodes 所有子节点,类数组对象,动态集合",slug:"_1-12-node-prototype-childnodes-所有子节点-类数组对象-动态集合"},{level:4,title:"1.13 Node.prototype.isConnected 是否在文档中,布尔值",slug:"_1-13-node-prototype-isconnected-是否在文档中-布尔值"},{level:3,title:"2、方法",slug:"_2、方法"},{level:4,title:"2.1 Node.prototype.appendChild() 插入子节点到最后",slug:"_2-1-node-prototype-appendchild-插入子节点到最后"},{level:4,title:"2.2 Node.prototype.hasChildNodes() 是否有子节点,布尔值",slug:"_2-2-node-prototype-haschildnodes-是否有子节点-布尔值"},{level:4,title:"2.3 Node.prototype.cloneNode(Boolean) 克隆节点",slug:"_2-3-node-prototype-clonenode-boolean-克隆节点"},{level:4,title:"2.4 Node.prototype.insertBefore() 插入节点到指定位置",slug:"_2-4-node-prototype-insertbefore-插入节点到指定位置"},{level:4,title:"2.5 Node.prototype.removeChild() 删除子节点,并返回",slug:"_2-5-node-prototype-removechild-删除子节点-并返回"},{level:4,title:"2.6 Node.prototype.replaceChild() 替换子节点,返回被替换的",slug:"_2-6-node-prototype-replacechild-替换子节点-返回被替换的"},{level:4,title:"2.7 Node.prototype.contains() 参数节点是否为后代节点或当前节点,返回布尔值",slug:"_2-7-node-prototype-contains-参数节点是否为后代节点或当前节点-返回布尔值"},{level:4,title:"2.8 Node.prototype.compareDocumentPosition() 和contains方法类似,返回值可算出位置关系",slug:"_2-8-node-prototype-comparedocumentposition-和contains方法类似-返回值可算出位置关系"},{level:4,title:"2.9 Node.prototype.isEqualNode() 节点是否相等 Node.prototype.isSameNode() 节点是否相同",slug:"_2-9-node-prototype-isequalnode-节点是否相等-node-prototype-issamenode-节点是否相同"},{level:4,title:"2.10 Node.prototype.normalize() 将当前节点和它的后代节点”规范化“",slug:"_2-10-node-prototype-normalize-将当前节点和它的后代节点-规范化"},{level:4,title:"2.11 Node.prototype.getRootNode() 获取根节点(document)",slug:"_2-11-node-prototype-getrootnode-获取根节点-document"},{level:2,title:"三、NodeList 接口 与 HTMLCollection 接口 (节点的集合)",slug:"三、nodelist-接口-与-htmlcollection-接口-节点的集合"},{level:3,title:"1、NodeList 接口 (各类节点的集合)",slug:"_1、nodelist-接口-各类节点的集合"},{level:4,title:"1.1 概述",slug:"_1-1-概述"},{level:4,title:"1.2 NodeList.prototype.length",slug:"_1-2-nodelist-prototype-length"},{level:4,title:"1.3 NodeList.prototype.forEach()",slug:"_1-3-nodelist-prototype-foreach"},{level:4,title:"1.4 NodeList.prototype.item() 接受一个索引参数,返回该索引上的成员(节点)",slug:"_1-4-nodelist-prototype-item-接受一个索引参数-返回该索引上的成员-节点"},{level:4,title:"1.5 NodeList.prototype.keys(),NodeList.prototype.values(),NodeList.prototype.entries() 遍历器对象,结合for...of遍历每一个成员的信息",slug:"_1-5-nodelist-prototype-keys-nodelist-prototype-values-nodelist-prototype-entries-遍历器对象-结合for-of遍历每一个成员的信息"},{level:3,title:"2、HTMLCollection 接口 (HTML元素节点的集合)",slug:"_2、htmlcollection-接口-html元素节点的集合"},{level:4,title:"2.1 概述",slug:"_2-1-概述"},{level:6,title:"各js选择器返回的数据对比",slug:"各js选择器返回的数据对比"},{level:4,title:"2.2 HTMLCollection.prototype.length",slug:"_2-2-htmlcollection-prototype-length"},{level:4,title:"2.3 HTMLCollection.prototype.item() 和方括号访问一样",slug:"_2-3-htmlcollection-prototype-item-和方括号访问一样"},{level:4,title:"2.4 HTMLCollection.prototype.namedItem() 参数为id或name,返回元素节点",slug:"_2-4-htmlcollection-prototype-nameditem-参数为id或name-返回元素节点"},{level:2,title:"四、ParentNode 接口(父节点接口),ChildNode 接口(子节点接口)",slug:"四、parentnode-接口-父节点接口-childnode-接口-子节点接口"},{level:3,title:"1、ParentNode 接口",slug:"_1、parentnode-接口"},{level:4,title:"1.1 属性",slug:"_1-1-属性"},{level:4,title:"(1)ParentNode.children (返回HTMLCollection实例,当前节点的所有元素子节点)",slug:"_1-parentnode-children-返回htmlcollection实例-当前节点的所有元素子节点"},{level:4,title:"(2)ParentNode.firstElementChild 第一个元素子节点",slug:"_2-parentnode-firstelementchild-第一个元素子节点"},{level:4,title:"(3)ParentNode.lastElementChild 最后一个元素子节点",slug:"_3-parentnode-lastelementchild-最后一个元素子节点"},{level:4,title:"(4)ParentNode.childElementCount 所有元素子节点的数量",slug:"_4-parentnode-childelementcount-所有元素子节点的数量"},{level:4,title:"1.2 方法",slug:"_1-2-方法"},{level:5,title:"ParentNode.append() 插入子节点于后,ParentNode.prepend() 插入子节点于前",slug:"parentnode-append-插入子节点于后-parentnode-prepend-插入子节点于前"},{level:3,title:"2、ChildNode 接口",slug:"_2、childnode-接口"},{level:4,title:"2.1 ChildNode.remove() 移除当前节点",slug:"_2-1-childnode-remove-移除当前节点"},{level:4,title:"2.2 ChildNode.before() 插入同级节点于前,ChildNode.after() 插入同级节点于后",slug:"_2-2-childnode-before-插入同级节点于前-childnode-after-插入同级节点于后"},{level:4,title:"2.3 ChildNode.replaceWith() 用参数节点替换当前节点",slug:"_2-3-childnode-replacewith-用参数节点替换当前节点"},{level:2,title:"五、Document节点",slug:"五、document节点"},{level:3,title:"1、概述",slug:"_1、概述"},{level:3,title:"2、属性",slug:"_2、属性"},{level:4,title:"2.1 快捷方式属性 (指向文档内部某个节点的快捷方式)",slug:"_2-1-快捷方式属性-指向文档内部某个节点的快捷方式"},{level:5,title:"(1)document.defaultView 返回window对象",slug:"_1-document-defaultview-返回window对象"},{level:5,title:"(2)document.doctype 指向<!DOCTYPE html>",slug:"_2-document-doctype-指向-doctype-html"},{level:5,title:"(3)document.documentElement 返回当前文档的根元素节点,即<html\\>节点",slug:"_3-document-documentelement-返回当前文档的根元素节点-即-html-节点"},{level:5,title:"(4)document.body 指向<body\\>,document.head 指向 <head\\>",slug:"_4-document-body-指向-body-document-head-指向-head"},{level:5,title:"(5)document.scrollingElement 返回文档的滚动元素(标准模式)",slug:"_5-document-scrollingelement-返回文档的滚动元素-标准模式-html-兼容模式-body"},{level:5,title:"(6)document.activeElement 返回文档中获取焦点的元素,一般为表单元素,如没有则返回或null",slug:"_6-document-activeelement-返回文档中获取焦点的元素-一般为表单元素-如没有则返回-body-或null"},{level:5,title:"(7)document.fullscreenElement 返回当前以全屏状态展示的 DOM 元素",slug:"_7-document-fullscreenelement-返回当前以全屏状态展示的-dom-元素"},{level:4,title:"2.2 节点集合属性 (文档内部特定元素的集合,返HTMLCollection实例)",slug:"_2-2-节点集合属性-文档内部特定元素的集合-返htmlcollection实例"},{level:5,title:"(1)document.links 返回所有含href属性的",slug:"_1-document-links-返回所有含href属性的-a-和-area"},{level:5,title:"(2)document.forms 返回所有 表单节点",slug:"_2-document-forms-返回所有-form-表单节点"},{level:5,title:"(3)document.images 返回页面所有 图片节点",slug:"_3-document-images-返回页面所有-img-图片节点"},{level:5,title:"(4)document.embeds,document.plugins 返回所有 嵌入节点",slug:"_4-document-embeds-document-plugins-返回所有-embed-嵌入节点"},{level:5,title:"(5)document.scripts 返回所有 节点",slug:"_5-document-scripts-返回所有-script-节点"},{level:5,title:"(6)document.styleSheets 返回文档内嵌或引入的样式表集合",slug:"_6-document-stylesheets-返回文档内嵌或引入的样式表集合"},{level:5,title:"(7)小结(除了styleSheets属性,其他返回都是HTMLCollection实例)",slug:"_7-小结-除了stylesheets属性-其他返回都是htmlcollection实例"},{level:4,title:"2.3 文档静态信息属性",slug:"_2-3-文档静态信息属性"},{level:5,title:"(1)document.documentURI,document.URL 返回网址字符串",slug:"_1-document-documenturi-document-url-返回网址字符串"},{level:5,title:"(2)document.domain 返回域名",slug:"_2-document-domain-返回域名"},{level:5,title:"(3)document.location 提供 URL 相关的信息和操作方法",slug:"_3-document-location-提供-url-相关的信息和操作方法"},{level:5,title:"(4)document.lastModified 返回当前文档最后修改的时间",slug:"_4-document-lastmodified-返回当前文档最后修改的时间"},{level:5,title:"(5)document.title 返回当前文档的标题",slug:"_5-document-title-返回当前文档的标题"},{level:5,title:"(6)document.characterSet 返回当前文档的编码,如UTF-8等",slug:"_6-document-characterset-返回当前文档的编码-如utf-8等"},{level:5,title:"(7)document.referrer 当前文档的访问者来自哪里(如通过百度进入的)",slug:"_7-document-referrer-当前文档的访问者来自哪里-如通过百度进入的"},{level:5,title:"(8)document.dir 返回文字方向(rtl从右到左,ltr从左到右)",slug:"_8-document-dir-返回文字方向-rtl从右到左-ltr从左到右"},{level:5,title:"(9)document.compatMode 返回浏览器处理文档的模式(向后兼容与严格模式)",slug:"_9-document-compatmode-返回浏览器处理文档的模式-向后兼容与严格模式"},{level:4,title:"2.4 文档状态属性",slug:"_2-4-文档状态属性"},{level:5,title:"(1)document.hidden 当前页面是否可见,返布尔值。",slug:"_1-document-hidden-当前页面是否可见-返布尔值。"},{level:5,title:"(2)document.visibilityState 返回文档可见状态(visible、hidden、prerender、unloaded)",slug:"_2-document-visibilitystate-返回文档可见状态-visible、hidden、prerender、unloaded"},{level:5,title:"(3)document.readyState 返回当前文档的状态(loading、interactive、complete)",slug:"_3-document-readystate-返回当前文档的状态-loading、interactive、complete"},{level:4,title:"2.5 document.cookie 用来操作浏览器 Cookie",slug:"_2-5-document-cookie-用来操作浏览器-cookie"},{level:4,title:"2.6 document.designMode 控制当前文档是否可编辑(on、off)",slug:"_2-6-document-designmode-控制当前文档是否可编辑-on、off"},{level:4,title:"2.7 document.implementation 返回一个DOMImplementation对象",slug:"_2-7-document-implementation-返回一个domimplementation对象"},{level:3,title:"3、方法",slug:"_3、方法"},{level:4,title:"3.1 document.open(),document.close() 打开和关闭文档可写状态",slug:"_3-1-document-open-document-close-打开和关闭文档可写状态"},{level:4,title:"3.2 document.write() 向当前文档写入内容,document.writeln() 写入内容并换行",slug:"_3-2-document-write-向当前文档写入内容-document-writeln-写入内容并换行"},{level:4,title:"3.3 document.querySelector() 返回匹配该选择器的元素节点,document.querySelectorAll() 返回一个NodeList对象,包含所有匹配给定选择器的节点",slug:"_3-3-document-queryselector-返回匹配该选择器的元素节点-document-queryselectorall-返回一个nodelist对象-包含所有匹配给定选择器的节点"},{level:4,title:"3.4 document.getElementsByTagName() 搜索 HTML 标签名,返回符合条件的元素",slug:"_3-4-document-getelementsbytagname-搜索-html-标签名-返回符合条件的元素"},{level:4,title:"3.5 document.getElementsByClassName() 返回class符合条件的元素",slug:"_3-5-document-getelementsbyclassname-返回class符合条件的元素"},{level:4,title:"3.6 document.getElementsByName() 返回拥有相应name值的元素",slug:"_3-6-document-getelementsbyname-返回拥有相应name值的元素"},{level:4,title:"3.7 document.getElementById() 返回匹配指定id属性的元素节点",slug:"_3-7-document-getelementbyid-返回匹配指定id属性的元素节点"},{level:4,title:"3.8 document.elementFromPoint(x, y) 返回位于页面指定坐标最上层的元素节点,document.elementsFromPoint(x, y) 返回一个数组,成员是位于指定坐标的所有元素",slug:"_3-8-document-elementfrompoint-x-y-返回位于页面指定坐标最上层的元素节点-document-elementsfrompoint-x-y-返回一个数组-成员是位于指定坐标的所有元素"},{level:4,title:"3.9 document.createElement() 创建元素节点,并返回",slug:"_3-9-document-createelement-创建元素节点-并返回"},{level:4,title:"3.10 document.createTextNode() 创建文本节点,并返回",slug:"_3-10-document-createtextnode-创建文本节点-并返回"},{level:4,title:"3.11 document.createAttribute() 创建属性节点,并返回",slug:"_3-11-document-createattribute-创建属性节点-并返回"},{level:4,title:"3.12 document.createComment() 创建注释节点,并返回",slug:"_3-12-document-createcomment-创建注释节点-并返回"},{level:4,title:"3.13 document.createDocumentFragment() 创建空文档片段对象",slug:"_3-13-document-createdocumentfragment-创建空文档片段对象"},{level:4,title:"3.14 document.createEvent() 创建事件对象(Event实例)",slug:"_3-14-document-createevent-创建事件对象-event实例"},{level:4,title:"3.15 document.addEventListener() 添加事件监听,document.removeEventListener() 移除事件监听,document.dispatchEvent() 触发事件",slug:"_3-15-document-addeventlistener-添加事件监听-document-removeeventlistener-移除事件监听-document-dispatchevent-触发事件"},{level:4,title:"3.16 document.hasFocus() 判断当前文档是否有元素被激活或获取焦点",slug:"_3-16-document-hasfocus-判断当前文档是否有元素被激活或获取焦点"},{level:4,title:"3.17 document.adoptNode() 采用外部节点,document.importNode() 输入(拷贝)外部节点",slug:"_3-17-document-adoptnode-采用外部节点-document-importnode-输入-拷贝-外部节点"},{level:4,title:"3.18 document.createNodeIterator() 返回一个子节点遍历器(NodeFilter实例)",slug:"_3-18-document-createnodeiterator-返回一个子节点遍历器-nodefilter实例"},{level:4,title:"3.19 document.createTreeWalker() 返回一个DOM的子树遍历器(TreeWalker实例)",slug:"_3-19-document-createtreewalker-返回一个dom的子树遍历器-treewalker实例"},{level:4,title:"3.20 document.execCommand(),document.queryCommandSupported(),document.queryCommandEnabled()",slug:"_3-20-document-execcommand-document-querycommandsupported-document-querycommandenabled"},{level:5,title:"(1)document.execCommand() 执行命令(实现复制文本等功能,富文本编辑器大量使用此方法)",slug:"_1-document-execcommand-执行命令-实现复制文本等功能-富文本编辑器大量使用此方法"},{level:6,title:"命令列表",slug:"命令列表"},{level:5,title:"(2)document.queryCommandSupported() 浏览器是否支持execCommand的某个命令",slug:"_2-document-querycommandsupported-浏览器是否支持execcommand的某个命令"},{level:5,title:"(3)document.queryCommandEnabled() 当前是否可用execCommand的某个命令",slug:"_3-document-querycommandenabled-当前是否可用execcommand的某个命令"},{level:4,title:"3.21 document.getSelection()",slug:"_3-21-document-getselection"},{level:2,title:"六、Element节点",slug:"六、element节点"},{level:3,title:"1、实例属性",slug:"_1、实例属性"},{level:4,title:"1.1 元素特性的相关属性",slug:"_1-1-元素特性的相关属性"},{level:5,title:"(1)Element.id 返回元素ID属性,可读写",slug:"_1-element-id-返回元素id属性-可读写"},{level:5,title:"(2)Element.tagName 返回元素的大写标签",slug:"_2-element-tagname-返回元素的大写标签"},{level:5,title:"(3)Element.dir 元素的文字方向,可读写(ltr、rtl)",slug:"_3-element-dir-元素的文字方向-可读写-ltr、rtl"},{level:5,title:"(4)Element.accessKey 分配给当前元素的快捷键,可读写",slug:"_4-element-accesskey-分配给当前元素的快捷键-可读写"},{level:5,title:"(5)Element.draggable 当前元素是否可拖动,布尔值,可读写",slug:"_5-element-draggable-当前元素是否可拖动-布尔值-可读写"},{level:5,title:"(6)Element.lang 返回当前元素的语言设置,可读写",slug:"_6-element-lang-返回当前元素的语言设置-可读写"},{level:5,title:"(7)Element.tabIndex 当前元素在 Tab 键遍历时的顺序,整数,可读写",slug:"_7-element-tabindex-当前元素在-tab-键遍历时的顺序-整数-可读写"},{level:5,title:"(8)Element.title 当前元素的 HTML 属性title,可读写",slug:"_8-element-title-当前元素的-html-属性title-可读写"},{level:4,title:"1.2 元素状态的相关属性",slug:"_1-2-元素状态的相关属性"},{level:5,title:"(1)Element.hidden 当前元素的hidden属性,控制是否可见,布尔值,可读写",slug:"_1-element-hidden-当前元素的hidden属性-控制是否可见-布尔值-可读写"},{level:5,title:"(2)Element.contentEditable元素内容的可编辑性,字符串,可读写,",slug:"_2-element-contenteditable元素内容的可编辑性-字符串-可读写"},{level:5,title:"Element.isContentEditable 元素内容是否可编辑,布尔值,只读",slug:"element-iscontenteditable-元素内容是否可编辑-布尔值-只读"},{level:4,title:"1.3 Element.attributes 类数组,成员是元素的所有HTML属性节点",slug:"_1-3-element-attributes-类数组-成员是元素的所有html属性节点"},{level:4,title:"1.4 Element.className 元素的class,Element.classList 类数组,成员是各class,有自身方法",slug:"_1-4-element-classname-元素的class-element-classlist-类数组-成员是各class-有自身方法"},{level:6,title:"classList对象有下列方法。",slug:"classlist对象有下列方法。"},{level:4,title:"1.5 Element.dataset 返回一个对象,读写元素的data-属性",slug:"_1-5-element-dataset-返回一个对象-读写元素的data-属性"},{level:4,title:"1.6 Element.innerHTML 返回一个字符串,是元素包含的所有 HTML 代码,可读写",slug:"_1-6-element-innerhtml-返回一个字符串-是元素包含的所有-html-代码-可读写"},{level:4,title:"1.7 Element.outerHTML 返回一个字符串,包含元素本身和所有子元素的HTML代码,可读写",slug:"_1-7-element-outerhtml-返回一个字符串-包含元素本身和所有子元素的html代码-可读写"},{level:4,title:"1.8 Element.clientHeight 元素高度,Element.clientWidth元素宽度",slug:"_1-8-element-clientheight-元素高度-element-clientwidth元素宽度"},{level:4,title:"1.9 Element.clientLeft 左边框宽度,Element.clientTop上边框宽",slug:"_1-9-element-clientleft-左边框宽度-element-clienttop上边框宽"},{level:4,title:"1.10 Element.scrollHeight 元素总高度,Element.scrollWidth 元素总宽度",slug:"_1-10-element-scrollheight-元素总高度-element-scrollwidth-元素总宽度"},{level:4,title:"1.11 Element.scrollLeft 元素水平滚动条右侧滚动的像素量,Element.scrollTop 元素垂直滚动条向下滚动的像素量",slug:"_1-11-element-scrollleft-元素水平滚动条右侧滚动的像素量-element-scrolltop-元素垂直滚动条向下滚动的像素量"},{level:4,title:"1.12 Element.offsetParent 返回最靠近当前元素的、并且 CSS 的position属性不等于static的上层元素",slug:"_1-12-element-offsetparent-返回最靠近当前元素的、并且-css-的position属性不等于static的上层元素"},{level:4,title:"1.13 Element.offsetHeight 元素的CSS垂直高度,Element.offsetWidth元素的CSS水平宽度",slug:"_1-13-element-offsetheight-元素的css垂直高度-element-offsetwidth元素的css水平宽度"},{level:4,title:"1.14 Element.offsetLeft 水平位移,Element.offsetTop 垂直位移",slug:"_1-14-element-offsetleft-水平位移-element-offsettop-垂直位移"},{level:4,title:"1.15 Element.style 返回CSSStyleDeclaration实例,用于操作CSS",slug:"_1-15-element-style-返回cssstyledeclaration实例-用于操作css"},{level:4,title:"1.16 Element.children 类数组,所有子元素,Element.childElementCount 子元素个数",slug:"_1-16-element-children-类数组-所有子元素-element-childelementcount-子元素个数"},{level:4,title:"1.17 Element.firstElementChild 首个子元素,Element.lastElementChild 最后一个子元素",slug:"_1-17-element-firstelementchild-首个子元素-element-lastelementchild-最后一个子元素"},{level:4,title:"1.18 Element.nextElementSibling后一个兄弟元素节点,Element.previousElementSibling上一个兄弟元素节点",slug:"_1-18-element-nextelementsibling后一个兄弟元素节点-element-previouselementsibling上一个兄弟元素节点"},{level:3,title:"2、实例方法",slug:"_2、实例方法"},{level:4,title:"2.1 标签属性相关方法",slug:"_2-1-标签属性相关方法"},{level:5,title:"(1)getAttribute():读取某个属性的值",slug:"_1-getattribute-读取某个属性的值"},{level:5,title:"(2)getAttributeNames():返回当前元素的所有属性名",slug:"_2-getattributenames-返回当前元素的所有属性名"},{level:5,title:"(3)setAttribute():写入属性值",slug:"_3-setattribute-写入属性值"},{level:5,title:"(4)hasAttribute():某个属性是否存在",slug:"_4-hasattribute-某个属性是否存在"},{level:5,title:"(5)hasAttributes():当前元素是否有属性",slug:"_5-hasattributes-当前元素是否有属性"},{level:5,title:"(6)removeAttribute():删除属性",slug:"_6-removeattribute-删除属性"},{level:4,title:"2.2 Element.querySelector() 返回第一个匹配的子元素",slug:"_2-2-element-queryselector-返回第一个匹配的子元素"},{level:4,title:"2.3 Element.querySelectorAll() 返回NodeList实例,包含所有子元素",slug:"_2-3-element-queryselectorall-返回nodelist实例-包含所有子元素"},{level:4,title:"2.4 Element.getElementsByClassName() 通过class获取所有子元素",slug:"_2-4-element-getelementsbyclassname-通过class获取所有子元素"},{level:4,title:"2.5 Element.getElementsByTagName() 通过标签获取索引子元素",slug:"_2-5-element-getelementsbytagname-通过标签获取索引子元素"},{level:4,title:"2.6 Element.closest() 接受CSS选择器参数,返回最靠近的祖先节点",slug:"_2-6-element-closest-接受css选择器参数-返回最靠近的祖先节点"},{level:4,title:"2.7 Element.matches() 当前元素是否匹配给定的css选择器",slug:"_2-7-element-matches-当前元素是否匹配给定的css选择器"},{level:4,title:"2.8 事件相关方法",slug:"_2-8-事件相关方法"},{level:5,title:"(1)Element.addEventListener():添加事件的回调函数",slug:"_1-element-addeventlistener-添加事件的回调函数"},{level:5,title:"(2)Element.removeEventListener():移除事件监听函数",slug:"_2-element-removeeventlistener-移除事件监听函数"},{level:5,title:"(3)Element.dispatchEvent():触发事件",slug:"_3-element-dispatchevent-触发事件"},{level:4,title:"2.9 Element.scrollIntoView() 让元素滚动到浏览器可视区",slug:"_2-9-element-scrollintoview-让元素滚动到浏览器可视区"},{level:4,title:"2.10 Element.getBoundingClientRect() 返回元素大小、位置信息的对象",slug:"_2-10-element-getboundingclientrect-返回元素大小、位置信息的对象"},{level:4,title:"2.11 Element.getClientRects() 元素在页面上形成的所有矩形,类数组",slug:"_2-11-element-getclientrects-元素在页面上形成的所有矩形-类数组"},{level:4,title:"2.12 Element.insertAdjacentElement() 插入新节点到元素的指定位置",slug:"_2-12-element-insertadjacentelement-插入新节点到元素的指定位置"},{level:4,title:"2.13 Element.insertAdjacentHTML() 插入html字符串到指定位置,Element.insertAdjacentText() 插入text到指定位置",slug:"_2-13-element-insertadjacenthtml-插入html字符串到指定位置-element-insertadjacenttext-插入text到指定位置"},{level:4,title:"2.14 Element.remove() 移除元素",slug:"_2-14-element-remove-移除元素"},{level:4,title:"2.15 Element.focus() 将页面焦点转移到元素,Element.blur() 将焦点移除",slug:"_2-15-element-focus-将页面焦点转移到元素-element-blur-将焦点移除"},{level:4,title:"2.16 Element.click() 模拟点击事件",slug:"_2-16-element-click-模拟点击事件"},{level:2,title:"七、元素属性的操作",slug:"七、元素属性的操作"},{level:3,title:"1、Element.attributes 属性 (返回包含标签所有属性的类数组动态对象)",slug:"_1、element-attributes-属性-返回包含标签所有属性的类数组动态对象"},{level:3,title:"2、元素的标准属性",slug:"_2、元素的标准属性"},{level:3,title:"3、属性操作的标准方法",slug:"_3、属性操作的标准方法"},{level:4,title:"3.1 概述",slug:"_3-1-概述"},{level:4,title:"3.2 Element.getAttribute() 返回元素的指定属性值,字符串",slug:"_3-2-element-getattribute-返回元素的指定属性值-字符串"},{level:4,title:"3.3 Element.getAttributeNames() 返回一个数组,成员是元素的所有属性的名字",slug:"_3-3-element-getattributenames-返回一个数组-成员是元素的所有属性的名字"},{level:4,title:"3.4 Element.setAttribute() 为元素设置(新增)属性",slug:"_3-4-element-setattribute-为元素设置-新增-属性"},{level:4,title:"3.5 Element.hasAttribute() 是否包含指定属性",slug:"_3-5-element-hasattribute-是否包含指定属性"},{level:4,title:"3.6 Element.hasAttributes() 是否有任何的属性",slug:"_3-6-element-hasattributes-是否有任何的属性"},{level:4,title:"3.7 Element.removeAttribute() 移除指定属性",slug:"_3-7-element-removeattribute-移除指定属性"},{level:3,title:"4、dataset 属性 获取data-*自定义属性",slug:"_4、dataset-属性-获取data-自定义属性"},{level:2,title:"八、Text 节点和 DocumentFragment 节点",slug:"八、text-节点和-documentfragment-节点"},{level:3,title:"1、Text 节点的概念",slug:"_1、text-节点的概念"},{level:3,title:"2、Text 节点的属性",slug:"_2、text-节点的属性"},{level:4,title:"2.1 data 设置或读取文本节点内容",slug:"_2-1-data-设置或读取文本节点内容"},{level:4,title:"2.2 wholeText 当前文本和毗邻文本节,作为整体返回",slug:"_2-2-wholetext-当前文本和毗邻文本节-作为整体返回"},{level:4,title:"2.3 length 文本长度",slug:"_2-3-length-文本长度"},{level:4,title:"2.4 nextElementSibling 后一个兄弟元素节点,previousElementSibling 前一个兄弟元素节点",slug:"_2-4-nextelementsibling-后一个兄弟元素节点-previouselementsibling-前一个兄弟元素节点"},{level:3,title:"3、Text 节点的方法",slug:"_3、text-节点的方法"},{level:4,title:"3.1 appendData(),deleteData(),insertData(),replaceData(),substringData()",slug:"_3-1-appenddata-deletedata-insertdata-replacedata-substringdata"},{level:4,title:"3.2 remove() 移除Text节点",slug:"_3-2-remove-移除text节点"},{level:4,title:"3.3 splitText() 分割Text节点变为两个",slug:"_3-3-splittext-分割text节点变为两个"},{level:3,title:"4、DocumentFragment 文档片段节点",slug:"_4、documentfragment-文档片段节点"},{level:2,title:"八、CSS 操作",slug:"八、css-操作"},{level:3,title:"1、HTML 元素的 style 属性",slug:"_1、html-元素的-style-属性"},{level:3,title:"2、CSSStyleDeclaration 接口",slug:"_2、cssstyledeclaration-接口"},{level:4,title:"2.1 简介 - 用来操作元素的样式,可读写",slug:"_2-1-简介-用来操作元素的样式-可读写"},{level:4,title:"2.2 CSSStyleDeclaration 实例属性",slug:"_2-2-cssstyledeclaration-实例属性"},{level:5,title:"(1)CSSStyleDeclaration.cssText 用来读写所有行内样式",slug:"_1-cssstyledeclaration-csstext-用来读写所有行内样式"},{level:5,title:"(2)CSSStyleDeclaration.length 行内样式的长度",slug:"_2-cssstyledeclaration-length-行内样式的长度"},{level:5,title:"(3)CSSStyleDeclaration.parentRule 返回当前规则所属的那个样式块",slug:"_3-cssstyledeclaration-parentrule-返回当前规则所属的那个样式块"},{level:4,title:"2.3 CSSStyleDeclaration 实例方法",slug:"_2-3-cssstyledeclaration-实例方法"},{level:5,title:"(1)CSSStyleDeclaration.getPropertyPriority() 指定样式有没有设置important优先级",slug:"_1-cssstyledeclaration-getpropertypriority-指定样式有没有设置important优先级"},{level:5,title:"(2)CSSStyleDeclaration.getPropertyValue() 返回指定样式的值",slug:"_2-cssstyledeclaration-getpropertyvalue-返回指定样式的值"},{level:5,title:"(3)CSSStyleDeclaration.item() 返回指定位置的CSS属性名",slug:"_3-cssstyledeclaration-item-返回指定位置的css属性名"},{level:5,title:"(4)CSSStyleDeclaration.removeProperty() 移除指定CSS属性,并返回原来的值",slug:"_4-cssstyledeclaration-removeproperty-移除指定css属性-并返回原来的值"},{level:5,title:"(5)CSSStyleDeclaration.setProperty() 设置新的 CSS 属性",slug:"_5-cssstyledeclaration-setproperty-设置新的-css-属性"},{level:3,title:"3、CSS 模块的侦测(判断浏览器是否支持某个样式)",slug:"_3、css-模块的侦测-判断浏览器是否支持某个样式"},{level:3,title:"4、原生CSS 对象",slug:"_4、原生css-对象"},{level:4,title:"4.1 CSS.escape() 转义CSS选择器里的特殊字符",slug:"_4-1-css-escape-转义css选择器里的特殊字符"},{level:4,title:"4.2 CSS.supports() 当前环境是否支持某一句 CSS 规则",slug:"_4-2-css-supports-当前环境是否支持某一句-css-规则"},{level:3,title:"5、window.getComputedStyle() 返回元素最终样式",slug:"_5、window-getcomputedstyle-返回元素最终样式"},{level:3,title:"6、CSS 伪元素样式的获取",slug:"_6、css-伪元素样式的获取"},{level:3,title:"7、StyleSheet 接口",slug:"_7、stylesheet-接口"},{level:4,title:"7.1 概述",slug:"_7-1-概述"},{level:4,title:"7.2 实例属性",slug:"_7-2-实例属性"},{level:5,title:"(1)StyleSheet.disabled 样式表是否处于禁用状态,可读写",slug:"_1-stylesheet-disabled-样式表是否处于禁用状态-可读写"},{level:5,title:"(2)Stylesheet.href 返回样式表的网址",slug:"_2-stylesheet-href-返回样式表的网址"},{level:5,title:"(3)StyleSheet.media 返回一个媒介类数组",slug:"_3-stylesheet-media-返回一个媒介类数组"},{level:5,title:"(4)StyleSheet.title 返回样式表的title属性",slug:"_4-stylesheet-title-返回样式表的title属性"},{level:5,title:"(5)StyleSheet.type 返回样式表的type属性",slug:"_5-stylesheet-type-返回样式表的type属性"},{level:5,title:"(6)StyleSheet.parentStyleSheet 返回父样式表,当前样式表是通过@import加载才有值,否则null",slug:"_6-stylesheet-parentstylesheet-返回父样式表-当前样式表是通过-import加载才有值-否则null"},{level:5,title:"(7)StyleSheet.ownerNode 返回样式表所在的DOM节点",slug:"_7-stylesheet-ownernode-返回样式表所在的dom节点"},{level:5,title:"(8)CSSStyleSheet.cssRules 返回一个包含所有css规则的类数组",slug:"_8-cssstylesheet-cssrules-返回一个包含所有css规则的类数组"},{level:5,title:"(9)CSSStyleSheet.ownerRule 规则所有者",slug:"_9-cssstylesheet-ownerrule-规则所有者"},{level:4,title:"7.3 实例方法",slug:"_7-3-实例方法"},{level:5,title:"(1)CSSStyleSheet.insertRule() 插入css规则",slug:"_1-cssstylesheet-insertrule-插入css规则"},{level:5,title:"(2)CSSStyleSheet.deleteRule() 移除css规则",slug:"_2-cssstylesheet-deleterule-移除css规则"},{level:3,title:"8、实例:添加样式表",slug:"_8、实例-添加样式表"},{level:3,title:"9、CSSRuleList 接口",slug:"_9、cssrulelist-接口"},{level:3,title:"10、CSSRule 接口",slug:"_10、cssrule-接口"},{level:4,title:"10.1 概述",slug:"_10-1-概述"},{level:4,title:"10.2 CSSRule 实例的属性",slug:"_10-2-cssrule-实例的属性"},{level:5,title:"(1)CSSRule.cssText",slug:"_1-cssrule-csstext"},{level:5,title:"(2)CSSRule.parentStyleSheet",slug:"_2-cssrule-parentstylesheet"},{level:5,title:"(3)CSSRule.parentRule",slug:"_3-cssrule-parentrule"},{level:5,title:"(4)CSSRule.type",slug:"_4-cssrule-type"},{level:4,title:"10.3 CSSStyleRule 接口",slug:"_10-3-cssstylerule-接口"},{level:5,title:"(1)CSSStyleRule.selectorText",slug:"_1-cssstylerule-selectortext"},{level:5,title:"(2)CSSStyleRule.style",slug:"_2-cssstylerule-style"},{level:4,title:"10.4 CSSMediaRule 接口",slug:"_10-4-cssmediarule-接口"},{level:3,title:"11、window.matchMedia()",slug:"_11、window-matchmedia"},{level:4,title:"11.1 基本用法",slug:"_11-1-基本用法"},{level:4,title:"11.2 MediaQueryList 接口的实例属性",slug:"_11-2-mediaquerylist-接口的实例属性"},{level:5,title:"(1)MediaQueryList.media",slug:"_1-mediaquerylist-media"},{level:5,title:"(2)MediaQueryList.matches",slug:"_2-mediaquerylist-matches"},{level:5,title:"(3)MediaQueryList.onchange",slug:"_3-mediaquerylist-onchange"},{level:4,title:"11.3 MediaQueryList 接口的实例方法",slug:"_11-3-mediaquerylist-接口的实例方法"},{level:3,title:"12、本章小结",slug:"_12、本章小结"},{level:2,title:"九、Mutation Observer API 监视DOM变动",slug:"九、mutation-observer-api-监视dom变动"},{level:3,title:"1、概述",slug:"_1、概述-2"},{level:3,title:"2、MutationObserver 构造函数 (使用方式)",slug:"_2、mutationobserver-构造函数-使用方式"},{level:3,title:"3、MutationObserver 的实例方法",slug:"_3、mutationobserver-的实例方法"},{level:4,title:"3.1 observe()",slug:"_3-1-observe"},{level:4,title:"3.2 disconnect(),takeRecords()",slug:"_3-2-disconnect-takerecords"},{level:3,title:"4、MutationRecord 对象 (变动记录)",slug:"_4、mutationrecord-对象-变动记录"},{level:3,title:"5、应用示例",slug:"_5、应用示例"},{level:4,title:"5.1 子元素的变动",slug:"_5-1-子元素的变动"},{level:4,title:"5.2 属性的变动",slug:"_5-2-属性的变动"},{level:4,title:"5.3 取代 DOMContentLoaded 事件",slug:"_5-3-取代-domcontentloaded-事件"},{level:6,title:"封装一个监听 DOM 生成的函数",slug:"封装一个监听-dom-生成的函数"},{level:2,title:"文档",slug:"文档"}],lastUpdated:"2022/12/14, 19:36:42",lastUpdatedTimestamp:1671017802e3},{title:"元素渲染",frontmatter:{title:"元素渲染",date:"2021-03-24T17:56:40.000Z",permalink:"/pages/b5d372/",categories:["《React》笔记","核心概念"],tags:["React"],author:{name:"heBody",link:"https://github.com/heBody"}},regularPath:"/%E3%80%8AReact%E3%80%8B%E7%AC%94%E8%AE%B0/01.%E6%A0%B8%E5%BF%83%E6%A6%82%E5%BF%B5/02.%E5%85%83%E7%B4%A0%E6%B8%B2%E6%9F%93.html",relativePath:"《React》笔记/01.核心概念/02.元素渲染.md",key:"v-48ef310c",path:"/pages/b5d372/",headers:[{level:2,title:"将一个元素渲染为 DOM",slug:"将一个元素渲染为-dom"},{level:2,title:"更新已渲染的元素",slug:"更新已渲染的元素"},{level:2,title:"React 只更新它需要更新的部分",slug:"react-只更新它需要更新的部分"}],lastUpdated:"2022/12/14, 19:36:42",lastUpdatedTimestamp:1671017802e3},{title:"JSX简介",frontmatter:{title:"JSX简介",date:"2021-03-24T17:56:40.000Z",permalink:"/pages/5df969/",categories:["《React》笔记","核心概念"],tags:["React"],author:{name:"heBody",link:"https://github.com/heBody"}},regularPath:"/%E3%80%8AReact%E3%80%8B%E7%AC%94%E8%AE%B0/01.%E6%A0%B8%E5%BF%83%E6%A6%82%E5%BF%B5/01.JSX%E7%AE%80%E4%BB%8B.html",relativePath:"《React》笔记/01.核心概念/01.JSX简介.md",key:"v-d9c25200",path:"/pages/5df969/",headers:[{level:2,title:"什么是JSX?",slug:"什么是jsx"},{level:2,title:"为什么使用JSX?",slug:"为什么使用jsx"},{level:2,title:"在 JSX 中嵌入表达式",slug:"在-jsx-中嵌入表达式"},{level:2,title:"JSX 也是一个表达式",slug:"jsx-也是一个表达式"},{level:2,title:"JSX 特定属性",slug:"jsx-特定属性"},{level:2,title:"使用 JSX 指定子元素",slug:"使用-jsx-指定子元素"},{level:2,title:"JSX 防止注入攻击",slug:"jsx-防止注入攻击"},{level:2,title:"JSX 表示对象",slug:"jsx-表示对象"}],lastUpdated:"2022/12/14, 19:36:42",lastUpdatedTimestamp:1671017802e3},{title:"组件&Props",frontmatter:{title:"组件&Props",date:"2021-03-24T17:56:40.000Z",permalink:"/pages/9ac43a/",categories:["《React》笔记","核心概念"],tags:["React"],author:{name:"heBody",link:"https://github.com/heBody"}},regularPath:"/%E3%80%8AReact%E3%80%8B%E7%AC%94%E8%AE%B0/01.%E6%A0%B8%E5%BF%83%E6%A6%82%E5%BF%B5/03.%E7%BB%84%E4%BB%B6&Props.html",relativePath:"《React》笔记/01.核心概念/03.组件&Props.md",key:"v-0d70c6ad",path:"/pages/9ac43a/",headers:[{level:2,title:"函数组件与 class 组件",slug:"函数组件与-class-组件"},{level:3,title:"1.函数组件",slug:"_1-函数组件"},{level:3,title:"2.class组件",slug:"_2-class组件"},{level:3,title:"函数组件与Class组件在事件处理上的一些区别",slug:"函数组件与class组件在事件处理上的一些区别"},{level:2,title:"渲染组件(父子组件传值)",slug:"渲染组件-父子组件传值"},{level:2,title:"组合组件(复用组件)",slug:"组合组件-复用组件"},{level:2,title:"提取组件(拆分组件)",slug:"提取组件-拆分组件"},{level:3,title:"props命名原则",slug:"props命名原则"},{level:3,title:"提取原则",slug:"提取原则"},{level:2,title:"Props 的只读性(不能修改Props)",slug:"props-的只读性-不能修改props"}],lastUpdated:"2022/12/14, 19:36:42",lastUpdatedTimestamp:1671017802e3},{title:"State&生命周期",frontmatter:{title:"State&生命周期",date:"2021-03-24T17:56:40.000Z",permalink:"/pages/1e3ca2/",categories:["《React》笔记","核心概念"],tags:["React"],author:{name:"heBody",link:"https://github.com/heBody"}},regularPath:"/%E3%80%8AReact%E3%80%8B%E7%AC%94%E8%AE%B0/01.%E6%A0%B8%E5%BF%83%E6%A6%82%E5%BF%B5/04.State&%E7%94%9F%E5%91%BD%E5%91%A8%E6%9C%9F.html",relativePath:"《React》笔记/01.核心概念/04.State&生命周期.md",key:"v-f632342c",path:"/pages/1e3ca2/",headers:[{level:2,title:"将函数组件转换成 class 组件",slug:"将函数组件转换成-class-组件"},{level:2,title:"向 class 组件中添加局部的 state",slug:"向-class-组件中添加局部的-state"},{level:2,title:"将生命周期方法添加到 Class 中",slug:"将生命周期方法添加到-class-中"},{level:2,title:"正确地使用 State",slug:"正确地使用-state"},{level:3,title:"不要直接修改 State",slug:"不要直接修改-state"},{level:3,title:"State 的更新可能是异步的",slug:"state-的更新可能是异步的"},{level:3,title:"State 的更新会被合并",slug:"state-的更新会被合并"},{level:2,title:"数据是向下流动的(单向数据流)",slug:"数据是向下流动的-单向数据流"},{level:4,title:"每个组件都是真正独立的。",slug:"每个组件都是真正独立的。"}],lastUpdated:"2022/12/14, 19:36:42",lastUpdatedTimestamp:1671017802e3},{title:"浏览器模型",frontmatter:{title:"浏览器模型",date:"2020-01-12T11:49:16.000Z",permalink:"/pages/bab4930124ad2c10",categories:["《JavaScript教程》笔记"],tags:["JavaScript"],author:{name:"heBody",link:"https://github.com/heBody"}},regularPath:"/%E3%80%8AJavaScript%E6%95%99%E7%A8%8B%E3%80%8B%E7%AC%94%E8%AE%B0/07.%E6%B5%8F%E8%A7%88%E5%99%A8%E6%A8%A1%E5%9E%8B.html",relativePath:"《JavaScript教程》笔记/07.浏览器模型.md",key:"v-24027de6",path:"/pages/bab4930124ad2c10/",headers:[{level:2,title:"一、浏览器环境概述",slug:"一、浏览器环境概述"},{level:3,title:"1、代码嵌入网页的方法",slug:"_1、代码嵌入网页的方法"},{level:4,title:"1.1 script 元素嵌入代码",slug:"_1-1-script-元素嵌入代码"},{level:4,title:"1.2 script 元素加载外部脚本",slug:"_1-2-script-元素加载外部脚本"},{level:4,title:"1.3 事件属性",slug:"_1-3-事件属性"},{level:4,title:"1.4 URL 协议",slug:"_1-4-url-协议"},{level:3,title:"2、script 元素",slug:"_2、script-元素"},{level:4,title:"2.1 工作原理",slug:"_2-1-工作原理"},{level:4,title:"2.2 defer 属性 (推迟执行外部js)",slug:"_2-2-defer-属性-推迟执行外部js"},{level:4,title:"2.3 async 属性(异步执行外部js)",slug:"_2-3-async-属性-异步执行外部js"},{level:4,title:"2.4 脚本的动态加载 (createElement script)",slug:"_2-4-脚本的动态加载-createelement-script"},{level:4,title:"2.5 加载使用的协议(http or https)",slug:"_2-5-加载使用的协议-http-or-https"},{level:3,title:"3、浏览器的组成",slug:"_3、浏览器的组成"},{level:4,title:"3.2 渲染引擎",slug:"_3-2-渲染引擎"},{level:4,title:"3.2 重流和重绘",slug:"_3-2-重流和重绘"},{level:4,title:"3.3 JavaScript 引擎",slug:"_3-3-javascript-引擎"},{level:2,title:"二、window 对象",slug:"二、window-对象"},{level:3,title:"1、概述",slug:"_1、概述"},{level:3,title:"2、window 对象的属性",slug:"_2、window-对象的属性"},{level:4,title:"2.1 window.name 浏览器窗口的名字,默认空字符串",slug:"_2-1-window-name-浏览器窗口的名字-默认空字符串"},{level:4,title:"2.2 window.closed 窗口是否关闭,window.opener 打开当前窗口的父窗口对象",slug:"_2-2-window-closed-窗口是否关闭-window-opener-打开当前窗口的父窗口对象"},{level:4,title:"2.3 window.self,window.window 都指向窗口本身,只读",slug:"_2-3-window-self-window-window-都指向窗口本身-只读"},{level:4,title:"2.4 window.frames 类数组(i)frame集合,window.length返回(i)frame总数",slug:"_2-4-window-frames-类数组-i-frame集合-window-length返回-i-frame总数"},{level:4,title:"2.5 window.frameElement 框架元素",slug:"_2-5-window-frameelement-框架元素"},{level:4,title:"2.6 window.top 顶层窗口,window.parent 父窗口",slug:"_2-6-window-top-顶层窗口-window-parent-父窗口"},{level:4,title:"2.7 window.status 读写状态栏文本",slug:"_2-7-window-status-读写状态栏文本"},{level:4,title:"2.8 window.devicePixelRatio 样式像素与物理像素比",slug:"_2-8-window-devicepixelratio-样式像素与物理像素比"},{level:4,title:"2.9 位置大小属性",slug:"_2-9-位置大小属性"},{level:5,title:"(1)window.screenX,window.screenY 窗口与屏幕左上角的X、Y距离",slug:"_1-window-screenx-window-screeny-窗口与屏幕左上角的x、y距离"},{level:5,title:"(2) window.innerHeight,window.innerWidth 视口的宽高",slug:"_2-window-innerheight-window-innerwidth-视口的宽高"},{level:5,title:"(3)window.outerHeight,window.outerWidth 整体窗口宽高",slug:"_3-window-outerheight-window-outerwidth-整体窗口宽高"},{level:5,title:"(4)window.scrollX,window.scrollY 窗口水平/垂直滚动距离",slug:"_4-window-scrollx-window-scrolly-窗口水平-垂直滚动距离"},{level:5,title:"(5)window.pageXOffset,window.pageYOffset 别名,同(4),",slug:"_5-window-pagexoffset-window-pageyoffset-别名-同-4"},{level:4,title:"2.10 组件属性 (浏览器的组件对象,如地址栏等)",slug:"_2-10-组件属性-浏览器的组件对象-如地址栏等"},{level:4,title:"2.11 全局对象属性",slug:"_2-11-全局对象属性"},{level:4,title:"2.12 window.isSecureContext 是否在加密环境,https协议为true",slug:"_2-12-window-issecurecontext-是否在加密环境-https协议为true"},{level:3,title:"3、window 对象的方法",slug:"_3、window-对象的方法"},{level:4,title:"3.1 window.alert(),window.prompt(),window.confirm()",slug:"_3-1-window-alert-window-prompt-window-confirm"},{level:4,title:"3.2 window.open(), window.close(),window.stop()",slug:"_3-2-window-open-window-close-window-stop"},{level:4,title:"3.3 window.moveTo() 移动窗口,window.moveBy() 移动窗口到相对位置",slug:"_3-3-window-moveto-移动窗口-window-moveby-移动窗口到相对位置"},{level:4,title:"3.4 window.resizeTo() 缩放窗口到,window.resizeBy() 缩放窗口-相对大小",slug:"_3-4-window-resizeto-缩放窗口到-window-resizeby-缩放窗口-相对大小"},{level:4,title:"3.5 window.scrollTo(),window.scroll(),window.scrollBy()",slug:"_3-5-window-scrollto-window-scroll-window-scrollby"},{level:4,title:"3.6 window.print() 打印机对话框",slug:"_3-6-window-print-打印机对话框"},{level:4,title:"3.7 window.focus(),window.blur()",slug:"_3-7-window-focus-window-blur"},{level:4,title:"3.8 window.getSelection() 获取用户选中文本",slug:"_3-8-window-getselection-获取用户选中文本"},{level:4,title:"3.9 window.getComputedStyle() 返回元素最终样式,window.matchMedia()",slug:"_3-9-window-getcomputedstyle-返回元素最终样式-window-matchmedia"},{level:4,title:"3.10 window.requestAnimationFrame() 将回调函数推迟到重流时执行",slug:"_3-10-window-requestanimationframe-将回调函数推迟到重流时执行"},{level:4,title:"3.11 window.requestIdleCallback() 将回调函数推迟到系统空闲时执行",slug:"_3-11-window-requestidlecallback-将回调函数推迟到系统空闲时执行"},{level:3,title:"4、事件",slug:"_4、事件"},{level:4,title:"4.1 load 事件和 onload 属性",slug:"_4-1-load-事件和-onload-属性"},{level:4,title:"4.2 error 事件和 onerror 属性",slug:"_4-2-error-事件和-onerror-属性"},{level:4,title:"4.3 window 对象的事件监听属性",slug:"_4-3-window-对象的事件监听属性"},{level:3,title:"5、多窗口操作",slug:"_5、多窗口操作"},{level:4,title:"5.1 窗口的引用",slug:"_5-1-窗口的引用"},{level:4,title:"5.2 iframe 元素",slug:"_5-2-iframe-元素"},{level:4,title:"5.3 window.frames 属性",slug:"_5-3-window-frames-属性"},{level:2,title:"三、Navigator 对象,Screen 对象",slug:"三、navigator-对象-screen-对象"},{level:3,title:"1、Navigator 对象的属性",slug:"_1、navigator-对象的属性"},{level:4,title:"1.1 Navigator.userAgent 浏览器厂商和版本",slug:"_1-1-navigator-useragent-浏览器厂商和版本"},{level:4,title:"1.2 Navigator.plugins 浏览器插件",slug:"_1-2-navigator-plugins-浏览器插件"},{level:4,title:"1.3 Navigator.platform 操作系统信息",slug:"_1-3-navigator-platform-操作系统信息"},{level:4,title:"1.4 Navigator.onLine 是否在线",slug:"_1-4-navigator-online-是否在线"},{level:4,title:"1.5 Navigator.language 首选语言,Navigator.languages 可以接受的语言,数组",slug:"_1-5-navigator-language-首选语言-navigator-languages-可以接受的语言-数组"},{level:4,title:"1.6 Navigator.geolocation 地理位置",slug:"_1-6-navigator-geolocation-地理位置"},{level:4,title:"1.7 Navigator.cookieEnabled 浏览器Cookie是否打开",slug:"_1-7-navigator-cookieenabled-浏览器cookie是否打开"},{level:3,title:"2、Navigator 对象的方法",slug:"_2、navigator-对象的方法"},{level:4,title:"2.1 Navigator.javaEnabled() 是否能运行 Java Applet 小程序",slug:"_2-1-navigator-javaenabled-是否能运行-java-applet-小程序"},{level:4,title:"2.1 Navigator.sendBeacon() 用于向服务器异步发送数据",slug:"_2-1-navigator-sendbeacon-用于向服务器异步发送数据"},{level:3,title:"3、Screen 对象 (屏幕信息对象)",slug:"_3、screen-对象-屏幕信息对象"},{level:2,title:"四、Cookie",slug:"四、cookie"},{level:3,title:"1、概述",slug:"_1、概述-2"},{level:3,title:"2、Cookie 与 HTTP 协议",slug:"_2、cookie-与-http-协议"},{level:4,title:"2.1 HTTP 回应:Cookie 的生成",slug:"_2-1-http-回应-cookie-的生成"},{level:4,title:"2.2 HTTP 请求:Cookie 的发送",slug:"_2-2-http-请求-cookie-的发送"},{level:3,title:"3、Cookie 的属性",slug:"_3、cookie-的属性"},{level:4,title:"3.1 Expires 有效期,Max-Age 最大寿命,秒数",slug:"_3-1-expires-有效期-max-age-最大寿命-秒数"},{level:4,title:"3.2 Domain 域名,Path 路径",slug:"_3-2-domain-域名-path-路径"},{level:4,title:"3.3 Secure 加密协议https下有效,HttpOnly 只有http请求能拿到",slug:"_3-3-secure-加密协议https下有效-httponly-只有http请求能拿到"},{level:4,title:"3.4 SameSite 防止 CSRF 攻击和用户追踪",slug:"_3-4-samesite-防止-csrf-攻击和用户追踪"},{level:3,title:"4、document.cookie 用于读写当前网页的 Cookie",slug:"_4、document-cookie-用于读写当前网页的-cookie"},{level:2,title:"五、XMLHttpRequest 对象",slug:"五、xmlhttprequest-对象"},{level:3,title:"1、简介",slug:"_1、简介"},{level:3,title:"2、XMLHttpRequest 的实例属性",slug:"_2、xmlhttprequest-的实例属性"},{level:4,title:"2.1 XMLHttpRequest.readyState 实例对象的当前状态码",slug:"_2-1-xmlhttprequest-readystate-实例对象的当前状态码"},{level:4,title:"2.2 XMLHttpRequest.onreadystatechange 监听状态变化",slug:"_2-2-xmlhttprequest-onreadystatechange-监听状态变化"},{level:4,title:"2.3 XMLHttpRequest.response 响应的数据体",slug:"_2-3-xmlhttprequest-response-响应的数据体"},{level:4,title:"2.4 XMLHttpRequest.responseType 响应数据类型",slug:"_2-4-xmlhttprequest-responsetype-响应数据类型"},{level:4,title:"2.5 XMLHttpRequest.responseText 响应文本",slug:"_2-5-xmlhttprequest-responsetext-响应文本"},{level:4,title:"2.6 XMLHttpRequest.responseXML 响应HTML或XML文档",slug:"_2-6-xmlhttprequest-responsexml-响应html或xml文档"},{level:4,title:"2.7 XMLHttpRequest.responseURL 发送数据的服务器网址",slug:"_2-7-xmlhttprequest-responseurl-发送数据的服务器网址"},{level:4,title:"2.8 XMLHttpRequest.status 状态码,XMLHttpRequest.statusText 状态提示字符串",slug:"_2-8-xmlhttprequest-status-状态码-xmlhttprequest-statustext-状态提示字符串"},{level:4,title:"2.9 XMLHttpRequest.timeout 超时时间(毫秒),XMLHttpRequestEventTarget.ontimeout 超时函数",slug:"_2-9-xmlhttprequest-timeout-超时时间-毫秒-xmlhttprequesteventtarget-ontimeout-超时函数"},{level:4,title:"2.10 事件监听属性",slug:"_2-10-事件监听属性"},{level:4,title:"2.11 XMLHttpRequest.withCredentials 跨域请求时用户信息是否会包含在请求中",slug:"_2-11-xmlhttprequest-withcredentials-跨域请求时用户信息是否会包含在请求中"},{level:4,title:"2.12 XMLHttpRequest.upload 上传文件对象",slug:"_2-12-xmlhttprequest-upload-上传文件对象"},{level:3,title:"3、XMLHttpRequest 的实例方法",slug:"_3、xmlhttprequest-的实例方法"},{level:4,title:"3.1 XMLHttpRequest.open() 指定请求参数",slug:"_3-1-xmlhttprequest-open-指定请求参数"},{level:4,title:"3.2 XMLHttpRequest.send() 发送请求",slug:"_3-2-xmlhttprequest-send-发送请求"},{level:4,title:"3.3 XMLHttpRequest.setRequestHeader() 设置请求头",slug:"_3-3-xmlhttprequest-setrequestheader-设置请求头"},{level:4,title:"3.4 XMLHttpRequest.overrideMimeType() 覆盖返回的MIME类型",slug:"_3-4-xmlhttprequest-overridemimetype-覆盖返回的mime类型"},{level:4,title:"3.5 XMLHttpRequest.getResponseHeader() 获取响应头信息指定字段",slug:"_3-5-xmlhttprequest-getresponseheader-获取响应头信息指定字段"},{level:4,title:"3.6 XMLHttpRequest.getAllResponseHeaders() 获取全部头信息",slug:"_3-6-xmlhttprequest-getallresponseheaders-获取全部头信息"},{level:4,title:"3.7 XMLHttpRequest.abort() 终止请求",slug:"_3-7-xmlhttprequest-abort-终止请求"},{level:3,title:"4、XMLHttpRequest 实例的事件",slug:"_4、xmlhttprequest-实例的事件"},{level:4,title:"4.1 readyStateChange 事件 (状态改变事件)",slug:"_4-1-readystatechange-事件-状态改变事件"},{level:4,title:"4.2 progress 事件 (请求中,进度事件)",slug:"_4-2-progress-事件-请求中-进度事件"},{level:4,title:"4.3 load 事件、error 事件、abort 事件 (请求完成,请求错误,请求终止)",slug:"_4-3-load-事件、error-事件、abort-事件-请求完成-请求错误-请求终止"},{level:4,title:"4.4 loadend 事件 (请求结束,无论是否成功)",slug:"_4-4-loadend-事件-请求结束-无论是否成功"},{level:4,title:"4.5 timeout 事件(请求超时)",slug:"_4-5-timeout-事件-请求超时"},{level:3,title:"5、Navigator.sendBeacon() 卸载网页时发送数据",slug:"_5、navigator-sendbeacon-卸载网页时发送数据"},{level:2,title:"六、同源限制",slug:"六、同源限制"},{level:3,title:"1、概述",slug:"_1、概述-3"},{level:4,title:"1.1 含义",slug:"_1-1-含义"},{level:4,title:"1.2 目的",slug:"_1-2-目的"},{level:4,title:"1.3 限制范围",slug:"_1-3-限制范围"},{level:3,title:"2、Cookie",slug:"_2、cookie"},{level:3,title:"3、iframe 和多窗口通信",slug:"_3、iframe-和多窗口通信"},{level:4,title:"3.1 片段识别符",slug:"_3-1-片段识别符"},{level:4,title:"3.2 window.postMessage()",slug:"_3-2-window-postmessage"},{level:4,title:"3.3 LocalStorage",slug:"_3-3-localstorage"},{level:3,title:"4、AJAX",slug:"_4、ajax"},{level:4,title:"4.1 JSONP",slug:"_4-1-jsonp"},{level:4,title:"4.2 WebSocket",slug:"_4-2-websocket"},{level:4,title:"4.3 CORS",slug:"_4-3-cors"},{level:2,title:"七、CORS 通信",slug:"七、cors-通信"},{level:3,title:"1、简介",slug:"_1、简介-2"},{level:3,title:"2、两种请求",slug:"_2、两种请求"},{level:3,title:"3、简单请求",slug:"_3、简单请求"},{level:4,title:"3.1 基本流程",slug:"_3-1-基本流程"},{level:4,title:"3.2 withCredentials 属性",slug:"_3-2-withcredentials-属性"},{level:3,title:"4、非简单请求",slug:"_4、非简单请求"},{level:4,title:"4.1 预检请求",slug:"_4-1-预检请求"},{level:4,title:"4.2 预检请求的回应",slug:"_4-2-预检请求的回应"},{level:4,title:"4.3 浏览器的正常请求和回应",slug:"_4-3-浏览器的正常请求和回应"},{level:3,title:"5、与 JSONP 的比较",slug:"_5、与-jsonp-的比较"},{level:2,title:"八、Storage 接口",slug:"八、storage-接口"},{level:3,title:"1、概述",slug:"_1、概述-4"},{level:3,title:"2、属性和方法",slug:"_2、属性和方法"},{level:4,title:"2.1 Storage.setItem()",slug:"_2-1-storage-setitem"},{level:4,title:"2.2 Storage.getItem()",slug:"_2-2-storage-getitem"},{level:4,title:"2.3 Storage.removeItem()",slug:"_2-3-storage-removeitem"},{level:4,title:"2.4 Storage.clear()",slug:"_2-4-storage-clear"},{level:4,title:"2.5 Storage.key()",slug:"_2-5-storage-key"},{level:3,title:"3、storage 事件",slug:"_3、storage-事件"},{level:2,title:"九、History 对象",slug:"九、history-对象"},{level:3,title:"1、概述",slug:"_1、概述-5"},{level:3,title:"2、属性",slug:"_2、属性"},{level:3,title:"3、方法",slug:"_3、方法"},{level:4,title:"3.1 History.back()、History.forward()、History.go()",slug:"_3-1-history-back-、history-forward-、history-go"},{level:4,title:"3.2 History.pushState(),",slug:"_3-2-history-pushstate"},{level:4,title:"3.3 History.replaceState()",slug:"_3-3-history-replacestate"},{level:3,title:"4、popstate 事件",slug:"_4、popstate-事件"},{level:2,title:"十、Location 对象,URL 对象,URLSearchParams 对象",slug:"十、location-对象-url-对象-urlsearchparams-对象"},{level:3,title:"1、Location 对象",slug:"_1、location-对象"},{level:4,title:"1.1 属性",slug:"_1-1-属性"},{level:4,title:"1.2 方法",slug:"_1-2-方法"},{level:3,title:"2、URL 的编码和解码",slug:"_2、url-的编码和解码"},{level:4,title:"2.1 encodeURI()",slug:"_2-1-encodeuri"},{level:4,title:"2.2 encodeURIComponent()",slug:"_2-2-encodeuricomponent"},{level:4,title:"2.3 decodeURI()",slug:"_2-3-decodeuri"},{level:4,title:"2.4 decodeURIComponent()",slug:"_2-4-decodeuricomponent"},{level:3,title:"3、URL 接口",slug:"_3、url-接口"},{level:4,title:"3.1 构造函数",slug:"_3-1-构造函数"},{level:4,title:"3.2 实例属性",slug:"_3-2-实例属性"},{level:4,title:"3.3 静态方法",slug:"_3-3-静态方法"},{level:3,title:"4、URLSearchParams 对象",slug:"_4、urlsearchparams-对象"},{level:4,title:"4.1 概述",slug:"_4-1-概述"},{level:4,title:"4.2 URLSearchParams.toString()",slug:"_4-2-urlsearchparams-tostring"},{level:4,title:"4.3 URLSearchParams.append()",slug:"_4-3-urlsearchparams-append"},{level:4,title:"4.4 URLSearchParams.delete()",slug:"_4-4-urlsearchparams-delete"},{level:4,title:"4.5 URLSearchParams.has()",slug:"_4-5-urlsearchparams-has"},{level:4,title:"4.6 URLSearchParams.set()",slug:"_4-6-urlsearchparams-set"},{level:4,title:"4.7 URLSearchParams.get(),URLSearchParams.getAll()",slug:"_4-7-urlsearchparams-get-urlsearchparams-getall"},{level:4,title:"4.8 URLSearchParams.sort()",slug:"_4-8-urlsearchparams-sort"},{level:4,title:"4.9 URLSearchParams.keys(),URLSearchParams.values(),URLSearchParams.entries()",slug:"_4-9-urlsearchparams-keys-urlsearchparams-values-urlsearchparams-entries"},{level:2,title:"十一、ArrayBuffer 对象,Blob 对象",slug:"十一、arraybuffer-对象-blob-对象"},{level:3,title:"1、ArrayBuffer 对象",slug:"_1、arraybuffer-对象"},{level:3,title:"2、Blob 对象",slug:"_2、blob-对象"},{level:4,title:"2.1 简介",slug:"_2-1-简介"},{level:4,title:"2.2 实例属性和实例方法",slug:"_2-2-实例属性和实例方法"},{level:4,title:"2.3 获取文件信息",slug:"_2-3-获取文件信息"},{level:4,title:"2.4 下载文件",slug:"_2-4-下载文件"},{level:4,title:"2.5 生成 URL",slug:"_2-5-生成-url"},{level:4,title:"2.6 读取文件",slug:"_2-6-读取文件"},{level:2,title:"十二、File 对象,FileList 对象,FileReader 对象",slug:"十二、file-对象-filelist-对象-filereader-对象"},{level:3,title:"1、File 对象",slug:"_1、file-对象"},{level:4,title:"1.1 构造函数",slug:"_1-1-构造函数"},{level:4,title:"1.2 实例属性和实例方法",slug:"_1-2-实例属性和实例方法"},{level:3,title:"2、FileList 对象",slug:"_2、filelist-对象"},{level:3,title:"3、FileReader 对象",slug:"_3、filereader-对象"},{level:2,title:"十三、表单,FormData 对象",slug:"十三、表单-formdata-对象"},{level:3,title:"1、表单概述",slug:"_1、表单概述"},{level:3,title:"2、FormData 对象",slug:"_2、formdata-对象"},{level:4,title:"2.1 概述",slug:"_2-1-概述"},{level:4,title:"2.2 实例方法",slug:"_2-2-实例方法"},{level:3,title:"3、表单的内置验证",slug:"_3、表单的内置验证"},{level:4,title:"3.1 自动校验",slug:"_3-1-自动校验"},{level:4,title:"3.2 checkValidity()",slug:"_3-2-checkvalidity"},{level:4,title:"3.3 willValidate 属性",slug:"_3-3-willvalidate-属性"},{level:4,title:"3.4 validationMessage 属性",slug:"_3-4-validationmessage-属性"},{level:4,title:"3.5 setCustomValidity()",slug:"_3-5-setcustomvalidity"},{level:4,title:"3.6 validity 属性",slug:"_3-6-validity-属性"},{level:4,title:"3.7 表单的 novalidate 属性",slug:"_3-7-表单的-novalidate-属性"},{level:3,title:"4、enctype 属性",slug:"_4、enctype-属性"},{level:3,title:"5、文件上传",slug:"_5、文件上传"},{level:2,title:"十四、IndexedDB API",slug:"十四、indexeddb-api"},{level:3,title:"1、概述",slug:"_1、概述-6"},{level:3,title:"2、基本概念",slug:"_2、基本概念"},{level:3,title:"3、操作流程",slug:"_3、操作流程"},{level:4,title:"3.1 打开数据库",slug:"_3-1-打开数据库"},{level:4,title:"3.2 新建数据库",slug:"_3-2-新建数据库"},{level:4,title:"3.3 新增数据",slug:"_3-3-新增数据"},{level:4,title:"3.4 读取数据",slug:"_3-4-读取数据"},{level:4,title:"3.5 遍历数据",slug:"_3-5-遍历数据"},{level:4,title:"3.6 更新数据",slug:"_3-6-更新数据"},{level:4,title:"3.7 删除数据",slug:"_3-7-删除数据"},{level:4,title:"3.8 使用索引",slug:"_3-8-使用索引"},{level:3,title:"4、indexedDB 对象",slug:"_4、indexeddb-对象"},{level:4,title:"4.1 indexedDB.open()",slug:"_4-1-indexeddb-open"},{level:4,title:"4.2 indexedDB.deleteDatabase()",slug:"_4-2-indexeddb-deletedatabase"},{level:4,title:"4.3 indexedDB.cmp()",slug:"_4-3-indexeddb-cmp"},{level:3,title:"5、IDBRequest 对象",slug:"_5、idbrequest-对象"},{level:3,title:"6、IDBDatabase 对象",slug:"_6、idbdatabase-对象"},{level:4,title:"6.1 属性",slug:"_6-1-属性"},{level:4,title:"6.2 方法",slug:"_6-2-方法"},{level:3,title:"7、IDBObjectStore 对象",slug:"_7、idbobjectstore-对象"},{level:4,title:"7.1 属性",slug:"_7-1-属性"},{level:4,title:"7.2 方法",slug:"_7-2-方法"},{level:3,title:"8、IDBTransaction 对象",slug:"_8、idbtransaction-对象"},{level:3,title:"9、IDBIndex 对象",slug:"_9、idbindex-对象"},{level:3,title:"10、IDBCursor 对象",slug:"_10、idbcursor-对象"},{level:3,title:"11、IDBKeyRange 对象",slug:"_11、idbkeyrange-对象"},{level:2,title:"十五、Web Worker",slug:"十五、web-worker"},{level:3,title:"1、概述",slug:"_1、概述-7"},{level:3,title:"2、基本用法",slug:"_2、基本用法"},{level:4,title:"2.1 主线程",slug:"_2-1-主线程"},{level:4,title:"2.2 Worker 线程",slug:"_2-2-worker-线程"},{level:4,title:"2.3 Worker 加载脚本",slug:"_2-3-worker-加载脚本"},{level:4,title:"2.4 错误处理",slug:"_2-4-错误处理"},{level:4,title:"2.5 关闭 Worker",slug:"_2-5-关闭-worker"},{level:3,title:"3、数据通信",slug:"_3、数据通信"},{level:3,title:"4、同页面的 Web Worker",slug:"_4、同页面的-web-worker"},{level:3,title:"5、实例:Worker 线程完成轮询",slug:"_5、实例-worker-线程完成轮询"},{level:3,title:"6、实例: Worker 新建 Worker",slug:"_6、实例-worker-新建-worker"},{level:3,title:"7、API",slug:"_7、api"},{level:4,title:"7.1 主线程",slug:"_7-1-主线程"},{level:4,title:"7.2 Worker 线程",slug:"_7-2-worker-线程"},{level:2,title:"文档",slug:"文档"}],lastUpdated:"2022/12/14, 19:36:42",lastUpdatedTimestamp:1671017802e3},{title:"事件处理",frontmatter:{title:"事件处理",date:"2021-03-24T17:56:40.000Z",permalink:"/pages/f27775/",categories:["《React》笔记","核心概念"],tags:["React"],author:{name:"heBody",link:"https://github.com/heBody"}},regularPath:"/%E3%80%8AReact%E3%80%8B%E7%AC%94%E8%AE%B0/01.%E6%A0%B8%E5%BF%83%E6%A6%82%E5%BF%B5/05.%E4%BA%8B%E4%BB%B6%E5%A4%84%E7%90%86.html",relativePath:"《React》笔记/01.核心概念/05.事件处理.md",key:"v-35bece74",path:"/pages/f27775/",headers:[{level:2,title:"与传统HTML绑定事件的区别",slug:"与传统html绑定事件的区别"},{level:3,title:"阻止默认事件 (合成事件对象)",slug:"阻止默认事件-合成事件对象"},{level:2,title:"绑定事件的方式",slug:"绑定事件的方式"},{level:3,title:"事件命名规范",slug:"事件命名规范"},{level:2,title:"向事件处理程序传递参数",slug:"向事件处理程序传递参数"}],lastUpdated:"2022/12/14, 19:36:42",lastUpdatedTimestamp:1671017802e3},{title:"条件渲染",frontmatter:{title:"条件渲染",date:"2021-03-24T17:56:40.000Z",permalink:"/pages/8fcda8/",categories:["《React》笔记","核心概念"],tags:["React"],author:{name:"heBody",link:"https://github.com/heBody"}},regularPath:"/%E3%80%8AReact%E3%80%8B%E7%AC%94%E8%AE%B0/01.%E6%A0%B8%E5%BF%83%E6%A6%82%E5%BF%B5/06.%E6%9D%A1%E4%BB%B6%E6%B8%B2%E6%9F%93.html",relativePath:"《React》笔记/01.核心概念/06.条件渲染.md",key:"v-5138a674",path:"/pages/8fcda8/",headers:[{level:2,title:"元素变量",slug:"元素变量"},{level:2,title:"与运算符 &&",slug:"与运算符"},{level:2,title:"三目运算符",slug:"三目运算符"},{level:2,title:"阻止组件渲染",slug:"阻止组件渲染"}],lastUpdated:"2022/12/14, 19:36:42",lastUpdatedTimestamp:1671017802e3},{title:"列表&Key",frontmatter:{title:"列表&Key",date:"2021-03-24T17:56:40.000Z",permalink:"/pages/88f4b0/",categories:["《React》笔记","核心概念"],tags:["React"],author:{name:"heBody",link:"https://github.com/heBody"}},regularPath:"/%E3%80%8AReact%E3%80%8B%E7%AC%94%E8%AE%B0/01.%E6%A0%B8%E5%BF%83%E6%A6%82%E5%BF%B5/07.%E5%88%97%E8%A1%A8&Key.html",relativePath:"《React》笔记/01.核心概念/07.列表&Key.md",key:"v-6e6f09f5",path:"/pages/88f4b0/",headers:[{level:2,title:"渲染多个组件",slug:"渲染多个组件"},{level:2,title:"基础列表组件",slug:"基础列表组件"},{level:2,title:"key",slug:"key"},{level:2,title:"用 key 提取组件 (在map方法内设置key)",slug:"用-key-提取组件-在map方法内设置key"},{level:2,title:"",slug:""},{level:2,title:"key 只是在兄弟节点之间必须唯一",slug:"key-只是在兄弟节点之间必须唯一"},{level:3,title:"不能用key当props名传给子组件",slug:"不能用key当props名传给子组件"},{level:2,title:"在 JSX 中嵌入 map()",slug:"在-jsx-中嵌入-map"}],lastUpdated:"2022/12/14, 19:36:42",lastUpdatedTimestamp:1671017802e3},{title:"表单",frontmatter:{title:"表单",date:"2021-03-24T17:56:40.000Z",permalink:"/pages/002db7/",categories:["《React》笔记","核心概念"],tags:["React"],author:{name:"heBody",link:"https://github.com/heBody"}},regularPath:"/%E3%80%8AReact%E3%80%8B%E7%AC%94%E8%AE%B0/01.%E6%A0%B8%E5%BF%83%E6%A6%82%E5%BF%B5/08.%E8%A1%A8%E5%8D%95.html",relativePath:"《React》笔记/01.核心概念/08.表单.md",key:"v-95dfa2d2",path:"/pages/002db7/",headers:[{level:2,title:"受控组件(双向数据绑定)",slug:"受控组件-双向数据绑定"},{level:2,title:"textarea 标签(使用value定义值)",slug:"textarea-标签-使用value定义值"},{level:2,title:"select 标签 (value代替选中属性)",slug:"select-标签-value代替选中属性"},{level:3,title:"select多选",slug:"select多选"},{level:3,title:"小总结",slug:"小总结"},{level:2,title:"文件 input 标签 (非受控组件)",slug:"文件-input-标签-非受控组件"},{level:2,title:"处理多个输入",slug:"处理多个输入"},{level:2,title:"受控输入空值",slug:"受控输入空值"},{level:2,title:"受控组件的替代品 (非受控组件)",slug:"受控组件的替代品-非受控组件"},{level:2,title:"成熟的解决方案",slug:"成熟的解决方案"}],lastUpdated:"2022/12/14, 19:36:42",lastUpdatedTimestamp:1671017802e3},{title:"状态提升 (共享状态)",frontmatter:{title:"状态提升 (共享状态)",date:"2021-03-26T09:56:40.000Z",permalink:"/pages/f0e3d2/",categories:["《React》笔记","核心概念"],tags:["React"],author:{name:"heBody",link:"https://github.com/heBody"}},regularPath:"/%E3%80%8AReact%E3%80%8B%E7%AC%94%E8%AE%B0/01.%E6%A0%B8%E5%BF%83%E6%A6%82%E5%BF%B5/09.%E7%8A%B6%E6%80%81%E6%8F%90%E5%8D%87.html",relativePath:"《React》笔记/01.核心概念/09.状态提升.md",key:"v-c82e0618",path:"/pages/f0e3d2/",headers:[{level:3,title:"小结",slug:"小结"},{level:3,title:"React开发者工具(debug)",slug:"react开发者工具-debug"}],lastUpdated:"2022/12/14, 19:36:42",lastUpdatedTimestamp:1671017802e3},{title:"组合vs继承",frontmatter:{title:"组合vs继承",date:"2021-03-26T12:56:40.000Z",permalink:"/pages/9ae8e8/",categories:["《React》笔记","核心概念"],tags:["React"],author:{name:"heBody",link:"https://github.com/heBody"}},regularPath:"/%E3%80%8AReact%E3%80%8B%E7%AC%94%E8%AE%B0/01.%E6%A0%B8%E5%BF%83%E6%A6%82%E5%BF%B5/10.%E7%BB%84%E5%90%88vs%E7%BB%A7%E6%89%BF.html",relativePath:"《React》笔记/01.核心概念/10.组合vs继承.md",key:"v-2ee1cd15",path:"/pages/9ae8e8/",headers:[{level:2,title:"包含关系 (组件组合)",slug:"包含关系-组件组合"},{level:3,title:"props的children属性(类似vue的插槽)",slug:"props的children属性-类似vue的插槽"},{level:3,title:"props传入组件(类似vue命名插槽)",slug:"props传入组件-类似vue命名插槽"},{level:2,title:"特例关系(字符串与组件组合)",slug:"特例关系-字符串与组件组合"},{level:2,title:"class方式的组件组合",slug:"class方式的组件组合"},{level:2,title:"那么继承呢?(不推荐)",slug:"那么继承呢-不推荐"}],lastUpdated:"2022/12/14, 19:36:42",lastUpdatedTimestamp:1671017802e3},{title:"React哲学",frontmatter:{title:"React哲学",date:"2021-03-26T17:56:40.000Z",permalink:"/pages/c689bf/",categories:["《React》笔记","核心概念"],tags:["React"],author:{name:"heBody",link:"https://github.com/heBody"}},regularPath:"/%E3%80%8AReact%E3%80%8B%E7%AC%94%E8%AE%B0/01.%E6%A0%B8%E5%BF%83%E6%A6%82%E5%BF%B5/11.React%E5%93%B2%E5%AD%A6.html",relativePath:"《React》笔记/01.核心概念/11.React哲学.md",key:"v-d0f8bc20",path:"/pages/c689bf/",headers:[{level:2,title:"从设计稿开始",slug:"从设计稿开始"},{level:3,title:"第一步:将设计好的 UI 划分为组件层级",slug:"第一步-将设计好的-ui-划分为组件层级"},{level:3,title:"第二步:用 React 创建一个静态版本",slug:"第二步-用-react-创建一个静态版本"},{level:3,title:"第三步:确定 UI state 的最小(且完整)表示",slug:"第三步-确定-ui-state-的最小-且完整-表示"},{level:3,title:"第四步:确定 state 放置的位置",slug:"第四步-确定-state-放置的位置"},{level:3,title:"第五步:添加反向数据流",slug:"第五步-添加反向数据流"}],lastUpdated:"2022/12/14, 19:36:42",lastUpdatedTimestamp:1671017802e3},{title:"Hook概述",frontmatter:{title:"Hook概述",date:"2021-03-31T11:30:03.000Z",permalink:"/pages/4c13b9/",categories:["《React》笔记","Hook"],tags:["React"],author:{name:"heBody",link:"https://github.com/heBody"}},regularPath:"/%E3%80%8AReact%E3%80%8B%E7%AC%94%E8%AE%B0/03.Hook/01.Hook%E6%A6%82%E8%BF%B0.html",relativePath:"《React》笔记/03.Hook/01.Hook概述.md",key:"v-0215e4d1",path:"/pages/4c13b9/",headers:[{level:2,title:"什么是 Hook?",slug:"什么是-hook"},{level:2,title:"useState(状态钩子)",slug:"usestate-状态钩子"},{level:3,title:"声明多个 state 变量",slug:"声明多个-state-变量"},{level:2,title:"Effect Hook (副作用钩子)",slug:"effect-hook-副作用钩子"},{level:3,title:"useEffect(生命周期钩子)",slug:"useeffect-生命周期钩子"},{level:3,title:"“清除”副作用",slug:"清除-副作用"},{level:2,title:"Hook 使用规则",slug:"hook-使用规则"},{level:2,title:"自定义 Hook (Hook的使用逻辑封装)",slug:"自定义-hook-hook的使用逻辑封装"},{level:2,title:"其他 Hook",slug:"其他-hook"}],lastUpdated:"2022/12/14, 19:36:42",lastUpdatedTimestamp:1671017802e3},{title:"使用State Hook",frontmatter:{title:"使用State Hook",date:"2021-04-06T19:13:06.000Z",permalink:"/pages/82baa3/",categories:["《React》笔记","Hook"],tags:[null],author:{name:"heBody",link:"https://github.com/heBody"}},regularPath:"/%E3%80%8AReact%E3%80%8B%E7%AC%94%E8%AE%B0/03.Hook/02.%E4%BD%BF%E7%94%A8State%20Hook.html",relativePath:"《React》笔记/03.Hook/02.使用State Hook.md",key:"v-7119c973",path:"/pages/82baa3/",headers:[{level:2,title:"等价的Class组件示例",slug:"等价的class组件示例"},{level:3,title:"Hook 在 class 内部是不起作用",slug:"hook-在-class-内部是不起作用"},{level:2,title:"调用 useState 方法的时候做了什么?",slug:"调用-usestate-方法的时候做了什么"},{level:2,title:"useState 需要哪些参数?",slug:"usestate-需要哪些参数"},{level:2,title:"useState 方法的返回值是什么?",slug:"usestate-方法的返回值是什么"},{level:2,title:"理解useState",slug:"理解usestate"},{level:2,title:"使用多个 state 变量",slug:"使用多个-state-变量"}],lastUpdated:"2022/12/14, 19:36:42",lastUpdatedTimestamp:1671017802e3},{title:"高级指引",frontmatter:{title:"高级指引",date:"2021-03-25T19:46:01.000Z",permalink:"/pages/b7ec27/",categories:["《React》笔记","高级指引"],tags:["React"],author:{name:"heBody",link:"https://github.com/heBody"}},regularPath:"/%E3%80%8AReact%E3%80%8B%E7%AC%94%E8%AE%B0/02.%E9%AB%98%E7%BA%A7%E6%8C%87%E5%BC%95/01.%E9%AB%98%E7%BA%A7%E6%8C%87%E5%BC%95.html",relativePath:"《React》笔记/02.高级指引/01.高级指引.md",key:"v-432af96a",path:"/pages/b7ec27/",lastUpdated:"2022/12/14, 19:36:42",lastUpdatedTimestamp:1671017802e3},{title:"使用Effect Hook",frontmatter:{title:"使用Effect Hook",date:"2021-04-06T19:13:06.000Z",permalink:"/pages/72710d/",categories:["《React》笔记","Hook"],tags:[null],author:{name:"heBody",link:"https://github.com/heBody"}},regularPath:"/%E3%80%8AReact%E3%80%8B%E7%AC%94%E8%AE%B0/03.Hook/03.%E4%BD%BF%E7%94%A8Effect%20Hook.html",relativePath:"《React》笔记/03.Hook/03.使用Effect Hook.md",key:"v-406c1903",path:"/pages/72710d/",headers:[{level:2,title:"无需清除的 effect",slug:"无需清除的-effect"},{level:3,title:"使用 class 的示例",slug:"使用-class-的示例"},{level:3,title:"使用 Hook 的示例",slug:"使用-hook-的示例"},{level:3,title:"不同之处",slug:"不同之处"},{level:2,title:"需要清除的 effect",slug:"需要清除的-effect"},{level:3,title:"使用 Class 的示例",slug:"使用-class-的示例-2"},{level:3,title:"使用 Hook 的示例",slug:"使用-hook-的示例-2"},{level:2,title:"使用 Effect 的提示",slug:"使用-effect-的提示"},{level:3,title:"使用Hook的目的",slug:"使用hook的目的"},{level:3,title:"提示: 使用多个 Effect 实现关注点分离",slug:"提示-使用多个-effect-实现关注点分离"},{level:3,title:"解释: 为什么每次更新的时候都要运行 Effect",slug:"解释-为什么每次更新的时候都要运行-effect"},{level:3,title:"提示: 通过跳过 Effect 进行性能优化",slug:"提示-通过跳过-effect-进行性能优化"}],lastUpdated:"2022/12/14, 19:36:42",lastUpdatedTimestamp:1671017802e3},{title:"Hook规则",frontmatter:{title:"Hook规则",date:"2021-04-06T19:13:06.000Z",permalink:"/pages/723be7/",categories:["《React》笔记","Hook"],tags:[null],author:{name:"heBody",link:"https://github.com/heBody"}},regularPath:"/%E3%80%8AReact%E3%80%8B%E7%AC%94%E8%AE%B0/03.Hook/04.Hook%E8%A7%84%E5%88%99.html",relativePath:"《React》笔记/03.Hook/04.Hook规则.md",key:"v-5e7554b0",path:"/pages/723be7/",headers:[{level:2,title:"只在最顶层使用 Hook",slug:"只在最顶层使用-hook"},{level:2,title:"只在 React 函数中调用 Hook",slug:"只在-react-函数中调用-hook"},{level:2,title:"ESLint 插件",slug:"eslint-插件"}],lastUpdated:"2022/12/14, 19:36:42",lastUpdatedTimestamp:1671017802e3},{title:"自定义 Hook",frontmatter:{title:"自定义 Hook",date:"2021-04-06T19:13:06.000Z",permalink:"/pages/cf1018/",categories:["《React》笔记","Hook"],tags:[null],author:{name:"heBody",link:"https://github.com/heBody"}},regularPath:"/%E3%80%8AReact%E3%80%8B%E7%AC%94%E8%AE%B0/03.Hook/05.%E8%87%AA%E5%AE%9A%E4%B9%89%20Hook.html",relativePath:"《React》笔记/03.Hook/05.自定义 Hook.md",key:"v-dbcde7e8",path:"/pages/cf1018/",headers:[{level:2,title:"提取自定义 Hook",slug:"提取自定义-hook"},{level:2,title:"使用自定义 Hook",slug:"使用自定义-hook"},{level:3,title:"",slug:""},{level:3,title:"小总结",slug:"小总结"}],lastUpdated:"2022/12/14, 19:36:42",lastUpdatedTimestamp:1671017802e3},{title:"案例演示",frontmatter:{title:"案例演示",date:"2021-03-27T15:04:09.000Z",permalink:"/pages/87146f/",categories:["《React》笔记","案例演示"],tags:["React"],author:{name:"heBody",link:"https://github.com/heBody"}},regularPath:"/%E3%80%8AReact%E3%80%8B%E7%AC%94%E8%AE%B0/04.%E6%A1%88%E4%BE%8B%E6%BC%94%E7%A4%BA/01.%E6%A1%88%E4%BE%8B%E6%BC%94%E7%A4%BA.html",relativePath:"《React》笔记/04.案例演示/01.案例演示.md",key:"v-65020eec",path:"/pages/87146f/",headers:[{level:2,title:"案例代码",slug:"案例代码"},{level:2,title:"为什么不可变性在 React 中非常重要",slug:"为什么不可变性在-react-中非常重要"},{level:3,title:"直接修改数据",slug:"直接修改数据"},{level:3,title:"新数据替换旧数据",slug:"新数据替换旧数据"},{level:3,title:"简化复杂的功能",slug:"简化复杂的功能"},{level:3,title:"跟踪数据的改变",slug:"跟踪数据的改变"},{level:4,title:"",slug:""},{level:3,title:"确定在 React 中何时重新渲染",slug:"确定在-react-中何时重新渲染"},{level:3,title:"",slug:"-2"}],lastUpdated:"2022/12/14, 19:36:42",lastUpdatedTimestamp:1671017802e3},{title:"简介",frontmatter:{title:"简介",date:"2020-01-05T10:15:07.000Z",permalink:"/pages/e05dce83e5129785",author:"HuangYi",categories:["《TypeScript 从零实现 axios》","初识 TypeScript"],tags:["TypeScript"]},regularPath:"/%E3%80%8ATypeScript%20%E4%BB%8E%E9%9B%B6%E5%AE%9E%E7%8E%B0%20axios%E3%80%8B/01.%E5%88%9D%E8%AF%86%20TypeScript/01.%E7%AE%80%E4%BB%8B.html",relativePath:"《TypeScript 从零实现 axios》/01.初识 TypeScript/01.简介.md",key:"v-2cd86ced",path:"/pages/e05dce83e5129785/",headers:[{level:2,title:"TypeScript 的特点",slug:"typescript-的特点"},{level:2,title:"总结",slug:"总结"}],lastUpdated:"2022/12/14, 19:36:42",lastUpdatedTimestamp:1671017802e3},{title:"安装 TypeScript",frontmatter:{title:"安装 TypeScript",date:"2020-01-05T10:15:07.000Z",permalink:"/pages/064e0f7b6b6142c8",author:"HuangYi",categories:["《TypeScript 从零实现 axios》","初识 TypeScript"],tags:["TypeScript"]},regularPath:"/%E3%80%8ATypeScript%20%E4%BB%8E%E9%9B%B6%E5%AE%9E%E7%8E%B0%20axios%E3%80%8B/01.%E5%88%9D%E8%AF%86%20TypeScript/02.%E5%AE%89%E8%A3%85%20TypeScript.html",relativePath:"《TypeScript 从零实现 axios》/01.初识 TypeScript/02.安装 TypeScript.md",key:"v-21a55aea",path:"/pages/064e0f7b6b6142c8/",lastUpdated:"2022/12/14, 19:36:42",lastUpdatedTimestamp:1671017802e3},{title:"编写第一个 TypeScript 程序",frontmatter:{title:"编写第一个 TypeScript 程序",date:"2020-01-05T10:15:07.000Z",permalink:"/pages/c85249f40e7a3517",author:"HuangYi",categories:["《TypeScript 从零实现 axios》","初识 TypeScript"],tags:["TypeScript"]},regularPath:"/%E3%80%8ATypeScript%20%E4%BB%8E%E9%9B%B6%E5%AE%9E%E7%8E%B0%20axios%E3%80%8B/01.%E5%88%9D%E8%AF%86%20TypeScript/03.%E7%BC%96%E5%86%99%E7%AC%AC%E4%B8%80%E4%B8%AA%20TypeScript%20%E7%A8%8B%E5%BA%8F.html",relativePath:"《TypeScript 从零实现 axios》/01.初识 TypeScript/03.编写第一个 TypeScript 程序.md",key:"v-0db6efca",path:"/pages/c85249f40e7a3517/",headers:[{level:2,title:"编译代码",slug:"编译代码"},{level:2,title:"类型注解",slug:"类型注解"},{level:2,title:"接口",slug:"接口"},{level:2,title:"类",slug:"类"},{level:2,title:"总结",slug:"总结"}],lastUpdated:"2022/12/14, 19:36:42",lastUpdatedTimestamp:1671017802e3},{title:"基础类型",frontmatter:{title:"基础类型",date:"2020-01-05T10:17:47.000Z",permalink:"/pages/28672e2743bbc3a7",author:"HuangYi",categories:["《TypeScript 从零实现 axios》","TypeScript 常用语法"],tags:["TypeScript"]},regularPath:"/%E3%80%8ATypeScript%20%E4%BB%8E%E9%9B%B6%E5%AE%9E%E7%8E%B0%20axios%E3%80%8B/02.TypeScript%20%E5%B8%B8%E7%94%A8%E8%AF%AD%E6%B3%95/01.%E5%9F%BA%E7%A1%80%E7%B1%BB%E5%9E%8B.html",relativePath:"《TypeScript 从零实现 axios》/02.TypeScript 常用语法/01.基础类型.md",key:"v-4dd95fae",path:"/pages/28672e2743bbc3a7/",headers:[{level:2,title:"布尔值",slug:"布尔值"},{level:2,title:"数字",slug:"数字"},{level:2,title:"字符串",slug:"字符串"},{level:2,title:"数组",slug:"数组"},{level:2,title:"元组 Tuple",slug:"元组-tuple"},{level:2,title:"枚举",slug:"枚举"},{level:2,title:"any",slug:"any"},{level:2,title:"void",slug:"void"},{level:2,title:"null 和 undefined",slug:"null-和-undefined"},{level:2,title:"never",slug:"never"},{level:2,title:"object",slug:"object"},{level:2,title:"类型断言",slug:"类型断言"}],lastUpdated:"2022/12/14, 19:36:42",lastUpdatedTimestamp:1671017802e3},{title:"变量声明",frontmatter:{title:"变量声明",date:"2020-01-05T10:17:47.000Z",permalink:"/pages/54add7f5cf78088e",author:"HuangYi",categories:["《TypeScript 从零实现 axios》","TypeScript 常用语法"],tags:["TypeScript"]},regularPath:"/%E3%80%8ATypeScript%20%E4%BB%8E%E9%9B%B6%E5%AE%9E%E7%8E%B0%20axios%E3%80%8B/02.TypeScript%20%E5%B8%B8%E7%94%A8%E8%AF%AD%E6%B3%95/02.%E5%8F%98%E9%87%8F%E5%A3%B0%E6%98%8E.html",relativePath:"《TypeScript 从零实现 axios》/02.TypeScript 常用语法/02.变量声明.md",key:"v-0efbff3a",path:"/pages/54add7f5cf78088e/",headers:[{level:2,title:"var 声明",slug:"var-声明"},{level:3,title:"作用域规则",slug:"作用域规则"},{level:3,title:"捕获变量怪异之处",slug:"捕获变量怪异之处"},{level:2,title:"let 声明",slug:"let-声明"},{level:3,title:"块作用域",slug:"块作用域"},{level:3,title:"重定义及屏蔽",slug:"重定义及屏蔽"},{level:3,title:"块级作用域变量的获取",slug:"块级作用域变量的获取"},{level:2,title:"const 声明",slug:"const-声明"},{level:2,title:"let vs. const",slug:"let-vs-const"},{level:2,title:"解构",slug:"解构"},{level:3,title:"解构数组",slug:"解构数组"},{level:3,title:"对象解构",slug:"对象解构"},{level:3,title:"属性重命名",slug:"属性重命名"},{level:3,title:"默认值",slug:"默认值"},{level:3,title:"函数声明",slug:"函数声明"},{level:2,title:"展开",slug:"展开"}],lastUpdated:"2022/12/14, 19:36:42",lastUpdatedTimestamp:1671017802e3},{title:"函数",frontmatter:{title:"函数",date:"2020-01-05T10:17:47.000Z",permalink:"/pages/870a51ba2a9edfad",author:"HuangYi",categories:["《TypeScript 从零实现 axios》","TypeScript 常用语法"],tags:["TypeScript"]},regularPath:"/%E3%80%8ATypeScript%20%E4%BB%8E%E9%9B%B6%E5%AE%9E%E7%8E%B0%20axios%E3%80%8B/02.TypeScript%20%E5%B8%B8%E7%94%A8%E8%AF%AD%E6%B3%95/05.%E5%87%BD%E6%95%B0.html",relativePath:"《TypeScript 从零实现 axios》/02.TypeScript 常用语法/05.函数.md",key:"v-10986fa7",path:"/pages/870a51ba2a9edfad/",headers:[{level:2,title:"基本示例",slug:"基本示例"},{level:2,title:"函数类型",slug:"函数类型"},{level:3,title:"为函数定义类型",slug:"为函数定义类型"},{level:3,title:"书写完整函数类型",slug:"书写完整函数类型"},{level:3,title:"推断类型",slug:"推断类型"},{level:2,title:"可选参数和默认参数",slug:"可选参数和默认参数"},{level:3,title:"剩余参数",slug:"剩余参数"},{level:2,title:"this",slug:"this"},{level:3,title:"this 和箭头函数",slug:"this-和箭头函数"},{level:3,title:"this 参数",slug:"this-参数"},{level:3,title:"this 参数在回调函数里",slug:"this-参数在回调函数里"},{level:2,title:"重载",slug:"重载"}],lastUpdated:"2022/12/14, 19:36:42",lastUpdatedTimestamp:1671017802e3},{title:"接口",frontmatter:{title:"接口",date:"2020-01-05T10:17:47.000Z",permalink:"/pages/54ea89b497ec3bb3",author:"HuangYi",categories:["《TypeScript 从零实现 axios》","TypeScript 常用语法"],tags:["TypeScript"]},regularPath:"/%E3%80%8ATypeScript%20%E4%BB%8E%E9%9B%B6%E5%AE%9E%E7%8E%B0%20axios%E3%80%8B/02.TypeScript%20%E5%B8%B8%E7%94%A8%E8%AF%AD%E6%B3%95/03.%E6%8E%A5%E5%8F%A3.html",relativePath:"《TypeScript 从零实现 axios》/02.TypeScript 常用语法/03.接口.md",key:"v-134b6dac",path:"/pages/54ea89b497ec3bb3/",headers:[{level:2,title:"接口初探",slug:"接口初探"},{level:2,title:"可选属性",slug:"可选属性"},{level:2,title:"只读属性",slug:"只读属性"},{level:3,title:"readonly vs const",slug:"readonly-vs-const"},{level:2,title:"额外的属性检查",slug:"额外的属性检查"},{level:2,title:"函数类型",slug:"函数类型"},{level:2,title:"可索引的类型",slug:"可索引的类型"},{level:2,title:"类类型",slug:"类类型"},{level:3,title:"实现接口",slug:"实现接口"},{level:3,title:"类静态部分与实例部分的区别",slug:"类静态部分与实例部分的区别"},{level:2,title:"继承接口",slug:"继承接口"},{level:2,title:"混合类型",slug:"混合类型"},{level:2,title:"接口继承类",slug:"接口继承类"}],lastUpdated:"2022/12/14, 19:36:42",lastUpdatedTimestamp:1671017802e3},{title:"类",frontmatter:{title:"类",date:"2020-01-05T10:17:47.000Z",permalink:"/pages/fad060bd9a8bfac6",author:"HuangYi",categories:["《TypeScript 从零实现 axios》","TypeScript 常用语法"],tags:["TypeScript"]},regularPath:"/%E3%80%8ATypeScript%20%E4%BB%8E%E9%9B%B6%E5%AE%9E%E7%8E%B0%20axios%E3%80%8B/02.TypeScript%20%E5%B8%B8%E7%94%A8%E8%AF%AD%E6%B3%95/04.%E7%B1%BB.html",relativePath:"《TypeScript 从零实现 axios》/02.TypeScript 常用语法/04.类.md",key:"v-c0c0d1f6",path:"/pages/fad060bd9a8bfac6/",headers:[{level:2,title:"基本示例",slug:"基本示例"},{level:2,title:"继承",slug:"继承"},{level:2,title:"公共,私有与受保护的修饰符",slug:"公共-私有与受保护的修饰符"},{level:3,title:"默认为 public",slug:"默认为-public"},{level:3,title:"理解 private",slug:"理解-private"},{level:3,title:"理解 protected",slug:"理解-protected"},{level:2,title:"readonly 修饰符",slug:"readonly-修饰符"},{level:3,title:"参数属性",slug:"参数属性"},{level:2,title:"存取器",slug:"存取器"},{level:2,title:"静态属性",slug:"静态属性"},{level:2,title:"抽象类",slug:"抽象类"},{level:2,title:"高级技巧",slug:"高级技巧"},{level:3,title:"构造函数",slug:"构造函数"},{level:3,title:"把类当做接口使用",slug:"把类当做接口使用"}],lastUpdated:"2022/12/14, 19:36:42",lastUpdatedTimestamp:1671017802e3},{title:"泛型",frontmatter:{title:"泛型",date:"2020-01-05T10:17:47.000Z",permalink:"/pages/8045759ec4ad3c01",author:"HuangYi",categories:["《TypeScript 从零实现 axios》","TypeScript 常用语法"],tags:["TypeScript"]},regularPath:"/%E3%80%8ATypeScript%20%E4%BB%8E%E9%9B%B6%E5%AE%9E%E7%8E%B0%20axios%E3%80%8B/02.TypeScript%20%E5%B8%B8%E7%94%A8%E8%AF%AD%E6%B3%95/06.%E6%B3%9B%E5%9E%8B.html",relativePath:"《TypeScript 从零实现 axios》/02.TypeScript 常用语法/06.泛型.md",key:"v-443e8752",path:"/pages/8045759ec4ad3c01/",headers:[{level:2,title:"基础示例",slug:"基础示例"},{level:2,title:"使用泛型变量",slug:"使用泛型变量"},{level:2,title:"泛型类型",slug:"泛型类型"},{level:2,title:"泛型类",slug:"泛型类"},{level:2,title:"泛型约束",slug:"泛型约束"},{level:3,title:"在泛型约束中使用类型参数",slug:"在泛型约束中使用类型参数"}],lastUpdated:"2022/12/14, 19:36:42",lastUpdatedTimestamp:1671017802e3},{title:"类型推断",frontmatter:{title:"类型推断",date:"2020-01-05T10:17:47.000Z",permalink:"/pages/7279420c899c505d",author:"HuangYi",categories:["《TypeScript 从零实现 axios》","TypeScript 常用语法"],tags:["TypeScript"]},regularPath:"/%E3%80%8ATypeScript%20%E4%BB%8E%E9%9B%B6%E5%AE%9E%E7%8E%B0%20axios%E3%80%8B/02.TypeScript%20%E5%B8%B8%E7%94%A8%E8%AF%AD%E6%B3%95/07.%E7%B1%BB%E5%9E%8B%E6%8E%A8%E6%96%AD.html",relativePath:"《TypeScript 从零实现 axios》/02.TypeScript 常用语法/07.类型推断.md",key:"v-34858c9c",path:"/pages/7279420c899c505d/",headers:[{level:2,title:"基础",slug:"基础"},{level:2,title:"最佳通用类型",slug:"最佳通用类型"},{level:2,title:"上下文类型",slug:"上下文类型"}],lastUpdated:"2022/12/14, 19:36:42",lastUpdatedTimestamp:1671017802e3},{title:"高级类型",frontmatter:{title:"高级类型",date:"2020-01-05T10:17:47.000Z",permalink:"/pages/3fb6c2f52ab398e3",author:"HuangYi",categories:["《TypeScript 从零实现 axios》","TypeScript 常用语法"],tags:["TypeScript"]},regularPath:"/%E3%80%8ATypeScript%20%E4%BB%8E%E9%9B%B6%E5%AE%9E%E7%8E%B0%20axios%E3%80%8B/02.TypeScript%20%E5%B8%B8%E7%94%A8%E8%AF%AD%E6%B3%95/08.%E9%AB%98%E7%BA%A7%E7%B1%BB%E5%9E%8B.html",relativePath:"《TypeScript 从零实现 axios》/02.TypeScript 常用语法/08.高级类型.md",key:"v-34bf194f",path:"/pages/3fb6c2f52ab398e3/",headers:[{level:2,title:"交叉类型",slug:"交叉类型"},{level:2,title:"联合类型",slug:"联合类型"},{level:2,title:"类型保护",slug:"类型保护"},{level:3,title:"用户自定义的类型保护",slug:"用户自定义的类型保护"},{level:3,title:"typeof 类型保护",slug:"typeof-类型保护"},{level:3,title:"instanceof 类型保护",slug:"instanceof-类型保护"},{level:2,title:"可以为 null 的类型",slug:"可以为-null-的类型"},{level:3,title:"可选参数和可选属性",slug:"可选参数和可选属性"},{level:3,title:"类型保护和类型断言",slug:"类型保护和类型断言"},{level:2,title:"字符串字面量类型",slug:"字符串字面量类型"},{level:2,title:"总结",slug:"总结"}],lastUpdated:"2022/12/14, 19:36:42",lastUpdatedTimestamp:1671017802e3},{title:"需求分析",frontmatter:{title:"需求分析",date:"2020-01-05T10:56:02.000Z",permalink:"/pages/195af93fcc871b8b",author:"HuangYi",categories:["《TypeScript 从零实现 axios》","ts-axios 项目初始化"],tags:["TypeScript"]},regularPath:"/%E3%80%8ATypeScript%20%E4%BB%8E%E9%9B%B6%E5%AE%9E%E7%8E%B0%20axios%E3%80%8B/03.ts-axios%20%E9%A1%B9%E7%9B%AE%E5%88%9D%E5%A7%8B%E5%8C%96/01.%E9%9C%80%E6%B1%82%E5%88%86%E6%9E%90.html",relativePath:"《TypeScript 从零实现 axios》/03.ts-axios 项目初始化/01.需求分析.md",key:"v-19d47872",path:"/pages/195af93fcc871b8b/",headers:[{level:2,title:"Features",slug:"features"}],lastUpdated:"2022/12/14, 19:36:42",lastUpdatedTimestamp:1671017802e3},{title:"初始化项目",frontmatter:{title:"初始化项目",date:"2020-01-05T10:56:02.000Z",permalink:"/pages/6e11ac76475a2b3e",author:"HuangYi",categories:["《TypeScript 从零实现 axios》","ts-axios 项目初始化"],tags:["TypeScript"]},regularPath:"/%E3%80%8ATypeScript%20%E4%BB%8E%E9%9B%B6%E5%AE%9E%E7%8E%B0%20axios%E3%80%8B/03.ts-axios%20%E9%A1%B9%E7%9B%AE%E5%88%9D%E5%A7%8B%E5%8C%96/02.%E5%88%9D%E5%A7%8B%E5%8C%96%E9%A1%B9%E7%9B%AE.html",relativePath:"《TypeScript 从零实现 axios》/03.ts-axios 项目初始化/02.初始化项目.md",key:"v-f1863296",path:"/pages/6e11ac76475a2b3e/",headers:[{level:2,title:"创建代码仓库",slug:"创建代码仓库"},{level:2,title:"TypeScript library starter",slug:"typescript-library-starter"},{level:3,title:"使用方式",slug:"使用方式"},{level:3,title:"目录文件介绍",slug:"目录文件介绍"},{level:3,title:"优秀工具集成",slug:"优秀工具集成"},{level:3,title:"Npm Scripts",slug:"npm-scripts"},{level:2,title:"关联远程分支",slug:"关联远程分支"},{level:3,title:"拉取代码",slug:"拉取代码"},{level:3,title:"提交代码",slug:"提交代码"}],lastUpdated:"2022/12/14, 19:36:42",lastUpdatedTimestamp:1671017802e3},{title:"编写基础请求代码",frontmatter:{title:"编写基础请求代码",date:"2020-01-05T10:56:02.000Z",permalink:"/pages/acfe1e0b401fa984",author:"HuangYi",categories:["《TypeScript 从零实现 axios》","ts-axios 项目初始化"],tags:["TypeScript"]},regularPath:"/%E3%80%8ATypeScript%20%E4%BB%8E%E9%9B%B6%E5%AE%9E%E7%8E%B0%20axios%E3%80%8B/03.ts-axios%20%E9%A1%B9%E7%9B%AE%E5%88%9D%E5%A7%8B%E5%8C%96/03.%E7%BC%96%E5%86%99%E5%9F%BA%E7%A1%80%E8%AF%B7%E6%B1%82%E4%BB%A3%E7%A0%81.html",relativePath:"《TypeScript 从零实现 axios》/03.ts-axios 项目初始化/03.编写基础请求代码.md",key:"v-46712360",path:"/pages/acfe1e0b401fa984/",headers:[{level:2,title:"创建入口文件",slug:"创建入口文件"},{level:3,title:"编译配置文件 tsconfig.json",slug:"编译配置文件-tsconfig-json"},{level:3,title:"定义 AxiosRequestConfig 接口类型",slug:"定义-axiosrequestconfig-接口类型"},{level:2,title:"利用 XMLHttpRequest 发送请求",slug:"利用-xmlhttprequest-发送请求"},{level:3,title:"引入 xhr 模块",slug:"引入-xhr-模块"},{level:2,title:"demo 编写",slug:"demo-编写"},{level:3,title:"依赖安装",slug:"依赖安装"},{level:3,title:"编写 webpack 配置文件",slug:"编写-webpack-配置文件"},{level:3,title:"编写 server 文件",slug:"编写-server-文件"},{level:3,title:"编写 demo 代码",slug:"编写-demo-代码"},{level:3,title:"运行 demo",slug:"运行-demo"}],lastUpdated:"2022/12/14, 19:36:42",lastUpdatedTimestamp:1671017802e3},{title:"处理请求 url 参数",frontmatter:{title:"处理请求 url 参数",date:"2020-01-05T10:56:02.000Z",permalink:"/pages/1313dae575f6dddf",author:"HuangYi",categories:["《TypeScript 从零实现 axios》","ts-axios 基础功能实现"],tags:["TypeScript"]},regularPath:"/%E3%80%8ATypeScript%20%E4%BB%8E%E9%9B%B6%E5%AE%9E%E7%8E%B0%20axios%E3%80%8B/04.ts-axios%20%E5%9F%BA%E7%A1%80%E5%8A%9F%E8%83%BD%E5%AE%9E%E7%8E%B0/01.%E5%A4%84%E7%90%86%E8%AF%B7%E6%B1%82%20url%20%E5%8F%82%E6%95%B0.html",relativePath:"《TypeScript 从零实现 axios》/04.ts-axios 基础功能实现/01.处理请求 url 参数.md",key:"v-41e01991",path:"/pages/1313dae575f6dddf/",headers:[{level:2,title:"需求分析",slug:"需求分析"},{level:3,title:"参数值为数组",slug:"参数值为数组"},{level:3,title:"参数值为对象",slug:"参数值为对象"},{level:3,title:"参数值为 Date 类型",slug:"参数值为-date-类型"},{level:3,title:"特殊字符支持",slug:"特殊字符支持"},{level:3,title:"空值忽略",slug:"空值忽略"},{level:3,title:"丢弃 url 中的哈希标记",slug:"丢弃-url-中的哈希标记"},{level:3,title:"保留 url 中已存在的参数",slug:"保留-url-中已存在的参数"},{level:2,title:"buildURL 函数实现",slug:"buildurl-函数实现"},{level:2,title:"实现 url 参数处理逻辑",slug:"实现-url-参数处理逻辑"},{level:2,title:"demo 编写",slug:"demo-编写"}],lastUpdated:"2022/12/14, 19:36:42",lastUpdatedTimestamp:1671017802e3},{title:"处理请求 body 数据",frontmatter:{title:"处理请求 body 数据",date:"2020-01-05T10:56:02.000Z",permalink:"/pages/887cd0918e2543d8",author:"HuangYi",categories:["《TypeScript 从零实现 axios》","ts-axios 基础功能实现"],tags:["TypeScript"]},regularPath:"/%E3%80%8ATypeScript%20%E4%BB%8E%E9%9B%B6%E5%AE%9E%E7%8E%B0%20axios%E3%80%8B/04.ts-axios%20%E5%9F%BA%E7%A1%80%E5%8A%9F%E8%83%BD%E5%AE%9E%E7%8E%B0/02.%E5%A4%84%E7%90%86%E8%AF%B7%E6%B1%82%20body%20%E6%95%B0%E6%8D%AE.html",relativePath:"《TypeScript 从零实现 axios》/04.ts-axios 基础功能实现/02.处理请求 body 数据.md",key:"v-732405d2",path:"/pages/887cd0918e2543d8/",headers:[{level:2,title:"需求分析",slug:"需求分析"},{level:2,title:"transformRequest 函数实现",slug:"transformrequest-函数实现"},{level:2,title:"实现请求 body 处理逻辑",slug:"实现请求-body-处理逻辑"},{level:2,title:"编写 demo",slug:"编写-demo"}],lastUpdated:"2022/12/14, 19:36:42",lastUpdatedTimestamp:1671017802e3},{title:"处理请求 header",frontmatter:{title:"处理请求 header",date:"2020-01-05T10:56:02.000Z",permalink:"/pages/35c0ec1bb0b0faaf",author:"HuangYi",categories:["《TypeScript 从零实现 axios》","ts-axios 基础功能实现"],tags:["TypeScript"]},regularPath:"/%E3%80%8ATypeScript%20%E4%BB%8E%E9%9B%B6%E5%AE%9E%E7%8E%B0%20axios%E3%80%8B/04.ts-axios%20%E5%9F%BA%E7%A1%80%E5%8A%9F%E8%83%BD%E5%AE%9E%E7%8E%B0/03.%E5%A4%84%E7%90%86%E8%AF%B7%E6%B1%82%20header.html",relativePath:"《TypeScript 从零实现 axios》/04.ts-axios 基础功能实现/03.处理请求 header.md",key:"v-760c8ba6",path:"/pages/35c0ec1bb0b0faaf/",headers:[{level:2,title:"需求分析",slug:"需求分析"},{level:2,title:"processHeaders 函数实现",slug:"processheaders-函数实现"},{level:2,title:"实现请求 header 处理逻辑",slug:"实现请求-header-处理逻辑"},{level:2,title:"demo 编写",slug:"demo-编写"}],lastUpdated:"2022/12/14, 19:36:42",lastUpdatedTimestamp:1671017802e3},{title:"获取响应数据",frontmatter:{title:"获取响应数据",date:"2020-01-05T10:56:02.000Z",permalink:"/pages/a57debe141e1e4f4",author:"HuangYi",categories:["《TypeScript 从零实现 axios》","ts-axios 基础功能实现"],tags:["TypeScript"]},regularPath:"/%E3%80%8ATypeScript%20%E4%BB%8E%E9%9B%B6%E5%AE%9E%E7%8E%B0%20axios%E3%80%8B/04.ts-axios%20%E5%9F%BA%E7%A1%80%E5%8A%9F%E8%83%BD%E5%AE%9E%E7%8E%B0/04.%E8%8E%B7%E5%8F%96%E5%93%8D%E5%BA%94%E6%95%B0%E6%8D%AE.html",relativePath:"《TypeScript 从零实现 axios》/04.ts-axios 基础功能实现/04.获取响应数据.md",key:"v-09f9a3f8",path:"/pages/a57debe141e1e4f4/",headers:[{level:2,title:"需求分析",slug:"需求分析"},{level:2,title:"定义接口类型",slug:"定义接口类型"},{level:2,title:"实现获取响应数据逻辑",slug:"实现获取响应数据逻辑"},{level:2,title:"demo 编写",slug:"demo-编写"}],lastUpdated:"2022/12/14, 19:36:42",lastUpdatedTimestamp:1671017802e3},{title:"处理响应 header",frontmatter:{title:"处理响应 header",date:"2020-01-05T10:56:02.000Z",permalink:"/pages/927161662ca32c24",author:"HuangYi",categories:["《TypeScript 从零实现 axios》","ts-axios 基础功能实现"],tags:["TypeScript"]},regularPath:"/%E3%80%8ATypeScript%20%E4%BB%8E%E9%9B%B6%E5%AE%9E%E7%8E%B0%20axios%E3%80%8B/04.ts-axios%20%E5%9F%BA%E7%A1%80%E5%8A%9F%E8%83%BD%E5%AE%9E%E7%8E%B0/05.%E5%A4%84%E7%90%86%E5%93%8D%E5%BA%94%20header.html",relativePath:"《TypeScript 从零实现 axios》/04.ts-axios 基础功能实现/05.处理响应 header.md",key:"v-502122bc",path:"/pages/927161662ca32c24/",headers:[{level:2,title:"需求分析",slug:"需求分析"},{level:2,title:"parseHeaders 函数实现及应用",slug:"parseheaders-函数实现及应用"}],lastUpdated:"2022/12/14, 19:36:42",lastUpdatedTimestamp:1671017802e3},{title:"处理响应 data",frontmatter:{title:"处理响应 data",date:"2020-01-05T10:56:02.000Z",permalink:"/pages/922cb4268499dc3f",author:"HuangYi",categories:["《TypeScript 从零实现 axios》","ts-axios 基础功能实现"],tags:["TypeScript"]},regularPath:"/%E3%80%8ATypeScript%20%E4%BB%8E%E9%9B%B6%E5%AE%9E%E7%8E%B0%20axios%E3%80%8B/04.ts-axios%20%E5%9F%BA%E7%A1%80%E5%8A%9F%E8%83%BD%E5%AE%9E%E7%8E%B0/06.%E5%A4%84%E7%90%86%E5%93%8D%E5%BA%94%20data.html",relativePath:"《TypeScript 从零实现 axios》/04.ts-axios 基础功能实现/06.处理响应 data.md",key:"v-08b2163c",path:"/pages/922cb4268499dc3f/",headers:[{level:2,title:"需求分析",slug:"需求分析"},{level:2,title:"transformResponse 函数实现及应用",slug:"transformresponse-函数实现及应用"}],lastUpdated:"2022/12/14, 19:36:42",lastUpdatedTimestamp:1671017802e3},{title:"错误处理",frontmatter:{title:"错误处理",date:"2020-01-05T10:56:02.000Z",permalink:"/pages/6a8bef7b98dfdcf9",author:"HuangYi",categories:["《TypeScript 从零实现 axios》","ts-axios 异常情况处理"],tags:["TypeScript"]},regularPath:"/%E3%80%8ATypeScript%20%E4%BB%8E%E9%9B%B6%E5%AE%9E%E7%8E%B0%20axios%E3%80%8B/05.ts-axios%20%E5%BC%82%E5%B8%B8%E6%83%85%E5%86%B5%E5%A4%84%E7%90%86/01.%E9%94%99%E8%AF%AF%E5%A4%84%E7%90%86.html",relativePath:"《TypeScript 从零实现 axios》/05.ts-axios 异常情况处理/01.错误处理.md",key:"v-37643070",path:"/pages/6a8bef7b98dfdcf9/",headers:[{level:2,title:"需求分析",slug:"需求分析"},{level:2,title:"处理网络异常错误",slug:"处理网络异常错误"},{level:2,title:"处理超时错误",slug:"处理超时错误"},{level:2,title:"处理非 200 状态码",slug:"处理非-200-状态码"},{level:2,title:"demo 编写",slug:"demo-编写"}],lastUpdated:"2022/12/14, 19:36:42",lastUpdatedTimestamp:1671017802e3},{title:"错误信息增强",frontmatter:{title:"错误信息增强",date:"2020-01-05T10:56:02.000Z",permalink:"/pages/22d581d8c2860b8a",author:"HuangYi",categories:["《TypeScript 从零实现 axios》","ts-axios 异常情况处理"],tags:["TypeScript"]},regularPath:"/%E3%80%8ATypeScript%20%E4%BB%8E%E9%9B%B6%E5%AE%9E%E7%8E%B0%20axios%E3%80%8B/05.ts-axios%20%E5%BC%82%E5%B8%B8%E6%83%85%E5%86%B5%E5%A4%84%E7%90%86/02.%E9%94%99%E8%AF%AF%E4%BF%A1%E6%81%AF%E5%A2%9E%E5%BC%BA.html",relativePath:"《TypeScript 从零实现 axios》/05.ts-axios 异常情况处理/02.错误信息增强.md",key:"v-9a5aa036",path:"/pages/22d581d8c2860b8a/",headers:[{level:2,title:"需求分析",slug:"需求分析"},{level:2,title:"创建 AxiosError 类",slug:"创建-axioserror-类"},{level:2,title:"createError 方法应用",slug:"createerror-方法应用"},{level:2,title:"导出类型定义",slug:"导出类型定义"}],lastUpdated:"2022/12/14, 19:36:42",lastUpdatedTimestamp:1671017802e3},{title:"扩展接口",frontmatter:{title:"扩展接口",date:"2020-01-05T10:56:02.000Z",permalink:"/pages/034e320f4af88bd4",author:"HuangYi",categories:["《TypeScript 从零实现 axios》","ts-axios 接口扩展"],tags:["TypeScript"]},regularPath:"/%E3%80%8ATypeScript%20%E4%BB%8E%E9%9B%B6%E5%AE%9E%E7%8E%B0%20axios%E3%80%8B/06.ts-axios%20%E6%8E%A5%E5%8F%A3%E6%89%A9%E5%B1%95/01.%E6%89%A9%E5%B1%95%E6%8E%A5%E5%8F%A3.html",relativePath:"《TypeScript 从零实现 axios》/06.ts-axios 接口扩展/01.扩展接口.md",key:"v-3f651f6a",path:"/pages/034e320f4af88bd4/",headers:[{level:2,title:"需求分析",slug:"需求分析"},{level:2,title:"接口类型定义",slug:"接口类型定义"},{level:2,title:"创建 Axios 类",slug:"创建-axios-类"},{level:2,title:"混合对象实现",slug:"混合对象实现"},{level:2,title:"demo 编写",slug:"demo-编写"}],lastUpdated:"2022/12/14, 19:36:42",lastUpdatedTimestamp:1671017802e3},{title:"axios 函数重载",frontmatter:{title:"axios 函数重载",date:"2020-01-05T10:56:02.000Z",permalink:"/pages/8af227eae851ec97",author:"HuangYi",categories:["《TypeScript 从零实现 axios》","ts-axios 接口扩展"],tags:["TypeScript"]},regularPath:"/%E3%80%8ATypeScript%20%E4%BB%8E%E9%9B%B6%E5%AE%9E%E7%8E%B0%20axios%E3%80%8B/06.ts-axios%20%E6%8E%A5%E5%8F%A3%E6%89%A9%E5%B1%95/02.axios%20%E5%87%BD%E6%95%B0%E9%87%8D%E8%BD%BD.html",relativePath:"《TypeScript 从零实现 axios》/06.ts-axios 接口扩展/02.axios 函数重载.md",key:"v-29539ae8",path:"/pages/8af227eae851ec97/",headers:[{level:2,title:"需求分析",slug:"需求分析"},{level:2,title:"重载实现",slug:"重载实现"},{level:2,title:"编写 demo",slug:"编写-demo"}],lastUpdated:"2022/12/14, 19:36:42",lastUpdatedTimestamp:1671017802e3},{title:"响应数据支持泛型",frontmatter:{title:"响应数据支持泛型",date:"2020-01-05T10:56:02.000Z",permalink:"/pages/c4489d0bab02cc0c",author:"HuangYi",categories:["《TypeScript 从零实现 axios》","ts-axios 接口扩展"],tags:["TypeScript"]},regularPath:"/%E3%80%8ATypeScript%20%E4%BB%8E%E9%9B%B6%E5%AE%9E%E7%8E%B0%20axios%E3%80%8B/06.ts-axios%20%E6%8E%A5%E5%8F%A3%E6%89%A9%E5%B1%95/03.%E5%93%8D%E5%BA%94%E6%95%B0%E6%8D%AE%E6%94%AF%E6%8C%81%E6%B3%9B%E5%9E%8B.html",relativePath:"《TypeScript 从零实现 axios》/06.ts-axios 接口扩展/03.响应数据支持泛型.md",key:"v-e638c7ec",path:"/pages/c4489d0bab02cc0c/",headers:[{level:2,title:"需求分析",slug:"需求分析"},{level:2,title:"接口添加泛型参数",slug:"接口添加泛型参数"},{level:2,title:"demo 编写",slug:"demo-编写"}],lastUpdated:"2022/12/14, 19:36:42",lastUpdatedTimestamp:1671017802e3},{title:"拦截器设计与实现",frontmatter:{title:"拦截器设计与实现",date:"2020-01-05T10:56:02.000Z",permalink:"/pages/70651900f022f586",author:"HuangYi",categories:["《TypeScript 从零实现 axios》","ts-axios 拦截器实现"],tags:["TypeScript"]},regularPath:"/%E3%80%8ATypeScript%20%E4%BB%8E%E9%9B%B6%E5%AE%9E%E7%8E%B0%20axios%E3%80%8B/07.ts-axios%20%E6%8B%A6%E6%88%AA%E5%99%A8%E5%AE%9E%E7%8E%B0/01.%E6%8B%A6%E6%88%AA%E5%99%A8%E8%AE%BE%E8%AE%A1%E4%B8%8E%E5%AE%9E%E7%8E%B0.html",relativePath:"《TypeScript 从零实现 axios》/07.ts-axios 拦截器实现/01.拦截器设计与实现.md",key:"v-885bf1fc",path:"/pages/70651900f022f586/",headers:[{level:2,title:"需求分析",slug:"需求分析"},{level:2,title:"整体设计",slug:"整体设计"},{level:2,title:"拦截器管理类实现",slug:"拦截器管理类实现"},{level:3,title:"接口定义",slug:"接口定义"},{level:3,title:"代码实现",slug:"代码实现"},{level:2,title:"链式调用实现",slug:"链式调用实现"},{level:2,title:"demo 编写",slug:"demo-编写"}],lastUpdated:"2022/12/14, 19:36:42",lastUpdatedTimestamp:1671017802e3},{title:"合并配置的设计与实现",frontmatter:{title:"合并配置的设计与实现",date:"2020-01-05T10:56:02.000Z",permalink:"/pages/937e4de6b81edeca",author:"HuangYi",categories:["《TypeScript 从零实现 axios》","ts-axios 配置化实现"],tags:["TypeScript"]},regularPath:"/%E3%80%8ATypeScript%20%E4%BB%8E%E9%9B%B6%E5%AE%9E%E7%8E%B0%20axios%E3%80%8B/08.ts-axios%20%E9%85%8D%E7%BD%AE%E5%8C%96%E5%AE%9E%E7%8E%B0/01.%E5%90%88%E5%B9%B6%E9%85%8D%E7%BD%AE%E7%9A%84%E8%AE%BE%E8%AE%A1%E4%B8%8E%E5%AE%9E%E7%8E%B0.html",relativePath:"《TypeScript 从零实现 axios》/08.ts-axios 配置化实现/01.合并配置的设计与实现.md",key:"v-cbb9b39c",path:"/pages/937e4de6b81edeca/",headers:[{level:2,title:"需求分析",slug:"需求分析"},{level:2,title:"默认配置",slug:"默认配置"},{level:3,title:"默认配置定义",slug:"默认配置定义"},{level:3,title:"添加到 axios 对象中",slug:"添加到-axios-对象中"},{level:2,title:"配置合并及策略",slug:"配置合并及策略"},{level:3,title:"合并方法",slug:"合并方法"},{level:3,title:"默认合并策略",slug:"默认合并策略"},{level:3,title:"只接受自定义配置合并策略",slug:"只接受自定义配置合并策略"},{level:3,title:"复杂对象合并策略",slug:"复杂对象合并策略"},{level:2,title:"flatten headers",slug:"flatten-headers"},{level:2,title:"demo 编写",slug:"demo-编写"}],lastUpdated:"2022/12/14, 19:36:42",lastUpdatedTimestamp:1671017802e3},{title:"请求和响应配置化",frontmatter:{title:"请求和响应配置化",date:"2020-01-05T10:56:02.000Z",permalink:"/pages/f5b627bfebba87fc",author:"HuangYi",categories:["《TypeScript 从零实现 axios》","ts-axios 配置化实现"],tags:["TypeScript"]},regularPath:"/%E3%80%8ATypeScript%20%E4%BB%8E%E9%9B%B6%E5%AE%9E%E7%8E%B0%20axios%E3%80%8B/08.ts-axios%20%E9%85%8D%E7%BD%AE%E5%8C%96%E5%AE%9E%E7%8E%B0/02.%E8%AF%B7%E6%B1%82%E5%92%8C%E5%93%8D%E5%BA%94%E9%85%8D%E7%BD%AE%E5%8C%96.html",relativePath:"《TypeScript 从零实现 axios》/08.ts-axios 配置化实现/02.请求和响应配置化.md",key:"v-057da0ac",path:"/pages/f5b627bfebba87fc/",headers:[{level:2,title:"需求分析",slug:"需求分析"},{level:2,title:"修改默认配置",slug:"修改默认配置"},{level:2,title:"transform 逻辑重构",slug:"transform-逻辑重构"},{level:2,title:"demo 编写",slug:"demo-编写"}],lastUpdated:"2022/12/14, 19:36:42",lastUpdatedTimestamp:1671017802e3},{title:"扩展 create 静态接口",frontmatter:{title:"扩展 create 静态接口",date:"2020-01-05T10:56:02.000Z",permalink:"/pages/7b49658c26f613bf",author:"HuangYi",categories:["《TypeScript 从零实现 axios》","ts-axios 配置化实现"],tags:["TypeScript"]},regularPath:"/%E3%80%8ATypeScript%20%E4%BB%8E%E9%9B%B6%E5%AE%9E%E7%8E%B0%20axios%E3%80%8B/08.ts-axios%20%E9%85%8D%E7%BD%AE%E5%8C%96%E5%AE%9E%E7%8E%B0/03.%E6%89%A9%E5%B1%95%20create%20%E9%9D%99%E6%80%81%E6%8E%A5%E5%8F%A3.html",relativePath:"《TypeScript 从零实现 axios》/08.ts-axios 配置化实现/03.扩展 create 静态接口.md",key:"v-1e486835",path:"/pages/7b49658c26f613bf/",headers:[{level:2,title:"需求分析",slug:"需求分析"},{level:2,title:"静态方法扩展",slug:"静态方法扩展"},{level:2,title:"demo 编写",slug:"demo-编写"}],lastUpdated:"2022/12/14, 19:36:42",lastUpdatedTimestamp:1671017802e3},{title:"取消功能的设计与实现",frontmatter:{title:"取消功能的设计与实现",date:"2020-01-05T10:56:02.000Z",permalink:"/pages/fdc6da5372397430",author:"HuangYi",categories:["《TypeScript 从零实现 axios》","ts-axios 取消功能实现"],tags:["TypeScript"]},regularPath:"/%E3%80%8ATypeScript%20%E4%BB%8E%E9%9B%B6%E5%AE%9E%E7%8E%B0%20axios%E3%80%8B/09.ts-axios%20%E5%8F%96%E6%B6%88%E5%8A%9F%E8%83%BD%E5%AE%9E%E7%8E%B0/01.%E5%8F%96%E6%B6%88%E5%8A%9F%E8%83%BD%E7%9A%84%E8%AE%BE%E8%AE%A1%E4%B8%8E%E5%AE%9E%E7%8E%B0.html",relativePath:"《TypeScript 从零实现 axios》/09.ts-axios 取消功能实现/01.取消功能的设计与实现.md",key:"v-0e979642",path:"/pages/fdc6da5372397430/",headers:[{level:2,title:"需求分析",slug:"需求分析"},{level:2,title:"异步分离的设计方案",slug:"异步分离的设计方案"},{level:2,title:"CancelToken 类实现",slug:"canceltoken-类实现"},{level:3,title:"接口定义",slug:"接口定义"},{level:3,title:"代码实现",slug:"代码实现"},{level:2,title:"CancelToken 扩展静态接口",slug:"canceltoken-扩展静态接口"},{level:3,title:"接口定义",slug:"接口定义-2"},{level:3,title:"代码实现",slug:"代码实现-2"},{level:2,title:"Cancel 类实现及 axios 的扩展",slug:"cancel-类实现及-axios-的扩展"},{level:3,title:"接口定义",slug:"接口定义-3"},{level:3,title:"代码实现",slug:"代码实现-3"},{level:2,title:"额外逻辑实现",slug:"额外逻辑实现"},{level:2,title:"demo 编写",slug:"demo-编写"}],lastUpdated:"2022/12/14, 19:36:42",lastUpdatedTimestamp:1671017802e3},{title:"withCredentials",frontmatter:{title:"withCredentials",date:"2020-01-05T10:56:02.000Z",permalink:"/pages/5dce43eba796a2ab",author:"HuangYi",categories:["《TypeScript 从零实现 axios》","ts-axios 更多功能实现"],tags:["TypeScript"]},regularPath:"/%E3%80%8ATypeScript%20%E4%BB%8E%E9%9B%B6%E5%AE%9E%E7%8E%B0%20axios%E3%80%8B/10.ts-axios%20%E6%9B%B4%E5%A4%9A%E5%8A%9F%E8%83%BD%E5%AE%9E%E7%8E%B0/01.withCredentials.html",relativePath:"《TypeScript 从零实现 axios》/10.ts-axios 更多功能实现/01.withCredentials.md",key:"v-3030d1d7",path:"/pages/5dce43eba796a2ab/",headers:[{level:2,title:"需求分析",slug:"需求分析"},{level:2,title:"代码实现",slug:"代码实现"},{level:2,title:"demo 编写",slug:"demo-编写"}],lastUpdated:"2022/12/14, 19:36:42",lastUpdatedTimestamp:1671017802e3},{title:"XSRF 防御",frontmatter:{title:"XSRF 防御",date:"2020-01-05T10:56:02.000Z",permalink:"/pages/390cb70e2b619449",author:"HuangYi",categories:["《TypeScript 从零实现 axios》","ts-axios 更多功能实现"],tags:["TypeScript"]},regularPath:"/%E3%80%8ATypeScript%20%E4%BB%8E%E9%9B%B6%E5%AE%9E%E7%8E%B0%20axios%E3%80%8B/10.ts-axios%20%E6%9B%B4%E5%A4%9A%E5%8A%9F%E8%83%BD%E5%AE%9E%E7%8E%B0/02.XSRF%20%E9%98%B2%E5%BE%A1.html",relativePath:"《TypeScript 从零实现 axios》/10.ts-axios 更多功能实现/02.XSRF 防御.md",key:"v-0ed48d6b",path:"/pages/390cb70e2b619449/",headers:[{level:2,title:"需求分析",slug:"需求分析"},{level:2,title:"代码实现",slug:"代码实现"},{level:2,title:"demo 编写",slug:"demo-编写"}],lastUpdated:"2022/12/14, 19:36:42",lastUpdatedTimestamp:1671017802e3},{title:"上传和下载的进度监控",frontmatter:{title:"上传和下载的进度监控",date:"2020-01-05T10:56:02.000Z",permalink:"/pages/1376fd897809036e",author:"HuangYi",categories:["《TypeScript 从零实现 axios》","ts-axios 更多功能实现"],tags:["TypeScript"]},regularPath:"/%E3%80%8ATypeScript%20%E4%BB%8E%E9%9B%B6%E5%AE%9E%E7%8E%B0%20axios%E3%80%8B/10.ts-axios%20%E6%9B%B4%E5%A4%9A%E5%8A%9F%E8%83%BD%E5%AE%9E%E7%8E%B0/03.%E4%B8%8A%E4%BC%A0%E5%92%8C%E4%B8%8B%E8%BD%BD%E7%9A%84%E8%BF%9B%E5%BA%A6%E7%9B%91%E6%8E%A7.html",relativePath:"《TypeScript 从零实现 axios》/10.ts-axios 更多功能实现/03.上传和下载的进度监控.md",key:"v-06765d1e",path:"/pages/1376fd897809036e/",headers:[{level:2,title:"需求分析",slug:"需求分析"},{level:2,title:"代码实现",slug:"代码实现"},{level:2,title:"demo 编写",slug:"demo-编写"}],lastUpdated:"2022/12/14, 19:36:42",lastUpdatedTimestamp:1671017802e3},{title:"HTTP 授权",frontmatter:{title:"HTTP 授权",date:"2020-01-05T10:56:02.000Z",permalink:"/pages/89cd6496c23159ae",author:"HuangYi",categories:["《TypeScript 从零实现 axios》","ts-axios 更多功能实现"],tags:["TypeScript"]},regularPath:"/%E3%80%8ATypeScript%20%E4%BB%8E%E9%9B%B6%E5%AE%9E%E7%8E%B0%20axios%E3%80%8B/10.ts-axios%20%E6%9B%B4%E5%A4%9A%E5%8A%9F%E8%83%BD%E5%AE%9E%E7%8E%B0/04.HTTP%20%E6%8E%88%E6%9D%83.html",relativePath:"《TypeScript 从零实现 axios》/10.ts-axios 更多功能实现/04.HTTP 授权.md",key:"v-4f1ef2f2",path:"/pages/89cd6496c23159ae/",headers:[{level:2,title:"需求分析",slug:"需求分析"},{level:2,title:"代码实现",slug:"代码实现"},{level:2,title:"demo 编写",slug:"demo-编写"}],lastUpdated:"2022/12/14, 19:36:42",lastUpdatedTimestamp:1671017802e3},{title:"自定义合法状态码",frontmatter:{title:"自定义合法状态码",date:"2020-01-05T10:56:02.000Z",permalink:"/pages/40b41ce8e8159567",author:"HuangYi",categories:["《TypeScript 从零实现 axios》","ts-axios 更多功能实现"],tags:["TypeScript"]},regularPath:"/%E3%80%8ATypeScript%20%E4%BB%8E%E9%9B%B6%E5%AE%9E%E7%8E%B0%20axios%E3%80%8B/10.ts-axios%20%E6%9B%B4%E5%A4%9A%E5%8A%9F%E8%83%BD%E5%AE%9E%E7%8E%B0/05.%E8%87%AA%E5%AE%9A%E4%B9%89%E5%90%88%E6%B3%95%E7%8A%B6%E6%80%81%E7%A0%81.html",relativePath:"《TypeScript 从零实现 axios》/10.ts-axios 更多功能实现/05.自定义合法状态码.md",key:"v-5a69f9ba",path:"/pages/40b41ce8e8159567/",headers:[{level:2,title:"需求分析",slug:"需求分析"},{level:2,title:"代码实现",slug:"代码实现"},{level:2,title:"demo 编写",slug:"demo-编写"}],lastUpdated:"2022/12/14, 19:36:42",lastUpdatedTimestamp:1671017802e3},{title:"自定义参数序列化",frontmatter:{title:"自定义参数序列化",date:"2020-01-05T10:56:02.000Z",permalink:"/pages/7753b8141663e54a",author:"HuangYi",categories:["《TypeScript 从零实现 axios》","ts-axios 更多功能实现"],tags:["TypeScript"]},regularPath:"/%E3%80%8ATypeScript%20%E4%BB%8E%E9%9B%B6%E5%AE%9E%E7%8E%B0%20axios%E3%80%8B/10.ts-axios%20%E6%9B%B4%E5%A4%9A%E5%8A%9F%E8%83%BD%E5%AE%9E%E7%8E%B0/06.%E8%87%AA%E5%AE%9A%E4%B9%89%E5%8F%82%E6%95%B0%E5%BA%8F%E5%88%97%E5%8C%96.html",relativePath:"《TypeScript 从零实现 axios》/10.ts-axios 更多功能实现/06.自定义参数序列化.md",key:"v-4e983046",path:"/pages/7753b8141663e54a/",headers:[{level:2,title:"需求分析",slug:"需求分析"},{level:2,title:"代码实现",slug:"代码实现"},{level:2,title:"demo 编写",slug:"demo-编写"}],lastUpdated:"2022/12/14, 19:36:42",lastUpdatedTimestamp:1671017802e3},{title:"baseURL",frontmatter:{title:"baseURL",date:"2020-01-05T10:56:02.000Z",permalink:"/pages/0b9f2ee2b4dbb728",author:"HuangYi",categories:["《TypeScript 从零实现 axios》","ts-axios 更多功能实现"],tags:["TypeScript"]},regularPath:"/%E3%80%8ATypeScript%20%E4%BB%8E%E9%9B%B6%E5%AE%9E%E7%8E%B0%20axios%E3%80%8B/10.ts-axios%20%E6%9B%B4%E5%A4%9A%E5%8A%9F%E8%83%BD%E5%AE%9E%E7%8E%B0/07.baseURL.html",relativePath:"《TypeScript 从零实现 axios》/10.ts-axios 更多功能实现/07.baseURL.md",key:"v-6f0eb897",path:"/pages/0b9f2ee2b4dbb728/",headers:[{level:2,title:"需求分析",slug:"需求分析"},{level:2,title:"代码实现",slug:"代码实现"},{level:2,title:"demo 编写",slug:"demo-编写"}],lastUpdated:"2022/12/14, 19:36:42",lastUpdatedTimestamp:1671017802e3},{title:"静态方法扩展",frontmatter:{title:"静态方法扩展",date:"2020-01-05T10:56:02.000Z",permalink:"/pages/c26b053540a7dafa",author:"HuangYi",categories:["《TypeScript 从零实现 axios》","ts-axios 更多功能实现"],tags:["TypeScript"]},regularPath:"/%E3%80%8ATypeScript%20%E4%BB%8E%E9%9B%B6%E5%AE%9E%E7%8E%B0%20axios%E3%80%8B/10.ts-axios%20%E6%9B%B4%E5%A4%9A%E5%8A%9F%E8%83%BD%E5%AE%9E%E7%8E%B0/08.%E9%9D%99%E6%80%81%E6%96%B9%E6%B3%95%E6%89%A9%E5%B1%95.html",relativePath:"《TypeScript 从零实现 axios》/10.ts-axios 更多功能实现/08.静态方法扩展.md",key:"v-42f2e73c",path:"/pages/c26b053540a7dafa/",headers:[{level:2,title:"需求分析",slug:"需求分析"},{level:2,title:"代码实现",slug:"代码实现"},{level:2,title:"demo 编写",slug:"demo-编写"}],lastUpdated:"2022/12/14, 19:36:42",lastUpdatedTimestamp:1671017802e3},{title:"前言",frontmatter:{title:"前言",date:"2020-01-05T10:56:02.000Z",permalink:"/pages/df36888424843793",author:"HuangYi",categories:["《TypeScript 从零实现 axios》","ts-axios 单元测试"],tags:["TypeScript"]},regularPath:"/%E3%80%8ATypeScript%20%E4%BB%8E%E9%9B%B6%E5%AE%9E%E7%8E%B0%20axios%E3%80%8B/11.ts-axios%20%E5%8D%95%E5%85%83%E6%B5%8B%E8%AF%95/01.%E5%89%8D%E8%A8%80.html",relativePath:"《TypeScript 从零实现 axios》/11.ts-axios 单元测试/01.前言.md",key:"v-18ecbe8e",path:"/pages/df36888424843793/",lastUpdated:"2022/12/14, 19:36:42",lastUpdatedTimestamp:1671017802e3},{title:"Jest 安装和配置",frontmatter:{title:"Jest 安装和配置",date:"2020-01-05T10:56:02.000Z",permalink:"/pages/bf5c625a35757b37",author:"HuangYi",categories:["《TypeScript 从零实现 axios》","ts-axios 单元测试"],tags:["TypeScript"]},regularPath:"/%E3%80%8ATypeScript%20%E4%BB%8E%E9%9B%B6%E5%AE%9E%E7%8E%B0%20axios%E3%80%8B/11.ts-axios%20%E5%8D%95%E5%85%83%E6%B5%8B%E8%AF%95/02.Jest%20%E5%AE%89%E8%A3%85%E5%92%8C%E9%85%8D%E7%BD%AE.html",relativePath:"《TypeScript 从零实现 axios》/11.ts-axios 单元测试/02.Jest 安装和配置.md",key:"v-1f85b84c",path:"/pages/bf5c625a35757b37/",headers:[{level:2,title:"Jest 安装",slug:"jest-安装"},{level:2,title:"Jest 配置",slug:"jest-配置"}],lastUpdated:"2022/12/14, 19:36:42",lastUpdatedTimestamp:1671017802e3},{title:"辅助模块单元测试",frontmatter:{title:"辅助模块单元测试",date:"2020-01-05T10:56:02.000Z",permalink:"/pages/13f147a9b355c4c1",author:"HuangYi",categories:["《TypeScript 从零实现 axios》","ts-axios 单元测试"],tags:["TypeScript"]},regularPath:"/%E3%80%8ATypeScript%20%E4%BB%8E%E9%9B%B6%E5%AE%9E%E7%8E%B0%20axios%E3%80%8B/11.ts-axios%20%E5%8D%95%E5%85%83%E6%B5%8B%E8%AF%95/03.%E8%BE%85%E5%8A%A9%E6%A8%A1%E5%9D%97%E5%8D%95%E5%85%83%E6%B5%8B%E8%AF%95.html",relativePath:"《TypeScript 从零实现 axios》/11.ts-axios 单元测试/03.辅助模块单元测试.md",key:"v-4d52e948",path:"/pages/13f147a9b355c4c1/",headers:[{level:2,title:"准备工作",slug:"准备工作"},{level:2,title:"util 模块测试",slug:"util-模块测试"},{level:2,title:"cookie 模块测试",slug:"cookie-模块测试"},{level:2,title:"data 模块测试",slug:"data-模块测试"},{level:2,title:"error 模块测试",slug:"error-模块测试"},{level:2,title:"headers 模块测试",slug:"headers-模块测试"},{level:2,title:"url 模块测试",slug:"url-模块测试"}],lastUpdated:"2022/12/14, 19:36:42",lastUpdatedTimestamp:1671017802e3},{title:"请求模块单元测试",frontmatter:{title:"请求模块单元测试",date:"2020-01-05T10:56:02.000Z",permalink:"/pages/e1d15dec8634e6b5",author:"HuangYi",categories:["《TypeScript 从零实现 axios》","ts-axios 单元测试"],tags:["TypeScript"]},regularPath:"/%E3%80%8ATypeScript%20%E4%BB%8E%E9%9B%B6%E5%AE%9E%E7%8E%B0%20axios%E3%80%8B/11.ts-axios%20%E5%8D%95%E5%85%83%E6%B5%8B%E8%AF%95/04.%E8%AF%B7%E6%B1%82%E6%A8%A1%E5%9D%97%E5%8D%95%E5%85%83%E6%B5%8B%E8%AF%95.html",relativePath:"《TypeScript 从零实现 axios》/11.ts-axios 单元测试/04.请求模块单元测试.md",key:"v-1991f250",path:"/pages/e1d15dec8634e6b5/",headers:[{level:2,title:"jasmine-ajax",slug:"jasmine-ajax"},{level:2,title:"测试代码编写",slug:"测试代码编写"}],lastUpdated:"2022/12/14, 19:36:42",lastUpdatedTimestamp:1671017802e3},{title:"headers 模块单元测试",frontmatter:{title:"headers 模块单元测试",date:"2020-01-05T10:56:02.000Z",permalink:"/pages/ddd86ec39b5dfe33",author:"HuangYi",categories:["《TypeScript 从零实现 axios》","ts-axios 单元测试"],tags:["TypeScript"]},regularPath:"/%E3%80%8ATypeScript%20%E4%BB%8E%E9%9B%B6%E5%AE%9E%E7%8E%B0%20axios%E3%80%8B/11.ts-axios%20%E5%8D%95%E5%85%83%E6%B5%8B%E8%AF%95/05.headers%20%E6%A8%A1%E5%9D%97%E5%8D%95%E5%85%83%E6%B5%8B%E8%AF%95.html",relativePath:"《TypeScript 从零实现 axios》/11.ts-axios 单元测试/05.headers 模块单元测试.md",key:"v-3a4a80df",path:"/pages/ddd86ec39b5dfe33/",headers:[{level:2,title:"测试代码编写",slug:"测试代码编写"}],lastUpdated:"2022/12/14, 19:36:42",lastUpdatedTimestamp:1671017802e3},{title:"Axios 实例模块单元测试",frontmatter:{title:"Axios 实例模块单元测试",date:"2020-01-05T10:56:02.000Z",permalink:"/pages/2eac7a0a0d644c15",author:"HuangYi",categories:["《TypeScript 从零实现 axios》","ts-axios 单元测试"],tags:["TypeScript"]},regularPath:"/%E3%80%8ATypeScript%20%E4%BB%8E%E9%9B%B6%E5%AE%9E%E7%8E%B0%20axios%E3%80%8B/11.ts-axios%20%E5%8D%95%E5%85%83%E6%B5%8B%E8%AF%95/06.Axios%20%E5%AE%9E%E4%BE%8B%E6%A8%A1%E5%9D%97%E5%8D%95%E5%85%83%E6%B5%8B%E8%AF%95.html",relativePath:"《TypeScript 从零实现 axios》/11.ts-axios 单元测试/06.Axios 实例模块单元测试.md",key:"v-785d24b6",path:"/pages/2eac7a0a0d644c15/",headers:[{level:2,title:"测试代码编写",slug:"测试代码编写"}],lastUpdated:"2022/12/14, 19:36:42",lastUpdatedTimestamp:1671017802e3},{title:"拦截器模块单元测试",frontmatter:{title:"拦截器模块单元测试",date:"2020-01-05T10:56:02.000Z",permalink:"/pages/97de6fd6293a2c6e",author:"HuangYi",categories:["《TypeScript 从零实现 axios》","ts-axios 单元测试"],tags:["TypeScript"]},regularPath:"/%E3%80%8ATypeScript%20%E4%BB%8E%E9%9B%B6%E5%AE%9E%E7%8E%B0%20axios%E3%80%8B/11.ts-axios%20%E5%8D%95%E5%85%83%E6%B5%8B%E8%AF%95/07.%E6%8B%A6%E6%88%AA%E5%99%A8%E6%A8%A1%E5%9D%97%E5%8D%95%E5%85%83%E6%B5%8B%E8%AF%95.html",relativePath:"《TypeScript 从零实现 axios》/11.ts-axios 单元测试/07.拦截器模块单元测试.md",key:"v-f0c75cea",path:"/pages/97de6fd6293a2c6e/",headers:[{level:2,title:"测试代码编写",slug:"测试代码编写"}],lastUpdated:"2022/12/14, 19:36:42",lastUpdatedTimestamp:1671017802e3},{title:"mergeConfig 模块单元测试",frontmatter:{title:"mergeConfig 模块单元测试",date:"2020-01-05T10:56:02.000Z",permalink:"/pages/cdf59840306f9e81",author:"HuangYi",categories:["《TypeScript 从零实现 axios》","ts-axios 单元测试"],tags:["TypeScript"]},regularPath:"/%E3%80%8ATypeScript%20%E4%BB%8E%E9%9B%B6%E5%AE%9E%E7%8E%B0%20axios%E3%80%8B/11.ts-axios%20%E5%8D%95%E5%85%83%E6%B5%8B%E8%AF%95/08.mergeConfig%20%E6%A8%A1%E5%9D%97%E5%8D%95%E5%85%83%E6%B5%8B%E8%AF%95.html",relativePath:"《TypeScript 从零实现 axios》/11.ts-axios 单元测试/08.mergeConfig 模块单元测试.md",key:"v-5e4620e6",path:"/pages/cdf59840306f9e81/",headers:[{level:2,title:"测试代码编写",slug:"测试代码编写"}],lastUpdated:"2022/12/14, 19:36:42",lastUpdatedTimestamp:1671017802e3},{title:"请求取消模块单元测试",frontmatter:{title:"请求取消模块单元测试",date:"2020-01-05T10:56:02.000Z",permalink:"/pages/6fa16aee29527032",author:"HuangYi",categories:["《TypeScript 从零实现 axios》","ts-axios 单元测试"],tags:["TypeScript"]},regularPath:"/%E3%80%8ATypeScript%20%E4%BB%8E%E9%9B%B6%E5%AE%9E%E7%8E%B0%20axios%E3%80%8B/11.ts-axios%20%E5%8D%95%E5%85%83%E6%B5%8B%E8%AF%95/09.%E8%AF%B7%E6%B1%82%E5%8F%96%E6%B6%88%E6%A8%A1%E5%9D%97%E5%8D%95%E5%85%83%E6%B5%8B%E8%AF%95.html",relativePath:"《TypeScript 从零实现 axios》/11.ts-axios 单元测试/09.请求取消模块单元测试.md",key:"v-0963e9aa",path:"/pages/6fa16aee29527032/",headers:[{level:2,title:"Cancel 类单元测试",slug:"cancel-类单元测试"},{level:2,title:"CancelToken 类单元测试",slug:"canceltoken-类单元测试"},{level:2,title:"Cancel 业务逻辑单元测试",slug:"cancel-业务逻辑单元测试"}],lastUpdated:"2022/12/14, 19:36:42",lastUpdatedTimestamp:1671017802e3},{title:"剩余模块单元测试",frontmatter:{title:"剩余模块单元测试",date:"2020-01-05T10:56:02.000Z",permalink:"/pages/9572134781ba6a25",author:"HuangYi",categories:["《TypeScript 从零实现 axios》","ts-axios 单元测试"],tags:["TypeScript"]},regularPath:"/%E3%80%8ATypeScript%20%E4%BB%8E%E9%9B%B6%E5%AE%9E%E7%8E%B0%20axios%E3%80%8B/11.ts-axios%20%E5%8D%95%E5%85%83%E6%B5%8B%E8%AF%95/10.%E5%89%A9%E4%BD%99%E6%A8%A1%E5%9D%97%E5%8D%95%E5%85%83%E6%B5%8B%E8%AF%95.html",relativePath:"《TypeScript 从零实现 axios》/11.ts-axios 单元测试/10.剩余模块单元测试.md",key:"v-599969f4",path:"/pages/9572134781ba6a25/",headers:[{level:2,title:"defaults 模块单元测试",slug:"defaults-模块单元测试"},{level:2,title:"transform 模块单元测试",slug:"transform-模块单元测试"},{level:2,title:"xsrf 模块单元测试",slug:"xsrf-模块单元测试"},{level:2,title:"上传下载模块单元测试",slug:"上传下载模块单元测试"},{level:2,title:"HTTP 授权模块单元测试",slug:"http-授权模块单元测试"},{level:2,title:"静态方法模块单元测试",slug:"静态方法模块单元测试"},{level:2,title:"补充未覆盖的代码测试",slug:"补充未覆盖的代码测试"}],lastUpdated:"2022/12/14, 19:36:42",lastUpdatedTimestamp:1671017802e3},{title:"ts-axios 编译与发布",frontmatter:{title:"ts-axios 编译与发布",date:"2020-01-05T10:56:02.000Z",permalink:"/pages/3e5d5a45ad50f198",author:"HuangYi",categories:["《TypeScript 从零实现 axios》","ts-axios 部署与发布"],tags:["TypeScript"]},regularPath:"/%E3%80%8ATypeScript%20%E4%BB%8E%E9%9B%B6%E5%AE%9E%E7%8E%B0%20axios%E3%80%8B/12.ts-axios%20%E9%83%A8%E7%BD%B2%E4%B8%8E%E5%8F%91%E5%B8%83/01.ts-axios%20%E7%BC%96%E8%AF%91%E4%B8%8E%E5%8F%91%E5%B8%83.html",relativePath:"《TypeScript 从零实现 axios》/12.ts-axios 部署与发布/01.ts-axios 编译与发布.md",key:"v-65c6c1be",path:"/pages/3e5d5a45ad50f198/",headers:[{level:2,title:"需求分析",slug:"需求分析"},{level:2,title:"编译和打包",slug:"编译和打包"},{level:3,title:"修改 rollup.config.ts",slug:"修改-rollup-config-ts"},{level:3,title:"修改 package.json",slug:"修改-package-json"},{level:2,title:"自动化部署",slug:"自动化部署"},{level:3,title:"修改 package.json",slug:"修改-package-json-2"},{level:3,title:"编写部署脚本",slug:"编写部署脚本"},{level:2,title:"运行部署脚本",slug:"运行部署脚本"}],lastUpdated:"2022/12/14, 19:36:42",lastUpdatedTimestamp:1671017802e3},{title:"引用 ts-axios 库",frontmatter:{title:"引用 ts-axios 库",date:"2020-01-05T10:56:02.000Z",permalink:"/pages/c6bdbd5bd60adf5a",author:"HuangYi",categories:["《TypeScript 从零实现 axios》","ts-axios 部署与发布"],tags:["TypeScript"]},regularPath:"/%E3%80%8ATypeScript%20%E4%BB%8E%E9%9B%B6%E5%AE%9E%E7%8E%B0%20axios%E3%80%8B/12.ts-axios%20%E9%83%A8%E7%BD%B2%E4%B8%8E%E5%8F%91%E5%B8%83/02.%E5%BC%95%E7%94%A8%20ts-axios%20%E5%BA%93.html",relativePath:"《TypeScript 从零实现 axios》/12.ts-axios 部署与发布/02.引用 ts-axios 库.md",key:"v-f4e25d14",path:"/pages/c6bdbd5bd60adf5a/",headers:[{level:2,title:"在 TS 项目中引用",slug:"在-ts-项目中引用"},{level:2,title:"在 JS 项目中引用",slug:"在-js-项目中引用"}],lastUpdated:"2022/12/14, 19:36:42",lastUpdatedTimestamp:1671017802e3},{title:"MVVM模式",frontmatter:{title:"MVVM模式",date:"2020-02-04T12:19:00.000Z",permalink:"/pages/114158caa9e96df0",categories:["《Vue》笔记","基础"],tags:["Vue"],author:{name:"heBody",link:"https://github.com/heBody"}},regularPath:"/%E3%80%8AVue%E3%80%8B%E7%AC%94%E8%AE%B0/01.%E5%9F%BA%E7%A1%80/00.MVVM%E6%A8%A1%E5%BC%8F.html",relativePath:"《Vue》笔记/01.基础/00.MVVM模式.md",key:"v-8f8e259a",path:"/pages/114158caa9e96df0/",excerpt:'<div class="custom-block tip"><p class="custom-block-title">提示</p>\n<p>说明:本章内容是博主的Vue学习笔记,以<a href="https://cn.vuejs.org/v2/guide/" target="_blank" rel="noopener noreferrer">官方文档<OutboundLink/></a>为准。</p>\n</div>\n<h1 id="mvvm模式"><a class="header-anchor" href="#mvvm模式">#</a> MVVM模式</h1>\n<p>MVVM模式,<code>M</code>即 model,数据模型;<code>V</code>即 view,视图;<code>VM</code>即 view-model,视图模型。</p>\n',lastUpdated:"2022/12/14, 19:36:42",lastUpdatedTimestamp:1671017802e3},{title:"v-if vs v-show",frontmatter:{title:"v-if vs v-show",date:"2020-02-04T17:32:23.000Z",permalink:"/pages/73e4064340277b05",categories:["《Vue》笔记","基础"],tags:["Vue"],author:{name:"heBody",link:"https://github.com/heBody"}},regularPath:"/%E3%80%8AVue%E3%80%8B%E7%AC%94%E8%AE%B0/01.%E5%9F%BA%E7%A1%80/30.v-if%20vs%20v-show.html",relativePath:"《Vue》笔记/01.基础/30.v-if vs v-show.md",key:"v-168621d0",path:"/pages/73e4064340277b05/",excerpt:'<h1 id="v-if-vs-v-show"><a class="header-anchor" href="#v-if-vs-v-show">#</a> v-if vs v-show</h1>\n<p><a href="https://cn.vuejs.org/v2/guide/conditional.html#v-if-vs-v-show" target="_blank" rel="noopener noreferrer">API<OutboundLink/></a></p>\n<p><code>v-if</code> 根据渲染条件决定是否把元素渲染到DOM页面,而<code>v-show</code>不管渲染条件是什么,都会把元素渲染到DOM页面,只是简单的切换CSS的显示隐藏。</p>\n',lastUpdated:"2022/12/14, 19:36:42",lastUpdatedTimestamp:1671017802e3},{title:"生命周期",frontmatter:{title:"生命周期",date:"2020-02-04T15:06:59.000Z",permalink:"/pages/176808a1b5f843b8",categories:["《Vue》笔记","基础"],tags:["Vue"],author:{name:"heBody",link:"https://github.com/heBody"}},regularPath:"/%E3%80%8AVue%E3%80%8B%E7%AC%94%E8%AE%B0/01.%E5%9F%BA%E7%A1%80/10.%E7%94%9F%E5%91%BD%E5%91%A8%E6%9C%9F.html",relativePath:"《Vue》笔记/01.基础/10.生命周期.md",key:"v-70f8a25c",path:"/pages/176808a1b5f843b8/",headers:[{level:2,title:"Demo",slug:"demo"},{level:2,title:"生命周期图示",slug:"生命周期图示"}],excerpt:'<h1 id="实例生命周期钩子"><a class="header-anchor" href="#实例生命周期钩子">#</a> 实例生命周期钩子</h1>\n<p><a href="https://cn.vuejs.org/v2/guide/instance.html#%E5%AE%9E%E4%BE%8B%E7%94%9F%E5%91%BD%E5%91%A8%E6%9C%9F%E9%92%A9%E5%AD%90" target="_blank" rel="noopener noreferrer">实例生命周期钩子API<OutboundLink/></a></p>\n<p>简单理解,生命周期钩子函数就是vue实例在某一个时间点会自动执行的函数。</p>\n',lastUpdated:"2022/12/14, 19:36:42",lastUpdatedTimestamp:1671017802e3},{title:"列表渲染之数组、对象更新检测",frontmatter:{title:"列表渲染之数组、对象更新检测",date:"2020-02-05T13:09:06.000Z",permalink:"/pages/04783a6691cc9d06",categories:["《Vue》笔记","基础"],tags:["Vue"],author:{name:"heBody",link:"https://github.com/heBody"}},regularPath:"/%E3%80%8AVue%E3%80%8B%E7%AC%94%E8%AE%B0/01.%E5%9F%BA%E7%A1%80/35.%E5%88%97%E8%A1%A8%E6%B8%B2%E6%9F%93%E4%B9%8B%E6%95%B0%E7%BB%84%E3%80%81%E5%AF%B9%E8%B1%A1%E6%9B%B4%E6%96%B0%E6%A3%80%E6%B5%8B.html",relativePath:"《Vue》笔记/01.基础/35.列表渲染之数组、对象更新检测.md",key:"v-66b2ee2f",path:"/pages/04783a6691cc9d06/",headers:[{level:2,title:"数组更新检测",slug:"数组更新检测"},{level:4,title:"变异方法 (mutation method)",slug:"变异方法-mutation-method"},{level:4,title:"替换数组",slug:"替换数组"},{level:4,title:"注意事项",slug:"注意事项"},{level:2,title:"对象变更检测注意事项",slug:"对象变更检测注意事项"},{level:2,title:"总结",slug:"总结"}],excerpt:'<h1 id="列表渲染之数组、对象更新检测"><a class="header-anchor" href="#列表渲染之数组、对象更新检测">#</a> 列表渲染之数组、对象更新检测</h1>\n<p><a href="https://cn.vuejs.org/v2/guide/list.html#%E6%95%B0%E7%BB%84%E6%9B%B4%E6%96%B0%E6%A3%80%E6%B5%8B" target="_blank" rel="noopener noreferrer">数组更新检测API<OutboundLink/></a> <a href="https://cn.vuejs.org/v2/guide/list.html#%E5%AF%B9%E8%B1%A1%E5%8F%98%E6%9B%B4%E6%A3%80%E6%B5%8B%E6%B3%A8%E6%84%8F%E4%BA%8B%E9%A1%B9" target="_blank" rel="noopener noreferrer">对象更新检测API<OutboundLink/></a></p>\n<h2 id="数组更新检测"><a class="header-anchor" href="#数组更新检测">#</a> 数组更新检测</h2>\n<h4 id="变异方法-mutation-method"><a class="header-anchor" href="#变异方法-mutation-method">#</a> 变异方法 (mutation method)</h4>\n<p>Vue 将被侦听的数组的变异方法进行了包裹,所以它们也将会触发视图更新。这些被包裹过的方法包括:</p>\n',lastUpdated:"2022/12/14, 19:36:42",lastUpdatedTimestamp:1671017802e3},{title:"计算属性 vs 方法 vs 侦听属性",frontmatter:{title:"计算属性 vs 方法 vs 侦听属性",date:"2020-02-04T16:37:51.000Z",permalink:"/pages/351f72ecd9c41129",categories:["《Vue》笔记","基础"],tags:["Vue"],author:{name:"heBody",link:"https://github.com/heBody"}},regularPath:"/%E3%80%8AVue%E3%80%8B%E7%AC%94%E8%AE%B0/01.%E5%9F%BA%E7%A1%80/20.%E8%AE%A1%E7%AE%97%E5%B1%9E%E6%80%A7%20vs%20%E6%96%B9%E6%B3%95%20vs%20%E4%BE%A6%E5%90%AC%E5%B1%9E%E6%80%A7.html",relativePath:"《Vue》笔记/01.基础/20.计算属性 vs 方法 vs 侦听属性.md",key:"v-3b18cac6",path:"/pages/351f72ecd9c41129/",excerpt:'<h1 id="计算属性-vs-方法-vs-侦听属性"><a class="header-anchor" href="#计算属性-vs-方法-vs-侦听属性">#</a> 计算属性 vs 方法 vs 侦听属性</h1>\n<p><a href="https://cn.vuejs.org/v2/guide/computed.html#%E8%AE%A1%E7%AE%97%E5%B1%9E%E6%80%A7%E7%BC%93%E5%AD%98-vs-%E6%96%B9%E6%B3%95" target="_blank" rel="noopener noreferrer">API<OutboundLink/></a></p>\n<p>如果一个功能同时可以使用计算属性(computed)、方法(methods)、侦听属性(watch)来实现的时候推荐使用计算属性。</p>\n',lastUpdated:"2022/12/14, 19:36:42",lastUpdatedTimestamp:1671017802e3},{title:"使用组件的细节点",frontmatter:{title:"使用组件的细节点",date:"2020-02-13T13:26:20.000Z",permalink:"/pages/83a1ab785e7fd70c",categories:["《Vue》笔记","组件"],tags:["Vue"],author:{name:"heBody",link:"https://github.com/heBody"}},regularPath:"/%E3%80%8AVue%E3%80%8B%E7%AC%94%E8%AE%B0/02.%E7%BB%84%E4%BB%B6/36.%E4%BD%BF%E7%94%A8%E7%BB%84%E4%BB%B6%E7%9A%84%E7%BB%86%E8%8A%82%E7%82%B9.html",relativePath:"《Vue》笔记/02.组件/36.使用组件的细节点.md",key:"v-2d391ad8",path:"/pages/83a1ab785e7fd70c/",headers:[{level:2,title:"解析 DOM 模板时的注意事项",slug:"解析-dom-模板时的注意事项"},{level:2,title:"子组件内的data要使用函数返回",slug:"子组件内的data要使用函数返回"},{level:2,title:"通过 ref 引用操作DOM",slug:"通过-ref-引用操作dom"}],lastUpdated:"2022/12/14, 19:36:42",lastUpdatedTimestamp:1671017802e3},{title:"子组件派发事件和值给父组件",frontmatter:{title:"子组件派发事件和值给父组件",date:"2020-02-04T12:56:51.000Z",permalink:"/pages/0f19a1bcac14fd41",categories:["《Vue》笔记","组件"],tags:["Vue"],author:{name:"heBody",link:"https://github.com/heBody"}},regularPath:"/%E3%80%8AVue%E3%80%8B%E7%AC%94%E8%AE%B0/02.%E7%BB%84%E4%BB%B6/50.%E5%AD%90%E7%BB%84%E4%BB%B6%E6%B4%BE%E5%8F%91%E4%BA%8B%E4%BB%B6%E5%92%8C%E5%80%BC%E7%BB%99%E7%88%B6%E7%BB%84%E4%BB%B6.html",relativePath:"《Vue》笔记/02.组件/50.子组件派发事件和值给父组件.md",key:"v-cc86006a",path:"/pages/0f19a1bcac14fd41/",headers:[{level:2,title:"父子组件间传递数据 demo",slug:"父子组件间传递数据-demo"}],excerpt:'<h1 id="子组件派发事件和值给父组件"><a class="header-anchor" href="#子组件派发事件和值给父组件">#</a> 子组件派发事件和值给父组件</h1>\n<p><a href="https://cn.vuejs.org/v2/guide/components.html#%E7%9B%91%E5%90%AC%E5%AD%90%E7%BB%84%E4%BB%B6%E4%BA%8B%E4%BB%B6" target="_blank" rel="noopener noreferrer">API<OutboundLink/></a></p>\n<p>子组件通过<code>$emit</code>派发事件和值给父组件(值可以有多个)</p>\n\x3c!--beforebegin--\x3e<div class="language-js line-numbers-mode">\x3c!--afterbegin--\x3e<pre v-pre class="language-js"><code><span class="token keyword">this</span><span class="token punctuation">.</span><span class="token function">$emit</span><span class="token punctuation">(</span><span class="token string">\'fnX\'</span><span class="token punctuation">,</span> value<span class="token punctuation">)</span>\n</code></pre>\n<div class="line-numbers-wrapper"><span class="line-number">1</span><br></div>\x3c!--beforeend--\x3e</div>\x3c!--afterend--\x3e',lastUpdated:"2022/12/14, 19:36:42",lastUpdatedTimestamp:1671017802e3},{title:"Prop 验证 与 非 Prop 的 Attribute",frontmatter:{title:"Prop 验证 与 非 Prop 的 Attribute",date:"2020-02-15T10:49:04.000Z",permalink:"/pages/a3080f60f6596eb4",categories:["《Vue》笔记","组件"],tags:["Vue"],author:{name:"heBody",link:"https://github.com/heBody"}},regularPath:"/%E3%80%8AVue%E3%80%8B%E7%AC%94%E8%AE%B0/02.%E7%BB%84%E4%BB%B6/52.Prop%20%E9%AA%8C%E8%AF%81%20%E4%B8%8E%20%E9%9D%9E%20Prop%20%E7%9A%84%20Attribute.html",relativePath:"《Vue》笔记/02.组件/52.Prop 验证 与 非 Prop 的 Attribute.md",key:"v-62450f0c",path:"/pages/a3080f60f6596eb4/",headers:[{level:2,title:"Prop 验证",slug:"prop-验证"},{level:2,title:"非 Prop 的 Attribute",slug:"非-prop-的-attribute"},{level:3,title:"用处",slug:"用处"}],lastUpdated:"2022/12/14, 19:36:42",lastUpdatedTimestamp:1671017802e3},{title:"父组件给子组件传值",frontmatter:{title:"父组件给子组件传值",date:"2020-02-04T12:45:30.000Z",permalink:"/pages/07b384c2e6232e07",categories:["《Vue》笔记","组件"],tags:["Vue"],author:{name:"heBody",link:"https://github.com/heBody"}},regularPath:"/%E3%80%8AVue%E3%80%8B%E7%AC%94%E8%AE%B0/02.%E7%BB%84%E4%BB%B6/40.%E7%88%B6%E7%BB%84%E4%BB%B6%E7%BB%99%E5%AD%90%E7%BB%84%E4%BB%B6%E4%BC%A0%E5%80%BC.html",relativePath:"《Vue》笔记/02.组件/40.父组件给子组件传值.md",key:"v-72d592b7",path:"/pages/07b384c2e6232e07/",headers:[{level:2,title:"单向数据流",slug:"单向数据流"},{level:2,title:"父子组件间传递数据 demo",slug:"父子组件间传递数据-demo"}],excerpt:'<h1 id="父组件给子组件传值"><a class="header-anchor" href="#父组件给子组件传值">#</a> 父组件给子组件传值</h1>\n<p>父组件中,通过给子组件标签v-bind绑定属性的方式传入值</p>\n\x3c!--beforebegin--\x3e<div class="language-html line-numbers-mode">\x3c!--afterbegin--\x3e<pre v-pre class="language-html"><code><span class="token tag"><span class="token tag"><span class="token punctuation">&lt;</span>ComponentName</span> <span class="token attr-name"><span class="token namespace">v-bind:</span>name</span><span class="token attr-value"><span class="token punctuation attr-equals">=</span><span class="token punctuation">"</span>value<span class="token punctuation">"</span></span><span class="token punctuation">></span></span><span class="token tag"><span class="token tag"><span class="token punctuation">&lt;/</span>ComponentName</span><span class="token punctuation">></span></span>\n</code></pre>\n<div class="line-numbers-wrapper"><span class="line-number">1</span><br></div>\x3c!--beforeend--\x3e</div>\x3c!--afterend--\x3e<blockquote>\n<p>如果不使用v-bind传入的值为字符串,使用v-bind绑定传入的值为表达式。</p>\n</blockquote>\n',lastUpdated:"2022/12/14, 19:36:42",lastUpdatedTimestamp:1671017802e3},{title:"兄弟组件传值",frontmatter:{title:"兄弟组件传值",date:"2020-02-04T13:04:32.000Z",permalink:"/pages/809f4582d9ca9552",categories:["《Vue》笔记","组件"],tags:["Vue"],author:{name:"heBody",link:"https://github.com/heBody"}},regularPath:"/%E3%80%8AVue%E3%80%8B%E7%AC%94%E8%AE%B0/02.%E7%BB%84%E4%BB%B6/60.%E5%85%84%E5%BC%9F%E7%BB%84%E4%BB%B6%E4%BC%A0%E5%80%BC.html",relativePath:"《Vue》笔记/02.组件/60.兄弟组件传值.md",key:"v-10b041f2",path:"/pages/809f4582d9ca9552/",lastUpdated:"2022/12/14, 19:36:42",lastUpdatedTimestamp:1671017802e3},{title:"自定义事件",frontmatter:{title:"自定义事件",date:"2020-02-15T11:27:45.000Z",permalink:"/pages/9651417d08d1779d",categories:["《Vue》笔记","组件"],tags:["Vue"],author:{name:"heBody",link:"https://github.com/heBody"}},regularPath:"/%E3%80%8AVue%E3%80%8B%E7%AC%94%E8%AE%B0/02.%E7%BB%84%E4%BB%B6/55.%E8%87%AA%E5%AE%9A%E4%B9%89%E4%BA%8B%E4%BB%B6.html",relativePath:"《Vue》笔记/02.组件/55.自定义事件.md",key:"v-670b6814",path:"/pages/9651417d08d1779d/",headers:[{level:3,title:"在组件标签v-on绑定的事件是自定义事件",slug:"在组件标签v-on绑定的事件是自定义事件"},{level:3,title:"使自定义事件变为原生事件",slug:"使自定义事件变为原生事件"},{level:3,title:"自定义事件名会自动变小写",slug:"自定义事件名会自动变小写"}],lastUpdated:"2022/12/14, 19:36:42",lastUpdatedTimestamp:1671017802e3},{title:"非父子组件传值",frontmatter:{title:"非父子组件传值",date:"2020-02-15T14:55:03.000Z",permalink:"/pages/d408e64f666f146d",categories:["《Vue》笔记","组件"],tags:["Vue"],author:{name:"heBody",link:"https://github.com/heBody"}},regularPath:"/%E3%80%8AVue%E3%80%8B%E7%AC%94%E8%AE%B0/02.%E7%BB%84%E4%BB%B6/65.%E9%9D%9E%E7%88%B6%E5%AD%90%E7%BB%84%E4%BB%B6%E4%BC%A0%E5%80%BC.html",relativePath:"《Vue》笔记/02.组件/65.非父子组件传值.md",key:"v-1c39b7d2",path:"/pages/d408e64f666f146d/",excerpt:'<h1 id="非父子组件间传值"><a class="header-anchor" href="#非父子组件间传值">#</a> 非父子组件间传值</h1>\n<p>当组件的嵌套多时,非父子组件间传值就显得复杂,除了使用<a href="https://vuex.vuejs.org/zh/" target="_blank" rel="noopener noreferrer">vuex<OutboundLink/></a>实现之外,还可以通过Bus(或者叫 总线/发布订阅模式/观察者模式)的方式实现非父子组件间传值。</p>\n',lastUpdated:"2022/12/14, 19:36:42",lastUpdatedTimestamp:1671017802e3},{title:"父组件调用子组件方法并传入值",frontmatter:{title:"父组件调用子组件方法并传入值",date:"2020-02-04T13:06:37.000Z",permalink:"/pages/2e24dab728769e0c",categories:["《Vue》笔记","组件"],tags:["Vue"],author:{name:"heBody",link:"https://github.com/heBody"}},regularPath:"/%E3%80%8AVue%E3%80%8B%E7%AC%94%E8%AE%B0/02.%E7%BB%84%E4%BB%B6/70.%E7%88%B6%E7%BB%84%E4%BB%B6%E8%B0%83%E7%94%A8%E5%AD%90%E7%BB%84%E4%BB%B6%E6%96%B9%E6%B3%95%E5%B9%B6%E4%BC%A0%E5%85%A5%E5%80%BC.html",relativePath:"《Vue》笔记/02.组件/70.父组件调用子组件方法并传入值.md",key:"v-ba5da5d4",path:"/pages/2e24dab728769e0c/",lastUpdated:"2022/12/14, 19:36:42",lastUpdatedTimestamp:1671017802e3},{title:"插槽slot",frontmatter:{title:"插槽slot",date:"2020-02-16T11:46:27.000Z",permalink:"/pages/055ecee9a4325386",categories:["《Vue》笔记","组件"],tags:["Vue"],author:{name:"heBody",link:"https://github.com/heBody"}},regularPath:"/%E3%80%8AVue%E3%80%8B%E7%AC%94%E8%AE%B0/02.%E7%BB%84%E4%BB%B6/75.%E6%8F%92%E6%A7%BDslot.html",relativePath:"《Vue》笔记/02.组件/75.插槽slot.md",key:"v-da46e29e",path:"/pages/055ecee9a4325386/",headers:[{level:2,title:"插槽",slug:"插槽"},{level:4,title:"默认值",slug:"默认值"},{level:2,title:"具名插槽",slug:"具名插槽"},{level:2,title:"作用域插槽",slug:"作用域插槽"},{level:4,title:"作用:",slug:"作用"},{level:2,title:"具名插槽的缩写",slug:"具名插槽的缩写"},{level:2,title:"Demo",slug:"demo"}],lastUpdated:"2022/12/14, 19:36:42",lastUpdatedTimestamp:1671017802e3},{title:"动态组件与 v-once 指令",frontmatter:{title:"动态组件与 v-once 指令",date:"2020-02-16T15:52:19.000Z",permalink:"/pages/636ca33122e9a64b",categories:["《Vue》笔记","组件"],tags:["Vue"],author:{name:"heBody",link:"https://github.com/heBody"}},regularPath:"/%E3%80%8AVue%E3%80%8B%E7%AC%94%E8%AE%B0/02.%E7%BB%84%E4%BB%B6/80.%E5%8A%A8%E6%80%81%E7%BB%84%E4%BB%B6%E4%B8%8E%20v-once%20%E6%8C%87%E4%BB%A4.html",relativePath:"《Vue》笔记/02.组件/80.动态组件与 v-once 指令.md",key:"v-3491f880",path:"/pages/636ca33122e9a64b/",headers:[{level:2,title:"动态组件",slug:"动态组件"},{level:3,title:"动态组件 demo",slug:"动态组件-demo"},{level:2,title:"v-once 指令",slug:"v-once-指令"},{level:3,title:"通过 v-once 创建低开销的静态组件",slug:"通过-v-once-创建低开销的静态组件"}],lastUpdated:"2022/12/14, 19:36:42",lastUpdatedTimestamp:1671017802e3},{title:"transition过渡&动画",frontmatter:{title:"transition过渡&动画",date:"2020-02-04T13:16:19.000Z",permalink:"/pages/184a96b493a97078",categories:["《Vue》笔记","过渡&动画"],tags:["Vue"],author:{name:"heBody",link:"https://github.com/heBody"}},regularPath:"/%E3%80%8AVue%E3%80%8B%E7%AC%94%E8%AE%B0/03.%E8%BF%87%E6%B8%A1&%E5%8A%A8%E7%94%BB/110.transition%E8%BF%87%E6%B8%A1&%E5%8A%A8%E7%94%BB.html",relativePath:"《Vue》笔记/03.过渡&动画/110.transition过渡&动画.md",key:"v-63ce75d4",path:"/pages/184a96b493a97078/",headers:[{level:2,title:"使用",slug:"使用"},{level:2,title:"过渡的类名",slug:"过渡的类名"},{level:2,title:"css过渡 demo",slug:"css过渡-demo"},{level:2,title:"css动画 demo",slug:"css动画-demo"},{level:3,title:"组件中使用的示例",slug:"组件中使用的示例"}],excerpt:'<h1 id="transition过渡-动画"><a class="header-anchor" href="#transition过渡-动画">#</a> transition过渡&amp;动画</h1>\n<p><a href="https://cn.vuejs.org/v2/guide/transitions.html" target="_blank" rel="noopener noreferrer">API<OutboundLink/></a></p>\n<h2 id="使用"><a class="header-anchor" href="#使用">#</a> 使用</h2>\n<p>需要设置动画的元素或组件要在外边包裹一个<code>&lt;transition&gt;</code>标签,设置自定义的<code>name</code>,vue会根据元素的切换(进入/离开)过程添加相应的css类名,你可以<strong>自由地使用css类名来设置css过渡&amp;动画</strong>。</p>\n',lastUpdated:"2022/12/14, 19:36:42",lastUpdatedTimestamp:1671017802e3},{title:"vue父子组件的生命周期顺序",frontmatter:{title:"vue父子组件的生命周期顺序",date:"2020-02-18T16:39:33.000Z",permalink:"/pages/e6cec47efa42d7f1",categories:["《Vue》笔记","组件"],tags:["Vue"],author:{name:"heBody",link:"https://github.com/heBody"}},regularPath:"/%E3%80%8AVue%E3%80%8B%E7%AC%94%E8%AE%B0/02.%E7%BB%84%E4%BB%B6/90.vue%E7%88%B6%E5%AD%90%E7%BB%84%E4%BB%B6%E7%9A%84%E7%94%9F%E5%91%BD%E5%91%A8%E6%9C%9F%E9%A1%BA%E5%BA%8F.html",relativePath:"《Vue》笔记/02.组件/90.vue父子组件的生命周期顺序.md",key:"v-5f8dad4c",path:"/pages/e6cec47efa42d7f1/",headers:[{level:3,title:"加载渲染过程",slug:"加载渲染过程"},{level:3,title:"子组件更新过程",slug:"子组件更新过程"},{level:3,title:"父组件更新过程",slug:"父组件更新过程"},{level:3,title:"销毁过程",slug:"销毁过程"}],lastUpdated:"2022/12/14, 19:36:42",lastUpdatedTimestamp:1671017802e3},{title:"使用animate库",frontmatter:{title:"使用animate库",date:"2020-02-17T16:05:52.000Z",permalink:"/pages/3b0a20e70805fcea",categories:["《Vue》笔记","过渡&动画"],tags:["Vue"],author:{name:"heBody",link:"https://github.com/heBody"}},regularPath:"/%E3%80%8AVue%E3%80%8B%E7%AC%94%E8%AE%B0/03.%E8%BF%87%E6%B8%A1&%E5%8A%A8%E7%94%BB/112.%E4%BD%BF%E7%94%A8animate%E5%BA%93.html",relativePath:"《Vue》笔记/03.过渡&动画/112.使用animate库.md",key:"v-4686b2d4",path:"/pages/3b0a20e70805fcea/",headers:[{level:2,title:"自定义过渡类名",slug:"自定义过渡类名"},{level:2,title:"使用Animate.css库",slug:"使用animate-css库"},{level:2,title:"Demo",slug:"demo"}],excerpt:'<h1 id="vue中使用animate-css库"><a class="header-anchor" href="#vue中使用animate-css库">#</a> vue中使用Animate.css库</h1>\n<h2 id="自定义过渡类名"><a class="header-anchor" href="#自定义过渡类名">#</a> 自定义过渡类名</h2>\n<p>我们可以通过以下 attribute 来自定义过渡类名:</p>\n<ul>\n<li><code>enter-class</code></li>\n<li><code>enter-active-class</code></li>\n<li><code>enter-to-class</code> (2.1.8+)</li>\n<li><code>leave-class</code></li>\n<li><code>leave-active-class</code></li>\n<li><code>leave-to-class</code> (2.1.8+)</li>\n</ul>\n',lastUpdated:"2022/12/14, 19:36:42",lastUpdatedTimestamp:1671017802e3},{title:"transition-group列表过渡",frontmatter:{title:"transition-group列表过渡",date:"2020-02-04T13:17:42.000Z",permalink:"/pages/0aa92922ace6bb5e",categories:["《Vue》笔记","过渡&动画"],tags:["Vue"],author:{name:"heBody",link:"https://github.com/heBody"}},regularPath:"/%E3%80%8AVue%E3%80%8B%E7%AC%94%E8%AE%B0/03.%E8%BF%87%E6%B8%A1&%E5%8A%A8%E7%94%BB/120.transition-group%E5%88%97%E8%A1%A8%E8%BF%87%E6%B8%A1.html",relativePath:"《Vue》笔记/03.过渡&动画/120.transition-group列表过渡.md",key:"v-4fec822e",path:"/pages/0aa92922ace6bb5e/",headers:[{level:2,title:"列表的进入/离开过渡",slug:"列表的进入-离开过渡"},{level:2,title:"列表的排序过渡",slug:"列表的排序过渡"}],excerpt:'<h1 id="transition-group列表过渡"><a class="header-anchor" href="#transition-group列表过渡">#</a> transition-group列表过渡</h1>\n<h2 id="列表的进入-离开过渡"><a class="header-anchor" href="#列表的进入-离开过渡">#</a> 列表的进入/离开过渡</h2>\n\x3c!--beforebegin--\x3e<div class="language-html line-numbers-mode">\x3c!--afterbegin--\x3e<pre v-pre class="language-html"><code><span class="token tag"><span class="token tag"><span class="token punctuation">&lt;</span>transition-group</span> <span class="token attr-name">tag</span><span class="token attr-value"><span class="token punctuation attr-equals">=</span><span class="token punctuation">"</span>ul<span class="token punctuation">"</span></span><span class="token punctuation">></span></span> <span class="token comment">&lt;!--tag转为ul--\x3e</span>\n <span class="token tag"><span class="token tag"><span class="token punctuation">&lt;</span>li</span> <span class="token attr-name">v-for</span><span class="token attr-value"><span class="token punctuation attr-equals">=</span><span class="token punctuation">"</span>item in list<span class="token punctuation">"</span></span> <span class="token attr-name">:key</span><span class="token attr-value"><span class="token punctuation attr-equals">=</span><span class="token punctuation">"</span>item<span class="token punctuation">"</span></span><span class="token punctuation">></span></span>{{item}}<span class="token tag"><span class="token tag"><span class="token punctuation">&lt;/</span>li</span><span class="token punctuation">></span></span> <span class="token comment">&lt;!--子元素要有key--\x3e</span>\n<span class="token tag"><span class="token tag"><span class="token punctuation">&lt;/</span>transition-group</span><span class="token punctuation">></span></span>\n</code></pre>\n<div class="line-numbers-wrapper"><span class="line-number">1</span><br><span class="line-number">2</span><br><span class="line-number">3</span><br></div>\x3c!--beforeend--\x3e</div>\x3c!--afterend--\x3e<p><strong>注意</strong>:列表元素一定要有<code>key</code></p>\n',lastUpdated:"2022/12/14, 19:36:42",lastUpdatedTimestamp:1671017802e3},{title:"Mixin混入",frontmatter:{title:"Mixin混入",date:"2020-02-19T15:22:41.000Z",permalink:"/pages/bd36a3c1bc3e0821",categories:["《Vue》笔记","可复用性&组合"],tags:["Vue"],author:{name:"heBody",link:"https://github.com/heBody"}},regularPath:"/%E3%80%8AVue%E3%80%8B%E7%AC%94%E8%AE%B0/04.%E5%8F%AF%E5%A4%8D%E7%94%A8%E6%80%A7&%E7%BB%84%E5%90%88/01.Mixin%E6%B7%B7%E5%85%A5.html",relativePath:"《Vue》笔记/04.可复用性&组合/01.Mixin混入.md",key:"v-705e0c86",path:"/pages/bd36a3c1bc3e0821/",headers:[{level:2,title:"基础",slug:"基础"},{level:2,title:"选项合并",slug:"选项合并"},{level:2,title:"某项目中使用的Mixin示例",slug:"某项目中使用的mixin示例"}],excerpt:'<h1 id="mixin混入"><a class="header-anchor" href="#mixin混入">#</a> Mixin混入</h1>\n<h2 id="基础"><a class="header-anchor" href="#基础">#</a> 基础</h2>\n<p>混入 (mixin) 提供了一种非常灵活的方式,来分发 Vue 组件中的可复用功能。一个混入对象可以包含任意组件选项。当组件使用混入对象时,所有混入对象的选项将被“混合”进入该组件本身的选项。</p>\n',lastUpdated:"2022/12/14, 19:36:42",lastUpdatedTimestamp:1671017802e3},{title:"Vue CLi v3 创建项目使用记录",frontmatter:{title:"Vue CLi v3 创建项目使用记录",date:"2020-02-20T17:24:29.000Z",permalink:"/pages/d00311f8174119b2",categories:["《Vue》笔记","工具"],tags:["Vue"],author:{name:"heBody",link:"https://github.com/heBody"}},regularPath:"/%E3%80%8AVue%E3%80%8B%E7%AC%94%E8%AE%B0/05.%E5%B7%A5%E5%85%B7/10.Vue%20CLi%20v3%20%E5%88%9B%E5%BB%BA%E9%A1%B9%E7%9B%AE%E4%BD%BF%E7%94%A8%E8%AE%B0%E5%BD%95.html",relativePath:"《Vue》笔记/05.工具/10.Vue CLi v3 创建项目使用记录.md",key:"v-cf037608",path:"/pages/d00311f8174119b2/",headers:[{level:2,title:"vue create",slug:"vue-create"},{level:2,title:"图形化界面",slug:"图形化界面"}],lastUpdated:"2022/12/14, 19:36:42",lastUpdatedTimestamp:1671017802e3},{title:"vuex操作相关",frontmatter:{title:"vuex操作相关",date:"2020-02-04T13:15:19.000Z",permalink:"/pages/d9d62d6ab8ff99a6",categories:["《Vue》笔记","规模化"],tags:["Vue"],author:{name:"heBody",link:"https://github.com/heBody"}},regularPath:"/%E3%80%8AVue%E3%80%8B%E7%AC%94%E8%AE%B0/06.%E8%A7%84%E6%A8%A1%E5%8C%96/100.vuex%E6%93%8D%E4%BD%9C%E7%9B%B8%E5%85%B3.html",relativePath:"《Vue》笔记/06.规模化/100.vuex操作相关.md",key:"v-6bcc6732",path:"/pages/d9d62d6ab8ff99a6/",lastUpdated:"2022/12/14, 19:36:42",lastUpdatedTimestamp:1671017802e3},{title:"路由懒加载",frontmatter:{title:"路由懒加载",date:"2020-02-04T13:20:20.000Z",permalink:"/pages/38ecac9a9b92f037",categories:["《Vue》笔记","规模化"],tags:["Vue"],author:{name:"heBody",link:"https://github.com/heBody"}},regularPath:"/%E3%80%8AVue%E3%80%8B%E7%AC%94%E8%AE%B0/06.%E8%A7%84%E6%A8%A1%E5%8C%96/140.%E8%B7%AF%E7%94%B1%E6%87%92%E5%8A%A0%E8%BD%BD.html",relativePath:"《Vue》笔记/06.规模化/140.路由懒加载.md",key:"v-45753986",path:"/pages/38ecac9a9b92f037/",lastUpdated:"2022/12/14, 19:36:42",lastUpdatedTimestamp:1671017802e3},{title:"Vuex",frontmatter:{title:"Vuex",date:"2020-08-08T10:38:33.000Z",permalink:"/pages/b30620/",categories:["《Vue》笔记","Vuex"],tags:[null],author:{name:"heBody",link:"https://github.com/heBody"}},regularPath:"/%E3%80%8AVue%E3%80%8B%E7%AC%94%E8%AE%B0/10.Vuex/01.Vuex.html",relativePath:"《Vue》笔记/10.Vuex/01.Vuex.md",key:"v-8a781aac",path:"/pages/b30620/",headers:[{level:2,title:"Vuex使用过程演示",slug:"vuex使用过程演示"},{level:2,title:"核心概念",slug:"核心概念"},{level:3,title:"State",slug:"state"},{level:4,title:"mapState 辅助函数",slug:"mapstate-辅助函数"},{level:4,title:"对象展开运算符",slug:"对象展开运算符"},{level:4,title:"组件仍然保有局部状态",slug:"组件仍然保有局部状态"},{level:3,title:"Getter",slug:"getter"},{level:4,title:"通过属性访问",slug:"通过属性访问"},{level:4,title:"通过方法访问",slug:"通过方法访问"},{level:4,title:"mapGetters 辅助函数",slug:"mapgetters-辅助函数"},{level:3,title:"Mutation",slug:"mutation"},{level:4,title:"提交载荷(Payload)",slug:"提交载荷-payload"},{level:4,title:"对象风格的提交方式",slug:"对象风格的提交方式"},{level:4,title:"Mutation 需遵守 Vue 的响应规则",slug:"mutation-需遵守-vue-的响应规则"},{level:4,title:"使用常量替代 Mutation 事件类型",slug:"使用常量替代-mutation-事件类型"},{level:4,title:"Mutation 必须是同步函数",slug:"mutation-必须是同步函数"},{level:4,title:"在组件中提交 Mutation (mapMutations辅助函数)",slug:"在组件中提交-mutation-mapmutations辅助函数"},{level:4,title:"下一步:Action",slug:"下一步-action"},{level:3,title:"Action",slug:"action"},{level:4,title:"分发 Action",slug:"分发-action"},{level:4,title:"在组件中分发 Action (mapActions 辅助函数)",slug:"在组件中分发-action-mapactions-辅助函数"},{level:4,title:"组合 Action",slug:"组合-action"},{level:2,title:"更多",slug:"更多"}],lastUpdated:"2022/12/14, 19:36:42",lastUpdatedTimestamp:1671017802e3},{title:"Vue中的防抖函数封装和使用",frontmatter:{title:"Vue中的防抖函数封装和使用",date:"2020-02-04T13:10:19.000Z",permalink:"/pages/fb08e252dfd8fdfd",categories:["《Vue》笔记","其他"],tags:["Vue"],author:{name:"heBody",link:"https://github.com/heBody"}},regularPath:"/%E3%80%8AVue%E3%80%8B%E7%AC%94%E8%AE%B0/99.%E5%85%B6%E4%BB%96/80.Vue%E4%B8%AD%E7%9A%84%E9%98%B2%E6%8A%96%E5%87%BD%E6%95%B0%E5%B0%81%E8%A3%85%E5%92%8C%E4%BD%BF%E7%94%A8.html",relativePath:"《Vue》笔记/99.其他/80.Vue中的防抖函数封装和使用.md",key:"v-a86fccfe",path:"/pages/fb08e252dfd8fdfd/",headers:[{level:3,title:"相关文章",slug:"相关文章"}],lastUpdated:"2022/12/14, 19:36:42",lastUpdatedTimestamp:1671017802e3},{title:"操作本地缓存",frontmatter:{title:"操作本地缓存",date:"2020-02-04T13:14:19.000Z",permalink:"/pages/30a94dbe96873b33",categories:["《Vue》笔记","其他"],tags:["Vue"],author:{name:"heBody",link:"https://github.com/heBody"}},regularPath:"/%E3%80%8AVue%E3%80%8B%E7%AC%94%E8%AE%B0/99.%E5%85%B6%E4%BB%96/90.%E6%93%8D%E4%BD%9C%E6%9C%AC%E5%9C%B0%E7%BC%93%E5%AD%98.html",relativePath:"《Vue》笔记/99.其他/90.操作本地缓存.md",key:"v-57e6e686",path:"/pages/30a94dbe96873b33/",lastUpdated:"2022/12/14, 19:36:42",lastUpdatedTimestamp:1671017802e3},{title:"字符串的新增方法",frontmatter:{title:"字符串的新增方法",date:"2020-02-09T16:00:29.000Z",permalink:"/pages/a650b4a0ebfc9350",author:"阮一峰",categories:["《ES6 教程》笔记"],tags:["ES6"]},regularPath:"/%E3%80%8AES6%20%E6%95%99%E7%A8%8B%E3%80%8B%E7%AC%94%E8%AE%B0/05.%E5%AD%97%E7%AC%A6%E4%B8%B2%E7%9A%84%E6%96%B0%E5%A2%9E%E6%96%B9%E6%B3%95.html",relativePath:"《ES6 教程》笔记/05.字符串的新增方法.md",key:"v-0aa90f3c",path:"/pages/a650b4a0ebfc9350/",headers:[{level:2,title:"String.fromCodePoint()",slug:"string-fromcodepoint"},{level:2,title:"String.raw()",slug:"string-raw"},{level:2,title:"实例方法:codePointAt()",slug:"实例方法-codepointat"},{level:2,title:"实例方法:normalize()",slug:"实例方法-normalize"},{level:2,title:"实例方法:includes() 包含, startsWith() 头部包含, endsWith() 末尾包含",slug:"实例方法-includes-包含-startswith-头部包含-endswith-末尾包含"},{level:2,title:"实例方法:repeat() 重复",slug:"实例方法-repeat-重复"},{level:2,title:"实例方法:padStart() 补全头部,padEnd() 补全末尾",slug:"实例方法-padstart-补全头部-padend-补全末尾"},{level:2,title:"实例方法:trimStart() 修剪头部,trimEnd() 修剪末尾",slug:"实例方法-trimstart-修剪头部-trimend-修剪末尾"},{level:2,title:"实例方法:matchAll()",slug:"实例方法-matchall"}],excerpt:'<h1 id="字符串的新增方法"><a class="header-anchor" href="#字符串的新增方法">#</a> 字符串的新增方法</h1>\n<p>本章介绍字符串对象的新增方法。</p>\n<h2 id="string-fromcodepoint"><a class="header-anchor" href="#string-fromcodepoint">#</a> String.fromCodePoint()</h2>\n<p>ES5 提供<code>String.fromCharCode()</code>方法,用于从 Unicode 码点返回对应字符,但是这个方法不能识别码点大于<code>0xFFFF</code>的字符。</p>\n\x3c!--beforebegin--\x3e<div class="language-javascript line-numbers-mode">\x3c!--afterbegin--\x3e<pre v-pre class="language-javascript"><code>String<span class="token punctuation">.</span><span class="token function">fromCharCode</span><span class="token punctuation">(</span><span class="token number">0x20BB7</span><span class="token punctuation">)</span>\n<span class="token comment">// "ஷ"</span>\n</code></pre>\n<div class="line-numbers-wrapper"><span class="line-number">1</span><br><span class="line-number">2</span><br></div>\x3c!--beforeend--\x3e</div>\x3c!--afterend--\x3e',lastUpdated:"2022/12/14, 19:36:42",lastUpdatedTimestamp:1671017802e3}],themeConfig:{nav:[{text:"首页",link:"/"},{text:"个人游戏网站",link:"http://fseller.com"},{text:"前端",link:"/web/",items:[{text:"前端文章",items:[{text:"JavaScript",link:"/pages/8143cc480faf9a11/"}]},{text:"学习笔记",items:[{text:"《JavaScript教程》",link:"/note/javascript/"},{text:"《JavaScript高级程序设计》",link:"/note/js/"},{text:"《ES6 教程》",link:"/note/es6/"},{text:"《Vue》",link:"/note/vue/"},{text:"《React》",link:"/note/react/"},{text:"《TypeScript 从零实现 axios》",link:"/note/typescript-axios/"},{text:"《Git》",link:"/note/git/"},{text:"TypeScript",link:"/pages/51afd6/"},{text:"JS设计模式总结",link:"/pages/4643cd/"}]}]},{text:"页面",link:"/ui/",items:[{text:"HTML",link:"/pages/8309a5b876fc95e3/"},{text:"CSS",link:"/pages/0a83b083bdf257cb/"}]},{text:"技术",link:"/technology/",items:[{text:"技术文档",link:"/pages/9a7ee40fc232253e/"},{text:"GitHub技巧",link:"/pages/4c778760be26d8b3/"},{text:"Nodejs",link:"/pages/117708e0af7f0bd9/"},{text:"博客搭建",link:"/pages/41f87d890d0a02af/"}]},{text:"更多",link:"/more/",items:[{text:"学习",link:"/pages/f2a556/"},{text:"面试",link:"/pages/aea6571b7a8bae86/"},{text:"心情杂货",link:"/pages/2d615df9a36a98ed/"},{text:"实用技巧",link:"/pages/baaa02/"},{text:"友情链接",link:"/friends/"}]},{text:"关于",link:"/about/"},{text:"收藏",link:"/pages/beb6c0bd8a66cea6/"},{text:"索引",link:"/archives/",items:[{text:"分类",link:"/categories/"},{text:"标签",link:"/tags/"},{text:"归档",link:"/archives/"}]}],sidebarDepth:2,logo:"/img/logo.png",repo:"heBody/blog",searchMaxSuggestions:10,lastUpdated:"上次更新",docsDir:"docs",editLinks:!0,editLinkText:"编辑",sidebar:{"/00.目录页/":[["01.前端.md","前端","/web/"],["02.页面.md","页面","/ui/"],["03.技术.md","技术","/technology/"],["04.更多.md","更多","/more/"]],catalogue:{"前端":"/web/","页面":"/ui/","技术":"/technology/","更多":"/more/","《JavaScript教程》笔记":"/note/javascript/","《ES6 教程》笔记":"/note/es6/","《Vue》笔记":"/note/vue/","《React》笔记":"/note/react/","《TypeScript 从零实现 axios》":"/note/typescript-axios/","《Git》学习笔记":"/note/git/"},"/01.前端/":[{title:"JavaScript文章",collapsable:!0,children:[["25.JavaScript文章/01.33个非常实用的JavaScript一行代码.md","33个非常实用的JavaScript一行代码","/pages/a61298/"],["25.JavaScript文章/02.new命令原理.md","new命令原理","/pages/8143cc480faf9a11"],["25.JavaScript文章/03.ES5面向对象.md","ES5面向对象","/pages/b1af5cb8996363c5"],["25.JavaScript文章/04.ES6面向对象.md","ES6面向对象","/pages/1f4123be6f45abcd"],["25.JavaScript文章/06.多种数组去重性能对比.md","多种数组去重性能对比","/pages/e808fba1fa8fbab2"],["25.JavaScript文章/50.js随机打乱数组.md","JS随机打乱数组","/pages/40b4db2d38ba85f2"],["25.JavaScript文章/60.判断是否为移动端浏览器.md","判断是否为移动端浏览器","/pages/40f623be692cf8bc"],["25.JavaScript文章/70.将一维数组按指定长度转为二维数组.md","将一维数组按指定长度转为二维数组","/pages/f1acb712033ac8da"],["25.JavaScript文章/80.防抖与节流函数.md","防抖与节流函数","/pages/0f6a0ac99b62ede5"],["25.JavaScript文章/90.JS获取和修改url参数.md","JS获取和修改url参数","/pages/7a91be2d502346ce"],["25.JavaScript文章/100.比typeof运算符更准确的类型判断.md","比typeof运算符更准确的类型判断","/pages/fd4a16d56b83c1bc"],{title:"三级目录",collapsable:!0,children:[["25.JavaScript文章/1110.三级目录/00.四级文件.md","四级文件(测试)","/pages/8481d1/"]]}]},{title:"学习笔记",collapsable:!0,children:[["40.学习笔记/00.《JavaScript教程》笔记.md","《JavaScript教程》笔记","/note/javascript/"],["40.学习笔记/05.《JavaScript高级程序设计》笔记.md","《JavaScript高级程序设计》笔记","/note/js/"],["40.学习笔记/10.《ES6 教程》笔记.md","《ES6 教程》笔记","/note/es6/"],["40.学习笔记/20.《Vue》笔记.md","《Vue》笔记","/note/vue/"],["40.学习笔记/25.《React》笔记.md","《React》笔记","/note/react/"],["40.学习笔记/30.《TypeScript 从零实现 axios》.md","《TypeScript 从零实现 axios》","/note/typescript-axios/"],["40.学习笔记/33.《Git》学习笔记.md","《Git》学习笔记","/note/git/"],["40.学习笔记/35.TypeScript笔记.md","TypeScript笔记","/pages/51afd6/"],["40.学习笔记/40.小程序笔记.md","小程序笔记","/note/wx-miniprogram/"],["40.学习笔记/50.JS设计模式总结笔记.md","JS设计模式总结笔记","/pages/4643cd/"]]}],"/02.页面/":[{title:"HTML",collapsable:!0,children:[["10.HTML/10.常用meta整理.md","常用meta整理","/pages/8309a5b876fc95e3"]]},{title:"CSS",collapsable:!0,children:[["20.CSS/00.CSS教程和技巧收藏.md","CSS教程和技巧收藏","/pages/c8f128/"],["20.CSS/01.flex布局语法.md","flex布局语法","/pages/0a83b083bdf257cb"],["20.CSS/02.flex布局案例-基础.md","flex布局案例-基础","/pages/ea6db1530c42ad51"],["20.CSS/03.flex布局案例-骰子.md","flex布局案例-骰子","/pages/eff61bc8b4f4695d"],["20.CSS/04.flex布局案例-圣杯布局.md","flex布局案例-圣杯布局","/pages/df9e7c7214fa5046"],["20.CSS/05.flex布局案例-网格布局.md","flex布局案例-网格布局","/pages/85b5a3fe218a34b7"],["20.CSS/06.flex布局案例-输入框布局.md","flex布局案例-输入框布局","/pages/05cc577fb51c7998"],["20.CSS/07.CSS3之transition过渡.md","CSS3之transition过渡","/pages/02d7f59d98d87409"],["20.CSS/08.CSS3之animation动画.md","CSS3之animation动画","/pages/c2c0432138f6e042"],["20.CSS/20.「布局技巧」图片未加载前自动撑开元素高度.md","「布局技巧」图片未加载前自动撑开元素高度","/pages/3d52574260725aea"],["20.CSS/30.文字在一行或多行时超出显示省略号.md","文字在一行或多行时超出显示省略号","/pages/42b66999cc27dc25"],["20.CSS/35.从box-sizing属性入手,了解盒子模型.md","从box-sizing属性入手,了解盒子模型","/pages/20a978023139589d"],["20.CSS/40.水平垂直居中的几种方式-案例.md","水平垂直居中的几种方式-案例","/pages/cb7cb251adba4bf7"],["20.CSS/45.如何根据系统主题自动响应CSS深色模式.md","如何根据系统主题自动响应CSS深色模式","/pages/5dde351274f1e39d"],["20.CSS/50.「css技巧」使用hover和attr()定制悬浮提示.md","「css技巧」使用hover和attr()定制悬浮提示","/pages/941581927b4a38f8"],["20.CSS/60.CSS-function汇总.md","CSS-function汇总","/pages/3da0d7"],["20.CSS/70.CSS给table的tbody添加滚动条.md","CSS给table的tbody添加滚动条","/pages/55f894/"]]}],"/03.技术/":[{title:"技术文档",collapsable:!0,children:[["01.技术文档/01.Git使用手册.md","Git使用手册","/pages/9a7ee40fc232253e"],["01.技术文档/02.Markdown使用教程.md","Markdown使用教程","/pages/ad247c4332211551"],["01.技术文档/03.npm常用命令.md","npm常用命令","/pages/61f2f95fd7da14fd"],["01.技术文档/10.npm packageJson属性详解.md","npm packageJson属性详解","/pages/dec4f3f00e71a312"],["01.技术文档/15.yaml语言教程.md","yaml语言教程","/pages/4e8444e2d534d14f"],["01.技术文档/20.Git修改分支名.md","Git修改分支名","/pages/922650/"]]},{title:"GitHub技巧",collapsable:!0,children:[["02.GitHub技巧/01.GitHub高级搜索技巧.md","GitHub高级搜索技巧","/pages/4c778760be26d8b3"],["02.GitHub技巧/02.GitHub Actions 实现自动部署静态博客.md","GitHub Actions 实现自动部署静态博客","/pages/6b9d359ec5aa5019"],["02.GitHub技巧/03.GitHub Actions 定时运行代码:每天定时百度链接推送.md","GitHub Actions 定时运行代码:每天定时百度链接推送","/pages/f44d2f9ad04ab8d3"],["02.GitHub技巧/10.GitHub加速下载项目的方法.md","GitHub加速下载项目的方法","/pages/95331c6a9613faf8"]]},{title:"Nodejs",collapsable:!0,children:[["03.Nodejs/01.nodejs递归读取所有文件.md","nodejs递归读取所有文件","/pages/117708e0af7f0bd9"]]},{title:"博客搭建",collapsable:!0,children:[["04.博客搭建/01.解决百度无法收录搭建在GitHub上的个人博客的问题.md","解决百度无法收录搭建在GitHub上的个人博客的问题","/pages/41f87d890d0a02af"],["04.博客搭建/02.使用Gitalk实现静态博客无后台评论系统.md","使用Gitalk实现静态博客无后台评论系统","/pages/1da0bf9a988eafe5"],["04.博客搭建/03.GitHub + jsDelivr + TinyPNG+ PicGo 打造稳定快速、高效免费图床.md","GitHub + jsDelivr + TinyPNG+ PicGo 打造稳定快速、高效免费图床","/pages/a5f73af5185fdf0a"],["04.博客搭建/10.vdoing主题效果图.md","vdoing主题效果图","/pages/d557b9a89a215d2e"]]}],"/04.更多/":[{title:"学习",collapsable:!0,children:[["01.学习/00.费曼学习法.md","费曼学习法","/pages/f2a556/"],["01.学习/01.笔记方法.md","笔记方法","/pages/e60c81/"],["01.学习/02.提高学习效率的策略.md","提高学习效率的策略","/pages/a8692ab3bdcb4588"],["01.学习/03.提高记忆的技巧.md","提高记忆的技巧","/pages/996822b2a2ca6e3b"],["01.学习/04.自律小建议.md","自律小建议","/pages/c3f302a03c8daf79"],["01.学习/05.处理问题的思路.md","处理问题的思路","/pages/9ba2b8fb13de1957"],["01.学习/10.搜索引擎使用技巧.md","搜索引擎使用技巧","/pages/ce818a"]]},{title:"面试",collapsable:!0,children:[["03.面试/01.面试问题集锦.md","面试问题集锦","/pages/aea6571b7a8bae86"]]},{title:"心情杂货",collapsable:!0,children:[["05.心情杂货/01.一个完美主义者的自我救赎.md","一个完美主义者的自我救赎","/pages/2d615df9a36a98ed"],["05.心情杂货/10.反向拆解让人上瘾的套路,找回自律.md","反向拆解让人上瘾的套路,找回自律","/pages/d6d331/"]]},{title:"实用技巧",collapsable:!0,children:[["10.实用技巧/01.2分钟规则.md","2分钟规则","/pages/baaa02/"],["10.实用技巧/10.一行代码“黑”掉任意网站.md","一行代码“黑”掉任意网站","/pages/dcebaf/","原创"]]},["99.友情链接.md","友情链接","/friends"]],"/05.关于/":[["01.关于.md","关于","/about/"]],"/06.收藏夹/":[["01.网站.md","网站","/pages/beb6c0bd8a66cea6/"],["02.常用的前端轮子.md","常用的前端轮子","/pages/47cf96/"]],"/《ES6 教程》笔记/":[["01.ECMAScript 6 简介.md","ECMAScript 6 简介","/pages/f344d070a1031ef7"],["02.let 和 const 命令.md","let 和 const 命令","/pages/c1edd70a6b7c7872"],["03.变量的解构赋值.md","变量的解构赋值","/pages/b1ab10a62f7564da"],["04.字符串的扩展.md","字符串的扩展","/pages/ca89eca8adeba5f4"],["05.字符串的新增方法.md","字符串的新增方法","/pages/a650b4a0ebfc9350"],["06.正则的扩展.md","正则的扩展","/pages/0473261a6ab0ee8c"],["07.数值的扩展.md","数值的扩展","/pages/5dfea9a0f2d1a392"],["08.函数的扩展.md","函数的扩展","/pages/8ed309d668b20264"],["09.数组的扩展.md","数组的扩展","/pages/e34009d60d8bc4b2"],["10.对象的扩展.md","对象的扩展","/pages/b5e3e0a0ff6e9c25"],["11.对象的新增方法.md","对象的新增方法","/pages/e85e68947502cf90"],["12.Symbol.md","Symbol","/pages/02c86eb2792f3262"],["13.Set 和 Map 数据结构.md","Set 和 Map 数据结构","/pages/0c21dae358fca16b"],["14.Proxy.md","Proxy","/pages/f56ec2ab97d60483"],["15.Reflect.md","Reflect","/pages/74de3e45e4491e95"],["16.Promise 对象.md","Promise 对象","/pages/2810ae8985e9bd52"],["17.Iterator 和 for-of 循环.md","Iterator 和 for-of 循环","/pages/48df907ad3570f3d"],["18.Generator 函数的语法.md","Generator 函数的语法","/pages/718b48ed9ce0adce"],["19.Generator 函数的异步应用.md","Generator 函数的异步应用","/pages/75af7031eb66847b"],["20.async 函数.md","async 函数","/pages/3777253e65bac487"],["21.Class 的基本语法.md","Class 的基本语法","/pages/e831e1593c82bbe0"],["22.Class 的继承.md","Class 的继承","/pages/83f8c3a0cd87dd83"],["23.Module 的语法.md","Module 的语法","/pages/efe2fb04eb8ac5fb"],["24.Module 的加载实现.md","Module 的加载实现","/pages/a79ca2e64ceae213"],["25.编程风格.md","编程风格","/pages/984bf549204bb266"],["26.读懂 ECMAScript 规格.md","读懂 ECMAScript 规格","/pages/32c35f7651d6e58e"],["27.异步遍历器.md","异步遍历器","/pages/16121351be68691b"],["28.ArrayBuffer.md","ArrayBuffer","/pages/a2ba314746bfdbdd"],["29.最新提案.md","最新提案","/pages/7188882b8d65af1b"],["30.装饰器.md","装饰器","/pages/e97bc1e5626b082c"],["31.函数式编程.md","函数式编程","/pages/1cf50330655efc69"],["32.Mixin.md","Mixin","/pages/6a8e2dc558da1b39"],["33.SIMD.md","SIMD","/pages/8e8f80f69b775a56"],["34.参考链接.md","参考链接","/pages/ea6f3b870f6dab69"]],"/《Git》学习笔记/":[{title:"手册",collapsable:!0,children:[["10.手册/00.常用Git命令清单.md","常用Git命令清单","/pages/8292d8/"],["10.手册/03.Git变基合并.md","Git变基合并","/pages/c10281/"],["10.手册/06.Git命令思维导图.md","Git命令思维导图","/pages/4cbc21/"]]},{title:"文档笔记",collapsable:!0,children:[["20.文档笔记/10.Git基础与命令.md","Git基础与命令","/pages/635088/"],["20.文档笔记/20.Git分支-分支原理.md","Git分支-分支原理","/pages/4bef1a/"],["20.文档笔记/30.Git分支的新建与合并-分支操作.md","Git分支的新建与合并-分支操作","/pages/ea5a8c/"],["20.文档笔记/40.Git分支管理-查看分支.md","Git分支管理-查看分支","/pages/a399b3/"],["20.文档笔记/50.Git分支开发工作流.md","Git分支开发工作流","/pages/49ee30/"],["20.文档笔记/60.Git分支-远程分支.md","Git分支-远程分支","/pages/574d62/"],["20.文档笔记/70.Git分支-变基.md","Git分支-变基","/pages/3a3247/"],["20.文档笔记/80.Git工具-查看修订版本.md","Git工具-查看修订版本","/pages/c984d1/"],["20.文档笔记/90.Git工具-交互式暂存.md","Git工具-交互式暂存","/pages/76d859/"],["20.文档笔记/100.Git工具-重写历史.md","Git工具-重写历史","/pages/1832fe/"],["20.文档笔记/110.Git工具-重置揭密.md","Git工具-重置揭密","/pages/d9e9c6/"]]}],"/《JavaScript教程》笔记/":[["01.基础.md","基础","/pages/0796ba76b4b55368"],["02.内置对象.md","内置对象","/pages/74d2ab3fbfeaaa68"],["03.面向对象.md","面向对象","/pages/659b5af5e2e704e0"],["04.异步操作.md","异步操作","/pages/d61b1cb4cdac1f63"],["05.DOM.md","DOM","/pages/7d961b8030c6099e"],["06.事件.md","事件","/pages/10b2761db5a8e089"],["07.浏览器模型.md","浏览器模型","/pages/bab4930124ad2c10"]],"/《React》笔记/":[{title:"核心概念",collapsable:!0,children:[["01.核心概念/01.JSX简介.md","JSX简介","/pages/5df969/"],["01.核心概念/02.元素渲染.md","元素渲染","/pages/b5d372/"],["01.核心概念/03.组件&Props.md","组件&Props","/pages/9ac43a/"],["01.核心概念/04.State&生命周期.md","State&生命周期","/pages/1e3ca2/"],["01.核心概念/05.事件处理.md","事件处理","/pages/f27775/"],["01.核心概念/06.条件渲染.md","条件渲染","/pages/8fcda8/"],["01.核心概念/07.列表&Key.md","列表&Key","/pages/88f4b0/"],["01.核心概念/08.表单.md","表单","/pages/002db7/"],["01.核心概念/09.状态提升.md","状态提升 (共享状态)","/pages/f0e3d2/"],["01.核心概念/10.组合vs继承.md","组合vs继承","/pages/9ae8e8/"],["01.核心概念/11.React哲学.md","React哲学","/pages/c689bf/"]]},{title:"高级指引",collapsable:!0,children:[["02.高级指引/01.高级指引.md","高级指引","/pages/b7ec27/"]]},{title:"Hook",collapsable:!0,children:[["03.Hook/01.Hook概述.md","Hook概述","/pages/4c13b9/"],["03.Hook/02.使用State Hook.md","使用State Hook","/pages/82baa3/"],["03.Hook/03.使用Effect Hook.md","使用Effect Hook","/pages/72710d/"],["03.Hook/04.Hook规则.md","Hook规则","/pages/723be7/"],["03.Hook/05.自定义 Hook.md","自定义 Hook","/pages/cf1018/"]]},{title:"案例演示",collapsable:!0,children:[["04.案例演示/01.案例演示.md","案例演示","/pages/87146f/"]]}],"/《TypeScript 从零实现 axios》/":[{title:"初识 TypeScript",collapsable:!0,children:[["01.初识 TypeScript/01.简介.md","简介","/pages/e05dce83e5129785"],["01.初识 TypeScript/02.安装 TypeScript.md","安装 TypeScript","/pages/064e0f7b6b6142c8"],["01.初识 TypeScript/03.编写第一个 TypeScript 程序.md","编写第一个 TypeScript 程序","/pages/c85249f40e7a3517"]]},{title:"TypeScript 常用语法",collapsable:!0,children:[["02.TypeScript 常用语法/01.基础类型.md","基础类型","/pages/28672e2743bbc3a7"],["02.TypeScript 常用语法/02.变量声明.md","变量声明","/pages/54add7f5cf78088e"],["02.TypeScript 常用语法/03.接口.md","接口","/pages/54ea89b497ec3bb3"],["02.TypeScript 常用语法/04.类.md","类","/pages/fad060bd9a8bfac6"],["02.TypeScript 常用语法/05.函数.md","函数","/pages/870a51ba2a9edfad"],["02.TypeScript 常用语法/06.泛型.md","泛型","/pages/8045759ec4ad3c01"],["02.TypeScript 常用语法/07.类型推断.md","类型推断","/pages/7279420c899c505d"],["02.TypeScript 常用语法/08.高级类型.md","高级类型","/pages/3fb6c2f52ab398e3"]]},{title:"ts-axios 项目初始化",collapsable:!0,children:[["03.ts-axios 项目初始化/01.需求分析.md","需求分析","/pages/195af93fcc871b8b"],["03.ts-axios 项目初始化/02.初始化项目.md","初始化项目","/pages/6e11ac76475a2b3e"],["03.ts-axios 项目初始化/03.编写基础请求代码.md","编写基础请求代码","/pages/acfe1e0b401fa984"]]},{title:"ts-axios 基础功能实现",collapsable:!0,children:[["04.ts-axios 基础功能实现/01.处理请求 url 参数.md","处理请求 url 参数","/pages/1313dae575f6dddf"],["04.ts-axios 基础功能实现/02.处理请求 body 数据.md","处理请求 body 数据","/pages/887cd0918e2543d8"],["04.ts-axios 基础功能实现/03.处理请求 header.md","处理请求 header","/pages/35c0ec1bb0b0faaf"],["04.ts-axios 基础功能实现/04.获取响应数据.md","获取响应数据","/pages/a57debe141e1e4f4"],["04.ts-axios 基础功能实现/05.处理响应 header.md","处理响应 header","/pages/927161662ca32c24"],["04.ts-axios 基础功能实现/06.处理响应 data.md","处理响应 data","/pages/922cb4268499dc3f"]]},{title:"ts-axios 异常情况处理",collapsable:!0,children:[["05.ts-axios 异常情况处理/01.错误处理.md","错误处理","/pages/6a8bef7b98dfdcf9"],["05.ts-axios 异常情况处理/02.错误信息增强.md","错误信息增强","/pages/22d581d8c2860b8a"]]},{title:"ts-axios 接口扩展",collapsable:!0,children:[["06.ts-axios 接口扩展/01.扩展接口.md","扩展接口","/pages/034e320f4af88bd4"],["06.ts-axios 接口扩展/02.axios 函数重载.md","axios 函数重载","/pages/8af227eae851ec97"],["06.ts-axios 接口扩展/03.响应数据支持泛型.md","响应数据支持泛型","/pages/c4489d0bab02cc0c"]]},{title:"ts-axios 拦截器实现",collapsable:!0,children:[["07.ts-axios 拦截器实现/01.拦截器设计与实现.md","拦截器设计与实现","/pages/70651900f022f586"]]},{title:"ts-axios 配置化实现",collapsable:!0,children:[["08.ts-axios 配置化实现/01.合并配置的设计与实现.md","合并配置的设计与实现","/pages/937e4de6b81edeca"],["08.ts-axios 配置化实现/02.请求和响应配置化.md","请求和响应配置化","/pages/f5b627bfebba87fc"],["08.ts-axios 配置化实现/03.扩展 create 静态接口.md","扩展 create 静态接口","/pages/7b49658c26f613bf"]]},{title:"ts-axios 取消功能实现",collapsable:!0,children:[["09.ts-axios 取消功能实现/01.取消功能的设计与实现.md","取消功能的设计与实现","/pages/fdc6da5372397430"]]},{title:"ts-axios 更多功能实现",collapsable:!0,children:[["10.ts-axios 更多功能实现/01.withCredentials.md","withCredentials","/pages/5dce43eba796a2ab"],["10.ts-axios 更多功能实现/02.XSRF 防御.md","XSRF 防御","/pages/390cb70e2b619449"],["10.ts-axios 更多功能实现/03.上传和下载的进度监控.md","上传和下载的进度监控","/pages/1376fd897809036e"],["10.ts-axios 更多功能实现/04.HTTP 授权.md","HTTP 授权","/pages/89cd6496c23159ae"],["10.ts-axios 更多功能实现/05.自定义合法状态码.md","自定义合法状态码","/pages/40b41ce8e8159567"],["10.ts-axios 更多功能实现/06.自定义参数序列化.md","自定义参数序列化","/pages/7753b8141663e54a"],["10.ts-axios 更多功能实现/07.baseURL.md","baseURL","/pages/0b9f2ee2b4dbb728"],["10.ts-axios 更多功能实现/08.静态方法扩展.md","静态方法扩展","/pages/c26b053540a7dafa"]]},{title:"ts-axios 单元测试",collapsable:!0,children:[["11.ts-axios 单元测试/01.前言.md","前言","/pages/df36888424843793"],["11.ts-axios 单元测试/02.Jest 安装和配置.md","Jest 安装和配置","/pages/bf5c625a35757b37"],["11.ts-axios 单元测试/03.辅助模块单元测试.md","辅助模块单元测试","/pages/13f147a9b355c4c1"],["11.ts-axios 单元测试/04.请求模块单元测试.md","请求模块单元测试","/pages/e1d15dec8634e6b5"],["11.ts-axios 单元测试/05.headers 模块单元测试.md","headers 模块单元测试","/pages/ddd86ec39b5dfe33"],["11.ts-axios 单元测试/06.Axios 实例模块单元测试.md","Axios 实例模块单元测试","/pages/2eac7a0a0d644c15"],["11.ts-axios 单元测试/07.拦截器模块单元测试.md","拦截器模块单元测试","/pages/97de6fd6293a2c6e"],["11.ts-axios 单元测试/08.mergeConfig 模块单元测试.md","mergeConfig 模块单元测试","/pages/cdf59840306f9e81"],["11.ts-axios 单元测试/09.请求取消模块单元测试.md","请求取消模块单元测试","/pages/6fa16aee29527032"],["11.ts-axios 单元测试/10.剩余模块单元测试.md","剩余模块单元测试","/pages/9572134781ba6a25"]]},{title:"ts-axios 部署与发布",collapsable:!0,children:[["12.ts-axios 部署与发布/01.ts-axios 编译与发布.md","ts-axios 编译与发布","/pages/3e5d5a45ad50f198"],["12.ts-axios 部署与发布/02.引用 ts-axios 库.md","引用 ts-axios 库","/pages/c6bdbd5bd60adf5a"]]}],"/《Vue》笔记/":[{title:"基础",collapsable:!0,children:[["01.基础/00.MVVM模式.md","MVVM模式","/pages/114158caa9e96df0"],["01.基础/10.生命周期.md","生命周期","/pages/176808a1b5f843b8"],["01.基础/20.计算属性 vs 方法 vs 侦听属性.md","计算属性 vs 方法 vs 侦听属性","/pages/351f72ecd9c41129"],["01.基础/30.v-if vs v-show.md","v-if vs v-show","/pages/73e4064340277b05"],["01.基础/35.列表渲染之数组、对象更新检测.md","列表渲染之数组、对象更新检测","/pages/04783a6691cc9d06"]]},{title:"组件",collapsable:!0,children:[["02.组件/36.使用组件的细节点.md","使用组件的细节点","/pages/83a1ab785e7fd70c"],["02.组件/40.父组件给子组件传值.md","父组件给子组件传值","/pages/07b384c2e6232e07"],["02.组件/50.子组件派发事件和值给父组件.md","子组件派发事件和值给父组件","/pages/0f19a1bcac14fd41"],["02.组件/52.Prop 验证 与 非 Prop 的 Attribute.md","Prop 验证 与 非 Prop 的 Attribute","/pages/a3080f60f6596eb4"],["02.组件/55.自定义事件.md","自定义事件","/pages/9651417d08d1779d"],["02.组件/60.兄弟组件传值.md","兄弟组件传值","/pages/809f4582d9ca9552"],["02.组件/65.非父子组件传值.md","非父子组件传值","/pages/d408e64f666f146d"],["02.组件/70.父组件调用子组件方法并传入值.md","父组件调用子组件方法并传入值","/pages/2e24dab728769e0c"],["02.组件/75.插槽slot.md","插槽slot","/pages/055ecee9a4325386"],["02.组件/80.动态组件与 v-once 指令.md","动态组件与 v-once 指令","/pages/636ca33122e9a64b"],["02.组件/90.vue父子组件的生命周期顺序.md","vue父子组件的生命周期顺序","/pages/e6cec47efa42d7f1"]]},{title:"过渡&动画",collapsable:!0,children:[["03.过渡&动画/110.transition过渡&动画.md","transition过渡&动画","/pages/184a96b493a97078"],["03.过渡&动画/112.使用animate库.md","使用animate库","/pages/3b0a20e70805fcea"],["03.过渡&动画/120.transition-group列表过渡.md","transition-group列表过渡","/pages/0aa92922ace6bb5e"]]},{title:"可复用性&组合",collapsable:!0,children:[["04.可复用性&组合/01.Mixin混入.md","Mixin混入","/pages/bd36a3c1bc3e0821"]]},{title:"工具",collapsable:!0,children:[["05.工具/10.Vue CLi v3 创建项目使用记录.md","Vue CLi v3 创建项目使用记录","/pages/d00311f8174119b2"]]},{title:"规模化",collapsable:!0,children:[["06.规模化/100.vuex操作相关.md","vuex操作相关","/pages/d9d62d6ab8ff99a6"],["06.规模化/140.路由懒加载.md","路由懒加载","/pages/38ecac9a9b92f037"]]},{title:"Vuex",collapsable:!0,children:[["10.Vuex/01.Vuex.md","Vuex","/pages/b30620/"]]},{title:"其他",collapsable:!0,children:[["99.其他/80.Vue中的防抖函数封装和使用.md","Vue中的防抖函数封装和使用","/pages/fb08e252dfd8fdfd"],["99.其他/90.操作本地缓存.md","操作本地缓存","/pages/30a94dbe96873b33"]]}]},author:{name:"heBody",link:"https://github.com/heBody"},blogger:{avatar:"https://fastly.jsdelivr.net/gh/xugaoyi/image_store/blog/20200103123203.jpg",name:"彪哥",slogan:"爱好前端"},social:{icons:[{iconClass:"icon-youjian",title:"发邮件",link:"mailto:30363811@qq.com"},{iconClass:"icon-github",title:"GitHub",link:"https://github.com/heBody"},{iconClass:"icon-erji",title:"听音乐",link:"https://music.163.com/#/playlist?id=755597173"}]},footer:{createYear:2019,copyrightInfo:'Evan Xu | <a href="https://github.com/heBody/blob/master/LICENSE" target="_blank">MIT License</a>'},extendFrontmatter:{author:{name:"heBody",link:"https://github.com/heBody"}},htmlModules:{homeSidebarB:'<div style="padding: 0.95rem">\n <p style="\n color: var(--textColor);\n opacity: 0.9;\n font-size: 20px;\n font-weight: bold;\n margin: 0 0 8px 0;\n ">公众号</p>\n <img src="https://open.weixin.qq.com/qr/code?username=gh_0cf4b813918c" style="width:100%;" />\n 关注公众号,回复[<b>前端资源</b>],可获取 <a href="https://game.heBody.com" arget="_blank" >前端学习资源<span><svg xmlns="http://www.w3.org/2000/svg" aria-hidden="true" focusable="false" x="0px" y="0px" viewBox="0 0 100 100" width="15" height="15" class="icon outbound"><path fill="currentColor" d="M18.8,85.1h56l0,0c2.2,0,4-1.8,4-4v-32h-8v28h-48v-48h28v-8h-32l0,0c-2.2,0-4,1.8-4,4v56C14.8,83.3,16.6,85.1,18.8,85.1z"></path> <polygon fill="currentColor" points="45.7,48.7 51.3,54.3 77.2,28.5 77.2,37.2 85.2,37.2 85.2,14.9 62.8,14.9 62.8,22.9 71.5,22.9"></polygon></svg> <span class="sr-only">(opens new window)</span></span></a>\n </p>\n </div>'}},locales:{"/":{lang:"zh-CN",title:"彪哥博客",description:"web前端技术博客,专注web前端学习与总结。JavaScript,js,ES6,TypeScript,vue,React,python,css3,html5,Node,git,github等技术文章。",path:"/"}}};var Bo=a(96),Ao=a(97),xo=a(11);var _o={computed:{$filterPosts(){return this.$site.pages.filter(e=>{const{frontmatter:{pageComponent:t,article:a,home:l}}=e;return!(t||!1===a||!0===l)})},$sortPosts(){return(e=this.$filterPosts).sort((e,t)=>{const a=e.frontmatter.sticky,l=t.frontmatter.sticky;return a&&l?a==l?Object(xo.a)(e,t):a-l:a&&!l?-1:!a&&l?1:Object(xo.a)(e,t)}),e;var e},$sortPostsByDate(){return(e=this.$filterPosts).sort((e,t)=>Object(xo.a)(e,t)),e;var e},$groupPosts(){return function(e){const t={},a={};for(let l=0,n=e.length;l<n;l++){const{frontmatter:{categories:n,tags:r}}=e[l];"array"===Object(xo.n)(n)&&n.forEach(a=>{a&&(t[a]||(t[a]=[]),t[a].push(e[l]))}),"array"===Object(xo.n)(r)&&r.forEach(t=>{t&&(a[t]||(a[t]=[]),a[t].push(e[l]))})}return{categories:t,tags:a}}(this.$sortPosts)},$categoriesAndTags(){return function(e){const t=[],a=[];for(let a in e.categories)t.push({key:a,length:e.categories[a].length});for(let t in e.tags)a.push({key:t,length:e.tags[t].length});return{categories:t,tags:a}}(this.$groupPosts)}}};Ja.component(Bo.default),Ja.component(Ao.default);function So(e){return e.toString().padStart(2,"0")}a(243);Ja.component("CodeGroup",()=>Promise.resolve().then(a.bind(null,97))),Ja.component("Badge",()=>Promise.all([a.e(0),a.e(3)]).then(a.bind(null,563))),Ja.component("CodeBlock",()=>Promise.resolve().then(a.bind(null,96)));a(244),a(245);var ko=a(95),To=a.n(ko),wo=a(28);let Co,Po;var jo;"valine"===(jo="gitalk")?a.e(238).then(a.t.bind(null,327,7)).then(e=>Po=e.default):"gitalk"===jo&&Promise.all([a.e(0),a.e(237)]).then(a.t.bind(null,328,7)).then(()=>a.e(236).then(a.t.bind(null,329,7))).then(e=>Co=e.default);function Do(e,t){const a={};return Reflect.ownKeys(e).forEach(l=>{if("string"==typeof e[l])try{a[l]=To.a.render(e[l],t)}catch(t){console.warn(`Comment config option error at key named "${l}"`),console.warn("More info: "+t.message),a[l]=e[l]}else a[l]=e[l]}),a}console.log(`How to use "gitalk" in ${wo.name}@v${wo.version}:`,wo.homepage);const Lo={gitalk:{render(e,t){const a=document.createElement("div");a.id=t;document.querySelector("main.page").appendChild(a);new Co(Do({clientID:"a6e1355287947096b88b",clientSecret:"f0e77d070fabfcd5af95bebb82b2d574d7248d71",repo:"blog-gitalk-comment",owner:"heBody",admin:["heBody"],pagerDirection:"last",id:"<%- (frontmatter.permalink || frontmatter.to.path).slice(-16) %>",title:"「评论」<%- frontmatter.title %>",labels:["Gitalk","Comment"],body:"页面:<%- window.location.origin + (frontmatter.to.path || window.location.pathname) %>"},{frontmatter:e})).render(t)},clear(e){const t=document.querySelector("#"+e);return t&&t.remove(),!0}},valine:{render(e,t){const a=document.createElement("div");a.id=t;document.querySelector("main.page").appendChild(a),new Po({...Do({clientID:"a6e1355287947096b88b",clientSecret:"f0e77d070fabfcd5af95bebb82b2d574d7248d71",repo:"blog-gitalk-comment",owner:"heBody",admin:["heBody"],pagerDirection:"last",id:"<%- (frontmatter.permalink || frontmatter.to.path).slice(-16) %>",title:"「评论」<%- frontmatter.title %>",labels:["Gitalk","Comment"],body:"页面:<%- window.location.origin + (frontmatter.to.path || window.location.pathname) %>"},{frontmatter:e}),el:"#"+t})},clear(e){const t=document.querySelector("#"+e);return t&&t.remove(),!0}}},Uo="vuepress-plugin-comment";let Oo=null;function Mo(e){return Lo.gitalk.clear(Uo)}function Fo(e){return!1!==e.comment&&!1!==e.comments}function Ro(e){clearTimeout(Oo);if(document.querySelector("main.page"))return Lo.gitalk.render(e,Uo);Oo=setTimeout(()=>Ro(e),200)}var Go={mounted(){Oo=setTimeout(()=>{const e={to:{},from:{},...this.$frontmatter};Mo()&&Fo(e)&&Ro(e)},1e3),this.$router.afterEach((e,t)=>{if(e&&t&&e.path===t.path)return;const a={to:e,from:t,...this.$frontmatter};Mo()&&Fo(a)&&Ro(a)})}},$o=Object(mo.a)(Go,(function(){return(0,this._self._c)("div")}),[],!1,null,null,null).exports,Ho=[({Vue:e,options:t,router:a,siteData:l})=>{},({Vue:e,options:t,router:a,siteData:l})=>{l.pages.map(e=>{const{frontmatter:{date:t,author:a}}=e;"string"==typeof t&&"Z"===t.charAt(t.length-1)&&(e.frontmatter.date=function(e){e instanceof Date||(e=new Date(e));return`${e.getUTCFullYear()}-${So(e.getUTCMonth()+1)}-${So(e.getUTCDate())} ${So(e.getUTCHours())}:${So(e.getUTCMinutes())}:${So(e.getUTCSeconds())}`}(t)),a?e.author=a:l.themeConfig.author&&(e.author=l.themeConfig.author)}),e.mixin(_o)},{},({Vue:e})=>{e.mixin({computed:{$dataBlock(){return this.$options.__data__block__}}})},{},{},({router:e})=>{"undefined"!=typeof window&&function(){var e=document.createElement("script"),t=window.location.protocol.split(":")[0];e.src="https"===t?"https://zz.bdstatic.com/linksubmit/push.js":"http://push.zhanzhang.baidu.com/push.js";var a=document.getElementsByTagName("script")[0];a.parentNode.insertBefore(e,a)}()},({router:e})=>{"undefined"!=typeof window&&(window._hmt=window._hmt||[],function(){var e=document.createElement("script");e.src="https://hm.baidu.com/hm.js?503f098e7e5b3a5b5d8c5fc2938af002";var t=document.getElementsByTagName("script")[0];t.parentNode.insertBefore(e,t)}(),e.afterEach((function(e){_hmt.push(["_trackPageview",e.fullPath])})))},({Vue:e})=>{e.component("Comment",$o)}],Io=["Comment"];class No extends class{constructor(){this.store=new Ja({data:{state:{}}})}$get(e){return this.store.state[e]}$set(e,t){Ja.set(this.store.state,e,t)}$emit(...e){this.store.$emit(...e)}$on(...e){this.store.$on(...e)}}{}Object.assign(No.prototype,{getPageAsyncComponent:ri,getLayoutAsyncComponent:si,getAsyncComponent:ii,getVueComponent:oi});var Vo={install(e){const t=new No;e.$vuepress=t,e.prototype.$vuepress=t}};function Jo(e,t){const a=t.toLowerCase();return e.options.routes.some(e=>e.path.toLowerCase()===a)}var Zo={props:{pageKey:String,slotKey:{type:String,default:"default"}},render(e){const t=this.pageKey||this.$parent.$page.key;return pi("pageKey",t),Ja.component(t)||Ja.component(t,ri(t)),Ja.component(t)?e(t):e("")}},qo={functional:!0,props:{slotKey:String,required:!0},render:(e,{props:t,slots:a})=>e("div",{class:["content__"+t.slotKey]},a()[t.slotKey])},zo={computed:{openInNewWindowTitle(){return this.$themeLocaleConfig.openNewWindowText||"(opens new window)"}}},Yo=(a(251),a(252),Object(mo.a)(zo,(function(){var e=this._self._c;return e("span",[e("svg",{staticClass:"icon outbound",attrs:{xmlns:"http://www.w3.org/2000/svg","aria-hidden":"true",focusable:"false",x:"0px",y:"0px",viewBox:"0 0 100 100",width:"15",height:"15"}},[e("path",{attrs:{fill:"currentColor",d:"M18.8,85.1h56l0,0c2.2,0,4-1.8,4-4v-32h-8v28h-48v-48h28v-8h-32l0,0c-2.2,0-4,1.8-4,4v56C14.8,83.3,16.6,85.1,18.8,85.1z"}}),this._v(" "),e("polygon",{attrs:{fill:"currentColor",points:"45.7,48.7 51.3,54.3 77.2,28.5 77.2,37.2 85.2,37.2 85.2,14.9 62.8,14.9 62.8,22.9 71.5,22.9"}})]),this._v(" "),e("span",{staticClass:"sr-only"},[this._v(this._s(this.openInNewWindowTitle))])])}),[],!1,null,null,null).exports),Xo={functional:!0,render(e,{parent:t,children:a}){if(t._isMounted)return a;t.$once("hook:mounted",()=>{t.$forceUpdate()})}};Ja.config.productionTip=!1,Ja.use(Ns),Ja.use(Vo),Ja.mixin(function(e,t,a=Ja){!function(e){e.locales&&Object.keys(e.locales).forEach(t=>{e.locales[t].path=t});Object.freeze(e)}(t),a.$vuepress.$set("siteData",t);const l=new(e(a.$vuepress.$get("siteData"))),n=Object.getOwnPropertyDescriptors(Object.getPrototypeOf(l)),r={};return Object.keys(n).reduce((e,t)=>(t.startsWith("$")&&(e[t]=n[t].get),e),r),{computed:r}}(e=>class{setPage(e){this.__page=e}get $site(){return e}get $themeConfig(){return this.$site.themeConfig}get $frontmatter(){return this.$page.frontmatter}get $localeConfig(){const{locales:e={}}=this.$site;let t,a;for(const l in e)"/"===l?a=e[l]:0===this.$page.path.indexOf(l)&&(t=e[l]);return t||a||{}}get $siteTitle(){return this.$localeConfig.title||this.$site.title||""}get $canonicalUrl(){const{canonicalUrl:e}=this.$page.frontmatter;return"string"==typeof e&&e}get $title(){const e=this.$page,{metaTitle:t}=this.$page.frontmatter;if("string"==typeof t)return t;const a=this.$siteTitle,l=e.frontmatter.home?null:e.frontmatter.title||e.title;return a?l?l+" | "+a:a:l||"VuePress"}get $description(){const e=function(e){if(e){const t=e.filter(e=>"description"===e.name)[0];if(t)return t.content}}(this.$page.frontmatter.meta);return e||(this.$page.frontmatter.description||this.$localeConfig.description||this.$site.description||"")}get $lang(){return this.$page.frontmatter.lang||this.$localeConfig.lang||"en-US"}get $localePath(){return this.$localeConfig.path||"/"}get $themeLocaleConfig(){return(this.$site.themeConfig.locales||{})[this.$localePath]||{}}get $page(){return this.__page?this.__page:function(e,t){for(let a=0;a<e.length;a++){const l=e[a];if(l.path.toLowerCase()===t.toLowerCase())return l}return{path:"",frontmatter:{}}}(this.$site.pages,this.$route.path)}},yo)),Ja.component("Content",Zo),Ja.component("ContentSlotsDistributor",qo),Ja.component("OutboundLink",Yo),Ja.component("ClientOnly",Xo),Ja.component("Layout",si("Layout")),Ja.component("NotFound",si("NotFound")),Ja.prototype.$withBase=function(e){const t=this.$site.base;return"/"===e.charAt(0)?t+e.slice(1):e},window.__VUEPRESS__={version:"1.9.5",hash:"3b5d8bc"},async function(e){const t="undefined"!=typeof window&&window.__VUEPRESS_ROUTER_BASE__?window.__VUEPRESS_ROUTER_BASE__:yo.routerBase||yo.base,a=new Ns({base:t,mode:"history",fallback:!1,routes:Eo,scrollBehavior:(e,t,a)=>a||(e.hash?!Ja.$vuepress.$get("disableScrollBehavior")&&{selector:decodeURIComponent(e.hash)}:{x:0,y:0})});!function(e){e.beforeEach((t,a,l)=>{if(Jo(e,t.path))l();else if(/(\/|\.html)$/.test(t.path))if(/\/$/.test(t.path)){const a=t.path.replace(/\/$/,"")+".html";Jo(e,a)?l(a):l()}else l();else{const a=t.path+"/",n=t.path+".html";Jo(e,n)?l(n):Jo(e,a)?l(a):l()}})}(a);const l={};try{await Promise.all(Ho.filter(e=>"function"==typeof e).map(t=>t({Vue:Ja,options:l,router:a,siteData:yo,isServer:e})))}catch(e){console.error(e)}return{app:new Ja(Object.assign(l,{router:a,render:e=>e("div",{attrs:{id:"app"}},[e("RouterView",{ref:"layout"}),e("div",{class:"global-ui"},Io.map(t=>e(t)))])})),router:a}}(!1).then(({app:e,router:t})=>{t.onReady(()=>{e.$mount("#app")})})}]);