{"componentChunkName":"component---node-modules-narative-gatsby-theme-novela-src-templates-article-template-tsx","path":"/2020-08-27-quotation-from-a-androgynous","result":{"pageContext":{"article":{"id":"466e2ede-954a-584f-968e-07c063ffa1ea","slug":"/2020-08-27-quotation-from-a-androgynous","secret":false,"title":"从 Form 到 Model 层的讨论","author":"Bryan Lee","date":"August 27th, 2020","dateForSEO":"2020-08-27T00:00:00.000Z","timeToRead":1,"excerpt":"这就是观察者模式的代价，你做到了消费者按需订阅，你能自动响应变化，但你不能再回溯到事件的根源，所以这个时候你需要合并同步更新。","canonical_url":null,"subscription":true,"body":"function _extends() { _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\n\nfunction _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; }\n\nfunction _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }\n\n/* @jsxRuntime classic */\n\n/* @jsx mdx */\nvar _frontmatter = {\n  \"title\": \"从 Form 到 Model 层的讨论\",\n  \"slug\": \"2020-08-27-quotation-from-a-androgynous\",\n  \"author\": \"Bryan Lee\",\n  \"date\": \"2020-08-27T00:00:00.000Z\",\n  \"hero\": \"./images/hero.jpeg\",\n  \"excerpt\": \"这就是观察者模式的代价，你做到了消费者按需订阅，你能自动响应变化，但你不能再回溯到事件的根源，所以这个时候你需要合并同步更新。\",\n  \"tags\": [\"扶言扶语\", \"Form\", \"MVVM\"]\n};\nvar layoutProps = {\n  _frontmatter: _frontmatter\n};\nvar MDXLayout = \"wrapper\";\nreturn function MDXContent(_ref) {\n  var components = _ref.components,\n      props = _objectWithoutProperties(_ref, [\"components\"]);\n\n  return mdx(MDXLayout, _extends({}, layoutProps, props, {\n    components: components,\n    mdxType: \"MDXLayout\"\n  }), mdx(\"h2\", {\n    \"id\": \"关于-formik\"\n  }, \"\\u5173\\u4E8E Formik\"), mdx(\"p\", null, \"Formik \\u6027\\u80FD\\u6709\\u95EE\\u9898\\uFF0C\\u800C\\u4E14\\u5F3A\\u4F9D\\u8D56 React\\uFF1AModel \\u548C ViewModel \\u6DF7\\u5728\\u4E00\\u8D77\\uFF0C\\u8FD8\\u5F3A\\u4F9D\\u8D56\\u4E00\\u4E2A View \\u5C42\\u6846\\u67B6\\uFF0C\\u600E\\u4E48\\u53EF\\u80FD\\u662F\\u597D\\u7684\\u8BBE\\u8BA1\\uFF1BRedux \\u8FD9\\u5957\\u4E1C\\u897F\\u5C31\\u4E0D\\u5BF9\\u3002\"), mdx(\"p\", null, \"React \\u7684 View \\u5C42\\u8C03\\u5EA6\\u4E5F\\u662F\\u5F88\\u725B\\u903C\\u4F46\\u662F\\u5E94\\u8BE5\\u907F\\u514D\\u4F7F\\u7528\\u7684\\u4E1C\\u897F\\uFF1AHooks \\u7528\\u6765\\u505A\\u903B\\u8F91\\u590D\\u7528\\u53EF\\u4EE5\\uFF0C\\u7528\\u6765\\u505A Model \\u5C31\\u662F\\u626F\\u6DE1\\u3002\"), mdx(\"h2\", {\n    \"id\": \"关于-dva\"\n  }, \"\\u5173\\u4E8E Dva\"), mdx(\"p\", null, \"Dva \\u662F\\u50BB\\u903C\\u73A9\\u610F\\uFF1AUmi \\u601D\\u8DEF\\u5F88\\u5BF9\\uFF0C\\u88AB Dva \\u5751\\u4E86\"), mdx(\"h2\", {\n    \"id\": \"关于-model-层\"\n  }, \"\\u5173\\u4E8E Model \\u5C42\"), mdx(\"p\", null, \"\\u9AD8\\u9636\\u7EC4\\u4EF6\\u4E0D\\u80FD\\u80DC\\u4EFB Model \\u5C42\\u7684\\u5DE5\\u4F5C\\uFF0CModel \\u662F\\u8981\\u5355\\u72EC\\u8BBE\\u8BA1\\u7684\\u4E00\\u4E2A\\u4E1C\\u897F\\uFF0C\\u4E0D\\u5E94\\u8BE5\\u53C2\\u6742\\u4EFB\\u4F55 View \\u5C42\\u7684\\u4E1C\\u897F\\u3002\"), mdx(\"p\", null, \"React \\u8BF4\\u597D\\u7684\\u53EA\\u505A View \\u5C42\\u3002Fiber \\u5C31\\u597D\\u597D\\u505A Time slicing \\u5C31\\u5B8C\\u4E8B\\u4E86\\uFF0C\\u975E\\u8981\\u628A\\u8C03\\u5EA6\\u4E5F\\u505A\\u8FDB\\u53BB\\uFF0C\\u5173\\u952E React \\u7684\\u8C03\\u5EA6\\u6700\\u7EC8\\u662F\\u7528\\u6765\\u505A vdom diff \\u7684\\uFF0Cvdom diff \\u662F\\u65E0\\u8111 diff\\uFF0C\\u8BF4\\u4EC0\\u4E48\\u90FD\\u4E0D\\u53EF\\u80FD\\u6BD4\\u7ECF\\u8FC7\\u826F\\u597D\\u8BBE\\u8BA1\\u7684model\\u5C42\\u8C03\\u5EA6\\u66F4\\u5FEB\\uFF1B\\u800C\\u4E14\\u672C\\u6765 Mmdel \\u5C42\\u5982\\u679C\\u8981\\u5B9E\\u73B0\\u4F4E\\u8026\\u5408\\u7684\\u9AD8\\u5EA6\\u590D\\u7528\\uFF0C\\u5C31\\u662F\\u9700\\u8981\\u81EA\\u8EAB\\u6709\\u8C03\\u5EA6\\u673A\\u5236\\u7684\\uFF0C\\u80FD\\u5728 Model \\u505A\\u597D\\u7684\\u624B\\u52A8\\u8C03\\u5EA6\\uFF0C\\u5C31\\u4E0D\\u8981\\u653E\\u5230 View \\u5C42\\u65E0\\u8111 diff \\u4E86\\u3002\"), mdx(\"p\", null, \"MVC \\u4F53\\u7CFB\\u662F\\u5206\\u5F62\\u7684\\uFF0CModel \\u81EA\\u8EAB\\u4E5F\\u53EF\\u4EE5\\u662F\\u4E00\\u4E2A\\u72EC\\u7ACB\\u7684 MVC\\uFF0C\\u5BF9 MVVM \\u6765\\u8BF4\\uFF0CModel\\u3001View\\u3001ViewModel \\u672C\\u8EAB\\u5C31\\u662F\\u9488\\u5BF9\\u4E00\\u4E2A I/O \\u7684\\u63A5\\u53E3\\u505A\\u8BBE\\u8BA1\\uFF0C\\u51ED\\u5565\\u4EBA\\u5BB6 Model \\u4E5F\\u8981\\u8DDF\\u7740\\u4F60 React \\u641E\\u51FD\\u6570\\u5F0F\\uFF1F\"), mdx(\"p\", null, \"Model \\u5C42\\u5982\\u679C\\u662F\\u4E00\\u4E2A\\u5355\\u72EC\\u7684 Model\\uFF0C\\u90A3\\u4E48\\u5C31\\u4E0D\\u5B58\\u5728\\u8C03\\u5EA6\\u4E00\\u8BF4\\uFF1B\\u4F46\\u5982\\u679C\\u662F\\u591A\\u4E2A Model \\u5173\\u8054\\uFF0C\\u90A3\\u4E48\\u5C31\\u9700\\u8981\\u8C03\\u5EA6\\u4E86\\uFF0C\\u56E0\\u4E3A\\u591A\\u4E2A Model \\u4E4B\\u95F4\\u8981\\u901A\\u4FE1\\uFF0C\\u53C8\\u4E0D\\u80FD\\u8026\\u5408\\uFF0C\\u800C\\u67D0\\u4E2A\\u7EC4\\u4EF6\\u53C8\\u53EF\\u80FD\\u8981\\u8BA2\\u9605\\u591A\\u4E2A Model \\u7684\\u66F4\\u65B0\\uFF0C\\u5BF9\\u4E8E\\u8FD9\\u4E9B\\u66F4\\u65B0\\u7684\\u6765\\u6E90\\u548C\\u5408\\u5E76\\uFF0C\\u5C31\\u9700\\u8981\\u8C03\\u5EA6\\u4E86\\uFF1B\\u603B\\u4E4B\\u5C31\\u662F\\u591A\\u4E2A Model \\u5408\\u6210\\u4E00\\u4E2A\\u5927\\u7684 Model\\uFF0C\\u53C8\\u9700\\u8981\\u53EF\\u4EE5\\u72EC\\u7ACB\\u4F7F\\u7528\\uFF0C\\u8FD9\\u4E2D\\u95F4\\u662F\\u9700\\u8981\\u8C03\\u5EA6\\u7684\\u3002\"), mdx(\"h2\", {\n    \"id\": \"form-与-model\"\n  }, \"Form \\u4E0E Model\"), mdx(\"p\", null, \"\\u4EE5 Form \\u8868\\u5355\\u6765\\u8BF4\\uFF0C\\u5176\\u5B9E\\u5B83\\u5C31\\u4E00\\u4E2A Model\\uFF0C\\u4F60\\u522B\\u770B Formily \\u91CC\\u9762\\u6709 \", mdx(\"inlineCode\", {\n    parentName: \"p\"\n  }, \"Form\"), \"\\u3001\", mdx(\"inlineCode\", {\n    parentName: \"p\"\n  }, \"FormHeart\"), \"\\u3001\", mdx(\"inlineCode\", {\n    parentName: \"p\"\n  }, \"FormGraph\"), \"\\u3001\", mdx(\"inlineCode\", {\n    parentName: \"p\"\n  }, \"*Field\"), \" \\u7B49\\uFF0C\\u770B\\u540D\\u5B57\\u597D\\u50CF\\u90FD\\u662F Model\\uFF0C\\u5176\\u5B9E\\u4ED6\\u4EEC\\u5C31\\u662F\\u5B9E\\u73B0\\u4E86 Subscribable \\u7684\\u7684\\u666E\\u901A\\u7C7B\\u5B9E\\u4F8B\\uFF0C\\u90A3\\u53EA\\u662F\\u5BF9\\u8C61\\u5185\\u90E8\\u7ED3\\u6784\\u548C Form \\u8FD9\\u4E2A Model \\u7684\\u5185\\u90E8\\u901A\\u4FE1\\uFF0C\\u8FD9\\u91CC\\u8FB9\\u5176\\u5B9E\\u662F\\u4E0D\\u5B58\\u5728\\u8C03\\u5EA6\\u7684\\u3002\\n\\u5BF9\\u4E8E Form \\u8FD9\\u4E2A Model \\u6765\\u8BF4\\uFF0C\\u76F4\\u63A5\\u6839\\u636E field \\u70B9\\u5BF9\\u70B9\\u8BA2\\u9605\\u5C31\\u5B8C\\u4E8B\\u4E86\\uFF0C\\u6839\\u672C\\u7528\\u4E0D\\u7740\\u653E\\u5230 React \\u91CC\\u8D70\\u4E00\\u5806\\u65E0\\u8111\\u7684\\u91CD\\u590D\\u6E32\\u67D3\\u548C diff\\u3002\"), mdx(\"p\", null, \"\\u300C\\u8BA2\\u9605\\u300D\\u8FD9\\u4E2A\\u884C\\u4E3A\\u672C\\u8EAB\\u662F\\u9700\\u8981\\u4E00\\u5B9A\\u7684\\u300C\\u8C03\\u5EA6\\u300D\\u7684\\uFF0C\\u56E0\\u4E3A\\u4F60\\u8BA2\\u9605\\u7684\\u591A\\u4E2A\\u6570\\u636E\\u6E90\\u7684\\u66F4\\u65B0\\u53EF\\u80FD\\u4E0D\\u5728\\u4E00\\u4E2A\\u8C03\\u7528\\u6808\\u91CC\\uFF0C\\u6240\\u4EE5\\u53EA\\u80FD\\u901A\\u8FC7\\u8C03\\u5EA6\\u7684\\u65B9\\u5F0F\\u540C\\u6B65\\u3002\"), mdx(\"p\", null, \"Model \\u4E4B\\u6240\\u4EE5\\u4E0D\\u5728\\u4E00\\u4E2A\\u8C03\\u7528\\u6808\\u91CC\\uFF0C\\u662F\\u56E0\\u4E3A\\uFF1A\\u5BF9\\u4E8E\\u58F0\\u660E\\u5F0F\\u7F16\\u7A0B\\uFF0C\\u6D88\\u606F\\u5728\\u53D1\\u51FA\\u7684\\u65F6\\u5019\\u662F\\u4E0D\\u77E5\\u9053\\u5B83\\u4F1A\\u5BFC\\u81F4\\u54EA\\u4E9B\\u7EC4\\u4EF6\\u53D8\\u5316\\u7684\\uFF0C\\u800C\\u662F\\u53D1\\u51FA\\u7684\\u6D88\\u606F\\u5BFC\\u81F4 Model \\u5C42\\u6570\\u636E\\u4EA7\\u751F\\u53D8\\u5316\\u540E\\u88AB\\u7EC4\\u4EF6\\u8BA2\\u9605\\u3002\\n\\u8FD9\\u5C31\\u662F\\u89C2\\u5BDF\\u8005\\u6A21\\u5F0F\\u7684\\u4EE3\\u4EF7\\uFF0C\\u4F60\\u505A\\u5230\\u4E86\\u6D88\\u8D39\\u8005\\u6309\\u9700\\u8BA2\\u9605\\uFF0C\\u4F60\\u80FD\\u81EA\\u52A8\\u54CD\\u5E94\\u53D8\\u5316\\uFF0C\\u4F46\\u4F60\\u4E0D\\u80FD\\u518D\\u56DE\\u6EAF\\u5230\\u4E8B\\u4EF6\\u7684\\u6839\\u6E90\\uFF0C\\u6240\\u4EE5\\u8FD9\\u4E2A\\u65F6\\u5019\\u4F60\\u9700\\u8981\\u5408\\u5E76\\u540C\\u6B65\\u66F4\\u65B0\\u3002\"), mdx(\"h2\", {\n    \"id\": \"关于-view-层\"\n  }, \"\\u5173\\u4E8E View \\u5C42\"), mdx(\"p\", null, \"View \\u5C42\\u8C03\\u5EA6\\u6700\\u7B80\\u5355\\u7684\\u4F8B\\u5B50\\u5C31\\u662F\\uFF1A\\u7EC4\\u4EF6 A \\u7684\\u6570\\u636E\\u6765\\u6E90\\u6709 Props\\u3001State \\u4EE5\\u53CA\\u5916\\u90E8 Store\\u3002\"), mdx(\"p\", null, \"\\u5982\\u679C\\u67D0\\u4E00\\u4E2A\\u4E8B\\u4EF6\\u89E6\\u53D1\\u4E86 Store \\u7684\\u53D8\\u5316\\uFF0C\\u8FD9\\u4E2A\\u53D8\\u5316\\u5BFC\\u81F4\\u4E86\\u7236\\u7EC4\\u4EF6\\u7ED9 A \\u7684 Props \\u7684\\u53D8\\u5316\\uFF0C\\u540C\\u65F6\\u7EC4\\u4EF6 A \\u5B83\\u81EA\\u5DF1\\u4E5F\\u53EF\\u80FD\\u7528 State \\u4FDD\\u5B58\\u4E86\\u67D0\\u4E9B\\u53D8\\u5316\\uFF1B\\u8FD9\\u5C31\\u4F1A\\u5BFC\\u81F4 3 \\u6B21\\u72B6\\u6001\\u53D8\\u66F4\\uFF0C\\u800C\\u5B83\\u4EEC\\u5176\\u5B9E\\u662F\\u53EF\\u4EE5\\u5408\\u5E76\\u7684\\uFF0CReact \\u5C31\\u662F\\u5728\\u4F18\\u5316\\u8FD9\\u4E2A\\u8C03\\u5EA6\\u7684\\u6027\\u80FD\\u3002\"), mdx(\"p\", null, \"\\u4F46\\u662F\\u4F60\\u628A Model \\u5C42\\u672C\\u6765\\u53EF\\u4EE5\\u6309\\u9700\\u8BA2\\u9605\\u7684\\u4E1C\\u897F\\u4EA4\\u7ED9 React \\u6765 diff \\u5C31\\u5F88\\u626F\\u6DE1\\u4E86\\uFF0C\\u6BD4\\u5982 Formik\\u3001Redux-form \\u4EE5\\u53CA Ant Design\\u7684form\\uFF0C\\u90FD\\u662F\\u5751\\u7239\\u73A9\\u610F\\u3002\"));\n}\n;\nMDXContent.isMDXComponent = true;","hero":{"full":{"base64":"data:image/jpeg;base64,/9j/2wBDABALDA4MChAODQ4SERATGCgaGBYWGDEjJR0oOjM9PDkzODdASFxOQERXRTc4UG1RV19iZ2hnPk1xeXBkeFxlZ2P/2wBDARESEhgVGC8aGi9jQjhCY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2P/wgARCAANABQDASIAAhEBAxEB/8QAGAAAAwEBAAAAAAAAAAAAAAAAAAMEAgX/xAAXAQADAQAAAAAAAAAAAAAAAAABAgME/9oADAMBAAIQAxAAAAHnLfueuQrA/wD/xAAaEAACAgMAAAAAAAAAAAAAAAAAAQIQERIh/9oACAEBAAEFApO3BGncH//EABcRAAMBAAAAAAAAAAAAAAAAAAABAxH/2gAIAQMBAT8BdGaf/8QAFhEAAwAAAAAAAAAAAAAAAAAAAQIQ/9oACAECAQE/AQs//8QAFxAAAwEAAAAAAAAAAAAAAAAAAAEQEf/aAAgBAQAGPwKoyf/EABkQAQEBAAMAAAAAAAAAAAAAAAERABAhkf/aAAgBAQABPyHffFVK3IGJ5p3/2gAMAwEAAgADAAAAEN8P/8QAFxEBAQEBAAAAAAAAAAAAAAAAEQABIf/aAAgBAwEBPxBBY+l//8QAFxEBAAMAAAAAAAAAAAAAAAAAAAERMf/aAAgBAgEBPxCCmP/EABoQAQADAQEBAAAAAAAAAAAAAAEAETFRIYH/2gAIAQEAAT8Q6WRNSokknq57Boxrbk42fZ//2Q==","aspectRatio":1.5031847133757963,"src":"/static/ef25ec43000cab4b3d55683c117876ed/58fe7/hero.jpg","srcSet":"/static/ef25ec43000cab4b3d55683c117876ed/e0f30/hero.jpg 236w,\n/static/ef25ec43000cab4b3d55683c117876ed/86afd/hero.jpg 472w,\n/static/ef25ec43000cab4b3d55683c117876ed/58fe7/hero.jpg 944w,\n/static/ef25ec43000cab4b3d55683c117876ed/02748/hero.jpg 1416w,\n/static/ef25ec43000cab4b3d55683c117876ed/5c241/hero.jpg 1888w,\n/static/ef25ec43000cab4b3d55683c117876ed/e3277/hero.jpg 2250w","srcWebp":"/static/ef25ec43000cab4b3d55683c117876ed/99fbb/hero.webp","srcSetWebp":"/static/ef25ec43000cab4b3d55683c117876ed/77392/hero.webp 236w,\n/static/ef25ec43000cab4b3d55683c117876ed/1f177/hero.webp 472w,\n/static/ef25ec43000cab4b3d55683c117876ed/99fbb/hero.webp 944w,\n/static/ef25ec43000cab4b3d55683c117876ed/4a492/hero.webp 1416w,\n/static/ef25ec43000cab4b3d55683c117876ed/b0b8f/hero.webp 1888w,\n/static/ef25ec43000cab4b3d55683c117876ed/d168a/hero.webp 2250w","sizes":"(max-width: 944px) 100vw, 944px"},"regular":{"base64":"data:image/jpeg;base64,/9j/2wBDABALDA4MChAODQ4SERATGCgaGBYWGDEjJR0oOjM9PDkzODdASFxOQERXRTc4UG1RV19iZ2hnPk1xeXBkeFxlZ2P/2wBDARESEhgVGC8aGi9jQjhCY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2P/wgARCAANABQDASIAAhEBAxEB/8QAGAAAAwEBAAAAAAAAAAAAAAAAAAMEAgX/xAAXAQADAQAAAAAAAAAAAAAAAAABAgME/9oADAMBAAIQAxAAAAHnLfueuQrA/wD/xAAaEAACAgMAAAAAAAAAAAAAAAAAAQIQERIh/9oACAEBAAEFApO3BGncH//EABcRAAMBAAAAAAAAAAAAAAAAAAABAxH/2gAIAQMBAT8BdGaf/8QAFhEAAwAAAAAAAAAAAAAAAAAAAQIQ/9oACAECAQE/AQs//8QAFxAAAwEAAAAAAAAAAAAAAAAAAAEQEf/aAAgBAQAGPwKoyf/EABkQAQEBAAMAAAAAAAAAAAAAAAERABAhkf/aAAgBAQABPyHffFVK3IGJ5p3/2gAMAwEAAgADAAAAEN8P/8QAFxEBAQEBAAAAAAAAAAAAAAAAEQABIf/aAAgBAwEBPxBBY+l//8QAFxEBAAMAAAAAAAAAAAAAAAAAAAERMf/aAAgBAgEBPxCCmP/EABoQAQADAQEBAAAAAAAAAAAAAAEAETFRIYH/2gAIAQEAAT8Q6WRNSokknq57Boxrbk42fZ//2Q==","aspectRatio":1.4954128440366972,"src":"/static/ef25ec43000cab4b3d55683c117876ed/1dc0b/hero.jpg","srcSet":"/static/ef25ec43000cab4b3d55683c117876ed/3a5ce/hero.jpg 163w,\n/static/ef25ec43000cab4b3d55683c117876ed/05730/hero.jpg 327w,\n/static/ef25ec43000cab4b3d55683c117876ed/1dc0b/hero.jpg 653w,\n/static/ef25ec43000cab4b3d55683c117876ed/f72c7/hero.jpg 980w,\n/static/ef25ec43000cab4b3d55683c117876ed/6e4a3/hero.jpg 1306w,\n/static/ef25ec43000cab4b3d55683c117876ed/e3277/hero.jpg 2250w","srcWebp":"/static/ef25ec43000cab4b3d55683c117876ed/0acdf/hero.webp","srcSetWebp":"/static/ef25ec43000cab4b3d55683c117876ed/ac59e/hero.webp 163w,\n/static/ef25ec43000cab4b3d55683c117876ed/7660b/hero.webp 327w,\n/static/ef25ec43000cab4b3d55683c117876ed/0acdf/hero.webp 653w,\n/static/ef25ec43000cab4b3d55683c117876ed/75470/hero.webp 980w,\n/static/ef25ec43000cab4b3d55683c117876ed/68d47/hero.webp 1306w,\n/static/ef25ec43000cab4b3d55683c117876ed/d168a/hero.webp 2250w","sizes":"(max-width: 653px) 100vw, 653px"},"narrow":{"base64":"data:image/jpeg;base64,/9j/2wBDABALDA4MChAODQ4SERATGCgaGBYWGDEjJR0oOjM9PDkzODdASFxOQERXRTc4UG1RV19iZ2hnPk1xeXBkeFxlZ2P/2wBDARESEhgVGC8aGi9jQjhCY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2P/wgARCAANABQDASIAAhEBAxEB/8QAGAAAAwEBAAAAAAAAAAAAAAAAAAMEAgX/xAAXAQADAQAAAAAAAAAAAAAAAAABAgME/9oADAMBAAIQAxAAAAHnLfueuQrA/wD/xAAaEAACAgMAAAAAAAAAAAAAAAAAAQIQERIh/9oACAEBAAEFApO3BGncH//EABcRAAMBAAAAAAAAAAAAAAAAAAABAxH/2gAIAQMBAT8BdGaf/8QAFhEAAwAAAAAAAAAAAAAAAAAAAQIQ/9oACAECAQE/AQs//8QAFxAAAwEAAAAAAAAAAAAAAAAAAAEQEf/aAAgBAQAGPwKoyf/EABkQAQEBAAMAAAAAAAAAAAAAAAERABAhkf/aAAgBAQABPyHffFVK3IGJ5p3/2gAMAwEAAgADAAAAEN8P/8QAFxEBAQEBAAAAAAAAAAAAAAAAEQABIf/aAAgBAwEBPxBBY+l//8QAFxEBAAMAAAAAAAAAAAAAAAAAAAERMf/aAAgBAgEBPxCCmP/EABoQAQADAQEBAAAAAAAAAAAAAAEAETFRIYH/2gAIAQEAAT8Q6WRNSokknq57Boxrbk42fZ//2Q==","aspectRatio":1.5,"src":"/static/ef25ec43000cab4b3d55683c117876ed/eaa58/hero.jpg","srcSet":"/static/ef25ec43000cab4b3d55683c117876ed/5a3ee/hero.jpg 114w,\n/static/ef25ec43000cab4b3d55683c117876ed/41f8f/hero.jpg 229w,\n/static/ef25ec43000cab4b3d55683c117876ed/eaa58/hero.jpg 457w,\n/static/ef25ec43000cab4b3d55683c117876ed/c309b/hero.jpg 686w,\n/static/ef25ec43000cab4b3d55683c117876ed/e3008/hero.jpg 914w,\n/static/ef25ec43000cab4b3d55683c117876ed/e3277/hero.jpg 2250w","srcWebp":"/static/ef25ec43000cab4b3d55683c117876ed/15384/hero.webp","srcSetWebp":"/static/ef25ec43000cab4b3d55683c117876ed/31fce/hero.webp 114w,\n/static/ef25ec43000cab4b3d55683c117876ed/e3e25/hero.webp 229w,\n/static/ef25ec43000cab4b3d55683c117876ed/15384/hero.webp 457w,\n/static/ef25ec43000cab4b3d55683c117876ed/0258d/hero.webp 686w,\n/static/ef25ec43000cab4b3d55683c117876ed/64ea2/hero.webp 914w,\n/static/ef25ec43000cab4b3d55683c117876ed/d168a/hero.webp 2250w","sizes":"(max-width: 457px) 100vw, 457px"},"seo":{"src":"/static/ef25ec43000cab4b3d55683c117876ed/0ff54/hero.jpg"}}},"authors":[{"authorsPage":true,"bio":"Web Developer. Now prefer TypeScript and Rust, mainly working on UED.\n","id":"7d3dbfdc-58e9-5099-b0f3-ca98ddc04463","name":"Bryan Lee","featured":true,"social":[{"url":"https://github.com/liby"},{"url":"https://twitter.com/meetliby"}],"slug":"/authors/bryan-lee","avatar":{"small":{"base64":"data:image/jpeg;base64,/9j/2wBDABALDA4MChAODQ4SERATGCgaGBYWGDEjJR0oOjM9PDkzODdASFxOQERXRTc4UG1RV19iZ2hnPk1xeXBkeFxlZ2P/2wBDARESEhgVGC8aGi9jQjhCY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2P/wgARCAAUABQDASIAAhEBAxEB/8QAGAABAAMBAAAAAAAAAAAAAAAAAAMEBQL/xAAWAQEBAQAAAAAAAAAAAAAAAAACAwH/2gAMAwEAAhADEAAAAe5VadK7YMR0wPUBz//EABwQAAMBAAIDAAAAAAAAAAAAAAECAwAEEhEhMv/aAAgBAQABBQKXVcWnTBnnrwHYIGI40tRj5j9A+v/EABQRAQAAAAAAAAAAAAAAAAAAACD/2gAIAQMBAT8BH//EABgRAAIDAAAAAAAAAAAAAAAAAAABEBFR/9oACAECAQE/AWi0bH//xAAfEAACAgIBBQAAAAAAAAAAAAAAAREhAhIQMkFRcYH/2gAIAQEABj8Czy26nRqx4ryTM3MCruXL+jPfH//EABsQAAMBAQEBAQAAAAAAAAAAAAABESExUUGB/9oACAEBAAE/IciyprpKg3+DnlXilF99PwgGhJan1sVAzTb6Y4f/2gAMAwEAAgADAAAAEF/4/wD/xAAXEQEBAQEAAAAAAAAAAAAAAAABABEx/9oACAEDAQE/EDMnscJv/8QAGBEBAAMBAAAAAAAAAAAAAAAAAQAQESH/2gAIAQIBAT8Q6LsMo0//xAAgEAEBAAIBAwUAAAAAAAAAAAABEQAhMRBRYYGhweHx/9oACAEBAAE/EApBPFBUr5uXjxBXbN86azXHxMCnKLRDzJzvNcUtyQHeIVKqFX0wZktfb8x4pRs7376J/9k=","aspectRatio":1,"src":"/static/112d7159f7c020bdec3bdf12fb558466/fa1ea/bryan-lee.jpg","srcSet":"/static/112d7159f7c020bdec3bdf12fb558466/afb2b/bryan-lee.jpg 13w,\n/static/112d7159f7c020bdec3bdf12fb558466/7c20e/bryan-lee.jpg 25w,\n/static/112d7159f7c020bdec3bdf12fb558466/fa1ea/bryan-lee.jpg 50w,\n/static/112d7159f7c020bdec3bdf12fb558466/03612/bryan-lee.jpg 75w,\n/static/112d7159f7c020bdec3bdf12fb558466/61cdf/bryan-lee.jpg 100w,\n/static/112d7159f7c020bdec3bdf12fb558466/f86e8/bryan-lee.jpg 460w","srcWebp":"/static/112d7159f7c020bdec3bdf12fb558466/e7b2c/bryan-lee.webp","srcSetWebp":"/static/112d7159f7c020bdec3bdf12fb558466/58718/bryan-lee.webp 13w,\n/static/112d7159f7c020bdec3bdf12fb558466/74aad/bryan-lee.webp 25w,\n/static/112d7159f7c020bdec3bdf12fb558466/e7b2c/bryan-lee.webp 50w,\n/static/112d7159f7c020bdec3bdf12fb558466/ed320/bryan-lee.webp 75w,\n/static/112d7159f7c020bdec3bdf12fb558466/66016/bryan-lee.webp 100w,\n/static/112d7159f7c020bdec3bdf12fb558466/d908f/bryan-lee.webp 460w","sizes":"(max-width: 50px) 100vw, 50px"},"medium":{"base64":"data:image/jpeg;base64,/9j/2wBDABALDA4MChAODQ4SERATGCgaGBYWGDEjJR0oOjM9PDkzODdASFxOQERXRTc4UG1RV19iZ2hnPk1xeXBkeFxlZ2P/2wBDARESEhgVGC8aGi9jQjhCY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2P/wgARCAAUABQDASIAAhEBAxEB/8QAGAABAAMBAAAAAAAAAAAAAAAAAAMEBQL/xAAWAQEBAQAAAAAAAAAAAAAAAAACAwH/2gAMAwEAAhADEAAAAe5VadK7YMR0wPUBz//EABwQAAMBAAIDAAAAAAAAAAAAAAECAwAEEhEhMv/aAAgBAQABBQKXVcWnTBnnrwHYIGI40tRj5j9A+v/EABQRAQAAAAAAAAAAAAAAAAAAACD/2gAIAQMBAT8BH//EABgRAAIDAAAAAAAAAAAAAAAAAAABEBFR/9oACAECAQE/AWi0bH//xAAfEAACAgIBBQAAAAAAAAAAAAAAAREhAhIQMkFRcYH/2gAIAQEABj8Czy26nRqx4ryTM3MCruXL+jPfH//EABsQAAMBAQEBAQAAAAAAAAAAAAABESExUUGB/9oACAEBAAE/IciyprpKg3+DnlXilF99PwgGhJan1sVAzTb6Y4f/2gAMAwEAAgADAAAAEF/4/wD/xAAXEQEBAQEAAAAAAAAAAAAAAAABABEx/9oACAEDAQE/EDMnscJv/8QAGBEBAAMBAAAAAAAAAAAAAAAAAQAQESH/2gAIAQIBAT8Q6LsMo0//xAAgEAEBAAIBAwUAAAAAAAAAAAABEQAhMRBRYYGhweHx/9oACAEBAAE/EApBPFBUr5uXjxBXbN86azXHxMCnKLRDzJzvNcUtyQHeIVKqFX0wZktfb8x4pRs7376J/9k=","aspectRatio":1,"src":"/static/112d7159f7c020bdec3bdf12fb558466/61cdf/bryan-lee.jpg","srcSet":"/static/112d7159f7c020bdec3bdf12fb558466/7c20e/bryan-lee.jpg 25w,\n/static/112d7159f7c020bdec3bdf12fb558466/fa1ea/bryan-lee.jpg 50w,\n/static/112d7159f7c020bdec3bdf12fb558466/61cdf/bryan-lee.jpg 100w,\n/static/112d7159f7c020bdec3bdf12fb558466/59538/bryan-lee.jpg 150w,\n/static/112d7159f7c020bdec3bdf12fb558466/fd013/bryan-lee.jpg 200w,\n/static/112d7159f7c020bdec3bdf12fb558466/f86e8/bryan-lee.jpg 460w","srcWebp":"/static/112d7159f7c020bdec3bdf12fb558466/66016/bryan-lee.webp","srcSetWebp":"/static/112d7159f7c020bdec3bdf12fb558466/74aad/bryan-lee.webp 25w,\n/static/112d7159f7c020bdec3bdf12fb558466/e7b2c/bryan-lee.webp 50w,\n/static/112d7159f7c020bdec3bdf12fb558466/66016/bryan-lee.webp 100w,\n/static/112d7159f7c020bdec3bdf12fb558466/d9b14/bryan-lee.webp 150w,\n/static/112d7159f7c020bdec3bdf12fb558466/6b183/bryan-lee.webp 200w,\n/static/112d7159f7c020bdec3bdf12fb558466/d908f/bryan-lee.webp 460w","sizes":"(max-width: 100px) 100vw, 100px"},"large":{"base64":"data:image/jpeg;base64,/9j/2wBDABALDA4MChAODQ4SERATGCgaGBYWGDEjJR0oOjM9PDkzODdASFxOQERXRTc4UG1RV19iZ2hnPk1xeXBkeFxlZ2P/2wBDARESEhgVGC8aGi9jQjhCY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2P/wgARCAAUABQDASIAAhEBAxEB/8QAGAABAAMBAAAAAAAAAAAAAAAAAAMEBQL/xAAWAQEBAQAAAAAAAAAAAAAAAAACAwH/2gAMAwEAAhADEAAAAe5VadK7YMR0wPUBz//EABwQAAMBAAIDAAAAAAAAAAAAAAECAwAEEhEhMv/aAAgBAQABBQKXVcWnTBnnrwHYIGI40tRj5j9A+v/EABQRAQAAAAAAAAAAAAAAAAAAACD/2gAIAQMBAT8BH//EABgRAAIDAAAAAAAAAAAAAAAAAAABEBFR/9oACAECAQE/AWi0bH//xAAfEAACAgIBBQAAAAAAAAAAAAAAAREhAhIQMkFRcYH/2gAIAQEABj8Czy26nRqx4ryTM3MCruXL+jPfH//EABsQAAMBAQEBAQAAAAAAAAAAAAABESExUUGB/9oACAEBAAE/IciyprpKg3+DnlXilF99PwgGhJan1sVAzTb6Y4f/2gAMAwEAAgADAAAAEF/4/wD/xAAXEQEBAQEAAAAAAAAAAAAAAAABABEx/9oACAEDAQE/EDMnscJv/8QAGBEBAAMBAAAAAAAAAAAAAAAAAQAQESH/2gAIAQIBAT8Q6LsMo0//xAAgEAEBAAIBAwUAAAAAAAAAAAABEQAhMRBRYYGhweHx/9oACAEBAAE/EApBPFBUr5uXjxBXbN86azXHxMCnKLRDzJzvNcUtyQHeIVKqFX0wZktfb8x4pRs7376J/9k=","aspectRatio":1,"src":"/static/112d7159f7c020bdec3bdf12fb558466/ec46e/bryan-lee.jpg","srcSet":"/static/112d7159f7c020bdec3bdf12fb558466/a2637/bryan-lee.jpg 82w,\n/static/112d7159f7c020bdec3bdf12fb558466/15203/bryan-lee.jpg 164w,\n/static/112d7159f7c020bdec3bdf12fb558466/ec46e/bryan-lee.jpg 328w,\n/static/112d7159f7c020bdec3bdf12fb558466/f86e8/bryan-lee.jpg 460w","srcWebp":"/static/112d7159f7c020bdec3bdf12fb558466/5a48e/bryan-lee.webp","srcSetWebp":"/static/112d7159f7c020bdec3bdf12fb558466/2d087/bryan-lee.webp 82w,\n/static/112d7159f7c020bdec3bdf12fb558466/29d87/bryan-lee.webp 164w,\n/static/112d7159f7c020bdec3bdf12fb558466/5a48e/bryan-lee.webp 328w,\n/static/112d7159f7c020bdec3bdf12fb558466/d908f/bryan-lee.webp 460w","sizes":"(max-width: 328px) 100vw, 328px"}}}],"basePath":"/","permalink":"https://liby.github.io/2020-08-27-quotation-from-a-androgynous/","slug":"/2020-08-27-quotation-from-a-androgynous","id":"466e2ede-954a-584f-968e-07c063ffa1ea","title":"从 Form 到 Model 层的讨论","canonicalUrl":null,"mailchimp":"","next":[{"id":"3503f471-2857-530f-8faf-f0d1ebf62dee","slug":"/2020-08-27-about-fu-ta","secret":false,"title":"关于「扶言扶语」","author":"Bryan Lee","date":"August 27th, 2020","dateForSEO":"2020-08-27T00:00:00.000Z","timeToRead":1,"excerpt":"扶的有些言论我看到以后，要在心里琢磨许久，常有生面孔的名词，甚至要查阅一些相关资料，只有这样才勉强有些许自己的理解，为构建认知体系添砖加瓦；仅有囫囵的认知远远不够，我更希冀「取其精华，去其糟粕」，如果有糟粕的话且我能感知到的话，因此反刍势在必行。","canonical_url":null,"subscription":true,"body":"function _extends() { _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\n\nfunction _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; }\n\nfunction _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }\n\n/* @jsxRuntime classic */\n\n/* @jsx mdx */\nvar _frontmatter = {\n  \"title\": \"关于「扶言扶语」\",\n  \"slug\": \"2020-08-27-about-fu-ta\",\n  \"author\": \"Bryan Lee\",\n  \"date\": \"2020-08-27T00:00:00.000Z\",\n  \"hero\": \"./images/hero.jpeg\",\n  \"excerpt\": \"扶的有些言论我看到以后，要在心里琢磨许久，常有生面孔的名词，甚至要查阅一些相关资料，只有这样才勉强有些许自己的理解，为构建认知体系添砖加瓦；仅有囫囵的认知远远不够，我更希冀「取其精华，去其糟粕」，如果有糟粕的话且我能感知到的话，因此反刍势在必行。\",\n  \"tags\": [\"扶言扶语\"]\n};\nvar layoutProps = {\n  _frontmatter: _frontmatter\n};\nvar MDXLayout = \"wrapper\";\nreturn function MDXContent(_ref) {\n  var components = _ref.components,\n      props = _objectWithoutProperties(_ref, [\"components\"]);\n\n  return mdx(MDXLayout, _extends({}, layoutProps, props, {\n    components: components,\n    mdxType: \"MDXLayout\"\n  }), mdx(\"h2\", {\n    \"id\": \"关于「扶她」\"\n  }, \"\\u5173\\u4E8E\\u300C\\u6276\\u5979\\u300D\"), mdx(\"p\", null, \"\\u89C1\", mdx(\"a\", _extends({\n    parentName: \"p\"\n  }, {\n    \"href\": \"https://jikipedia.com/definition/1053528838\",\n    \"target\": \"_blank\",\n    \"rel\": \"noreferrer\"\n  }), \"\\u89E3\\u91CA\"), \"\\u3002\"), mdx(\"h2\", {\n    \"id\": \"什么是「扶言扶语」\"\n  }, \"\\u4EC0\\u4E48\\u662F\\u300C\\u6276\\u8A00\\u6276\\u8BED\\u300D\"), mdx(\"p\", null, \"\\u6211\\u662F\\u5728\\u4E00\\u4E2A\\u524D\\u7AEF\\u7FA4\\u91CC\\u6CE8\\u610F\\u5230\\u6276\\u7684\\uFF0C\\u4ED6\\u662F\\u4E00\\u4F4D\\u300C\\u9876\\u7EA7\\u7801\\u519C\\u300D\\uFF0C\\u70B9\\u8FDB QQ \\u8D44\\u6599\\u80FD\\u770B\\u5230\\u975E\\u5E38\\u52B2\\u7206\\u7684 \\u30B9\\u30AF\\u30FC\\u30EB \\u81EA\\u62CD\\u3002\"), mdx(\"p\", null, \"\\u6276\\u5E94\\u8BE5\\u662F\\u4E00\\u540D\\u5B66\\u9738\\uFF0C\\u56E0\\u4E3A\\u636E\\u5979\\u6240\\u8BF4\\u4ED6\\u975E\\u5E38\\u7FA1\\u6155\\u5B66\\u795E\\uFF1B\\u6276\\u5728\\u7FA4\\u91CC\\u8C08\\u53CA\\u7684\\u9886\\u57DF\\u6781\\u5176\\u5E7F\\uFF1ACS\\u3001\\u7406\\u8D22\\u3001\\u7F16\\u7A0B\\u3001\\u804C\\u573A\\u7B49\\u7B49\\uFF0C\\u5F53\\u7136\\u4E5F\\u4F1A\\u5728\\u7FA4\\u91CC\\u53D1\\u4E00\\u4E9B\\u8272\\u56FE\\u548C\\u60CA\\u4EBA\\u8A00\\u8BBA\\u3002\"), mdx(\"p\", null, \"\\u76F8\\u8F83\\u800C\\u8A00\\uFF0C\\u6211\\u5BF9\\u6276\\u5173\\u4E8E\\u7F16\\u7A0B\\u90E8\\u5206\\u7684\\u8A00\\u8BBA\\u975E\\u5E38\\u611F\\u5174\\u8DA3\\uFF0C\\u4F5C\\u4E3A\\u4E00\\u540D\\u6D78\\u6DEB\\u7F16\\u7A0B\\u6280\\u672F\\u591A\\u5E74\\u7684 Coder\\uFF0C\\u6276\\u5DF2\\u7ECF\\u5EFA\\u7ACB\\u4E86\\u76F8\\u5F53\\u5B8C\\u5907\\u7684\\u8BA4\\u77E5\\u67B6\\u6784\\uFF0C\\u5979\\u5BF9\\u8BB8\\u591A\\u7684\\u6280\\u672F\\u90FD\\u6709\\u81EA\\u5DF1\\u7684\\u770B\\u6CD5\\u4E0E\\u89C1\\u89E3\\uFF1B\\u8FD9\\u8BA9\\u6211\\u65E2\\u7FA1\\u6155\\u53C8\\u6050\\u614C\\uFF0C\\u4F5C\\u4E3A\\u4E00\\u4E2A\\u524D\\u7AEF\\u5C0F\\u767D\\uFF0C\\u6211\\u8FD8\\u6CA1\\u6709\\u5EFA\\u7ACB\\u8D77\\u8F83\\u4E3A\\u5B8C\\u5584\\u7684\\u8BA4\\u77E5\\u4F53\\u7CFB\\uFF0C\\u8FDC\\u6CA1\\u6709\\u5230\\u8BC4\\u5934\\u8BBA\\u8DB3\\u7684\\u9636\\u6BB5\\uFF0C\\u9887\\u6709\\u5BB3\\u6015\\u81EA\\u5DF1\\u88AB\\u62D4\\u82D7\\u52A9\\u957F\\u7684\\u60F3\\u6CD5\\u5728\\u5176\\u4E2D\\u3002\"), mdx(\"h2\", {\n    \"id\": \"为什么要收集这些言论\"\n  }, \"\\u4E3A\\u4EC0\\u4E48\\u8981\\u6536\\u96C6\\u8FD9\\u4E9B\\u8A00\\u8BBA\"), mdx(\"p\", null, \"\\u6276\\u7684\\u6709\\u4E9B\\u8A00\\u8BBA\\u6211\\u770B\\u5230\\u4EE5\\u540E\\uFF0C\\u8981\\u5728\\u5FC3\\u91CC\\u7422\\u78E8\\u8BB8\\u4E45\\uFF0C\\u5E38\\u6709\\u751F\\u9762\\u5B54\\u7684\\u540D\\u8BCD\\uFF0C\\u751A\\u81F3\\u8981\\u67E5\\u9605\\u4E00\\u4E9B\\u76F8\\u5173\\u8D44\\u6599\\uFF0C\\u53EA\\u6709\\u8FD9\\u6837\\u624D\\u52C9\\u5F3A\\u6709\\u4E9B\\u8BB8\\u81EA\\u5DF1\\u7684\\u7406\\u89E3\\uFF0C\\u4E3A\\u6784\\u5EFA\\u8BA4\\u77E5\\u4F53\\u7CFB\\u6DFB\\u7816\\u52A0\\u74E6\\uFF1B\\u4EC5\\u6709\\u56EB\\u56F5\\u7684\\u8BA4\\u77E5\\u8FDC\\u8FDC\\u4E0D\\u591F\\uFF0C\\u6211\\u66F4\\u5E0C\\u5180\\u300C\\u53D6\\u5176\\u7CBE\\u534E\\uFF0C\\u53BB\\u5176\\u7CDF\\u7C95\\u300D\\uFF0C\\u5982\\u679C\\u6709\\u7CDF\\u7C95\\u7684\\u8BDD\\u4E14\\u6211\\u80FD\\u611F\\u77E5\\u5230\\u7684\\u8BDD\\uFF0C\\u56E0\\u6B64\\u53CD\\u520D\\u52BF\\u5728\\u5FC5\\u884C\\u3002\"), mdx(\"p\", null, \"\\u7ECF\\u5E38\\u7422\\u78E8\\u6276\\u7684\\u8A00\\u8BBA\\u4F1A\\u5BFC\\u81F4\\u53E6\\u5916\\u4E00\\u4E2A\\u95EE\\u9898\\uFF1A\\u81EA\\u5DF1\\u5728\\u7406\\u89E3\\u6276\\u7684\\u8A00\\u8BBA\\u65F6\\uFF0C\\u5E38\\u56E0\\u4E3A\\u8981\\u786E\\u5B9A\\u4ED6\\u7684\\u7528\\u8BCD\\u6216\\u8005\\u5979\\u662F\\u5426\\u8BF4\\u8FC7 XXX\\uFF1B\\u6240\\u4EE5\\u8981\\u53CD\\u590D\\u505A\\u5982\\u4E0B\\u64CD\\u4F5C\\uFF1A\\u6253\\u5F00 QQ \\u7FA4\\u5E76\\u627E\\u5230\\u4ED6\\uFF0C\\u70B9\\u5F00\\u5979\\u7684\\u8D44\\u6599\\uFF0C\\u67E5\\u770B\\u4ED6\\u7684\\u53D1\\u8A00\\u8BB0\\u5F55\\u2026\\u8FD9\\u4E9B\\u91CD\\u590D\\u7684\\u52A8\\u4F5C\\uFF0C\\u6D6A\\u8D39\\u4E86\\u592A\\u591A\\u65F6\\u95F4\\uFF1B\\u56E0\\u6B64\\uFF0C\\u6211\\u4E0B\\u5B9A\\u51B3\\u5FC3\\u9009\\u62E9\\u6027\\u5730\\u628A\\u6276\\u7684\\u4E00\\u4E9B\\u8A00\\u8BBA\\u5F52\\u7EB3\\u8D77\\u6765\\uFF0C\\u5E76\\u968F\\u624B Format \\u4E86\\uFF0C\\u4FBF\\u4E8E\\u5F52\\u6863\\u4E0E\\u7FFB\\u9605\\u3002\"));\n}\n;\nMDXContent.isMDXComponent = true;","hero":{"full":{"base64":"data:image/jpeg;base64,/9j/2wBDABALDA4MChAODQ4SERATGCgaGBYWGDEjJR0oOjM9PDkzODdASFxOQERXRTc4UG1RV19iZ2hnPk1xeXBkeFxlZ2P/2wBDARESEhgVGC8aGi9jQjhCY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2P/wgARCAANABQDASIAAhEBAxEB/8QAGAAAAgMAAAAAAAAAAAAAAAAAAAUCAwT/xAAXAQADAQAAAAAAAAAAAAAAAAAAAQID/9oADAMBAAIQAxAAAAHBYznpCwaiP//EABkQAAIDAQAAAAAAAAAAAAAAAAABAhESE//aAAgBAQABBQKKM06OETmjCP/EABURAQEAAAAAAAAAAAAAAAAAABAR/9oACAEDAQE/AYf/xAAWEQEBAQAAAAAAAAAAAAAAAAAAERL/2gAIAQIBAT8B0r//xAAUEAEAAAAAAAAAAAAAAAAAAAAg/9oACAEBAAY/Al//xAAZEAADAQEBAAAAAAAAAAAAAAAAAREhUWH/2gAIAQEAAT8hq9o7VwRg06803p5n/9oADAMBAAIAAwAAABDgH//EABYRAQEBAAAAAAAAAAAAAAAAAAARAf/aAAgBAwEBPxCk1//EABURAQEAAAAAAAAAAAAAAAAAABAR/9oACAECAQE/EIP/xAAbEAADAAIDAAAAAAAAAAAAAAAAAREhMVFhkf/aAAgBAQABPxBc8XQzc1sZCUZiiDejLIuH4f/Z","aspectRatio":1.5031847133757963,"src":"/static/39c966a7d28eb8625916475943ed8cb4/58fe7/hero.jpg","srcSet":"/static/39c966a7d28eb8625916475943ed8cb4/e0f30/hero.jpg 236w,\n/static/39c966a7d28eb8625916475943ed8cb4/86afd/hero.jpg 472w,\n/static/39c966a7d28eb8625916475943ed8cb4/58fe7/hero.jpg 944w,\n/static/39c966a7d28eb8625916475943ed8cb4/02748/hero.jpg 1416w,\n/static/39c966a7d28eb8625916475943ed8cb4/5c241/hero.jpg 1888w,\n/static/39c966a7d28eb8625916475943ed8cb4/e3277/hero.jpg 2250w","srcWebp":"/static/39c966a7d28eb8625916475943ed8cb4/99fbb/hero.webp","srcSetWebp":"/static/39c966a7d28eb8625916475943ed8cb4/77392/hero.webp 236w,\n/static/39c966a7d28eb8625916475943ed8cb4/1f177/hero.webp 472w,\n/static/39c966a7d28eb8625916475943ed8cb4/99fbb/hero.webp 944w,\n/static/39c966a7d28eb8625916475943ed8cb4/4a492/hero.webp 1416w,\n/static/39c966a7d28eb8625916475943ed8cb4/b0b8f/hero.webp 1888w,\n/static/39c966a7d28eb8625916475943ed8cb4/d168a/hero.webp 2250w","sizes":"(max-width: 944px) 100vw, 944px"},"regular":{"base64":"data:image/jpeg;base64,/9j/2wBDABALDA4MChAODQ4SERATGCgaGBYWGDEjJR0oOjM9PDkzODdASFxOQERXRTc4UG1RV19iZ2hnPk1xeXBkeFxlZ2P/2wBDARESEhgVGC8aGi9jQjhCY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2P/wgARCAANABQDASIAAhEBAxEB/8QAGAAAAgMAAAAAAAAAAAAAAAAAAAUCAwT/xAAXAQADAQAAAAAAAAAAAAAAAAAAAQID/9oADAMBAAIQAxAAAAHBYznpCwaiP//EABkQAAIDAQAAAAAAAAAAAAAAAAABAhESE//aAAgBAQABBQKKM06OETmjCP/EABURAQEAAAAAAAAAAAAAAAAAABAR/9oACAEDAQE/AYf/xAAWEQEBAQAAAAAAAAAAAAAAAAAAERL/2gAIAQIBAT8B0r//xAAUEAEAAAAAAAAAAAAAAAAAAAAg/9oACAEBAAY/Al//xAAZEAADAQEBAAAAAAAAAAAAAAAAAREhUWH/2gAIAQEAAT8hq9o7VwRg06803p5n/9oADAMBAAIAAwAAABDgH//EABYRAQEBAAAAAAAAAAAAAAAAAAARAf/aAAgBAwEBPxCk1//EABURAQEAAAAAAAAAAAAAAAAAABAR/9oACAECAQE/EIP/xAAbEAADAAIDAAAAAAAAAAAAAAAAAREhMVFhkf/aAAgBAQABPxBc8XQzc1sZCUZiiDejLIuH4f/Z","aspectRatio":1.4954128440366972,"src":"/static/39c966a7d28eb8625916475943ed8cb4/1dc0b/hero.jpg","srcSet":"/static/39c966a7d28eb8625916475943ed8cb4/3a5ce/hero.jpg 163w,\n/static/39c966a7d28eb8625916475943ed8cb4/05730/hero.jpg 327w,\n/static/39c966a7d28eb8625916475943ed8cb4/1dc0b/hero.jpg 653w,\n/static/39c966a7d28eb8625916475943ed8cb4/f72c7/hero.jpg 980w,\n/static/39c966a7d28eb8625916475943ed8cb4/6e4a3/hero.jpg 1306w,\n/static/39c966a7d28eb8625916475943ed8cb4/e3277/hero.jpg 2250w","srcWebp":"/static/39c966a7d28eb8625916475943ed8cb4/0acdf/hero.webp","srcSetWebp":"/static/39c966a7d28eb8625916475943ed8cb4/ac59e/hero.webp 163w,\n/static/39c966a7d28eb8625916475943ed8cb4/7660b/hero.webp 327w,\n/static/39c966a7d28eb8625916475943ed8cb4/0acdf/hero.webp 653w,\n/static/39c966a7d28eb8625916475943ed8cb4/75470/hero.webp 980w,\n/static/39c966a7d28eb8625916475943ed8cb4/68d47/hero.webp 1306w,\n/static/39c966a7d28eb8625916475943ed8cb4/d168a/hero.webp 2250w","sizes":"(max-width: 653px) 100vw, 653px"},"narrow":{"base64":"data:image/jpeg;base64,/9j/2wBDABALDA4MChAODQ4SERATGCgaGBYWGDEjJR0oOjM9PDkzODdASFxOQERXRTc4UG1RV19iZ2hnPk1xeXBkeFxlZ2P/2wBDARESEhgVGC8aGi9jQjhCY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2P/wgARCAANABQDASIAAhEBAxEB/8QAGAAAAgMAAAAAAAAAAAAAAAAAAAUCAwT/xAAXAQADAQAAAAAAAAAAAAAAAAAAAQID/9oADAMBAAIQAxAAAAHBYznpCwaiP//EABkQAAIDAQAAAAAAAAAAAAAAAAABAhESE//aAAgBAQABBQKKM06OETmjCP/EABURAQEAAAAAAAAAAAAAAAAAABAR/9oACAEDAQE/AYf/xAAWEQEBAQAAAAAAAAAAAAAAAAAAERL/2gAIAQIBAT8B0r//xAAUEAEAAAAAAAAAAAAAAAAAAAAg/9oACAEBAAY/Al//xAAZEAADAQEBAAAAAAAAAAAAAAAAAREhUWH/2gAIAQEAAT8hq9o7VwRg06803p5n/9oADAMBAAIAAwAAABDgH//EABYRAQEBAAAAAAAAAAAAAAAAAAARAf/aAAgBAwEBPxCk1//EABURAQEAAAAAAAAAAAAAAAAAABAR/9oACAECAQE/EIP/xAAbEAADAAIDAAAAAAAAAAAAAAAAAREhMVFhkf/aAAgBAQABPxBc8XQzc1sZCUZiiDejLIuH4f/Z","aspectRatio":1.5,"src":"/static/39c966a7d28eb8625916475943ed8cb4/eaa58/hero.jpg","srcSet":"/static/39c966a7d28eb8625916475943ed8cb4/5a3ee/hero.jpg 114w,\n/static/39c966a7d28eb8625916475943ed8cb4/41f8f/hero.jpg 229w,\n/static/39c966a7d28eb8625916475943ed8cb4/eaa58/hero.jpg 457w,\n/static/39c966a7d28eb8625916475943ed8cb4/c309b/hero.jpg 686w,\n/static/39c966a7d28eb8625916475943ed8cb4/e3008/hero.jpg 914w,\n/static/39c966a7d28eb8625916475943ed8cb4/e3277/hero.jpg 2250w","srcWebp":"/static/39c966a7d28eb8625916475943ed8cb4/15384/hero.webp","srcSetWebp":"/static/39c966a7d28eb8625916475943ed8cb4/31fce/hero.webp 114w,\n/static/39c966a7d28eb8625916475943ed8cb4/e3e25/hero.webp 229w,\n/static/39c966a7d28eb8625916475943ed8cb4/15384/hero.webp 457w,\n/static/39c966a7d28eb8625916475943ed8cb4/0258d/hero.webp 686w,\n/static/39c966a7d28eb8625916475943ed8cb4/64ea2/hero.webp 914w,\n/static/39c966a7d28eb8625916475943ed8cb4/d168a/hero.webp 2250w","sizes":"(max-width: 457px) 100vw, 457px"},"seo":{"src":"/static/39c966a7d28eb8625916475943ed8cb4/0ff54/hero.jpg"}}},{"id":"38076720-4edd-5f35-9fcd-0d81c2c69f1a","slug":"/2020-08-18-a-vivid-metaphor-about-async-and-await","secret":false,"title":"一个关于 Async/await 的生动比喻","author":"Bryan Lee","date":"August 18th, 2020","dateForSEO":"2020-08-18T00:00:00.000Z","timeToRead":1,"excerpt":"这样的结果你只能喝到白开水，但是加上 await 就不同了","canonical_url":null,"subscription":true,"body":"function _extends() { _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\n\nfunction _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; }\n\nfunction _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }\n\n/* @jsxRuntime classic */\n\n/* @jsx mdx */\nvar _frontmatter = {\n  \"title\": \"一个关于 Async/await 的生动比喻\",\n  \"slug\": \"2020-08-18-a-vivid-metaphor-about-async-and-await\",\n  \"author\": \"Bryan Lee\",\n  \"date\": \"2020-08-18T00:00:00.000Z\",\n  \"excerpt\": \"这样的结果你只能喝到白开水，但是加上 await 就不同了\",\n  \"hero\": \"./images/hero.jpeg\"\n};\nvar layoutProps = {\n  _frontmatter: _frontmatter\n};\nvar MDXLayout = \"wrapper\";\nreturn function MDXContent(_ref) {\n  var components = _ref.components,\n      props = _objectWithoutProperties(_ref, [\"components\"]);\n\n  return mdx(MDXLayout, _extends({}, layoutProps, props, {\n    components: components,\n    mdxType: \"MDXLayout\"\n  }), mdx(\"h2\", {\n    \"id\": \"用煮面和吃面来做个类比\"\n  }, \"\\u7528\\u716E\\u9762\\u548C\\u5403\\u9762\\u6765\\u505A\\u4E2A\\u7C7B\\u6BD4\"), mdx(\"pre\", null, mdx(\"code\", _extends({\n    parentName: \"pre\"\n  }, {\n    \"className\": \"language-js\"\n  }), \"function \\u716E\\u9762() {\\n  \\u6C34 = \\u52A0\\u6C34()\\n  if (\\u9762 === false) {\\n    // \\u5F02\\u6B65\\u64CD\\u4F5C\\n    \\u9762 = \\u53BB\\u8D85\\u5E02\\u4E70\\u9762();\\n  }\\n\\n  \\u9633\\u6625\\u9762 = \\u5F00\\u706B(\\u6C34\\uFF0C\\u9762);\\n  \\u5403\\u9762(\\u9633\\u6625\\u9762);\\n}\\n\")), mdx(\"h2\", {\n    \"id\": \"这样的结果你只能喝到白开水，但是加上-await-就不同了\"\n  }, \"\\u8FD9\\u6837\\u7684\\u7ED3\\u679C\\u4F60\\u53EA\\u80FD\\u559D\\u5230\\u767D\\u5F00\\u6C34\\uFF0C\\u4F46\\u662F\\u52A0\\u4E0A await \\u5C31\\u4E0D\\u540C\\u4E86\"), mdx(\"pre\", null, mdx(\"code\", _extends({\n    parentName: \"pre\"\n  }, {\n    \"className\": \"language-js\"\n  }), \"async function \\u716E\\u9762() {\\n  \\u6C34=\\u52A0\\u6C34();\\n  if (\\u9762 === false ) {\\n    // \\u5F02\\u6B65\\u64CD\\u4F5C\\n    \\u9762 = await \\u53BB\\u8D85\\u5E02\\u4E70\\u9762();\\n  }\\n  \\u9633\\u6625\\u9762 = \\u5F00\\u706B(\\u6C34\\uFF0C\\u9762);\\n  \\u5403\\u9762(\\u9633\\u6625\\u9762);\\n}\\n\")), mdx(\"p\", null, \"\\u7528\\u4E86 \", mdx(\"inlineCode\", {\n    parentName: \"p\"\n  }, \"await\"), \" \\u5C31\\u53EF\\u4EE5\", mdx(\"strong\", {\n    parentName: \"p\"\n  }, \"\\u7B49\\u4E70\\u5230\\u9762\"), \"\\u4EE5\\u540E\\u518D\\u6267\\u884C\\u540E\\u7EED\\u64CD\\u4F5C\\u3002\"));\n}\n;\nMDXContent.isMDXComponent = true;","hero":{"full":{"base64":"data:image/jpeg;base64,/9j/2wBDABALDA4MChAODQ4SERATGCgaGBYWGDEjJR0oOjM9PDkzODdASFxOQERXRTc4UG1RV19iZ2hnPk1xeXBkeFxlZ2P/2wBDARESEhgVGC8aGi9jQjhCY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2P/wgARCAANABQDASIAAhEBAxEB/8QAGAAAAgMAAAAAAAAAAAAAAAAAAAQCAwX/xAAWAQEBAQAAAAAAAAAAAAAAAAAAAgP/2gAMAwEAAhADEAAAAcmuTGspjof/xAAbEAABBQEBAAAAAAAAAAAAAAACAAEDERITIf/aAAgBAQABBQLiVYJUtuoh6McPv//EABQRAQAAAAAAAAAAAAAAAAAAABD/2gAIAQMBAT8BP//EABcRAQADAAAAAAAAAAAAAAAAAAABESH/2gAIAQIBAT8B2Fv/xAAZEAADAAMAAAAAAAAAAAAAAAAAATEQQZH/2gAIAQEABj8C10mW24U//8QAGhAAAgMBAQAAAAAAAAAAAAAAAAERITFRQf/aAAgBAQABPyHVANGsT4RUMdceOiFV7P/aAAwDAQACAAMAAAAQHN//xAAVEQEBAAAAAAAAAAAAAAAAAAAAMf/aAAgBAwEBPxCo/8QAGBEBAAMBAAAAAAAAAAAAAAAAAQARITH/2gAIAQIBAT8QXpUE7U//xAAaEAEBAQEAAwAAAAAAAAAAAAABEQAxQZGx/9oACAEBAAE/EEVYBYC+tNipeZNisnB2drigIqD68ZKnBYlm/9k=","aspectRatio":1.5031847133757963,"src":"/static/2f1d68617df700b9b13619386f232b1b/58fe7/hero.jpg","srcSet":"/static/2f1d68617df700b9b13619386f232b1b/e0f30/hero.jpg 236w,\n/static/2f1d68617df700b9b13619386f232b1b/86afd/hero.jpg 472w,\n/static/2f1d68617df700b9b13619386f232b1b/58fe7/hero.jpg 944w,\n/static/2f1d68617df700b9b13619386f232b1b/02748/hero.jpg 1416w,\n/static/2f1d68617df700b9b13619386f232b1b/5c241/hero.jpg 1888w,\n/static/2f1d68617df700b9b13619386f232b1b/e3277/hero.jpg 2250w","srcWebp":"/static/2f1d68617df700b9b13619386f232b1b/99fbb/hero.webp","srcSetWebp":"/static/2f1d68617df700b9b13619386f232b1b/77392/hero.webp 236w,\n/static/2f1d68617df700b9b13619386f232b1b/1f177/hero.webp 472w,\n/static/2f1d68617df700b9b13619386f232b1b/99fbb/hero.webp 944w,\n/static/2f1d68617df700b9b13619386f232b1b/4a492/hero.webp 1416w,\n/static/2f1d68617df700b9b13619386f232b1b/b0b8f/hero.webp 1888w,\n/static/2f1d68617df700b9b13619386f232b1b/d168a/hero.webp 2250w","sizes":"(max-width: 944px) 100vw, 944px"},"regular":{"base64":"data:image/jpeg;base64,/9j/2wBDABALDA4MChAODQ4SERATGCgaGBYWGDEjJR0oOjM9PDkzODdASFxOQERXRTc4UG1RV19iZ2hnPk1xeXBkeFxlZ2P/2wBDARESEhgVGC8aGi9jQjhCY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2P/wgARCAANABQDASIAAhEBAxEB/8QAGAAAAgMAAAAAAAAAAAAAAAAAAAQCAwX/xAAWAQEBAQAAAAAAAAAAAAAAAAAAAgP/2gAMAwEAAhADEAAAAcmuTGspjof/xAAbEAABBQEBAAAAAAAAAAAAAAACAAEDERITIf/aAAgBAQABBQLiVYJUtuoh6McPv//EABQRAQAAAAAAAAAAAAAAAAAAABD/2gAIAQMBAT8BP//EABcRAQADAAAAAAAAAAAAAAAAAAABESH/2gAIAQIBAT8B2Fv/xAAZEAADAAMAAAAAAAAAAAAAAAAAATEQQZH/2gAIAQEABj8C10mW24U//8QAGhAAAgMBAQAAAAAAAAAAAAAAAAERITFRQf/aAAgBAQABPyHVANGsT4RUMdceOiFV7P/aAAwDAQACAAMAAAAQHN//xAAVEQEBAAAAAAAAAAAAAAAAAAAAMf/aAAgBAwEBPxCo/8QAGBEBAAMBAAAAAAAAAAAAAAAAAQARITH/2gAIAQIBAT8QXpUE7U//xAAaEAEBAQEAAwAAAAAAAAAAAAABEQAxQZGx/9oACAEBAAE/EEVYBYC+tNipeZNisnB2drigIqD68ZKnBYlm/9k=","aspectRatio":1.4954128440366972,"src":"/static/2f1d68617df700b9b13619386f232b1b/1dc0b/hero.jpg","srcSet":"/static/2f1d68617df700b9b13619386f232b1b/3a5ce/hero.jpg 163w,\n/static/2f1d68617df700b9b13619386f232b1b/05730/hero.jpg 327w,\n/static/2f1d68617df700b9b13619386f232b1b/1dc0b/hero.jpg 653w,\n/static/2f1d68617df700b9b13619386f232b1b/f72c7/hero.jpg 980w,\n/static/2f1d68617df700b9b13619386f232b1b/6e4a3/hero.jpg 1306w,\n/static/2f1d68617df700b9b13619386f232b1b/e3277/hero.jpg 2250w","srcWebp":"/static/2f1d68617df700b9b13619386f232b1b/0acdf/hero.webp","srcSetWebp":"/static/2f1d68617df700b9b13619386f232b1b/ac59e/hero.webp 163w,\n/static/2f1d68617df700b9b13619386f232b1b/7660b/hero.webp 327w,\n/static/2f1d68617df700b9b13619386f232b1b/0acdf/hero.webp 653w,\n/static/2f1d68617df700b9b13619386f232b1b/75470/hero.webp 980w,\n/static/2f1d68617df700b9b13619386f232b1b/68d47/hero.webp 1306w,\n/static/2f1d68617df700b9b13619386f232b1b/d168a/hero.webp 2250w","sizes":"(max-width: 653px) 100vw, 653px"},"narrow":{"base64":"data:image/jpeg;base64,/9j/2wBDABALDA4MChAODQ4SERATGCgaGBYWGDEjJR0oOjM9PDkzODdASFxOQERXRTc4UG1RV19iZ2hnPk1xeXBkeFxlZ2P/2wBDARESEhgVGC8aGi9jQjhCY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2P/wgARCAANABQDASIAAhEBAxEB/8QAGAAAAgMAAAAAAAAAAAAAAAAAAAQCAwX/xAAWAQEBAQAAAAAAAAAAAAAAAAAAAgP/2gAMAwEAAhADEAAAAcmuTGspjof/xAAbEAABBQEBAAAAAAAAAAAAAAACAAEDERITIf/aAAgBAQABBQLiVYJUtuoh6McPv//EABQRAQAAAAAAAAAAAAAAAAAAABD/2gAIAQMBAT8BP//EABcRAQADAAAAAAAAAAAAAAAAAAABESH/2gAIAQIBAT8B2Fv/xAAZEAADAAMAAAAAAAAAAAAAAAAAATEQQZH/2gAIAQEABj8C10mW24U//8QAGhAAAgMBAQAAAAAAAAAAAAAAAAERITFRQf/aAAgBAQABPyHVANGsT4RUMdceOiFV7P/aAAwDAQACAAMAAAAQHN//xAAVEQEBAAAAAAAAAAAAAAAAAAAAMf/aAAgBAwEBPxCo/8QAGBEBAAMBAAAAAAAAAAAAAAAAAQARITH/2gAIAQIBAT8QXpUE7U//xAAaEAEBAQEAAwAAAAAAAAAAAAABEQAxQZGx/9oACAEBAAE/EEVYBYC+tNipeZNisnB2drigIqD68ZKnBYlm/9k=","aspectRatio":1.5,"src":"/static/2f1d68617df700b9b13619386f232b1b/eaa58/hero.jpg","srcSet":"/static/2f1d68617df700b9b13619386f232b1b/5a3ee/hero.jpg 114w,\n/static/2f1d68617df700b9b13619386f232b1b/41f8f/hero.jpg 229w,\n/static/2f1d68617df700b9b13619386f232b1b/eaa58/hero.jpg 457w,\n/static/2f1d68617df700b9b13619386f232b1b/c309b/hero.jpg 686w,\n/static/2f1d68617df700b9b13619386f232b1b/e3008/hero.jpg 914w,\n/static/2f1d68617df700b9b13619386f232b1b/e3277/hero.jpg 2250w","srcWebp":"/static/2f1d68617df700b9b13619386f232b1b/15384/hero.webp","srcSetWebp":"/static/2f1d68617df700b9b13619386f232b1b/31fce/hero.webp 114w,\n/static/2f1d68617df700b9b13619386f232b1b/e3e25/hero.webp 229w,\n/static/2f1d68617df700b9b13619386f232b1b/15384/hero.webp 457w,\n/static/2f1d68617df700b9b13619386f232b1b/0258d/hero.webp 686w,\n/static/2f1d68617df700b9b13619386f232b1b/64ea2/hero.webp 914w,\n/static/2f1d68617df700b9b13619386f232b1b/d168a/hero.webp 2250w","sizes":"(max-width: 457px) 100vw, 457px"},"seo":{"src":"/static/2f1d68617df700b9b13619386f232b1b/0ff54/hero.jpg"}}}]}},"staticQueryHashes":["1143375668","1491088328","1921650733","2068910035","2444214635"]}