This commit is contained in:
mozzie 2023-11-07 16:12:40 +08:00
parent 4615b668e5
commit 306adaa449
49 changed files with 154 additions and 201 deletions

View File

@ -110,12 +110,20 @@ algolia:
indexName: hex-blog
# strip可能表示移除HTML标记或者其他不需要索引的格式
# truncate这表示如果字段内容很长它将被截断。在这里0,500 很可能表示截断内容使其从第0个字符开始长度不超过500个字符。
# fields:
# - content:strip
# - categories
# - date
# - permalink
# - slug
# - tags
# - title
fields:
- content:strip:truncate,0,500
- content
- excerpt:strip
- gallery
- categories
- title
- permalink
- photos
- slug
- tags
- title

File diff suppressed because one or more lines are too long

View File

@ -23,6 +23,6 @@
"hexo-renderer-stylus": "^2.1.0",
"hexo-server": "^3.0.0",
"hexo-theme-landscape": "^1.0.0",
"hexo-algoliasearch": "1.0.0"
"hexo-algoliasearch-next": "1.0.2"
}
}

View File

@ -8,9 +8,9 @@ dependencies:
hexo:
specifier: ^6.3.0
version: 6.3.0
hexo-algoliasearch:
specifier: 1.0.0
version: 1.0.0
hexo-algoliasearch-next:
specifier: 1.0.2
version: 1.0.2
hexo-generator-archive:
specifier: ^2.0.0
version: 2.0.0
@ -41,94 +41,94 @@ dependencies:
packages:
/@algolia/cache-browser-local-storage@4.4.0:
resolution: {integrity: sha512-2AiKgN7DpFypkRCRkpqH7waXXyFdcnsPWzmN8sLHrB/FfXqgmsQb3pGft+9YHZIDQ0vAnfgMxSGgMhMGW+0Qnw==}
/@algolia/cache-browser-local-storage@4.19.1:
resolution: {integrity: sha512-FYAZWcGsFTTaSAwj9Std8UML3Bu8dyWDncM7Ls8g+58UOe4XYdlgzXWbrIgjaguP63pCCbMoExKr61B+ztK3tw==}
dependencies:
'@algolia/cache-common': 4.4.0
'@algolia/cache-common': 4.19.1
dev: false
/@algolia/cache-common@4.4.0:
resolution: {integrity: sha512-PrIgoMnXaDWUfwOekahro543pgcJfgRu/nd/ZQS5ffem3+Ow725eZY6HDpPaQ1k3cvLii9JH6V2sNJConjqUKA==}
/@algolia/cache-common@4.19.1:
resolution: {integrity: sha512-XGghi3l0qA38HiqdoUY+wvGyBsGvKZ6U3vTiMBT4hArhP3fOGLXpIINgMiiGjTe4FVlTa5a/7Zf2bwlIHfRqqg==}
dev: false
/@algolia/cache-in-memory@4.4.0:
resolution: {integrity: sha512-9+XlUB0baDU/Dp9URRHPp6Q37YmTO0QmgPWt9+n+wqZrRL0jR3Jezr4jCT7RemqGMxBiR+YpnqaUv0orpb0ptw==}
/@algolia/cache-in-memory@4.19.1:
resolution: {integrity: sha512-+PDWL+XALGvIginigzu8oU6eWw+o76Z8zHbBovWYcrtWOEtinbl7a7UTt3x3lthv+wNuFr/YD1Gf+B+A9V8n5w==}
dependencies:
'@algolia/cache-common': 4.4.0
'@algolia/cache-common': 4.19.1
dev: false
/@algolia/client-account@4.4.0:
resolution: {integrity: sha512-Kynu3cMEs0clTLf674rtrCF+FWR/JwlQxKlIWsPzvLBRmNXdvYej9YBcNaOr4OTQFCCZn9JVE8ib91Z7J4IL1Q==}
/@algolia/client-account@4.19.1:
resolution: {integrity: sha512-Oy0ritA2k7AMxQ2JwNpfaEcgXEDgeyKu0V7E7xt/ZJRdXfEpZcwp9TOg4TJHC7Ia62gIeT2Y/ynzsxccPw92GA==}
dependencies:
'@algolia/client-common': 4.4.0
'@algolia/client-search': 4.4.0
'@algolia/transporter': 4.4.0
'@algolia/client-common': 4.19.1
'@algolia/client-search': 4.19.1
'@algolia/transporter': 4.19.1
dev: false
/@algolia/client-analytics@4.4.0:
resolution: {integrity: sha512-GQyjQimKAc9sZbafxln9Wk7j4pEYiORv28MZkZ+0Bjt7WNXIeO7OgOOECVpQHm9buyV6hCKpNtJcbb5/syRzdQ==}
/@algolia/client-analytics@4.19.1:
resolution: {integrity: sha512-5QCq2zmgdZLIQhHqwl55ZvKVpLM3DNWjFI4T+bHr3rGu23ew2bLO4YtyxaZeChmDb85jUdPDouDlCumGfk6wOg==}
dependencies:
'@algolia/client-common': 4.4.0
'@algolia/client-search': 4.4.0
'@algolia/requester-common': 4.4.0
'@algolia/transporter': 4.4.0
'@algolia/client-common': 4.19.1
'@algolia/client-search': 4.19.1
'@algolia/requester-common': 4.19.1
'@algolia/transporter': 4.19.1
dev: false
/@algolia/client-common@4.4.0:
resolution: {integrity: sha512-a3yr6UhzjWPHDG/8iGp9UvrDOm1aeHVWJIf0Nj/cIvqX5tNCEIo4IMe59ovApkDgLOIpt/cLsyhn9/FiPXRhJA==}
/@algolia/client-common@4.19.1:
resolution: {integrity: sha512-3kAIVqTcPrjfS389KQvKzliC559x+BDRxtWamVJt8IVp7LGnjq+aVAXg4Xogkur1MUrScTZ59/AaUd5EdpyXgA==}
dependencies:
'@algolia/requester-common': 4.4.0
'@algolia/transporter': 4.4.0
'@algolia/requester-common': 4.19.1
'@algolia/transporter': 4.19.1
dev: false
/@algolia/client-recommendation@4.4.0:
resolution: {integrity: sha512-sBszbQH46rko6w2fdEG77ma8+fAg0SDkLZGxWhv4trgcnYGUBFl2dcpEPt/6koto9b4XYlf+eh+qi6iGvYqRPg==}
/@algolia/client-personalization@4.19.1:
resolution: {integrity: sha512-8CWz4/H5FA+krm9HMw2HUQenizC/DxUtsI5oYC0Jxxyce1vsr8cb1aEiSJArQT6IzMynrERif1RVWLac1m36xw==}
dependencies:
'@algolia/client-common': 4.4.0
'@algolia/requester-common': 4.4.0
'@algolia/transporter': 4.4.0
'@algolia/client-common': 4.19.1
'@algolia/requester-common': 4.19.1
'@algolia/transporter': 4.19.1
dev: false
/@algolia/client-search@4.4.0:
resolution: {integrity: sha512-jqWcxCUyPPHnHreoMb2PnN9iHTP+V/nL62R84XuTRDE3VgTnhm4ZnqyuRdzZQqaz+gNy5znav64TmQ9FN9WW5g==}
/@algolia/client-search@4.19.1:
resolution: {integrity: sha512-mBecfMFS4N+yK/p0ZbK53vrZbL6OtWMk8YmnOv1i0LXx4pelY8TFhqKoTit3NPVPwoSNN0vdSN9dTu1xr1XOVw==}
dependencies:
'@algolia/client-common': 4.4.0
'@algolia/requester-common': 4.4.0
'@algolia/transporter': 4.4.0
'@algolia/client-common': 4.19.1
'@algolia/requester-common': 4.19.1
'@algolia/transporter': 4.19.1
dev: false
/@algolia/logger-common@4.4.0:
resolution: {integrity: sha512-2vjmSENLaKNuF+ytRDysfWxxgFG95WXCHwHbueThdPMCK3hskkwqJ0Y/pugKfzl+54mZxegb4BYfgcCeuaHVUw==}
/@algolia/logger-common@4.19.1:
resolution: {integrity: sha512-i6pLPZW/+/YXKis8gpmSiNk1lOmYCmRI6+x6d2Qk1OdfvX051nRVdalRbEcVTpSQX6FQAoyeaui0cUfLYW5Elw==}
dev: false
/@algolia/logger-console@4.4.0:
resolution: {integrity: sha512-st/GUWyKvr6YM72OOfF+RmpdVGda3BPXbQ+chpntUq1WyVkyZXGjSmH1IcBVlua27GzxabwOUYON39cF3x10/g==}
/@algolia/logger-console@4.19.1:
resolution: {integrity: sha512-jj72k9GKb9W0c7TyC3cuZtTr0CngLBLmc8trzZlXdfvQiigpUdvTi1KoWIb2ZMcRBG7Tl8hSb81zEY3zI2RlXg==}
dependencies:
'@algolia/logger-common': 4.4.0
'@algolia/logger-common': 4.19.1
dev: false
/@algolia/requester-browser-xhr@4.4.0:
resolution: {integrity: sha512-V3a4hXlNch355GnWaT1f5QfXhROpsjT6sd0Znq29gAhwLqfBExhLW6Khdkv5pENC0Qy7ClVhdXFrBL9QCQer1g==}
/@algolia/requester-browser-xhr@4.19.1:
resolution: {integrity: sha512-09K/+t7lptsweRTueHnSnmPqIxbHMowejAkn9XIcJMLdseS3zl8ObnS5GWea86mu3vy4+8H+ZBKkUN82Zsq/zg==}
dependencies:
'@algolia/requester-common': 4.4.0
'@algolia/requester-common': 4.19.1
dev: false
/@algolia/requester-common@4.4.0:
resolution: {integrity: sha512-jPinHlFJEFokxQ5b3JWyjQKKn+FMy0hH99PApzOgQAYOSiFRXiPEZp6LeIexDeLLu7Y3eRt/3nHvjPKa6PmRRw==}
/@algolia/requester-common@4.19.1:
resolution: {integrity: sha512-BisRkcWVxrDzF1YPhAckmi2CFYK+jdMT60q10d7z3PX+w6fPPukxHRnZwooiTUrzFe50UBmLItGizWHP5bDzVQ==}
dev: false
/@algolia/requester-node-http@4.4.0:
resolution: {integrity: sha512-b7HC9C/GHxiV4+0GpCRTtjscvwarPr3dGm4CAhb6AkNjgjRcFUNr1NfsF75w3WVmzmt79/7QZihddztDdVMGjw==}
/@algolia/requester-node-http@4.19.1:
resolution: {integrity: sha512-6DK52DHviBHTG2BK/Vv2GIlEw7i+vxm7ypZW0Z7vybGCNDeWzADx+/TmxjkES2h15+FZOqVf/Ja677gePsVItA==}
dependencies:
'@algolia/requester-common': 4.4.0
'@algolia/requester-common': 4.19.1
dev: false
/@algolia/transporter@4.4.0:
resolution: {integrity: sha512-Xxzq91DEEeKIzT3DU46n4LEyTGAKZNtSHc2H9wvIY5MYwhZwEribmXXZ6k8W1FvBvzggv3juu0SP+xwGoR7F0w==}
/@algolia/transporter@4.19.1:
resolution: {integrity: sha512-nkpvPWbpuzxo1flEYqNIbGz7xhfhGOKGAZS7tzC+TELgEmi7z99qRyTfNSUlW7LZmB3ACdnqAo+9A9KFBENviQ==}
dependencies:
'@algolia/cache-common': 4.4.0
'@algolia/logger-common': 4.4.0
'@algolia/requester-common': 4.4.0
'@algolia/cache-common': 4.19.1
'@algolia/logger-common': 4.19.1
'@algolia/requester-common': 4.19.1
dev: false
/@tootallnate/once@2.0.0:
@ -188,23 +188,23 @@ packages:
- supports-color
dev: false
/algoliasearch@4.4.0:
resolution: {integrity: sha512-Ag3wxe/nSodNl/1KbHibtkh7TNLptKE300/wnGVtszRjXivaWD6333nUpCumrYObHym/fHMHyLcmQYezXbAIWQ==}
/algoliasearch@4.19.1:
resolution: {integrity: sha512-IJF5b93b2MgAzcE/tuzW0yOPnuUyRgGAtaPv5UUywXM8kzqfdwZTO4sPJBzoGz1eOy6H9uEchsJsBFTELZSu+g==}
dependencies:
'@algolia/cache-browser-local-storage': 4.4.0
'@algolia/cache-common': 4.4.0
'@algolia/cache-in-memory': 4.4.0
'@algolia/client-account': 4.4.0
'@algolia/client-analytics': 4.4.0
'@algolia/client-common': 4.4.0
'@algolia/client-recommendation': 4.4.0
'@algolia/client-search': 4.4.0
'@algolia/logger-common': 4.4.0
'@algolia/logger-console': 4.4.0
'@algolia/requester-browser-xhr': 4.4.0
'@algolia/requester-common': 4.4.0
'@algolia/requester-node-http': 4.4.0
'@algolia/transporter': 4.4.0
'@algolia/cache-browser-local-storage': 4.19.1
'@algolia/cache-common': 4.19.1
'@algolia/cache-in-memory': 4.19.1
'@algolia/client-account': 4.19.1
'@algolia/client-analytics': 4.19.1
'@algolia/client-common': 4.19.1
'@algolia/client-personalization': 4.19.1
'@algolia/client-search': 4.19.1
'@algolia/logger-common': 4.19.1
'@algolia/logger-console': 4.19.1
'@algolia/requester-browser-xhr': 4.19.1
'@algolia/requester-common': 4.19.1
'@algolia/requester-node-http': 4.19.1
'@algolia/transporter': 4.19.1
dev: false
/ansi-regex@5.0.1:
@ -692,12 +692,12 @@ packages:
engines: {node: '>= 0.4.0'}
dev: false
/hexo-algoliasearch@1.0.0:
resolution: {integrity: sha512-JcJ4ecv23LDvKLOaqRSQP9eIDX82XSp24c6LzumThzE0XmhQpTPsIWj0PN4dHnAZFZxYu1axJfakKLqiNzLwXA==}
/hexo-algoliasearch-next@1.0.2:
resolution: {integrity: sha512-wsoW3ZFbyYzEUlohtWpuGUUrO8sH4BIKNn5aK6DVfxxEgkqnCcVRKDY4yqxM0SKInfoZbQfsqi4IOBZw/xl7Jg==}
engines: {node: '>=14.0.0'}
dependencies:
algoliasearch: 4.4.0
striptags: 3.1.1
algoliasearch: 4.19.1
striptags: 3.2.0
dev: false
/hexo-cli@4.3.1:
@ -1513,8 +1513,8 @@ packages:
min-indent: 1.0.1
dev: false
/striptags@3.1.1:
resolution: {integrity: sha512-3HVl+cOkJOlNUDAYdoCAfGx/fzUzG53YvJAl3RYlTvAcBdPqSp1Uv4wrmHymm7oEypTijSQqcqplW8cz0/r/YA==}
/striptags@3.2.0:
resolution: {integrity: sha512-g45ZOGzHDMe2bdYMdIvdAfCQkCTDMGBazSw1ypMowwGIee7ZQ5dU0rBJ8Jqgl+jAKIv4dbeE1jscZq9wid1Tkw==}
dev: false
/stylus@0.57.0:

View File

@ -109,7 +109,7 @@
</script>
<script src="/js/1a086ffc.js"></script>
<script src="/js/b9c2be9c.js"></script>
<!-- navigation -->

File diff suppressed because one or more lines are too long

View File

@ -109,7 +109,7 @@
</script>
<script src="/js/1a086ffc.js"></script>
<script src="/js/b9c2be9c.js"></script>
<!-- navigation -->
@ -294,7 +294,7 @@
<p><a target="_blank" rel="noopener" href="https://baidu.com/">https://baidu.com</a></p>
<p><a target="_blank" rel="noopener" href="http://www.this-anchor-link.com/">锚点链接</a> </p>
<p><a href="mailto:test.test@gmail.com">mailto:test.test@gmail.com</a></p>
<p>GFM a-tail link <a target="_blank" rel="noopener" href="https://my.oschina.net/u/3691274">@pandao</a> 邮箱地址自动链接 <a href="mailto:&#x74;&#x65;&#x73;&#x74;&#46;&#116;&#x65;&#115;&#x74;&#64;&#x67;&#x6d;&#x61;&#x69;&#108;&#46;&#99;&#x6f;&#109;">&#x74;&#x65;&#x73;&#x74;&#46;&#116;&#x65;&#115;&#x74;&#64;&#x67;&#x6d;&#x61;&#x69;&#108;&#46;&#99;&#x6f;&#109;</a> <a href="mailto:&#119;&#119;&#x77;&#64;&#x76;&#105;&#112;&#x2e;&#113;&#113;&#x2e;&#x63;&#x6f;&#109;">&#119;&#119;&#x77;&#64;&#x76;&#105;&#112;&#x2e;&#113;&#113;&#x2e;&#x63;&#x6f;&#109;</a></p>
<p>GFM a-tail link <a target="_blank" rel="noopener" href="https://my.oschina.net/u/3691274">@pandao</a> 邮箱地址自动链接 <a href="mailto:&#116;&#101;&#115;&#116;&#x2e;&#116;&#x65;&#115;&#x74;&#64;&#103;&#109;&#97;&#105;&#108;&#x2e;&#x63;&#111;&#x6d;">&#116;&#101;&#115;&#116;&#x2e;&#116;&#x65;&#115;&#x74;&#64;&#103;&#109;&#97;&#105;&#108;&#x2e;&#x63;&#111;&#x6d;</a> <a href="mailto:&#119;&#x77;&#119;&#x40;&#x76;&#105;&#x70;&#x2e;&#x71;&#x71;&#46;&#99;&#x6f;&#109;">&#119;&#x77;&#119;&#x40;&#x76;&#105;&#x70;&#x2e;&#x71;&#x71;&#46;&#99;&#x6f;&#109;</a></p>
<blockquote>
<p>@pandao</p>
</blockquote>

View File

@ -109,7 +109,7 @@
</script>
<script src="/js/1a086ffc.js"></script>
<script src="/js/b9c2be9c.js"></script>
<!-- navigation -->

View File

@ -109,7 +109,7 @@
</script>
<script src="/js/1a086ffc.js"></script>
<script src="/js/b9c2be9c.js"></script>
<!-- navigation -->

View File

@ -109,7 +109,7 @@
</script>
<script src="/js/1a086ffc.js"></script>
<script src="/js/b9c2be9c.js"></script>
<!-- navigation -->

View File

@ -109,7 +109,7 @@
</script>
<script src="/js/1a086ffc.js"></script>
<script src="/js/b9c2be9c.js"></script>
<!-- navigation -->

View File

@ -109,7 +109,7 @@
</script>
<script src="/js/1a086ffc.js"></script>
<script src="/js/b9c2be9c.js"></script>
<!-- navigation -->

View File

@ -109,7 +109,7 @@
</script>
<script src="/js/1a086ffc.js"></script>
<script src="/js/b9c2be9c.js"></script>
<!-- navigation -->

View File

@ -109,7 +109,7 @@
</script>
<script src="/js/1a086ffc.js"></script>
<script src="/js/b9c2be9c.js"></script>
<!-- navigation -->

View File

@ -109,7 +109,7 @@
</script>
<script src="/js/1a086ffc.js"></script>
<script src="/js/b9c2be9c.js"></script>
<!-- navigation -->

View File

@ -109,7 +109,7 @@
</script>
<script src="/js/1a086ffc.js"></script>
<script src="/js/b9c2be9c.js"></script>
<!-- navigation -->

View File

@ -109,7 +109,7 @@
</script>
<script src="/js/1a086ffc.js"></script>
<script src="/js/b9c2be9c.js"></script>
<!-- navigation -->

File diff suppressed because one or more lines are too long

View File

@ -109,7 +109,7 @@
</script>
<script src="/js/1a086ffc.js"></script>
<script src="/js/b9c2be9c.js"></script>
<!-- navigation -->

View File

@ -109,7 +109,7 @@
</script>
<script src="/js/1a086ffc.js"></script>
<script src="/js/b9c2be9c.js"></script>
<!-- navigation -->

View File

@ -109,7 +109,7 @@
</script>
<script src="/js/1a086ffc.js"></script>
<script src="/js/b9c2be9c.js"></script>
<!-- navigation -->

View File

@ -109,7 +109,7 @@
</script>
<script src="/js/1a086ffc.js"></script>
<script src="/js/b9c2be9c.js"></script>
<!-- navigation -->

View File

@ -109,7 +109,7 @@
</script>
<script src="/js/1a086ffc.js"></script>
<script src="/js/b9c2be9c.js"></script>
<!-- navigation -->

View File

@ -109,7 +109,7 @@
</script>
<script src="/js/1a086ffc.js"></script>
<script src="/js/b9c2be9c.js"></script>
<!-- navigation -->

View File

@ -109,7 +109,7 @@
</script>
<script src="/js/1a086ffc.js"></script>
<script src="/js/b9c2be9c.js"></script>
<!-- navigation -->

View File

@ -109,7 +109,7 @@
</script>
<script src="/js/1a086ffc.js"></script>
<script src="/js/b9c2be9c.js"></script>
<!-- navigation -->

View File

@ -109,7 +109,7 @@
</script>
<script src="/js/1a086ffc.js"></script>
<script src="/js/b9c2be9c.js"></script>
<!-- navigation -->

View File

@ -109,7 +109,7 @@
</script>
<script src="/js/1a086ffc.js"></script>
<script src="/js/b9c2be9c.js"></script>
<!-- navigation -->

View File

@ -109,7 +109,7 @@
</script>
<script src="/js/1a086ffc.js"></script>
<script src="/js/b9c2be9c.js"></script>
<!-- navigation -->

View File

@ -109,7 +109,7 @@
</script>
<script src="/js/1a086ffc.js"></script>
<script src="/js/b9c2be9c.js"></script>
<!-- navigation -->

View File

@ -109,7 +109,7 @@
</script>
<script src="/js/1a086ffc.js"></script>
<script src="/js/b9c2be9c.js"></script>
<!-- navigation -->

View File

@ -109,7 +109,7 @@
</script>
<script src="/js/1a086ffc.js"></script>
<script src="/js/b9c2be9c.js"></script>
<!-- navigation -->

View File

@ -109,7 +109,7 @@
</script>
<script src="/js/1a086ffc.js"></script>
<script src="/js/b9c2be9c.js"></script>
<!-- navigation -->

View File

@ -109,7 +109,7 @@
</script>
<script src="/js/1a086ffc.js"></script>
<script src="/js/b9c2be9c.js"></script>
<!-- navigation -->

View File

@ -109,7 +109,7 @@
</script>
<script src="/js/1a086ffc.js"></script>
<script src="/js/b9c2be9c.js"></script>
<!-- navigation -->

File diff suppressed because one or more lines are too long

View File

@ -1 +0,0 @@
/*! algoliasearch.umd.js | 4.20.0 | © Algolia, inc. | https://github.com/algolia/algoliasearch-client-javascript */

2
public/js/b9c2be9c.js Normal file

File diff suppressed because one or more lines are too long

View File

@ -0,0 +1,3 @@
/*! @license DOMPurify 3.0.6 | (c) Cure53 and other contributors | Released under the Apache license 2.0 and Mozilla Public License 2.0 | github.com/cure53/DOMPurify/blob/3.0.6/LICENSE */
/*! algoliasearch.umd.js | 4.20.0 | © Algolia, inc. | https://github.com/algolia/algoliasearch-client-javascript */

View File

@ -109,7 +109,7 @@
</script>
<script src="/js/1a086ffc.js"></script>
<script src="/js/b9c2be9c.js"></script>
<!-- navigation -->

View File

@ -109,7 +109,7 @@
</script>
<script src="/js/1a086ffc.js"></script>
<script src="/js/b9c2be9c.js"></script>
<!-- navigation -->

View File

@ -109,7 +109,7 @@
</script>
<script src="/js/1a086ffc.js"></script>
<script src="/js/b9c2be9c.js"></script>
<!-- navigation -->

View File

@ -210,25 +210,26 @@ algolia:
# 替换
indexName: hex-blog
fields:
- content:strip
- content
- excerpt:strip
- categories
- date
- title
- permalink
- slug
- tags
- title
```
## 安装 hexo-algoliasearch
## 安装 hexo-algoliasearch-next
这是 Hexo 博客帖子索引插件,自动化提交索引到 Algolia
> 如出遇到问题,可阅读 [hexo-algoliasearch 仓库](https://www.npmjs.com/package/hexo-algoliasearch) 最新说明
> 如出遇到问题,可阅读 [hexo-algoliasearch-next 仓库](https://github.com/Becavalier/hexo-algoliasearch-next) 最新说明
安装命令:
```bash
npm install hexo-algoliasearch --save
npm install hexo-algoliasearch-next --save
```
## 使用 algolia

View File

@ -1622,7 +1622,7 @@ let obj = { a: { b: { c: {} } } };
defineReactive(obj, "a", 4);
```
> ?? 如何自动让`obj`对象的全部属性都`reactive`呢?
> 如何自动让`obj`对象的全部属性都`reactive`呢?
```js
let obj = {
@ -1697,34 +1697,3 @@ export default function observe(value) {
return ob;
}
```
# 前端微应用 single-spa
随着`Node`革新的这一波工程化潮流,前端项目复杂度指数级增加,某个项目,可能由`团队A`负责,但当后续迭代,需要渐进增强,加入新的模块,`团队A`不足以支撑业务,需要引入新的开发`团队B`,为了维持生产环境业务的统一性和用户体验,新的模块也需要在统一的入口下,例如:
![single-spa-1](/data/img/single-spa-1.png)
传统的方案,肯定是`iframe`去做,但通常会遇到一些麻烦的事情,处理起来很不优雅,例如:
- 显示区域受限制,比如子项目中显示弹窗蒙层时,蒙层只会覆盖 iframe 区域,无法覆盖整个页面,内容也无法真正居中。
- 页面浏览记录无法自动被记录,刷新页面后 iframe 又自动回到首页。
- 全局上下文完全隔离,变量不共享,页面间通信比较麻烦,比如子项目与主题框架、子项目之间通信等,只能采用 postMessage 方式。
- 速度较慢,每次进入子应用时都要重建整个上下文。
单页面集成多个应用的架构诞生,例如阿里的`qiankun.js`
> single-spa 够减少公司整体开发限制,团队 B 的技术选型完全可以不依赖团队 A
`single-spa` 实现微前端的整体流程
![single-spa-2](/data/img/single-spa-2.png)
- 资源模块加载器:用来加载子项目初始化资源。我们将子项目的入口 js 构建成 umd 格式,然后使用模块加载器远程加载,通常会使用 SystemJs不是必须通用模块加载器来进行加载。
- 子应用资源配置表:用来记录各个子应用的入口资源 url 信息,以便在切换不同子应用时使用模块加载器去远程加载。因为每次子应用更新后入口资源的 hash 通常会变化,所以需要服务端定时去更新该配置表,以便框架能及时加载子应用最新的资源。
> 注意single-spa 本身是不支持子应用资源列表的,每个子应用只能将自己所有初始化资源打包到一个入口 js 中。如果子应用初始化资源有多个文件(可以通过 webpack-manifest-plugin 生成应用初始化资源清单),就需要按照上述方式来添加额外处理。

View File

@ -21,4 +21,4 @@
}
</script>
<%- js("/js/1a086ffc.js")%>
<%- js("/js/b9c2be9c.js")%>

File diff suppressed because one or more lines are too long

View File

@ -1 +0,0 @@
/*! algoliasearch.umd.js | 4.20.0 | © Algolia, inc. | https://github.com/algolia/algoliasearch-client-javascript */

File diff suppressed because one or more lines are too long

View File

@ -0,0 +1,3 @@
/*! @license DOMPurify 3.0.6 | (c) Cure53 and other contributors | Released under the Apache license 2.0 and Mozilla Public License 2.0 | github.com/cure53/DOMPurify/blob/3.0.6/LICENSE */
/*! algoliasearch.umd.js | 4.20.0 | © Algolia, inc. | https://github.com/algolia/algoliasearch-client-javascript */