1 line
372 KiB
JSON
1 line
372 KiB
JSON
{"meta":{"version":1,"warehouse":"4.0.2"},"models":{"Asset":[{"_id":"themes/hexo-theme-cosy/source/css/0c63d269.css","path":"css/0c63d269.css","modified":1,"renderable":1},{"_id":"themes/hexo-theme-cosy/source/css/21.88950121.css","path":"css/21.88950121.css","modified":1,"renderable":1},{"_id":"themes/hexo-theme-cosy/source/css/26c34ce6.css","path":"css/26c34ce6.css","modified":1,"renderable":1},{"_id":"themes/hexo-theme-cosy/source/css/271.54fa1675.css","path":"css/271.54fa1675.css","modified":1,"renderable":1},{"_id":"themes/hexo-theme-cosy/source/css/291.a8323266.css","path":"css/291.a8323266.css","modified":1,"renderable":1},{"_id":"themes/hexo-theme-cosy/source/css/2cd7dba2.css","path":"css/2cd7dba2.css","modified":1,"renderable":1},{"_id":"themes/hexo-theme-cosy/source/css/32ae9342.css","path":"css/32ae9342.css","modified":1,"renderable":1},{"_id":"themes/hexo-theme-cosy/source/css/3a4a90d1.css","path":"css/3a4a90d1.css","modified":1,"renderable":1},{"_id":"themes/hexo-theme-cosy/source/css/3fa188f4.css","path":"css/3fa188f4.css","modified":1,"renderable":1},{"_id":"themes/hexo-theme-cosy/source/css/3efc6cb5.css","path":"css/3efc6cb5.css","modified":1,"renderable":1},{"_id":"themes/hexo-theme-cosy/source/css/429.fb1dabcb.css","path":"css/429.fb1dabcb.css","modified":1,"renderable":1},{"_id":"themes/hexo-theme-cosy/source/css/4c3d0e88.css","path":"css/4c3d0e88.css","modified":1,"renderable":1},{"_id":"themes/hexo-theme-cosy/source/css/5c728363.css","path":"css/5c728363.css","modified":1,"renderable":1},{"_id":"themes/hexo-theme-cosy/source/css/5c823a15.css","path":"css/5c823a15.css","modified":1,"renderable":1},{"_id":"themes/hexo-theme-cosy/source/css/766.64ad3c35.css","path":"css/766.64ad3c35.css","modified":1,"renderable":1},{"_id":"themes/hexo-theme-cosy/source/css/922.9efa0b6b.css","path":"css/922.9efa0b6b.css","modified":1,"renderable":1},{"_id":"themes/hexo-theme-cosy/source/css/206.a3a4e130.css","path":"css/206.a3a4e130.css","modified":1,"renderable":1},{"_id":"themes/hexo-theme-cosy/source/css/945.fdf98cb0.css","path":"css/945.fdf98cb0.css","modified":1,"renderable":1},{"_id":"themes/hexo-theme-cosy/source/css/ccbcde32.css","path":"css/ccbcde32.css","modified":1,"renderable":1},{"_id":"themes/hexo-theme-cosy/source/css/de5de8fb.css","path":"css/de5de8fb.css","modified":1,"renderable":1},{"_id":"themes/hexo-theme-cosy/source/css/618.6513d67e.css","path":"css/618.6513d67e.css","modified":1,"renderable":1},{"_id":"themes/hexo-theme-cosy/source/css/e01add4b.css","path":"css/e01add4b.css","modified":1,"renderable":1},{"_id":"themes/hexo-theme-cosy/source/css/efca006a.css","path":"css/efca006a.css","modified":1,"renderable":1},{"_id":"themes/hexo-theme-cosy/source/css/f3729dde.css","path":"css/f3729dde.css","modified":1,"renderable":1},{"_id":"themes/hexo-theme-cosy/source/font/linear.woff2","path":"font/linear.woff2","modified":1,"renderable":1},{"_id":"themes/hexo-theme-cosy/source/font/motto.woff","path":"font/motto.woff","modified":1,"renderable":1},{"_id":"themes/hexo-theme-cosy/source/img/favicon.svg","path":"img/favicon.svg","modified":1,"renderable":1},{"_id":"themes/hexo-theme-cosy/source/img/icon-arrow-left.svg","path":"img/icon-arrow-left.svg","modified":1,"renderable":1},{"_id":"themes/hexo-theme-cosy/source/img/icon-book.svg","path":"img/icon-book.svg","modified":1,"renderable":1},{"_id":"themes/hexo-theme-cosy/source/img/icon-click.svg","path":"img/icon-click.svg","modified":1,"renderable":1},{"_id":"themes/hexo-theme-cosy/source/img/icon-date.svg","path":"img/icon-date.svg","modified":1,"renderable":1},{"_id":"themes/hexo-theme-cosy/source/img/icon-layout.svg","path":"img/icon-layout.svg","modified":1,"renderable":1},{"_id":"themes/hexo-theme-cosy/source/img/icon-moon.svg","path":"img/icon-moon.svg","modified":1,"renderable":1},{"_id":"themes/hexo-theme-cosy/source/img/icon-link.svg","path":"img/icon-link.svg","modified":1,"renderable":1},{"_id":"themes/hexo-theme-cosy/source/img/icon-sun.svg","path":"img/icon-sun.svg","modified":1,"renderable":1},{"_id":"themes/hexo-theme-cosy/source/img/icon1.svg","path":"img/icon1.svg","modified":1,"renderable":1},{"_id":"themes/hexo-theme-cosy/source/img/icon2.svg","path":"img/icon2.svg","modified":1,"renderable":1},{"_id":"themes/hexo-theme-cosy/source/img/icon3.svg","path":"img/icon3.svg","modified":1,"renderable":1},{"_id":"themes/hexo-theme-cosy/source/img/logo.png","path":"img/logo.png","modified":1,"renderable":1},{"_id":"themes/hexo-theme-cosy/source/js/07f44e09.js","path":"js/07f44e09.js","modified":1,"renderable":1},{"_id":"themes/hexo-theme-cosy/source/js/07f44e09.js.LICENSE.txt","path":"js/07f44e09.js.LICENSE.txt","modified":1,"renderable":1},{"_id":"themes/hexo-theme-cosy/source/js/206.759361ed.js","path":"js/206.759361ed.js","modified":1,"renderable":1},{"_id":"themes/hexo-theme-cosy/source/js/271.ee88a6de.js","path":"js/271.ee88a6de.js","modified":1,"renderable":1},{"_id":"themes/hexo-theme-cosy/source/js/21.282c05e7.js","path":"js/21.282c05e7.js","modified":1,"renderable":1},{"_id":"themes/hexo-theme-cosy/source/js/291.4ac6984b.js","path":"js/291.4ac6984b.js","modified":1,"renderable":1},{"_id":"themes/hexo-theme-cosy/source/js/31d6cfe0.js","path":"js/31d6cfe0.js","modified":1,"renderable":1},{"_id":"themes/hexo-theme-cosy/source/js/3cf4fd98.js","path":"js/3cf4fd98.js","modified":1,"renderable":1},{"_id":"themes/hexo-theme-cosy/source/js/58c91c4e.js","path":"js/58c91c4e.js","modified":1,"renderable":1},{"_id":"themes/hexo-theme-cosy/source/js/429.bc4769cb.js","path":"js/429.bc4769cb.js","modified":1,"renderable":1},{"_id":"themes/hexo-theme-cosy/source/js/618.1a58fba9.js","path":"js/618.1a58fba9.js","modified":1,"renderable":1},{"_id":"themes/hexo-theme-cosy/source/js/766.9503a62c.js","path":"js/766.9503a62c.js","modified":1,"renderable":1},{"_id":"themes/hexo-theme-cosy/source/js/922.689e0633.js","path":"js/922.689e0633.js","modified":1,"renderable":1},{"_id":"themes/hexo-theme-cosy/source/js/945.0313a94c.js","path":"js/945.0313a94c.js","modified":1,"renderable":1},{"_id":"themes/hexo-theme-cosy/source/js/9f1cd854.js","path":"js/9f1cd854.js","modified":1,"renderable":1},{"_id":"themes/hexo-theme-cosy/source/js/a02fa72b.js","path":"js/a02fa72b.js","modified":1,"renderable":1},{"_id":"themes/hexo-theme-cosy/source/js/ae2a0e7b.js","path":"js/ae2a0e7b.js","modified":1,"renderable":1},{"_id":"themes/hexo-theme-cosy/source/js/c413ebaa.js","path":"js/c413ebaa.js","modified":1,"renderable":1},{"_id":"themes/hexo-theme-cosy/source/js/ca6b30b5.js","path":"js/ca6b30b5.js","modified":1,"renderable":1},{"_id":"themes/hexo-theme-cosy/source/js/cdca7001.js","path":"js/cdca7001.js","modified":1,"renderable":1},{"_id":"themes/hexo-theme-cosy/source/js/f8b20eb9.js","path":"js/f8b20eb9.js","modified":1,"renderable":1},{"_id":"themes/hexo-theme-cosy/source/img/qweather-color-icon/100.png","path":"img/qweather-color-icon/100.png","modified":1,"renderable":1},{"_id":"themes/hexo-theme-cosy/source/img/qweather-color-icon/101.png","path":"img/qweather-color-icon/101.png","modified":1,"renderable":1},{"_id":"themes/hexo-theme-cosy/source/img/qweather-color-icon/102.png","path":"img/qweather-color-icon/102.png","modified":1,"renderable":1},{"_id":"themes/hexo-theme-cosy/source/img/qweather-color-icon/103.png","path":"img/qweather-color-icon/103.png","modified":1,"renderable":1},{"_id":"themes/hexo-theme-cosy/source/img/qweather-color-icon/104.png","path":"img/qweather-color-icon/104.png","modified":1,"renderable":1},{"_id":"themes/hexo-theme-cosy/source/img/qweather-color-icon/150.png","path":"img/qweather-color-icon/150.png","modified":1,"renderable":1},{"_id":"themes/hexo-theme-cosy/source/img/qweather-color-icon/151.png","path":"img/qweather-color-icon/151.png","modified":1,"renderable":1},{"_id":"themes/hexo-theme-cosy/source/img/qweather-color-icon/152.png","path":"img/qweather-color-icon/152.png","modified":1,"renderable":1},{"_id":"themes/hexo-theme-cosy/source/img/qweather-color-icon/153.png","path":"img/qweather-color-icon/153.png","modified":1,"renderable":1},{"_id":"themes/hexo-theme-cosy/source/img/qweather-color-icon/300.png","path":"img/qweather-color-icon/300.png","modified":1,"renderable":1},{"_id":"themes/hexo-theme-cosy/source/img/qweather-color-icon/301.png","path":"img/qweather-color-icon/301.png","modified":1,"renderable":1},{"_id":"themes/hexo-theme-cosy/source/img/qweather-color-icon/302.png","path":"img/qweather-color-icon/302.png","modified":1,"renderable":1},{"_id":"themes/hexo-theme-cosy/source/img/qweather-color-icon/303.png","path":"img/qweather-color-icon/303.png","modified":1,"renderable":1},{"_id":"themes/hexo-theme-cosy/source/img/qweather-color-icon/304.png","path":"img/qweather-color-icon/304.png","modified":1,"renderable":1},{"_id":"themes/hexo-theme-cosy/source/img/qweather-color-icon/306.png","path":"img/qweather-color-icon/306.png","modified":1,"renderable":1},{"_id":"themes/hexo-theme-cosy/source/img/qweather-color-icon/307.png","path":"img/qweather-color-icon/307.png","modified":1,"renderable":1},{"_id":"themes/hexo-theme-cosy/source/img/qweather-color-icon/305.png","path":"img/qweather-color-icon/305.png","modified":1,"renderable":1},{"_id":"themes/hexo-theme-cosy/source/img/qweather-color-icon/308.png","path":"img/qweather-color-icon/308.png","modified":1,"renderable":1},{"_id":"themes/hexo-theme-cosy/source/img/qweather-color-icon/309.png","path":"img/qweather-color-icon/309.png","modified":1,"renderable":1},{"_id":"themes/hexo-theme-cosy/source/img/qweather-color-icon/311.png","path":"img/qweather-color-icon/311.png","modified":1,"renderable":1},{"_id":"themes/hexo-theme-cosy/source/img/qweather-color-icon/310.png","path":"img/qweather-color-icon/310.png","modified":1,"renderable":1},{"_id":"themes/hexo-theme-cosy/source/img/qweather-color-icon/312.png","path":"img/qweather-color-icon/312.png","modified":1,"renderable":1},{"_id":"themes/hexo-theme-cosy/source/img/qweather-color-icon/314.png","path":"img/qweather-color-icon/314.png","modified":1,"renderable":1},{"_id":"themes/hexo-theme-cosy/source/img/qweather-color-icon/315.png","path":"img/qweather-color-icon/315.png","modified":1,"renderable":1},{"_id":"themes/hexo-theme-cosy/source/img/qweather-color-icon/313.png","path":"img/qweather-color-icon/313.png","modified":1,"renderable":1},{"_id":"themes/hexo-theme-cosy/source/img/qweather-color-icon/316.png","path":"img/qweather-color-icon/316.png","modified":1,"renderable":1},{"_id":"themes/hexo-theme-cosy/source/img/qweather-color-icon/317.png","path":"img/qweather-color-icon/317.png","modified":1,"renderable":1},{"_id":"themes/hexo-theme-cosy/source/img/qweather-color-icon/318.png","path":"img/qweather-color-icon/318.png","modified":1,"renderable":1},{"_id":"themes/hexo-theme-cosy/source/img/qweather-color-icon/350.png","path":"img/qweather-color-icon/350.png","modified":1,"renderable":1},{"_id":"themes/hexo-theme-cosy/source/img/qweather-color-icon/351.png","path":"img/qweather-color-icon/351.png","modified":1,"renderable":1},{"_id":"themes/hexo-theme-cosy/source/img/qweather-color-icon/399.png","path":"img/qweather-color-icon/399.png","modified":1,"renderable":1},{"_id":"themes/hexo-theme-cosy/source/img/qweather-color-icon/400.png","path":"img/qweather-color-icon/400.png","modified":1,"renderable":1},{"_id":"themes/hexo-theme-cosy/source/img/qweather-color-icon/401.png","path":"img/qweather-color-icon/401.png","modified":1,"renderable":1},{"_id":"themes/hexo-theme-cosy/source/img/qweather-color-icon/402.png","path":"img/qweather-color-icon/402.png","modified":1,"renderable":1},{"_id":"themes/hexo-theme-cosy/source/img/qweather-color-icon/403.png","path":"img/qweather-color-icon/403.png","modified":1,"renderable":1},{"_id":"themes/hexo-theme-cosy/source/img/qweather-color-icon/404.png","path":"img/qweather-color-icon/404.png","modified":1,"renderable":1},{"_id":"themes/hexo-theme-cosy/source/img/qweather-color-icon/407.png","path":"img/qweather-color-icon/407.png","modified":1,"renderable":1},{"_id":"themes/hexo-theme-cosy/source/img/qweather-color-icon/406.png","path":"img/qweather-color-icon/406.png","modified":1,"renderable":1},{"_id":"themes/hexo-theme-cosy/source/img/qweather-color-icon/408.png","path":"img/qweather-color-icon/408.png","modified":1,"renderable":1},{"_id":"themes/hexo-theme-cosy/source/img/qweather-color-icon/410.png","path":"img/qweather-color-icon/410.png","modified":1,"renderable":1},{"_id":"themes/hexo-theme-cosy/source/img/qweather-color-icon/409.png","path":"img/qweather-color-icon/409.png","modified":1,"renderable":1},{"_id":"themes/hexo-theme-cosy/source/img/qweather-color-icon/456.png","path":"img/qweather-color-icon/456.png","modified":1,"renderable":1},{"_id":"themes/hexo-theme-cosy/source/img/qweather-color-icon/457.png","path":"img/qweather-color-icon/457.png","modified":1,"renderable":1},{"_id":"themes/hexo-theme-cosy/source/img/qweather-color-icon/499.png","path":"img/qweather-color-icon/499.png","modified":1,"renderable":1},{"_id":"themes/hexo-theme-cosy/source/img/qweather-color-icon/500.png","path":"img/qweather-color-icon/500.png","modified":1,"renderable":1},{"_id":"themes/hexo-theme-cosy/source/img/qweather-color-icon/501.png","path":"img/qweather-color-icon/501.png","modified":1,"renderable":1},{"_id":"themes/hexo-theme-cosy/source/img/qweather-color-icon/502.png","path":"img/qweather-color-icon/502.png","modified":1,"renderable":1},{"_id":"themes/hexo-theme-cosy/source/img/qweather-color-icon/503.png","path":"img/qweather-color-icon/503.png","modified":1,"renderable":1},{"_id":"themes/hexo-theme-cosy/source/img/qweather-color-icon/504.png","path":"img/qweather-color-icon/504.png","modified":1,"renderable":1},{"_id":"themes/hexo-theme-cosy/source/img/qweather-color-icon/508.png","path":"img/qweather-color-icon/508.png","modified":1,"renderable":1},{"_id":"themes/hexo-theme-cosy/source/img/qweather-color-icon/507.png","path":"img/qweather-color-icon/507.png","modified":1,"renderable":1},{"_id":"themes/hexo-theme-cosy/source/img/qweather-color-icon/509.png","path":"img/qweather-color-icon/509.png","modified":1,"renderable":1},{"_id":"themes/hexo-theme-cosy/source/img/qweather-color-icon/510.png","path":"img/qweather-color-icon/510.png","modified":1,"renderable":1},{"_id":"themes/hexo-theme-cosy/source/img/qweather-color-icon/512.png","path":"img/qweather-color-icon/512.png","modified":1,"renderable":1},{"_id":"themes/hexo-theme-cosy/source/img/qweather-color-icon/513.png","path":"img/qweather-color-icon/513.png","modified":1,"renderable":1},{"_id":"themes/hexo-theme-cosy/source/img/qweather-color-icon/511.png","path":"img/qweather-color-icon/511.png","modified":1,"renderable":1},{"_id":"themes/hexo-theme-cosy/source/img/qweather-color-icon/514.png","path":"img/qweather-color-icon/514.png","modified":1,"renderable":1},{"_id":"themes/hexo-theme-cosy/source/img/qweather-color-icon/515.png","path":"img/qweather-color-icon/515.png","modified":1,"renderable":1},{"_id":"themes/hexo-theme-cosy/source/img/qweather-color-icon/900.png","path":"img/qweather-color-icon/900.png","modified":1,"renderable":1},{"_id":"themes/hexo-theme-cosy/source/img/qweather-color-icon/901.png","path":"img/qweather-color-icon/901.png","modified":1,"renderable":1},{"_id":"themes/hexo-theme-cosy/source/img/qweather-color-icon/999.png","path":"img/qweather-color-icon/999.png","modified":1,"renderable":1},{"_id":"source/img/algolia-api-keys.png","path":"img/algolia-api-keys.png","modified":1,"renderable":0},{"_id":"source/img/avatar.png","path":"img/avatar.png","modified":1,"renderable":0}],"Cache":[{"_id":"source/resume/index.md","hash":"bf43def3f93e03502f2d0546ffd91f0980733c2d","modified":1698729314977},{"_id":"source/_posts/Cosy 入门.md","hash":"5659970e71d898841f01d8ca61d40ea42b3dac8a","modified":1698651807292},{"_id":"source/.DS_Store","hash":"7194d57d6883d95b7b40dff78df136da9de20cb3","modified":1698635272869},{"_id":"source/_posts/Cosy-Starter-Guide.md","hash":"1d4369bd9b139b7af67379060748405919722b69","modified":1698651889576},{"_id":"source/_posts/A Guide to Effective Dialogue.md","hash":"6b921148f345d387426eda1d8f8b2329d9b78194","modified":1698112058891},{"_id":"source/img/avatar.png","hash":"c45edffe12ddb1801b90b85bf8b5cbe2d19deb8b","modified":1698635269018},{"_id":"source/_posts/Markdown Sample.md","hash":"aebe37c8f94a4f1275a5efda876e36ec4852122c","modified":1698033673108},{"_id":"source/roadmap/index.md","hash":"996c88291b410cc5cc6648f2085e5a03f743736c","modified":1698634643955},{"_id":"source/_posts/front-end/verdaccio.md","hash":"50453d3e60c7e63e31bc9f3efcebc241d317fae0","modified":1697768855158},{"_id":"themes/hexo-theme-cosy/source/js/31d6cfe0.js","hash":"da39a3ee5e6b4b0d3255bfef95601890afd80709","modified":1698729292581},{"_id":"themes/hexo-theme-cosy/layout/airplane.ejs","hash":"28521fce0f5dbd1fd62c612ae68b78ba254faef3","modified":1698729292535},{"_id":"themes/hexo-theme-cosy/layout/archive.ejs","hash":"d63bc4ebac416b4f5b80fb673ec0a3f092a4e255","modified":1698729292536},{"_id":"themes/hexo-theme-cosy/layout/category.ejs","hash":"d9b220b14a2fbe8ce1433bd9665d54c880eb7322","modified":1698729292536},{"_id":"themes/hexo-theme-cosy/layout/index.ejs","hash":"ef5b4c22c7d7f247462557a5ab9a0bec3f5cc308","modified":1698729292537},{"_id":"themes/hexo-theme-cosy/layout/layout.ejs","hash":"b7f75b2336aeaf46a05733788d82cfa750b121d7","modified":1698729292537},{"_id":"themes/hexo-theme-cosy/layout/homebar.ejs","hash":"d883953fe0c0df9481936bcb56ab3a1bacdaaa36","modified":1698729292536},{"_id":"themes/hexo-theme-cosy/layout/navigation.ejs","hash":"dfa3f6d4e219ca9d4f1df6fff0f3bf502f2e5898","modified":1698729292537},{"_id":"themes/hexo-theme-cosy/_config.yml","hash":"410a5f27c5408aca6c29b36254a76eb28d24d4de","modified":1698112058891},{"_id":"themes/hexo-theme-cosy/layout/postCopyright.ejs","hash":"83a579d0e8d7cf341ac8acc9a733d5046e224e32","modified":1698729292538},{"_id":"themes/hexo-theme-cosy/layout/post.ejs","hash":"4aa72a024ad0f467b8d314ad651998c228ec96af","modified":1698729292538},{"_id":"themes/hexo-theme-cosy/.DS_Store","hash":"df2fbeb1400acda0909a32c1cf6bf492f1121e07","modified":1698635208378},{"_id":"themes/hexo-theme-cosy/layout/breadcrumb.ejs","hash":"81c91ad7b618a760b901741ff0d87333acddf60c","modified":1698729292536},{"_id":"themes/hexo-theme-cosy/layout/resume.ejs","hash":"dd958503df13c061f0c08101aa522707aa623832","modified":1698729292538},{"_id":"themes/hexo-theme-cosy/layout/search.ejs","hash":"da088b901ea192cbd8c6fc451094bc93890ecc4d","modified":1698729292539},{"_id":"themes/hexo-theme-cosy/layout/weather.ejs","hash":"04052e95f80ac11765b90019b149d7fb1bb68bab","modified":1698729292539},{"_id":"themes/hexo-theme-cosy/layout/roadmap.ejs","hash":"e16ef0b34e2f285c3cfd7733e61aae75894a8394","modified":1698729292539},{"_id":"themes/hexo-theme-cosy/scripts/generate_excerpt.js","hash":"a7cfe46e7e389b1654c81f3e9a8a934dd80d735a","modified":1698729292544},{"_id":"themes/hexo-theme-cosy/scripts/post_counter.js","hash":"62aaa594dafcffe5aa457628eaf183075cabe159","modified":1698729292545},{"_id":"themes/hexo-theme-cosy/scripts/road-to-json.js","hash":"7fddd6117979d983e2172a04dd8764459a9c626b","modified":1698729292545},{"_id":"themes/hexo-theme-cosy/scripts/postIcon.js","hash":"73362a6570b00613681425b59a30903be671cd91","modified":1698729292545},{"_id":"themes/hexo-theme-cosy/layout/welcome.ejs","hash":"ce7419f61089411de4cea72165a4ce89c4d55fbd","modified":1698729292540},{"_id":"themes/hexo-theme-cosy/scripts/sort_posts.js","hash":"5cedcd663fd7eb1b255360ea9eb6089fd55e959c","modified":1698729292546},{"_id":"themes/hexo-theme-cosy/scripts/mermaid_tag.js","hash":"bc74c79cf41709da1993597acaebae96d6b3761d","modified":1698729292544},{"_id":"themes/hexo-theme-cosy/languages/ar.yml","hash":"569c30006952a34c93cfa779ba75b4fdd98a4032","modified":1698729292523},{"_id":"themes/hexo-theme-cosy/languages/es.yml","hash":"a5624a3b9ae2ae0bb928f6c9cebf820692a6588c","modified":1698729292525},{"_id":"themes/hexo-theme-cosy/languages/en.yml","hash":"c6a2ea6386a5411054d4ae1b5d0ac0a483f27fab","modified":1698729292524},{"_id":"themes/hexo-theme-cosy/languages/fr.yml","hash":"1114a91b795ebb44bb13bedc09232b24d36ac3ad","modified":1698729292525},{"_id":"themes/hexo-theme-cosy/languages/ko.yml","hash":"389a8fbff84e82c449995ccfe8c2809167565d9b","modified":1698729292526},{"_id":"themes/hexo-theme-cosy/languages/ru.yml","hash":"55b5258de0118c3bbda6092eaf002fdb112f7a65","modified":1698729292526},{"_id":"themes/hexo-theme-cosy/languages/de.yml","hash":"ae38883463468b343ef0c47445f6ced8adbf92b5","modified":1698729292524},{"_id":"themes/hexo-theme-cosy/languages/ja.yml","hash":"f5bc562e3943d88eca6bf7c3734dd481db5f69b7","modified":1698729292526},{"_id":"themes/hexo-theme-cosy/languages/zh-CN.yml","hash":"1f7b14044e8fc1815b43ac8fdf668db3cab3e83c","modified":1698729292527},{"_id":"themes/hexo-theme-cosy/source/css/0c63d269.css","hash":"6b9b9796cf8ff9349b724f4b789f1347eaa0d476","modified":1698729292553},{"_id":"themes/hexo-theme-cosy/source/css/271.54fa1675.css","hash":"845cb754fd4ea780279a16e01a345d55889866e2","modified":1698729292554},{"_id":"themes/hexo-theme-cosy/languages/zh-TW.yml","hash":"7ba3cd4f15d624c142ae6f992937d21ced350230","modified":1698729292528},{"_id":"themes/hexo-theme-cosy/source/css/26c34ce6.css","hash":"261102615aa79d4c06044928ce90a832f943f2ca","modified":1698729292553},{"_id":"themes/hexo-theme-cosy/source/css/291.a8323266.css","hash":"e18068692b42ef4b76adc55d5ddc9f2bb10203f4","modified":1698729292554},{"_id":"themes/hexo-theme-cosy/source/css/2cd7dba2.css","hash":"dbc4f3071866019f0faae76620928ddf2f6700e6","modified":1698729292554},{"_id":"themes/hexo-theme-cosy/source/css/3a4a90d1.css","hash":"4ffc2c5e9f1afd4fa74d7d9b785e0697cd7fb770","modified":1698729292554},{"_id":"themes/hexo-theme-cosy/source/css/32ae9342.css","hash":"13860dfa3657005967610ec05d4dc75406a91a0c","modified":1698729292554},{"_id":"themes/hexo-theme-cosy/source/css/3fa188f4.css","hash":"913b63bd8186f0c7731f61dae6dc71b058e3038c","modified":1698729292555},{"_id":"themes/hexo-theme-cosy/source/css/3efc6cb5.css","hash":"1f1958bfd921ac3eea83a1e14ed97e8e83b31fb6","modified":1698729292555},{"_id":"themes/hexo-theme-cosy/source/css/21.88950121.css","hash":"44c9b83ffe9151e2e233c2f55b6e89b30ea7c7bb","modified":1698729292553},{"_id":"themes/hexo-theme-cosy/source/css/4c3d0e88.css","hash":"c4a5bf3a1f7adf21c04d9950b02a67f516bbac9f","modified":1698729292555},{"_id":"themes/hexo-theme-cosy/source/css/429.fb1dabcb.css","hash":"1f2b77bab319123d193042b9990056abe9f2fd73","modified":1698729292555},{"_id":"themes/hexo-theme-cosy/source/css/5c728363.css","hash":"715635cbd3ce46fd0b82117bc757fab6d2277070","modified":1698729292556},{"_id":"themes/hexo-theme-cosy/source/css/766.64ad3c35.css","hash":"8434994030b9b9d0fa3a82df079c860f49543b82","modified":1698729292556},{"_id":"themes/hexo-theme-cosy/source/css/922.9efa0b6b.css","hash":"721bc1b89ae059267d9b4aa3cc37f5c1ff8f32c3","modified":1698729292556},{"_id":"themes/hexo-theme-cosy/source/css/206.a3a4e130.css","hash":"f8c04ec30e94eb972ff315b8c1eef655b9e8a03e","modified":1698729292553},{"_id":"themes/hexo-theme-cosy/source/css/945.fdf98cb0.css","hash":"f227a8697bf14eb75ba63d14a0608db53c9a50a1","modified":1698729292557},{"_id":"themes/hexo-theme-cosy/source/css/ccbcde32.css","hash":"3475deea0241c67fadc3de5149886e90af24f2e6","modified":1698729292557},{"_id":"themes/hexo-theme-cosy/source/css/de5de8fb.css","hash":"a05682caa4e0b8a106578468f795dad472ee75da","modified":1698729292557},{"_id":"themes/hexo-theme-cosy/source/css/618.6513d67e.css","hash":"660188677fab2c0946ac4b8ed81611ad5472feb8","modified":1698729292556},{"_id":"themes/hexo-theme-cosy/source/css/e01add4b.css","hash":"5fc672a8fb8b65d60c087cc908d5170eaac56e0c","modified":1698729292557},{"_id":"themes/hexo-theme-cosy/source/css/5c823a15.css","hash":"ecd601ec63354836b57e3bfaa68bb5c3c57f3724","modified":1698729292556},{"_id":"themes/hexo-theme-cosy/source/font/linear.woff2","hash":"57cac19ad34a50d5a4da5e471e08174c950ce5fb","modified":1698729292558},{"_id":"themes/hexo-theme-cosy/source/css/f3729dde.css","hash":"2a7faa0c3816e3b653fb4540fa63504a26b2051f","modified":1698729292558},{"_id":"themes/hexo-theme-cosy/source/css/efca006a.css","hash":"97972d1b7ca177983b39a67e772736f661637468","modified":1698729292557},{"_id":"themes/hexo-theme-cosy/source/img/favicon.svg","hash":"6e88f8a231bb0a7ae4cc4598f85b6d346a286095","modified":1698729292559},{"_id":"themes/hexo-theme-cosy/source/img/icon-arrow-left.svg","hash":"a36362d2555e8b836fcec1f7eeeae4588a871bdd","modified":1698729292559},{"_id":"themes/hexo-theme-cosy/source/img/icon-book.svg","hash":"d5e4064468dde477bf9a630c3fababec41316708","modified":1698729292559},{"_id":"themes/hexo-theme-cosy/source/img/icon-click.svg","hash":"b10df8b886a8b2d44293b26f42b440c9aedb66a7","modified":1698729292560},{"_id":"themes/hexo-theme-cosy/source/img/icon-date.svg","hash":"b391e34adafed83ef52d836fd6f81618494c4c6b","modified":1698729292560},{"_id":"themes/hexo-theme-cosy/source/img/icon-layout.svg","hash":"108ef43073a5b92552dc00744a9f11db8e5ac0a2","modified":1698729292560},{"_id":"themes/hexo-theme-cosy/source/img/icon-link.svg","hash":"436b5ee7ef2d28766e86ac1e65a567d1e786c1b3","modified":1698729292560},{"_id":"themes/hexo-theme-cosy/source/img/icon-sun.svg","hash":"57a0ce52ecce7188eaac5e06eab54609a8e572c8","modified":1698729292561},{"_id":"themes/hexo-theme-cosy/source/img/icon-moon.svg","hash":"032be7ed3d2320f22069e2efb2fb7f60592d6212","modified":1698729292560},{"_id":"themes/hexo-theme-cosy/source/img/icon1.svg","hash":"f15fbcecbaa00db99aeaca9807922514f6452d02","modified":1698729292561},{"_id":"themes/hexo-theme-cosy/source/font/motto.woff","hash":"755620f3bad3ebdf683c074043104d4c11f8d23e","modified":1698729292559},{"_id":"themes/hexo-theme-cosy/source/img/icon3.svg","hash":"a1a9dcee7703ec48f2d92b0d533b62fef16097fc","modified":1698729292561},{"_id":"themes/hexo-theme-cosy/source/img/icon2.svg","hash":"cc598540651110d977afd26dc0a1f01bbc95bf21","modified":1698729292561},{"_id":"themes/hexo-theme-cosy/source/js/07f44e09.js","hash":"e8a21a4252ad34adc1a54066eab32a26a7313940","modified":1698729292579},{"_id":"themes/hexo-theme-cosy/source/js/206.759361ed.js","hash":"129b5fd004afbbe4ab06cf6e944097b42c98655b","modified":1698729292580},{"_id":"themes/hexo-theme-cosy/source/js/07f44e09.js.LICENSE.txt","hash":"35ad54c8f1627db94ca60022d50f416d495b72c6","modified":1698729292580},{"_id":"themes/hexo-theme-cosy/source/js/271.ee88a6de.js","hash":"2d93e1c6f51c16e6cc0c41740dc1de5a0c362926","modified":1698729292580},{"_id":"themes/hexo-theme-cosy/source/js/21.282c05e7.js","hash":"78359415e9f39c9c2119551ac2a97ba9f15af294","modified":1698729292580},{"_id":"themes/hexo-theme-cosy/source/js/291.4ac6984b.js","hash":"b5bb3c24cbcb7d09604c8c66c9d4470e6a2fd449","modified":1698729292581},{"_id":"themes/hexo-theme-cosy/source/js/3cf4fd98.js","hash":"0d51155f6dc08d1d8c693d210c1407b2e26b5685","modified":1698729292581},{"_id":"themes/hexo-theme-cosy/source/js/58c91c4e.js","hash":"1935dee981143040a708a1144fd2a57894ce3137","modified":1698729292581},{"_id":"themes/hexo-theme-cosy/source/js/618.1a58fba9.js","hash":"afbe73ca7b78196e48dd9147a12db960d17589ff","modified":1698729292582},{"_id":"themes/hexo-theme-cosy/source/js/766.9503a62c.js","hash":"9f2114b6ac69ab0a67b1c88c5f6c48ff244185f7","modified":1698729292582},{"_id":"themes/hexo-theme-cosy/source/js/429.bc4769cb.js","hash":"926f0c003b8cfc0f4eb78ab6367aab9228d31abf","modified":1698729292581},{"_id":"themes/hexo-theme-cosy/source/js/922.689e0633.js","hash":"1757f732da655e7dc36fe4a23d29b72a549e9423","modified":1698729292582},{"_id":"themes/hexo-theme-cosy/source/js/a02fa72b.js","hash":"527060080189f03b7332259a579af89c8d1367a3","modified":1698729292583},{"_id":"themes/hexo-theme-cosy/source/js/945.0313a94c.js","hash":"ccc3bda115641d497837d4cf8e93f776f0e64c6d","modified":1698729292582},{"_id":"themes/hexo-theme-cosy/source/js/9f1cd854.js","hash":"070029c5073bc3e67d98f1ac377d12f585bb4a2f","modified":1698729292583},{"_id":"themes/hexo-theme-cosy/source/js/ae2a0e7b.js","hash":"d71a6f691ba45862066ad15bb7f8b3bd2ad9f5f5","modified":1698729292583},{"_id":"themes/hexo-theme-cosy/source/js/c413ebaa.js","hash":"dd282af849c44345ad3e577efc8fa291468de653","modified":1698729292583},{"_id":"themes/hexo-theme-cosy/source/js/ca6b30b5.js","hash":"481a8f20c3d4e565c1ea5dafe4218597d051a9fc","modified":1698729292583},{"_id":"themes/hexo-theme-cosy/source/js/cdca7001.js","hash":"cd27e408febd15a99bafdf9da8a834bb1b6902c3","modified":1698729292584},{"_id":"themes/hexo-theme-cosy/source/js/f8b20eb9.js","hash":"86cff2cb169c614dedd464b373d94322328cb185","modified":1698729292584},{"_id":"themes/hexo-theme-cosy/source/img/qweather-color-icon/101.png","hash":"890888efd8db7a3f29427e476ce3433f4a564321","modified":1698729292562},{"_id":"themes/hexo-theme-cosy/source/img/qweather-color-icon/102.png","hash":"74d7cfa4f23850a456c16d0e0956264e920f7a85","modified":1698729292563},{"_id":"themes/hexo-theme-cosy/source/img/qweather-color-icon/103.png","hash":"656d81bd50728c7ba62572e838db7c355d522e51","modified":1698729292563},{"_id":"themes/hexo-theme-cosy/source/img/qweather-color-icon/104.png","hash":"36add97ed90d57e691e6e15d3456898a42dccb16","modified":1698729292563},{"_id":"themes/hexo-theme-cosy/source/img/qweather-color-icon/150.png","hash":"572b4a6e56271b89208daa538f02416d50249347","modified":1698729292563},{"_id":"themes/hexo-theme-cosy/source/img/qweather-color-icon/100.png","hash":"ad42001979a0dbb8807c128b871dc28161b8c191","modified":1698729292562},{"_id":"themes/hexo-theme-cosy/source/img/qweather-color-icon/152.png","hash":"3ec0a1ac063ae068cc9d728eef88a9a6d7859153","modified":1698729292564},{"_id":"themes/hexo-theme-cosy/source/img/qweather-color-icon/300.png","hash":"bd67445ff764f3f1d4eeb81625372585bb537b07","modified":1698729292564},{"_id":"themes/hexo-theme-cosy/source/img/qweather-color-icon/302.png","hash":"371fa4d79b6a93573fde068f179829ed97c8f4f8","modified":1698729292565},{"_id":"themes/hexo-theme-cosy/source/img/qweather-color-icon/151.png","hash":"8041e428fc369be40f9e993f4f718ae99c7662fa","modified":1698729292563},{"_id":"themes/hexo-theme-cosy/source/img/qweather-color-icon/301.png","hash":"cc616d4c7ae6abbe0338f418fe35acce93c46164","modified":1698729292565},{"_id":"themes/hexo-theme-cosy/source/img/qweather-color-icon/303.png","hash":"453442f93e62ac98884aae173530f26272d97ad6","modified":1698729292565},{"_id":"themes/hexo-theme-cosy/source/img/qweather-color-icon/306.png","hash":"69b55e71e8da4e0fe223ff76b9a68f98e4134b3d","modified":1698729292566},{"_id":"themes/hexo-theme-cosy/source/img/qweather-color-icon/153.png","hash":"3eb50d325ec84e1248585d347471b1093a83909c","modified":1698729292564},{"_id":"themes/hexo-theme-cosy/source/img/qweather-color-icon/304.png","hash":"3669eb04ee87dca604f70f7404c0ecb303d17af4","modified":1698729292566},{"_id":"themes/hexo-theme-cosy/source/img/qweather-color-icon/307.png","hash":"02a08e002d21a10e0854b1036556fb81b0308be3","modified":1698729292567},{"_id":"themes/hexo-theme-cosy/source/img/qweather-color-icon/305.png","hash":"618e18bf06b5d12d64269b30d6f044fc356d24b0","modified":1698729292566},{"_id":"themes/hexo-theme-cosy/source/img/qweather-color-icon/308.png","hash":"ace460a40174aa90dde6c2ef71663f30cec24193","modified":1698729292567},{"_id":"themes/hexo-theme-cosy/source/img/qweather-color-icon/311.png","hash":"ab5c5059f354da2f9525b30ee81312fbfa4749bf","modified":1698729292568},{"_id":"themes/hexo-theme-cosy/source/img/qweather-color-icon/309.png","hash":"c5140be49b8936e5d30380f14f7dce49a7be7cb5","modified":1698729292568},{"_id":"themes/hexo-theme-cosy/source/img/qweather-color-icon/310.png","hash":"9315203066fa97a7d10f2a6fb0fd3ce5b7805126","modified":1698729292568},{"_id":"themes/hexo-theme-cosy/source/img/qweather-color-icon/314.png","hash":"110f9fe81f80b8f372b7472fbcfd9c0071b33151","modified":1698729292569},{"_id":"themes/hexo-theme-cosy/source/img/qweather-color-icon/312.png","hash":"c672d7373fce89803b5e8d06420e158f11ea346f","modified":1698729292569},{"_id":"themes/hexo-theme-cosy/source/img/qweather-color-icon/315.png","hash":"2100a23ee6d584227715164263c43875e8d8946c","modified":1698729292570},{"_id":"themes/hexo-theme-cosy/source/img/qweather-color-icon/313.png","hash":"afa70386816623e847c09f51032212d2520d1740","modified":1698729292569},{"_id":"themes/hexo-theme-cosy/source/img/qweather-color-icon/317.png","hash":"7e60725abd3b91b9ba388ad9b9f642690c39ff9e","modified":1698729292570},{"_id":"themes/hexo-theme-cosy/source/img/qweather-color-icon/318.png","hash":"7a042920165671cdbfef6c58596a80f9a1f6f016","modified":1698729292571},{"_id":"themes/hexo-theme-cosy/source/img/qweather-color-icon/316.png","hash":"4de1ac0254507c5509fc4d04e208fd81d2af7b34","modified":1698729292570},{"_id":"themes/hexo-theme-cosy/source/img/qweather-color-icon/351.png","hash":"3ab30470a65acb8fe879aa7adc9064284abd8407","modified":1698729292571},{"_id":"themes/hexo-theme-cosy/source/img/qweather-color-icon/400.png","hash":"79444a48a0e416e4cac1eb319496f495091f4c86","modified":1698729292572},{"_id":"themes/hexo-theme-cosy/source/img/qweather-color-icon/399.png","hash":"993ddcd386480d211ec9b2e56656d659bb6c453b","modified":1698729292571},{"_id":"themes/hexo-theme-cosy/source/img/qweather-color-icon/401.png","hash":"279c8bc00b4e57db9b1095df64044ec80b37edb0","modified":1698729292572},{"_id":"themes/hexo-theme-cosy/source/img/qweather-color-icon/403.png","hash":"dfad1a525c4467c3e95e281befdf813e145620df","modified":1698729292573},{"_id":"themes/hexo-theme-cosy/source/img/qweather-color-icon/350.png","hash":"f29c1aa55c4afd3df17aef7885a35b0bd177d771","modified":1698729292571},{"_id":"themes/hexo-theme-cosy/source/img/qweather-color-icon/407.png","hash":"82223792a5e3e556148b4663f195ef22044c143a","modified":1698729292574},{"_id":"themes/hexo-theme-cosy/source/img/qweather-color-icon/406.png","hash":"b9cd0421518e0a76041285e5bf0c1666a93428a5","modified":1698729292573},{"_id":"themes/hexo-theme-cosy/source/img/qweather-color-icon/402.png","hash":"033fc236885a2bf7007d97eb054b0c5885035be5","modified":1698729292572},{"_id":"themes/hexo-theme-cosy/source/img/qweather-color-icon/404.png","hash":"112e73e641d1a30712993b5dca681a5e033831ee","modified":1698729292573},{"_id":"themes/hexo-theme-cosy/source/img/qweather-color-icon/408.png","hash":"02b34a66020c9f3e5173702d30e5a7b69139bade","modified":1698729292574},{"_id":"themes/hexo-theme-cosy/source/img/qweather-color-icon/410.png","hash":"9170b32d6b7f644ce49116f3e35d35558bae6536","modified":1698729292574},{"_id":"themes/hexo-theme-cosy/source/img/qweather-color-icon/409.png","hash":"aed269911d0249a700b4f3890c424f00f4a27e1e","modified":1698729292574},{"_id":"themes/hexo-theme-cosy/source/img/qweather-color-icon/456.png","hash":"dd16b957cc544730afab8d2712821dd6c77f5167","modified":1698729292575},{"_id":"themes/hexo-theme-cosy/source/img/qweather-color-icon/457.png","hash":"5dffe7e9139bfb697b046c427b9ef0ed6ffa95c7","modified":1698729292575},{"_id":"themes/hexo-theme-cosy/source/img/qweather-color-icon/499.png","hash":"2b51631144a7c0f813b6425d4daa30c4d4e8bd38","modified":1698729292575},{"_id":"themes/hexo-theme-cosy/source/img/qweather-color-icon/501.png","hash":"ddb4712d8f19bb8c197e600000dd2d51049f970d","modified":1698729292576},{"_id":"themes/hexo-theme-cosy/source/img/qweather-color-icon/502.png","hash":"4146081a2635ff88fa14e38ed8d360d3b4fa74dd","modified":1698729292576},{"_id":"themes/hexo-theme-cosy/source/img/qweather-color-icon/503.png","hash":"9415147c4bcebadd7f3089339064b8120c8d4089","modified":1698729292576},{"_id":"themes/hexo-theme-cosy/source/img/qweather-color-icon/504.png","hash":"defba93520719f72b217583062ccc79abd5b445e","modified":1698729292576},{"_id":"themes/hexo-theme-cosy/source/img/qweather-color-icon/508.png","hash":"ae98a3217df26021ec2f667f099d27575c912bf4","modified":1698729292577},{"_id":"themes/hexo-theme-cosy/source/img/qweather-color-icon/507.png","hash":"426d5a73a482ac5721e7da2141e4fe704f50b608","modified":1698729292576},{"_id":"themes/hexo-theme-cosy/source/img/qweather-color-icon/509.png","hash":"3bc779bfbcab94a79c91b26288e2e7b67412d15e","modified":1698729292577},{"_id":"themes/hexo-theme-cosy/source/img/qweather-color-icon/500.png","hash":"ddb4712d8f19bb8c197e600000dd2d51049f970d","modified":1698729292575},{"_id":"themes/hexo-theme-cosy/source/img/qweather-color-icon/510.png","hash":"524131e401d0b150dab2733af336f4649b8ade74","modified":1698729292577},{"_id":"themes/hexo-theme-cosy/source/img/qweather-color-icon/512.png","hash":"64e11f225c35caa6ef2612d613026c52cfd3557e","modified":1698729292577},{"_id":"themes/hexo-theme-cosy/source/img/qweather-color-icon/513.png","hash":"ceff3dfd109a990c9595276ad6b56061bb662e5e","modified":1698729292578},{"_id":"themes/hexo-theme-cosy/source/img/qweather-color-icon/514.png","hash":"fdf992021ff20e1ffe1b19f0b918aa35204f22e7","modified":1698729292578},{"_id":"themes/hexo-theme-cosy/source/img/qweather-color-icon/900.png","hash":"6eacf8df641c6096feb746c7544a825d3c65bf47","modified":1698729292578},{"_id":"themes/hexo-theme-cosy/source/img/qweather-color-icon/511.png","hash":"e2efe07a29446ebecd313ccd8a2c7d57a670f203","modified":1698729292577},{"_id":"themes/hexo-theme-cosy/source/img/qweather-color-icon/999.png","hash":"74e4fa5bdd815d988b55525d4e7f6d40bf1080d4","modified":1698729292579},{"_id":"themes/hexo-theme-cosy/source/img/qweather-color-icon/901.png","hash":"f6b3f1cd64e9c325e9dc3ab42469baa5c5119c2d","modified":1698729292578},{"_id":"themes/hexo-theme-cosy/source/img/qweather-color-icon/515.png","hash":"fdf992021ff20e1ffe1b19f0b918aa35204f22e7","modified":1698729292578},{"_id":"themes/hexo-theme-cosy/source/img/logo.png","hash":"05730ab0dadd5036509f942834278eef683994dd","modified":1698729292562},{"_id":"source/img/algolia-api-keys.png","hash":"8b2f85a93b52f0590e9b8fe2d2405427c99e2280","modified":1697779286767},{"_id":"public/roadmap/index.html","hash":"03d5ec051cbe21822d2bd46e4ff6ea296ec79452","modified":1698729336605},{"_id":"public/archives/index.html","hash":"5ffbe4b3e2e6beac30c68aa487a0ae9a143bff1e","modified":1698729336605},{"_id":"public/archives/2023/index.html","hash":"5ffbe4b3e2e6beac30c68aa487a0ae9a143bff1e","modified":1698729336605},{"_id":"public/archives/2023/10/index.html","hash":"5ffbe4b3e2e6beac30c68aa487a0ae9a143bff1e","modified":1698729336605},{"_id":"public/categories/EQ/index.html","hash":"ef974511fc423de1a84f2e6fd8f28a87cad23a93","modified":1698729336605},{"_id":"public/categories/Hexo/index.html","hash":"1dd42258a9fd07c56a31d34c163aac8f7053140b","modified":1698729336605},{"_id":"public/categories/Front-End/index.html","hash":"fe447e9088ff64e36e8b736e3e0c333531b530a7","modified":1698729336605},{"_id":"public/resume/index.html","hash":"a12ced16923c9f40a6ceb84bf2f587571c440e8a","modified":1698729336605},{"_id":"public/2023/10/24/A Guide to Effective Dialogue/index.html","hash":"b53c4b147310db109ee78daf70f959490a085219","modified":1698729336605},{"_id":"public/2023/10/23/Cosy 入门/index.html","hash":"2717d0bd06871babc10e6fb37350071272bc15b3","modified":1698729336605},{"_id":"public/2023/10/23/Cosy-Starter-Guide/index.html","hash":"dc926d7ce1ef61c6b7c7ee1d1de24e47940932b3","modified":1698729336605},{"_id":"public/2023/10/23/Markdown Sample/index.html","hash":"658b0666a702e2aa40cbd76b6ae73d3b5be07883","modified":1698729336605},{"_id":"public/2023/10/20/front-end/verdaccio/index.html","hash":"7b93eeb9d79d66941bd8c608ad490240d3b7e438","modified":1698729336605},{"_id":"public/index.html","hash":"9ccd924832a86498cffabf263e17ca9c514dad3b","modified":1698729336605},{"_id":"public/font/linear.woff2","hash":"57cac19ad34a50d5a4da5e471e08174c950ce5fb","modified":1698729336605},{"_id":"public/img/favicon.svg","hash":"6e88f8a231bb0a7ae4cc4598f85b6d346a286095","modified":1698729336605},{"_id":"public/img/icon-click.svg","hash":"b10df8b886a8b2d44293b26f42b440c9aedb66a7","modified":1698729336605},{"_id":"public/img/icon-book.svg","hash":"d5e4064468dde477bf9a630c3fababec41316708","modified":1698729336605},{"_id":"public/img/icon-arrow-left.svg","hash":"a36362d2555e8b836fcec1f7eeeae4588a871bdd","modified":1698729336605},{"_id":"public/font/motto.woff","hash":"755620f3bad3ebdf683c074043104d4c11f8d23e","modified":1698729336605},{"_id":"public/img/icon-layout.svg","hash":"108ef43073a5b92552dc00744a9f11db8e5ac0a2","modified":1698729336605},{"_id":"public/img/icon-date.svg","hash":"b391e34adafed83ef52d836fd6f81618494c4c6b","modified":1698729336605},{"_id":"public/img/icon-moon.svg","hash":"032be7ed3d2320f22069e2efb2fb7f60592d6212","modified":1698729336605},{"_id":"public/img/icon-sun.svg","hash":"57a0ce52ecce7188eaac5e06eab54609a8e572c8","modified":1698729336605},{"_id":"public/img/icon-link.svg","hash":"436b5ee7ef2d28766e86ac1e65a567d1e786c1b3","modified":1698729336605},{"_id":"public/img/icon1.svg","hash":"f15fbcecbaa00db99aeaca9807922514f6452d02","modified":1698729336605},{"_id":"public/img/icon2.svg","hash":"cc598540651110d977afd26dc0a1f01bbc95bf21","modified":1698729336605},{"_id":"public/img/icon3.svg","hash":"a1a9dcee7703ec48f2d92b0d533b62fef16097fc","modified":1698729336605},{"_id":"public/js/07f44e09.js.LICENSE.txt","hash":"35ad54c8f1627db94ca60022d50f416d495b72c6","modified":1698729336605},{"_id":"public/img/qweather-color-icon/100.png","hash":"ad42001979a0dbb8807c128b871dc28161b8c191","modified":1698729336605},{"_id":"public/img/qweather-color-icon/101.png","hash":"890888efd8db7a3f29427e476ce3433f4a564321","modified":1698729336605},{"_id":"public/img/qweather-color-icon/102.png","hash":"74d7cfa4f23850a456c16d0e0956264e920f7a85","modified":1698729336605},{"_id":"public/img/qweather-color-icon/103.png","hash":"656d81bd50728c7ba62572e838db7c355d522e51","modified":1698729336605},{"_id":"public/img/qweather-color-icon/104.png","hash":"36add97ed90d57e691e6e15d3456898a42dccb16","modified":1698729336605},{"_id":"public/img/qweather-color-icon/150.png","hash":"572b4a6e56271b89208daa538f02416d50249347","modified":1698729336605},{"_id":"public/img/qweather-color-icon/151.png","hash":"8041e428fc369be40f9e993f4f718ae99c7662fa","modified":1698729336605},{"_id":"public/img/qweather-color-icon/153.png","hash":"3eb50d325ec84e1248585d347471b1093a83909c","modified":1698729336605},{"_id":"public/img/qweather-color-icon/152.png","hash":"3ec0a1ac063ae068cc9d728eef88a9a6d7859153","modified":1698729336605},{"_id":"public/img/qweather-color-icon/300.png","hash":"bd67445ff764f3f1d4eeb81625372585bb537b07","modified":1698729336605},{"_id":"public/img/qweather-color-icon/302.png","hash":"371fa4d79b6a93573fde068f179829ed97c8f4f8","modified":1698729336605},{"_id":"public/img/qweather-color-icon/301.png","hash":"cc616d4c7ae6abbe0338f418fe35acce93c46164","modified":1698729336605},{"_id":"public/img/qweather-color-icon/303.png","hash":"453442f93e62ac98884aae173530f26272d97ad6","modified":1698729336605},{"_id":"public/img/qweather-color-icon/304.png","hash":"3669eb04ee87dca604f70f7404c0ecb303d17af4","modified":1698729336605},{"_id":"public/img/qweather-color-icon/306.png","hash":"69b55e71e8da4e0fe223ff76b9a68f98e4134b3d","modified":1698729336605},{"_id":"public/img/qweather-color-icon/307.png","hash":"02a08e002d21a10e0854b1036556fb81b0308be3","modified":1698729336605},{"_id":"public/img/qweather-color-icon/308.png","hash":"ace460a40174aa90dde6c2ef71663f30cec24193","modified":1698729336605},{"_id":"public/img/qweather-color-icon/309.png","hash":"c5140be49b8936e5d30380f14f7dce49a7be7cb5","modified":1698729336605},{"_id":"public/img/qweather-color-icon/305.png","hash":"618e18bf06b5d12d64269b30d6f044fc356d24b0","modified":1698729336605},{"_id":"public/img/qweather-color-icon/311.png","hash":"ab5c5059f354da2f9525b30ee81312fbfa4749bf","modified":1698729336605},{"_id":"public/img/qweather-color-icon/312.png","hash":"c672d7373fce89803b5e8d06420e158f11ea346f","modified":1698729336605},{"_id":"public/img/qweather-color-icon/315.png","hash":"2100a23ee6d584227715164263c43875e8d8946c","modified":1698729336605},{"_id":"public/img/qweather-color-icon/313.png","hash":"afa70386816623e847c09f51032212d2520d1740","modified":1698729336605},{"_id":"public/img/qweather-color-icon/316.png","hash":"4de1ac0254507c5509fc4d04e208fd81d2af7b34","modified":1698729336605},{"_id":"public/img/qweather-color-icon/318.png","hash":"7a042920165671cdbfef6c58596a80f9a1f6f016","modified":1698729336605},{"_id":"public/img/qweather-color-icon/314.png","hash":"110f9fe81f80b8f372b7472fbcfd9c0071b33151","modified":1698729336605},{"_id":"public/img/qweather-color-icon/317.png","hash":"7e60725abd3b91b9ba388ad9b9f642690c39ff9e","modified":1698729336605},{"_id":"public/img/qweather-color-icon/350.png","hash":"f29c1aa55c4afd3df17aef7885a35b0bd177d771","modified":1698729336605},{"_id":"public/img/qweather-color-icon/310.png","hash":"9315203066fa97a7d10f2a6fb0fd3ce5b7805126","modified":1698729336605},{"_id":"public/img/qweather-color-icon/399.png","hash":"993ddcd386480d211ec9b2e56656d659bb6c453b","modified":1698729336605},{"_id":"public/img/qweather-color-icon/351.png","hash":"3ab30470a65acb8fe879aa7adc9064284abd8407","modified":1698729336605},{"_id":"public/img/qweather-color-icon/401.png","hash":"279c8bc00b4e57db9b1095df64044ec80b37edb0","modified":1698729336605},{"_id":"public/img/qweather-color-icon/402.png","hash":"033fc236885a2bf7007d97eb054b0c5885035be5","modified":1698729336605},{"_id":"public/img/qweather-color-icon/400.png","hash":"79444a48a0e416e4cac1eb319496f495091f4c86","modified":1698729336605},{"_id":"public/img/qweather-color-icon/403.png","hash":"dfad1a525c4467c3e95e281befdf813e145620df","modified":1698729336605},{"_id":"public/img/qweather-color-icon/407.png","hash":"82223792a5e3e556148b4663f195ef22044c143a","modified":1698729336605},{"_id":"public/img/qweather-color-icon/404.png","hash":"112e73e641d1a30712993b5dca681a5e033831ee","modified":1698729336605},{"_id":"public/img/qweather-color-icon/406.png","hash":"b9cd0421518e0a76041285e5bf0c1666a93428a5","modified":1698729336605},{"_id":"public/img/qweather-color-icon/408.png","hash":"02b34a66020c9f3e5173702d30e5a7b69139bade","modified":1698729336605},{"_id":"public/img/qweather-color-icon/410.png","hash":"9170b32d6b7f644ce49116f3e35d35558bae6536","modified":1698729336605},{"_id":"public/img/qweather-color-icon/409.png","hash":"aed269911d0249a700b4f3890c424f00f4a27e1e","modified":1698729336605},{"_id":"public/img/qweather-color-icon/456.png","hash":"dd16b957cc544730afab8d2712821dd6c77f5167","modified":1698729336605},{"_id":"public/img/qweather-color-icon/457.png","hash":"5dffe7e9139bfb697b046c427b9ef0ed6ffa95c7","modified":1698729336605},{"_id":"public/img/qweather-color-icon/499.png","hash":"2b51631144a7c0f813b6425d4daa30c4d4e8bd38","modified":1698729336605},{"_id":"public/img/qweather-color-icon/501.png","hash":"ddb4712d8f19bb8c197e600000dd2d51049f970d","modified":1698729336605},{"_id":"public/img/qweather-color-icon/500.png","hash":"ddb4712d8f19bb8c197e600000dd2d51049f970d","modified":1698729336605},{"_id":"public/img/qweather-color-icon/502.png","hash":"4146081a2635ff88fa14e38ed8d360d3b4fa74dd","modified":1698729336605},{"_id":"public/img/qweather-color-icon/503.png","hash":"9415147c4bcebadd7f3089339064b8120c8d4089","modified":1698729336605},{"_id":"public/img/qweather-color-icon/504.png","hash":"defba93520719f72b217583062ccc79abd5b445e","modified":1698729336605},{"_id":"public/img/qweather-color-icon/508.png","hash":"ae98a3217df26021ec2f667f099d27575c912bf4","modified":1698729336605},{"_id":"public/img/qweather-color-icon/507.png","hash":"426d5a73a482ac5721e7da2141e4fe704f50b608","modified":1698729336605},{"_id":"public/img/qweather-color-icon/509.png","hash":"3bc779bfbcab94a79c91b26288e2e7b67412d15e","modified":1698729336605},{"_id":"public/img/qweather-color-icon/510.png","hash":"524131e401d0b150dab2733af336f4649b8ade74","modified":1698729336605},{"_id":"public/img/qweather-color-icon/511.png","hash":"e2efe07a29446ebecd313ccd8a2c7d57a670f203","modified":1698729336605},{"_id":"public/img/qweather-color-icon/512.png","hash":"64e11f225c35caa6ef2612d613026c52cfd3557e","modified":1698729336605},{"_id":"public/img/qweather-color-icon/513.png","hash":"ceff3dfd109a990c9595276ad6b56061bb662e5e","modified":1698729336605},{"_id":"public/img/qweather-color-icon/515.png","hash":"fdf992021ff20e1ffe1b19f0b918aa35204f22e7","modified":1698729336605},{"_id":"public/img/qweather-color-icon/514.png","hash":"fdf992021ff20e1ffe1b19f0b918aa35204f22e7","modified":1698729336605},{"_id":"public/img/qweather-color-icon/900.png","hash":"6eacf8df641c6096feb746c7544a825d3c65bf47","modified":1698729336605},{"_id":"public/img/qweather-color-icon/901.png","hash":"f6b3f1cd64e9c325e9dc3ab42469baa5c5119c2d","modified":1698729336605},{"_id":"public/img/qweather-color-icon/999.png","hash":"74e4fa5bdd815d988b55525d4e7f6d40bf1080d4","modified":1698729336605},{"_id":"public/img/avatar.png","hash":"c45edffe12ddb1801b90b85bf8b5cbe2d19deb8b","modified":1698729336605},{"_id":"public/css/0c63d269.css","hash":"6b9b9796cf8ff9349b724f4b789f1347eaa0d476","modified":1698729336605},{"_id":"public/css/21.88950121.css","hash":"44c9b83ffe9151e2e233c2f55b6e89b30ea7c7bb","modified":1698729336605},{"_id":"public/css/271.54fa1675.css","hash":"845cb754fd4ea780279a16e01a345d55889866e2","modified":1698729336605},{"_id":"public/css/2cd7dba2.css","hash":"dbc4f3071866019f0faae76620928ddf2f6700e6","modified":1698729336605},{"_id":"public/css/26c34ce6.css","hash":"261102615aa79d4c06044928ce90a832f943f2ca","modified":1698729336605},{"_id":"public/css/291.a8323266.css","hash":"e18068692b42ef4b76adc55d5ddc9f2bb10203f4","modified":1698729336605},{"_id":"public/css/32ae9342.css","hash":"13860dfa3657005967610ec05d4dc75406a91a0c","modified":1698729336605},{"_id":"public/css/3fa188f4.css","hash":"913b63bd8186f0c7731f61dae6dc71b058e3038c","modified":1698729336605},{"_id":"public/css/3a4a90d1.css","hash":"4ffc2c5e9f1afd4fa74d7d9b785e0697cd7fb770","modified":1698729336605},{"_id":"public/css/3efc6cb5.css","hash":"1f1958bfd921ac3eea83a1e14ed97e8e83b31fb6","modified":1698729336605},{"_id":"public/css/4c3d0e88.css","hash":"c4a5bf3a1f7adf21c04d9950b02a67f516bbac9f","modified":1698729336605},{"_id":"public/css/429.fb1dabcb.css","hash":"1f2b77bab319123d193042b9990056abe9f2fd73","modified":1698729336605},{"_id":"public/css/5c823a15.css","hash":"ecd601ec63354836b57e3bfaa68bb5c3c57f3724","modified":1698729336605},{"_id":"public/css/766.64ad3c35.css","hash":"8434994030b9b9d0fa3a82df079c860f49543b82","modified":1698729336605},{"_id":"public/css/945.fdf98cb0.css","hash":"f227a8697bf14eb75ba63d14a0608db53c9a50a1","modified":1698729336605},{"_id":"public/css/922.9efa0b6b.css","hash":"721bc1b89ae059267d9b4aa3cc37f5c1ff8f32c3","modified":1698729336605},{"_id":"public/css/ccbcde32.css","hash":"3475deea0241c67fadc3de5149886e90af24f2e6","modified":1698729336605},{"_id":"public/css/de5de8fb.css","hash":"a05682caa4e0b8a106578468f795dad472ee75da","modified":1698729336605},{"_id":"public/css/e01add4b.css","hash":"5fc672a8fb8b65d60c087cc908d5170eaac56e0c","modified":1698729336605},{"_id":"public/css/efca006a.css","hash":"97972d1b7ca177983b39a67e772736f661637468","modified":1698729336605},{"_id":"public/css/f3729dde.css","hash":"2a7faa0c3816e3b653fb4540fa63504a26b2051f","modified":1698729336605},{"_id":"public/css/5c728363.css","hash":"715635cbd3ce46fd0b82117bc757fab6d2277070","modified":1698729336605},{"_id":"public/css/618.6513d67e.css","hash":"660188677fab2c0946ac4b8ed81611ad5472feb8","modified":1698729336605},{"_id":"public/js/271.ee88a6de.js","hash":"2d93e1c6f51c16e6cc0c41740dc1de5a0c362926","modified":1698729336605},{"_id":"public/css/206.a3a4e130.css","hash":"f8c04ec30e94eb972ff315b8c1eef655b9e8a03e","modified":1698729336605},{"_id":"public/js/206.759361ed.js","hash":"129b5fd004afbbe4ab06cf6e944097b42c98655b","modified":1698729336605},{"_id":"public/js/21.282c05e7.js","hash":"78359415e9f39c9c2119551ac2a97ba9f15af294","modified":1698729336605},{"_id":"public/js/291.4ac6984b.js","hash":"b5bb3c24cbcb7d09604c8c66c9d4470e6a2fd449","modified":1698729336605},{"_id":"public/js/31d6cfe0.js","hash":"da39a3ee5e6b4b0d3255bfef95601890afd80709","modified":1698729336605},{"_id":"public/js/3cf4fd98.js","hash":"0d51155f6dc08d1d8c693d210c1407b2e26b5685","modified":1698729336605},{"_id":"public/js/58c91c4e.js","hash":"1935dee981143040a708a1144fd2a57894ce3137","modified":1698729336605},{"_id":"public/js/429.bc4769cb.js","hash":"926f0c003b8cfc0f4eb78ab6367aab9228d31abf","modified":1698729336605},{"_id":"public/js/618.1a58fba9.js","hash":"afbe73ca7b78196e48dd9147a12db960d17589ff","modified":1698729336605},{"_id":"public/js/922.689e0633.js","hash":"1757f732da655e7dc36fe4a23d29b72a549e9423","modified":1698729336605},{"_id":"public/js/945.0313a94c.js","hash":"ccc3bda115641d497837d4cf8e93f776f0e64c6d","modified":1698729336605},{"_id":"public/js/766.9503a62c.js","hash":"9f2114b6ac69ab0a67b1c88c5f6c48ff244185f7","modified":1698729336605},{"_id":"public/js/9f1cd854.js","hash":"070029c5073bc3e67d98f1ac377d12f585bb4a2f","modified":1698729336605},{"_id":"public/js/a02fa72b.js","hash":"527060080189f03b7332259a579af89c8d1367a3","modified":1698729336605},{"_id":"public/js/c413ebaa.js","hash":"dd282af849c44345ad3e577efc8fa291468de653","modified":1698729336605},{"_id":"public/js/ae2a0e7b.js","hash":"d71a6f691ba45862066ad15bb7f8b3bd2ad9f5f5","modified":1698729336605},{"_id":"public/js/ca6b30b5.js","hash":"481a8f20c3d4e565c1ea5dafe4218597d051a9fc","modified":1698729336605},{"_id":"public/js/f8b20eb9.js","hash":"86cff2cb169c614dedd464b373d94322328cb185","modified":1698729336605},{"_id":"public/js/07f44e09.js","hash":"e8a21a4252ad34adc1a54066eab32a26a7313940","modified":1698729336605},{"_id":"public/js/cdca7001.js","hash":"cd27e408febd15a99bafdf9da8a834bb1b6902c3","modified":1698729336605},{"_id":"public/img/logo.png","hash":"05730ab0dadd5036509f942834278eef683994dd","modified":1698729336605},{"_id":"public/img/algolia-api-keys.png","hash":"8b2f85a93b52f0590e9b8fe2d2405427c99e2280","modified":1698729336605}],"Category":[{"name":"EQ","_id":"clodvl5100004egz32t7g6yae"},{"name":"Hexo","_id":"clodvl5120007egz39nmxdy42"},{"name":"Front-End","_id":"clodvl514000fegz33md02z8j"}],"Data":[],"Page":[{"title":"resume","layout":"resume","avatar":"/img/avatar.png","name":"Hi! Mozzie","role":"Full Stack","email":"himozzie@gmail.com","phone":"+86 180-xxxx-xxx","birth":"Jan 21, 1994","location":"Nanjing, China","social":[{"name":"github","link":"https://github.com/17px","icon":"<svg xmlns=\"http://www.w3.org/2000/svg\" xmlns:xlink=\"http://www.w3.org/1999/xlink\" viewBox=\"0 0 24 24\"><path d=\"M9 19c-4.3 1.4-4.3-2.5-6-3m12 5v-3.5c0-1 .1-1.4-.5-2c2.8-.3 5.5-1.4 5.5-6a4.6 4.6 0 0 0-1.3-3.2a4.2 4.2 0 0 0-.1-3.2s-1.1-.3-3.5 1.3a12.3 12.3 0 0 0-6.2 0C6.5 2.8 5.4 3.1 5.4 3.1a4.2 4.2 0 0 0-.1 3.2A4.6 4.6 0 0 0 4 9.5c0 4.6 2.7 5.7 5.5 6c-.6.6-.6 1.2-.5 2V21\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\"></path></svg>"}],"about":["熟练掌握Vue和React全家桶,包括状态管理和组件库,如ElementPlus 和 AntDesign。在前端工程化方面,有 Webpack 和 Vite 的配置经验","具备 SpringBoot、Egg、Koa2 和 Midway 的项目经验,并在微服务架构下使用 Nestjs。熟悉Linux基础命令和Nginx、Docker的使用。","在3D图形和医疗前端方面,具有 three.js 和 Vtk.js 的实践经验"],"skill":["熟悉常见的数据结构和算法,熟悉设计模式","熟悉前端基础 HTML5、CSS3、JS、ES6+、TypeScript 语法","熟悉 Vue2、Vue3 全家桶,熟悉 ElementPlus、NaiveUI,熟悉 Vue 原理","熟悉 React 技术栈,熟悉 Hooks 语法,熟悉 AntDesign,熟悉 React 原理","熟悉微信小程序开发,熟悉 Taro 框架的使用","熟悉 Webpack、Vite 常见配置,以及性能优化配置","熟悉 Node,具备后端开发能力,SpringBoot、Egg、Koa2、Midway 单体应用项目经验,Nestjs 微服务应用项目经验","有 Monorepo 工程化经验,具备单体前后端分离应用 DevOps 能力","熟悉 three.js、了解 Vtk.js,具备医疗 3D 前端、图形学相关的开发经验","掌握 Linux 基本命令,了解 Nginx、Docker 基本使用"],"education":[{"school":"University School of the Arts","time":"2012-2016"}],"workExp":[{"inc":"Creative Director","time":"2021.09 ~ 至今"},{"inc":"Web Designer","time":"2021.01 ~ 2021.09"}],"projectExp":[{"name":"CVPilot算法、标注数据中台","desc":"具备高精度数据标注、强大的数据管理、算法集成、多级用户权限、标注流程协作、算法模型版本、训练测试、API接口和数据可视化等功能,全面支持公司内部医疗影像分析和诊断","list":["使用 Pnpm workspace 实现 Monorepo 多个代码仓库管理,支持多个框架并存,可共享公共组件库和能力","自行使用 rollup 沉淀了部分可复用基础模块,如:UI 组件库、对象存储、邮件、短信、企业微信机器人通知","使用 Nest.js 开发,基于事件驱动架构,重构公司后端服务体系","基于 rbac 设计了认证中心,解决业务应用中用户统一授权、鉴权的问题","使用 orthanc 搭建 Pacs 影像、并且基于标注、业务流程设计了影像上层的标签系统","使用 pdf.js 实现 3Mensio、FluoroCT 医疗报告关键字段的自动解析,Cover了 80%+ 的字段","设计了前后端一体开发的领域驱动设计(DDD)项目架构,并成功实践"]},{"name":"TAVR手术辅助决策系统 Tavigator™","desc":"系统实现了对CT影像主动脉根部解剖结构的全自动化、全流程手术规划测量,为瓣膜选型、术中并发症风险预测","list":["在 OHIF 基础上,重新规划项目结构,工程化相关优化,构建速度提升8倍","对 orthanc 配置进行了优化,使用 postgreSQL 存储影像数据","实践了 threejs 替换了 vtk.js 的默认三维渲染引擎,节省了某些场景下 Vtk.js占用内存过大的问题","使用了 chrome的 snapshot、调用栈,优化页面内存 3GB+,使用 Indexdb 与 Webworker 对 Dicom 读片速度优化了3倍以上","使用 webworker、请求队列,实现了在 http1.1 环境下,提升用户上传 Dicom影像 74% 上传效率。同时针对不同大小、类型的文件,设计了不同的 Hash 切片方案,提升了文件完整性验证速度提升","使用了 Http3 和 nginx-quic,使用 Brotli 替换 gzip,实现了静载资源传输速度提升 17% - 25%"]}],"_content":"","source":"resume/index.md","raw":"---\ntitle: resume\nlayout: resume\navatar: /img/avatar.png\nname: Hi! Mozzie\nrole: Full Stack\nemail: himozzie@gmail.com\nphone: +86 180-xxxx-xxx\nbirth: Jan 21, 1994\nlocation: Nanjing, China\nsocial:\n - name: github\n link: https://github.com/17px\n icon: <svg xmlns=\"http://www.w3.org/2000/svg\" xmlns:xlink=\"http://www.w3.org/1999/xlink\" viewBox=\"0 0 24 24\"><path d=\"M9 19c-4.3 1.4-4.3-2.5-6-3m12 5v-3.5c0-1 .1-1.4-.5-2c2.8-.3 5.5-1.4 5.5-6a4.6 4.6 0 0 0-1.3-3.2a4.2 4.2 0 0 0-.1-3.2s-1.1-.3-3.5 1.3a12.3 12.3 0 0 0-6.2 0C6.5 2.8 5.4 3.1 5.4 3.1a4.2 4.2 0 0 0-.1 3.2A4.6 4.6 0 0 0 4 9.5c0 4.6 2.7 5.7 5.5 6c-.6.6-.6 1.2-.5 2V21\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\"></path></svg>\nabout:\n - 熟练掌握Vue和React全家桶,包括状态管理和组件库,如ElementPlus 和 AntDesign。在前端工程化方面,有 Webpack 和 Vite 的配置经验\n - 具备 SpringBoot、Egg、Koa2 和 Midway 的项目经验,并在微服务架构下使用 Nestjs。熟悉Linux基础命令和Nginx、Docker的使用。\n - 在3D图形和医疗前端方面,具有 three.js 和 Vtk.js 的实践经验\n\nskill:\n - 熟悉常见的数据结构和算法,熟悉设计模式\n - 熟悉前端基础 HTML5、CSS3、JS、ES6+、TypeScript 语法\n - 熟悉 Vue2、Vue3 全家桶,熟悉 ElementPlus、NaiveUI,熟悉 Vue 原理\n - 熟悉 React 技术栈,熟悉 Hooks 语法,熟悉 AntDesign,熟悉 React 原理\n - 熟悉微信小程序开发,熟悉 Taro 框架的使用\n - 熟悉 Webpack、Vite 常见配置,以及性能优化配置\n - 熟悉 Node,具备后端开发能力,SpringBoot、Egg、Koa2、Midway 单体应用项目经验,Nestjs 微服务应用项目经验\n - 有 Monorepo 工程化经验,具备单体前后端分离应用 DevOps 能力\n - 熟悉 three.js、了解 Vtk.js,具备医疗 3D 前端、图形学相关的开发经验\n - 掌握 Linux 基本命令,了解 Nginx、Docker 基本使用\n\neducation:\n - school: University School of the Arts\n time: 2012-2016\n\nworkExp:\n - inc: Creative Director\n time: 2021.09 ~ 至今\n - inc: Web Designer\n time: 2021.01 ~ 2021.09\n\nprojectExp:\n - name: CVPilot算法、标注数据中台\n desc: 具备高精度数据标注、强大的数据管理、算法集成、多级用户权限、标注流程协作、算法模型版本、训练测试、API接口和数据可视化等功能,全面支持公司内部医疗影像分析和诊断\n list:\n - 使用 Pnpm workspace 实现 Monorepo 多个代码仓库管理,支持多个框架并存,可共享公共组件库和能力\n - 自行使用 rollup 沉淀了部分可复用基础模块,如:UI 组件库、对象存储、邮件、短信、企业微信机器人通知\n - 使用 Nest.js 开发,基于事件驱动架构,重构公司后端服务体系\n - 基于 rbac 设计了认证中心,解决业务应用中用户统一授权、鉴权的问题\n - 使用 orthanc 搭建 Pacs 影像、并且基于标注、业务流程设计了影像上层的标签系统\n - 使用 pdf.js 实现 3Mensio、FluoroCT 医疗报告关键字段的自动解析,Cover了 80%+ 的字段\n - 设计了前后端一体开发的领域驱动设计(DDD)项目架构,并成功实践\n\n - name: TAVR手术辅助决策系统 Tavigator™\n desc: 系统实现了对CT影像主动脉根部解剖结构的全自动化、全流程手术规划测量,为瓣膜选型、术中并发症风险预测\n list:\n - 在 OHIF 基础上,重新规划项目结构,工程化相关优化,构建速度提升8倍\n - 对 orthanc 配置进行了优化,使用 postgreSQL 存储影像数据\n - 实践了 threejs 替换了 vtk.js 的默认三维渲染引擎,节省了某些场景下 Vtk.js占用内存过大的问题\n - 使用了 chrome的 snapshot、调用栈,优化页面内存 3GB+,使用 Indexdb 与 Webworker 对 Dicom 读片速度优化了3倍以上\n - 使用 webworker、请求队列,实现了在 http1.1 环境下,提升用户上传 Dicom影像 74% 上传效率。同时针对不同大小、类型的文件,设计了不同的 Hash 切片方案,提升了文件完整性验证速度提升\n - 使用了 Http3 和 nginx-quic,使用 Brotli 替换 gzip,实现了静载资源传输速度提升 17% - 25%\n---\n","date":"2023-10-31T05:15:14.977Z","updated":"2023-10-31T05:15:14.977Z","path":"resume/index.html","comments":1,"_id":"clodvl50w0000egz31ml66gkd","content":"","site":{"data":{}},"excerpt":"","more":""},{"title":"陈不渡 - roadmap","layout":"roadmap","initYear":2023,"years":{"2022":[{"title":"读书","start":"01-01","end":"1-5"},{"title":"还是读书","start":"02-01","end":"05-30"}],"2023":[{"title":"越陌度阡","start":"01-01","end":"1-2"},{"title":"枉用相存","start":"02-01","end":"06-30"},{"title":"短歌行","start":"10-26","end":"10-31","content":"对酒当歌,人生几何!譬如朝露,去日苦多。慨当以慷,忧思难忘。何以解忧?唯有杜康。青青子衿,悠悠我心。但为君故,沉吟至今。呦呦鹿鸣,食野之苹。"},{"title":"声律启蒙","start":"11-01","end":"11-31","content":"花开红锦绣,水漾碧琉璃。去妇因探邻舍枣,出妻为种后园葵"}]},"_content":"","source":"roadmap/index.md","raw":"---\ntitle: 陈不渡 - roadmap\nlayout: roadmap\ninitYear: 2023\nyears:\n 2022:\n - title: 读书\n start: 01-01\n end: 1-5\n - title: 还是读书\n start: 02-01\n end: 05-30\n 2023:\n - title: 越陌度阡\n start: 01-01\n end: 1-2\n - title: 枉用相存\n start: 02-01\n end: 06-30\n - title: 短歌行\n start: 10-26\n end: 10-31\n content: 对酒当歌,人生几何!譬如朝露,去日苦多。慨当以慷,忧思难忘。何以解忧?唯有杜康。青青子衿,悠悠我心。但为君故,沉吟至今。呦呦鹿鸣,食野之苹。\n - title: 声律启蒙\n start: 11-01\n end: 11-31\n content: 花开红锦绣,水漾碧琉璃。去妇因探邻舍枣,出妻为种后园葵\n---","date":"2023-10-30T02:57:23.955Z","updated":"2023-10-30T02:57:23.955Z","path":"roadmap/index.html","comments":1,"_id":"clodvl50z0002egz3425r1o49","content":"","site":{"data":{}},"excerpt":"","more":""}],"Post":[{"title":"有效对话指南","top":0,"status":"done","_content":"\n卡耐基说过:要说服别人同意你的观点,你就要让他觉得这是他自己的观点。也就是说,本质上没有人真正被别人说服,听或者不听都是他们自己的主动选择\n\n# 目的\n\n沟通目的无非两个:\n\n- 让对方认同我们的观点\n- 或者按我们说的做\n\n# 搞定情绪\n\n大多数人的立场和行为,是由情绪决定的,对方不喜欢你,你再怎么努力也很难说服他,只有他认可你这个人你的话他才会听。所以动之以理之前要先小之以轻,你把他情绪搞定了,沟通也就成功了一半\n\n## 夸 - 细节\n\n不吝赞美,就一个字“夸”,具体怎么夸呢?\n\n细节就是不要太笼统:\n\n- 😭 你穿的真好看 \n- 😊 今天的上衣显得你很白,太美了\n\n## 夸 - 对比\n\n- 😭 你今天穿的真好看\n- 😊 你今天穿的真好看,一般人可传不出这种气质\n\n## 我能理解你,换我也生气\n\n接纳对方的负面情绪,把双方情绪拉回到安全范围内。\n\n## 肢体同步\n\n如果你的肢体动作跟对方同步,它会产生一种被共情的感觉\n\n- 对方说的火热,身体前倾,伺机凑近\n- 思考一到两秒钟再反馈,这个简单的停顿\n\n# 只陈述不评论\n\n事实不会引起争议\n\n比如:孩子考试没及格是事实,说他笨死了就是评论了。\n\n再比如:你这周上班迟到两次,这是事实,说你经常迟到就是评论了。\n\n## 评论副词\n\n尽量规避一些跟评论相关的糊的频率副词,比如\n- 笨\n- 懒\n- 坏\n- 总是\n- 永远\n- 每次\n\n# 保持开放性\n\n还拿上面的例子,这些话对方只能回答好或者不好,然后结束沟通\n\n- 孩子没及格,老爸说下次必须及格。\n- 你上班迟到,老板说再迟到扣薪水。\n\n如果换成开放式沟通:\n\n- 老爸说咱们聊聊哪些题没有搞清楚\n- 老板说生活上是不是遇到了什么问题,没着我可以帮你\n\n# 反馈事实\n\n这些话对方不仅听着舒服,而且能给你反馈事实。具体怎么开放呢?咱们只需要记住两个关键词\n\n- 问题开放:不要让对方只能回答是或否,例如:像愿闻其详、展开说说、欢迎补充之类\n- 让出话语权:真正的沟通高手,是让对方觉得自己很牛,主导聊天的往往是能提出问题的人,或者让别人多说的人\n\n","source":"_posts/A Guide to Effective Dialogue.md","raw":"---\ntitle: 有效对话指南\ntop: 0\ncategories:\n - EQ\nstatus: done\n---\n\n卡耐基说过:要说服别人同意你的观点,你就要让他觉得这是他自己的观点。也就是说,本质上没有人真正被别人说服,听或者不听都是他们自己的主动选择\n\n# 目的\n\n沟通目的无非两个:\n\n- 让对方认同我们的观点\n- 或者按我们说的做\n\n# 搞定情绪\n\n大多数人的立场和行为,是由情绪决定的,对方不喜欢你,你再怎么努力也很难说服他,只有他认可你这个人你的话他才会听。所以动之以理之前要先小之以轻,你把他情绪搞定了,沟通也就成功了一半\n\n## 夸 - 细节\n\n不吝赞美,就一个字“夸”,具体怎么夸呢?\n\n细节就是不要太笼统:\n\n- 😭 你穿的真好看 \n- 😊 今天的上衣显得你很白,太美了\n\n## 夸 - 对比\n\n- 😭 你今天穿的真好看\n- 😊 你今天穿的真好看,一般人可传不出这种气质\n\n## 我能理解你,换我也生气\n\n接纳对方的负面情绪,把双方情绪拉回到安全范围内。\n\n## 肢体同步\n\n如果你的肢体动作跟对方同步,它会产生一种被共情的感觉\n\n- 对方说的火热,身体前倾,伺机凑近\n- 思考一到两秒钟再反馈,这个简单的停顿\n\n# 只陈述不评论\n\n事实不会引起争议\n\n比如:孩子考试没及格是事实,说他笨死了就是评论了。\n\n再比如:你这周上班迟到两次,这是事实,说你经常迟到就是评论了。\n\n## 评论副词\n\n尽量规避一些跟评论相关的糊的频率副词,比如\n- 笨\n- 懒\n- 坏\n- 总是\n- 永远\n- 每次\n\n# 保持开放性\n\n还拿上面的例子,这些话对方只能回答好或者不好,然后结束沟通\n\n- 孩子没及格,老爸说下次必须及格。\n- 你上班迟到,老板说再迟到扣薪水。\n\n如果换成开放式沟通:\n\n- 老爸说咱们聊聊哪些题没有搞清楚\n- 老板说生活上是不是遇到了什么问题,没着我可以帮你\n\n# 反馈事实\n\n这些话对方不仅听着舒服,而且能给你反馈事实。具体怎么开放呢?咱们只需要记住两个关键词\n\n- 问题开放:不要让对方只能回答是或否,例如:像愿闻其详、展开说说、欢迎补充之类\n- 让出话语权:真正的沟通高手,是让对方觉得自己很牛,主导聊天的往往是能提出问题的人,或者让别人多说的人\n\n","slug":"A Guide to Effective Dialogue","published":1,"date":"2023-10-24T01:47:38.891Z","updated":"2023-10-24T01:47:38.891Z","comments":1,"layout":"post","photos":[],"link":"","_id":"clodvl50y0001egz3gb2hg08x","content":"<p>卡耐基说过:要说服别人同意你的观点,你就要让他觉得这是他自己的观点。也就是说,本质上没有人真正被别人说服,听或者不听都是他们自己的主动选择</p>\n<h1 id=\"目的\"><a href=\"#目的\" class=\"headerlink\" title=\"目的\"></a>目的</h1><p>沟通目的无非两个:</p>\n<ul>\n<li>让对方认同我们的观点</li>\n<li>或者按我们说的做</li>\n</ul>\n<h1 id=\"搞定情绪\"><a href=\"#搞定情绪\" class=\"headerlink\" title=\"搞定情绪\"></a>搞定情绪</h1><p>大多数人的立场和行为,是由情绪决定的,对方不喜欢你,你再怎么努力也很难说服他,只有他认可你这个人你的话他才会听。所以动之以理之前要先小之以轻,你把他情绪搞定了,沟通也就成功了一半</p>\n<h2 id=\"夸-细节\"><a href=\"#夸-细节\" class=\"headerlink\" title=\"夸 - 细节\"></a>夸 - 细节</h2><p>不吝赞美,就一个字“夸”,具体怎么夸呢?</p>\n<p>细节就是不要太笼统:</p>\n<ul>\n<li>😭 你穿的真好看 </li>\n<li>😊 今天的上衣显得你很白,太美了</li>\n</ul>\n<h2 id=\"夸-对比\"><a href=\"#夸-对比\" class=\"headerlink\" title=\"夸 - 对比\"></a>夸 - 对比</h2><ul>\n<li>😭 你今天穿的真好看</li>\n<li>😊 你今天穿的真好看,一般人可传不出这种气质</li>\n</ul>\n<h2 id=\"我能理解你,换我也生气\"><a href=\"#我能理解你,换我也生气\" class=\"headerlink\" title=\"我能理解你,换我也生气\"></a>我能理解你,换我也生气</h2><p>接纳对方的负面情绪,把双方情绪拉回到安全范围内。</p>\n<h2 id=\"肢体同步\"><a href=\"#肢体同步\" class=\"headerlink\" title=\"肢体同步\"></a>肢体同步</h2><p>如果你的肢体动作跟对方同步,它会产生一种被共情的感觉</p>\n<ul>\n<li>对方说的火热,身体前倾,伺机凑近</li>\n<li>思考一到两秒钟再反馈,这个简单的停顿</li>\n</ul>\n<h1 id=\"只陈述不评论\"><a href=\"#只陈述不评论\" class=\"headerlink\" title=\"只陈述不评论\"></a>只陈述不评论</h1><p>事实不会引起争议</p>\n<p>比如:孩子考试没及格是事实,说他笨死了就是评论了。</p>\n<p>再比如:你这周上班迟到两次,这是事实,说你经常迟到就是评论了。</p>\n<h2 id=\"评论副词\"><a href=\"#评论副词\" class=\"headerlink\" title=\"评论副词\"></a>评论副词</h2><p>尽量规避一些跟评论相关的糊的频率副词,比如</p>\n<ul>\n<li>笨</li>\n<li>懒</li>\n<li>坏</li>\n<li>总是</li>\n<li>永远</li>\n<li>每次</li>\n</ul>\n<h1 id=\"保持开放性\"><a href=\"#保持开放性\" class=\"headerlink\" title=\"保持开放性\"></a>保持开放性</h1><p>还拿上面的例子,这些话对方只能回答好或者不好,然后结束沟通</p>\n<ul>\n<li>孩子没及格,老爸说下次必须及格。</li>\n<li>你上班迟到,老板说再迟到扣薪水。</li>\n</ul>\n<p>如果换成开放式沟通:</p>\n<ul>\n<li>老爸说咱们聊聊哪些题没有搞清楚</li>\n<li>老板说生活上是不是遇到了什么问题,没着我可以帮你</li>\n</ul>\n<h1 id=\"反馈事实\"><a href=\"#反馈事实\" class=\"headerlink\" title=\"反馈事实\"></a>反馈事实</h1><p>这些话对方不仅听着舒服,而且能给你反馈事实。具体怎么开放呢?咱们只需要记住两个关键词</p>\n<ul>\n<li>问题开放:不要让对方只能回答是或否,例如:像愿闻其详、展开说说、欢迎补充之类</li>\n<li>让出话语权:真正的沟通高手,是让对方觉得自己很牛,主导聊天的往往是能提出问题的人,或者让别人多说的人</li>\n</ul>\n","site":{"data":{}},"excerpt":"","more":"<p>卡耐基说过:要说服别人同意你的观点,你就要让他觉得这是他自己的观点。也就是说,本质上没有人真正被别人说服,听或者不听都是他们自己的主动选择</p>\n<h1 id=\"目的\"><a href=\"#目的\" class=\"headerlink\" title=\"目的\"></a>目的</h1><p>沟通目的无非两个:</p>\n<ul>\n<li>让对方认同我们的观点</li>\n<li>或者按我们说的做</li>\n</ul>\n<h1 id=\"搞定情绪\"><a href=\"#搞定情绪\" class=\"headerlink\" title=\"搞定情绪\"></a>搞定情绪</h1><p>大多数人的立场和行为,是由情绪决定的,对方不喜欢你,你再怎么努力也很难说服他,只有他认可你这个人你的话他才会听。所以动之以理之前要先小之以轻,你把他情绪搞定了,沟通也就成功了一半</p>\n<h2 id=\"夸-细节\"><a href=\"#夸-细节\" class=\"headerlink\" title=\"夸 - 细节\"></a>夸 - 细节</h2><p>不吝赞美,就一个字“夸”,具体怎么夸呢?</p>\n<p>细节就是不要太笼统:</p>\n<ul>\n<li>😭 你穿的真好看 </li>\n<li>😊 今天的上衣显得你很白,太美了</li>\n</ul>\n<h2 id=\"夸-对比\"><a href=\"#夸-对比\" class=\"headerlink\" title=\"夸 - 对比\"></a>夸 - 对比</h2><ul>\n<li>😭 你今天穿的真好看</li>\n<li>😊 你今天穿的真好看,一般人可传不出这种气质</li>\n</ul>\n<h2 id=\"我能理解你,换我也生气\"><a href=\"#我能理解你,换我也生气\" class=\"headerlink\" title=\"我能理解你,换我也生气\"></a>我能理解你,换我也生气</h2><p>接纳对方的负面情绪,把双方情绪拉回到安全范围内。</p>\n<h2 id=\"肢体同步\"><a href=\"#肢体同步\" class=\"headerlink\" title=\"肢体同步\"></a>肢体同步</h2><p>如果你的肢体动作跟对方同步,它会产生一种被共情的感觉</p>\n<ul>\n<li>对方说的火热,身体前倾,伺机凑近</li>\n<li>思考一到两秒钟再反馈,这个简单的停顿</li>\n</ul>\n<h1 id=\"只陈述不评论\"><a href=\"#只陈述不评论\" class=\"headerlink\" title=\"只陈述不评论\"></a>只陈述不评论</h1><p>事实不会引起争议</p>\n<p>比如:孩子考试没及格是事实,说他笨死了就是评论了。</p>\n<p>再比如:你这周上班迟到两次,这是事实,说你经常迟到就是评论了。</p>\n<h2 id=\"评论副词\"><a href=\"#评论副词\" class=\"headerlink\" title=\"评论副词\"></a>评论副词</h2><p>尽量规避一些跟评论相关的糊的频率副词,比如</p>\n<ul>\n<li>笨</li>\n<li>懒</li>\n<li>坏</li>\n<li>总是</li>\n<li>永远</li>\n<li>每次</li>\n</ul>\n<h1 id=\"保持开放性\"><a href=\"#保持开放性\" class=\"headerlink\" title=\"保持开放性\"></a>保持开放性</h1><p>还拿上面的例子,这些话对方只能回答好或者不好,然后结束沟通</p>\n<ul>\n<li>孩子没及格,老爸说下次必须及格。</li>\n<li>你上班迟到,老板说再迟到扣薪水。</li>\n</ul>\n<p>如果换成开放式沟通:</p>\n<ul>\n<li>老爸说咱们聊聊哪些题没有搞清楚</li>\n<li>老板说生活上是不是遇到了什么问题,没着我可以帮你</li>\n</ul>\n<h1 id=\"反馈事实\"><a href=\"#反馈事实\" class=\"headerlink\" title=\"反馈事实\"></a>反馈事实</h1><p>这些话对方不仅听着舒服,而且能给你反馈事实。具体怎么开放呢?咱们只需要记住两个关键词</p>\n<ul>\n<li>问题开放:不要让对方只能回答是或否,例如:像愿闻其详、展开说说、欢迎补充之类</li>\n<li>让出话语权:真正的沟通高手,是让对方觉得自己很牛,主导聊天的往往是能提出问题的人,或者让别人多说的人</li>\n</ul>\n"},{"title":"Cosy 入门","top":2,"status":"doing","_content":"\n# Hexo 安装主题\n\n`Hexo` 主题的安装方式非常简单,只需将主题 `Hexo-theme-cosy` 复制目录的 `themes` 目录下,然后在 `Hexo` 的 `_config.yml` 中修改下主题配置即可\n\n```yml\n# 找到 theme 配置项\ntheme: Hexo-theme-cosy\n```\n\n## 获取 Cosy\n\n- 进入 [Cosy 代码仓库](https://github.com/17px/hexo-theme-cosy/tree/main),了解最新的主题开发进度\n- 在 [发布页面](https://github.com/17px/hexo-theme-cosy/releases) 下载 `hexo-theme-cosy.zip`\n- 解压至站点的 `themes` 目录下\n- 在 Hexo 的 `_config.yml` 中启用\n\n# hexo配置\n\n在 `Hexo` 的 `_config.yml` 中调整\n\n## 基础配置\n\n```yml\n# 网页标题\ntitle: 17px blog\n# 侧边栏顶部显示\nsubtitle: \"Mozzie\"\n# 用于SEO的html元描述\ndescription: \"\"\n# 用于SEO的html关键字\nkeywords:\n# 文章版权声明显示作者名称\nauthor: Mozzie\n\n# 在此处设置您的网站url\nurl: https://mozzie.cn\n```\n\n## 语言\n\n你可以在 `hexo-theme-cosy/languages` 中找到不同的语言文件,如果想切换语言,在配置文件中,填入 `yml` 的文件名\n\n```yml\nlanguage: en\n```\n\n## 文章语法高亮\n\n关闭hexo默认的highlight.js语法高亮\n\n```yml\nhighlight:\n enable: false\n line_number: true\n auto_detect: false\n tab_replace: \"\"\n wrap: true\n hljs: false\n\nprismjs:\n enable: true\n preprocess: true\n line_number: true\n line_threshold: 0\n tab_replace: \"\"\n```\n\n# Cosy 主题配置\n\n下面的配置基于 `Hexo-theme-cosy` 下的 `_config.yml` \n\n## 文章分类图标\n\n按照顺序,依次设置 `svg` 图标,可以在 [xicon](https://www.xicons.org/) 方面的获取丰富的图标\n\n```yml\npostCategoryIcons:\n - <svg>...</svg>\n - <svg>...</svg>\n - <svg>...</svg>\n```\n\n## 网站图标 favicon\n\n- 支持 `svg`\n- 支持 `图片url`,如:`/img/favicon.png`\n\n```yml\nfavicon: ''\n```\n\n## ICP备案号\n\n😁 如不需要备案号,可直接删除\n\n```yml\nicp: 苏ICP备xxxxxxx号-x\n```\n\n## 首页底部文字\n\n😁 如不需要,可直接删除,或者改为 `false` \n\n```yml\nmotto: false\n```\n\n## 文章版权申明\n\n默认开启,当 `enable: false`,默认关闭\n\n```yml\npostCopyright:\n enable: true\n license: CC BY-NC-SA 4.0\n license_url: https://creativecommons.org/licenses/by-nc-sa/4.0/\n```\n\n## katex 数学公式\n\n可自行配置 `cdn`\n\n```yml\nkatex:\n enable: true\n jsCdn: //cdn.jsdelivr.net/npm/katex@0.13.18/dist/katex.min.js\n cssCdn: //cdn.jsdelivr.net/npm/katex@0.13.18/dist/katex.min.css\n```\n\n## mermaid 流程图\n\n在撰写时,请使用 `{% mermaid %}` 和 `{% endmermaid %}` 包裹\n\n```markdown\n{% mermaid %}\ngraph TD;\n A --> B;\n A --> C;\n B --> D;\n C --> D;\n{% endmermaid %}\n```\n\n相应配置如下\n\n```yml\nmermaid:\n enable: true\n cdn: //cdn.jsdelivr.net/npm/mermaid@10.4.0/dist/mermaid.min.js\n```\n\n## valine 文章评论\n\n首先需要注册 `LeanCloud` 国际区用户,创建数据库\n\n请根据相关地区法规,酌情\n\n```yml\nvaline:\n enable: true\n # 替换\n appId: appId\n # 替换\n appKey: appKey\n avatar: monsterid\n cdn: //unpkg.com/valine@latest/dist/Valine.min.js\n # 替换\n serverURLs: //xxxxxxxx.api.lncldglobal.com\n```\n\n# algolia搜索\n\n博客自带的本地搜索,基于前端开发,存在或多或少的问题,建议换成 `algolia`,免费账户 总共有 `10,000` 条记录,每月有 `100,000` 的操作数\n\n## 注册 & 获取 Key\n\n1. 创建一个新的 `Index`,例如 `hex-blog`\n\n2. 复制并保存:\n - Application ID\n - Search-Only API Key\n - Admin API Key\n - Usage API Key\n\n![API Keys](/img/algolia-api-keys.png)\n\n3. 替换配置\n\n在 `Hexo` 的 `_config.yml` 中加入\n\n```yml\nalgolia:\n # 替换\n appId: Application ID\n # 替换\n apiKey: Usage API Key\n # 请勿泄露,用于上报,替换\n adminApiKey: Admin API Key\n # 替换\n SearchOnlyAPIKey: Search-Only API Key\n chunkSize: 5000\n # 替换\n indexName: hex-blog\n fields:\n - content:strip\n - categories\n - date\n - permalink\n - slug\n - tags\n - title\n```\n\n## 安装 hexo-algoliasearch\n\n这是 Hexo 博客帖子索引插件,自动化提交索引到 Algolia\n\n> 如出遇到问题,可阅读 [hexo-algoliasearch 仓库](https://www.npmjs.com/package/hexo-algoliasearch) 最新说明\n\n安装命令:\n\n```bash\nnpm install hexo-algoliasearch --save\n```\n\n## 使用 algolia\n\n在每次博客发布之前,进行索引上传的操作,命令通常如下\n\n```bash\nhexo clean\nhexo generate\nhexo algolia\n``` \n\n\n# 🇨🇳 和风天气 Widget\n\nCosy 主要针对国内用户,在首页集成了和风天气的卡片,通过 [和风天气开发服务](https://dev.qweather.com/docs/start/) 注册\n\n注册完成后,在配置中填入你的 `appKey` 和 `cityCode(城市代码)`\n\n```yml\nweather:\n enable: true\n # 替换\n cityCode: cityCode\n appKey: appKey\n```\n\n其中 `cityCode` 可以在 [官方的地区列表仓库](https://github.com/qwd/LocationList) 中的 `China-City-List-latest.csv` 找到你所在城市的 `cityCode`\n\n# 前置元数据\n\n在 Hexo 的 Markdown 文件中,一个典型的 YAML 格式的 `Front Matter` 可能会是这样的:\n\n```markdown\n---\ntitle: 我的文章标题\ncategories:\n- javascript\ntags: \n- 编程\n- JavaScript\n---\n```\n\n## top\n\n实现文章置顶的功能,给定一个数值,可以进行排序,设定了 `top` 元数据的文章,会在分类列表中,使用 📌 标记\n\n例如有三篇文章:\n\n- 文章1\n\n```markdown\n---\ntitle: 文章1\ntop: 0\ncategories:\n- javascript\ntags: \n- 编程\n- JavaScript\n---\n```\n\n- 文章2\n\n```markdown\n---\ntitle: 文章2\ntop: 1\ncategories:\n- javascript\ntags: \n- 编程\n- JavaScript\n---\n```\n\n- 文章3\n\n```markdown\n---\ntitle: 文章3\ncategories:\n- javascript\ntags: \n- 编程\n- JavaScript\n---\n```\n\n那么在 `javascript` 分类下,排序的顺序依次为:`文章1 > 文章2 > 文章3`\n\n## status\n\n用于区分文章的状态,同时利用文章分类列表的`筛选`,进行快速筛选,Cosy 主题内置了 4 种状态\n\n- done:完成\n- doing:进行中\n- todo:待办\n- other:废弃\n\n例如:\n\n```markdown\n---\ntitle: 文章1\ncategories:\n- javascript\nstatus: done\n---\n```\n\n# 自定义页面\n\nHexo 使用 Markdown(或其他渲染引擎)解析你的文章,并生成静态文件以快速加载。除了默认生成的文章和归档页面之外,Hexo 还允许你创建自定义页面。\n\n## Roadmap路线图\n\n创建页面,你可以使用命令\n\n```bash\nhexo new page roadmap\n```\n\n成功后在 `source/` 文件夹下会生成一个新的文件夹 `/roadmap/index.md`\n\n你可以参照此模板,进行配置,参数说明:\n\n- title: roadmap页面 html 的标题\n- initYear: 默认显示的年份\n\n```markdown\n---\ntitle: 陈不渡 - roadmap\nlayout: roadmap\ninitYear: 2023\nyears:\n 2022:\n - title: 读书\n start: 01-01\n end: 1-5\n - title: 还是读书\n start: 02-01\n end: 05-30\n 2023:\n - title: 越陌度阡\n start: 01-01\n end: 1-2\n - title: 枉用相存\n start: 02-01\n end: 06-30\n - title: 短歌行\n start: 10-26\n end: 10-31\n content: 对酒当歌,人生几何!譬如朝露,去日苦多。慨当以慷,忧思难忘。何以解忧?唯有杜康。青青子衿,悠悠我心。但为君故,沉吟至今。呦呦鹿鸣,食野之苹。\n - title: 声律启蒙\n start: 11-01\n end: 11-31\n content: 花开红锦绣,水漾碧琉璃。去妇因探邻舍枣,出妻为种后园葵\n---\n```\n\n## Resume简历页面\n\n创建页面,你可以使用命令\n\n```bash\nhexo new page resume\n```\n\n成功后在 `source/` 文件夹下会生成一个新的文件夹 `/resume/index.md`\n\n你可以参照此模板,进行配置,参数说明:\n\n- title: resume 页面 html 的标题\n- avatar: 头像图片的地址\n\n```markdown\n---\ntitle: resume\nlayout: resume\navatar: /img/avatar.png\nname: Hi! Mozzie\nrole: Full Stack\nemail: himozzie@gmail.com\nphone: +86 180-xxxx-xxx\nbirth: Jan 21, 1994\nlocation: Nanjing, China\nsocial:\n - name: github\n link: https://github.com/17px\n icon: svg\n\nabout:\n - My job is to build your website so that it is functional and user-friendly but at the same time attractive. \n - Moreover, I add personal touch to your product and make sure that is eye-catching and easy to use. My aim is to bring across your message and identity in the most creative way. I created web design for many famous brand companies.\n\nskill:\n - Familiar with Node, with backend development capabilities, experience in individual application projects such as SpringBoot, Egg, Koa2, and Midway, and experience in Nestjs microservice application projects\n - Having experience in Monorepo engineering and possessing the ability to separate the front and rear ends of a single unit and apply DevOps\n - Familiar with three. js, familiar with Vtk. js, with development experience in medical 3D front-end and graphics related fields\n - Master basic Linux commands and understand the basic use of Nginx and Docker\n\neducation:\n - school: University School of the Arts\n time: 2012-2016\n\nworkExp:\n - inc: Creative Director\n time: 2021.09 ~ 至今\n - inc: Web Designer\n time: 2021.01 ~ 2021.09\n\nprojectExp:\n - name: PC/React • Annotation, Algorithm Data Center\n desc: This is a xxx system. It mainly includes a b c function. I am mainly responsible for the development and maintenance of the x, y, and z modules.\n\n list:\n - Using pnpm workspace to manage multiple code repositories in Monorepo, supporting the coexistence of multiple frameworks, and sharing common component libraries and capabilities\n - Use Rollup to package some functional capabilities (such as a b) on your own, which can be used for both browsers and node.js to achieve code isomorphism\n - Develop the system server using Nest.js and use it for the microservice system of the project\n\n - name: PC/React • Tavigator Aortic Root/Peripheral\n desc: This is a xxx system. It mainly includes a b c function. I am mainly responsible for the development and maintenance of the x, y, and z modules.\n \n list:\n - Using pnpm workspace to manage multiple code repositories in Monorepo, supporting the coexistence of multiple frameworks, and sharing common component libraries and capabilities\n - Use Rollup to package some functional capabilities (such as a b) on your own, which can be used for both browsers and node.js to achieve code isomorphism\n - Develop the system server using Nest.js and use it for the microservice system of the project\n\n---\n```","source":"_posts/Cosy 入门.md","raw":"---\ntitle: Cosy 入门\ntop: 2\ncategories:\n - Hexo\nstatus: doing\n---\n\n# Hexo 安装主题\n\n`Hexo` 主题的安装方式非常简单,只需将主题 `Hexo-theme-cosy` 复制目录的 `themes` 目录下,然后在 `Hexo` 的 `_config.yml` 中修改下主题配置即可\n\n```yml\n# 找到 theme 配置项\ntheme: Hexo-theme-cosy\n```\n\n## 获取 Cosy\n\n- 进入 [Cosy 代码仓库](https://github.com/17px/hexo-theme-cosy/tree/main),了解最新的主题开发进度\n- 在 [发布页面](https://github.com/17px/hexo-theme-cosy/releases) 下载 `hexo-theme-cosy.zip`\n- 解压至站点的 `themes` 目录下\n- 在 Hexo 的 `_config.yml` 中启用\n\n# hexo配置\n\n在 `Hexo` 的 `_config.yml` 中调整\n\n## 基础配置\n\n```yml\n# 网页标题\ntitle: 17px blog\n# 侧边栏顶部显示\nsubtitle: \"Mozzie\"\n# 用于SEO的html元描述\ndescription: \"\"\n# 用于SEO的html关键字\nkeywords:\n# 文章版权声明显示作者名称\nauthor: Mozzie\n\n# 在此处设置您的网站url\nurl: https://mozzie.cn\n```\n\n## 语言\n\n你可以在 `hexo-theme-cosy/languages` 中找到不同的语言文件,如果想切换语言,在配置文件中,填入 `yml` 的文件名\n\n```yml\nlanguage: en\n```\n\n## 文章语法高亮\n\n关闭hexo默认的highlight.js语法高亮\n\n```yml\nhighlight:\n enable: false\n line_number: true\n auto_detect: false\n tab_replace: \"\"\n wrap: true\n hljs: false\n\nprismjs:\n enable: true\n preprocess: true\n line_number: true\n line_threshold: 0\n tab_replace: \"\"\n```\n\n# Cosy 主题配置\n\n下面的配置基于 `Hexo-theme-cosy` 下的 `_config.yml` \n\n## 文章分类图标\n\n按照顺序,依次设置 `svg` 图标,可以在 [xicon](https://www.xicons.org/) 方面的获取丰富的图标\n\n```yml\npostCategoryIcons:\n - <svg>...</svg>\n - <svg>...</svg>\n - <svg>...</svg>\n```\n\n## 网站图标 favicon\n\n- 支持 `svg`\n- 支持 `图片url`,如:`/img/favicon.png`\n\n```yml\nfavicon: ''\n```\n\n## ICP备案号\n\n😁 如不需要备案号,可直接删除\n\n```yml\nicp: 苏ICP备xxxxxxx号-x\n```\n\n## 首页底部文字\n\n😁 如不需要,可直接删除,或者改为 `false` \n\n```yml\nmotto: false\n```\n\n## 文章版权申明\n\n默认开启,当 `enable: false`,默认关闭\n\n```yml\npostCopyright:\n enable: true\n license: CC BY-NC-SA 4.0\n license_url: https://creativecommons.org/licenses/by-nc-sa/4.0/\n```\n\n## katex 数学公式\n\n可自行配置 `cdn`\n\n```yml\nkatex:\n enable: true\n jsCdn: //cdn.jsdelivr.net/npm/katex@0.13.18/dist/katex.min.js\n cssCdn: //cdn.jsdelivr.net/npm/katex@0.13.18/dist/katex.min.css\n```\n\n## mermaid 流程图\n\n在撰写时,请使用 `{% mermaid %}` 和 `{% endmermaid %}` 包裹\n\n```markdown\n{% mermaid %}\ngraph TD;\n A --> B;\n A --> C;\n B --> D;\n C --> D;\n{% endmermaid %}\n```\n\n相应配置如下\n\n```yml\nmermaid:\n enable: true\n cdn: //cdn.jsdelivr.net/npm/mermaid@10.4.0/dist/mermaid.min.js\n```\n\n## valine 文章评论\n\n首先需要注册 `LeanCloud` 国际区用户,创建数据库\n\n请根据相关地区法规,酌情\n\n```yml\nvaline:\n enable: true\n # 替换\n appId: appId\n # 替换\n appKey: appKey\n avatar: monsterid\n cdn: //unpkg.com/valine@latest/dist/Valine.min.js\n # 替换\n serverURLs: //xxxxxxxx.api.lncldglobal.com\n```\n\n# algolia搜索\n\n博客自带的本地搜索,基于前端开发,存在或多或少的问题,建议换成 `algolia`,免费账户 总共有 `10,000` 条记录,每月有 `100,000` 的操作数\n\n## 注册 & 获取 Key\n\n1. 创建一个新的 `Index`,例如 `hex-blog`\n\n2. 复制并保存:\n - Application ID\n - Search-Only API Key\n - Admin API Key\n - Usage API Key\n\n![API Keys](/img/algolia-api-keys.png)\n\n3. 替换配置\n\n在 `Hexo` 的 `_config.yml` 中加入\n\n```yml\nalgolia:\n # 替换\n appId: Application ID\n # 替换\n apiKey: Usage API Key\n # 请勿泄露,用于上报,替换\n adminApiKey: Admin API Key\n # 替换\n SearchOnlyAPIKey: Search-Only API Key\n chunkSize: 5000\n # 替换\n indexName: hex-blog\n fields:\n - content:strip\n - categories\n - date\n - permalink\n - slug\n - tags\n - title\n```\n\n## 安装 hexo-algoliasearch\n\n这是 Hexo 博客帖子索引插件,自动化提交索引到 Algolia\n\n> 如出遇到问题,可阅读 [hexo-algoliasearch 仓库](https://www.npmjs.com/package/hexo-algoliasearch) 最新说明\n\n安装命令:\n\n```bash\nnpm install hexo-algoliasearch --save\n```\n\n## 使用 algolia\n\n在每次博客发布之前,进行索引上传的操作,命令通常如下\n\n```bash\nhexo clean\nhexo generate\nhexo algolia\n``` \n\n\n# 🇨🇳 和风天气 Widget\n\nCosy 主要针对国内用户,在首页集成了和风天气的卡片,通过 [和风天气开发服务](https://dev.qweather.com/docs/start/) 注册\n\n注册完成后,在配置中填入你的 `appKey` 和 `cityCode(城市代码)`\n\n```yml\nweather:\n enable: true\n # 替换\n cityCode: cityCode\n appKey: appKey\n```\n\n其中 `cityCode` 可以在 [官方的地区列表仓库](https://github.com/qwd/LocationList) 中的 `China-City-List-latest.csv` 找到你所在城市的 `cityCode`\n\n# 前置元数据\n\n在 Hexo 的 Markdown 文件中,一个典型的 YAML 格式的 `Front Matter` 可能会是这样的:\n\n```markdown\n---\ntitle: 我的文章标题\ncategories:\n- javascript\ntags: \n- 编程\n- JavaScript\n---\n```\n\n## top\n\n实现文章置顶的功能,给定一个数值,可以进行排序,设定了 `top` 元数据的文章,会在分类列表中,使用 📌 标记\n\n例如有三篇文章:\n\n- 文章1\n\n```markdown\n---\ntitle: 文章1\ntop: 0\ncategories:\n- javascript\ntags: \n- 编程\n- JavaScript\n---\n```\n\n- 文章2\n\n```markdown\n---\ntitle: 文章2\ntop: 1\ncategories:\n- javascript\ntags: \n- 编程\n- JavaScript\n---\n```\n\n- 文章3\n\n```markdown\n---\ntitle: 文章3\ncategories:\n- javascript\ntags: \n- 编程\n- JavaScript\n---\n```\n\n那么在 `javascript` 分类下,排序的顺序依次为:`文章1 > 文章2 > 文章3`\n\n## status\n\n用于区分文章的状态,同时利用文章分类列表的`筛选`,进行快速筛选,Cosy 主题内置了 4 种状态\n\n- done:完成\n- doing:进行中\n- todo:待办\n- other:废弃\n\n例如:\n\n```markdown\n---\ntitle: 文章1\ncategories:\n- javascript\nstatus: done\n---\n```\n\n# 自定义页面\n\nHexo 使用 Markdown(或其他渲染引擎)解析你的文章,并生成静态文件以快速加载。除了默认生成的文章和归档页面之外,Hexo 还允许你创建自定义页面。\n\n## Roadmap路线图\n\n创建页面,你可以使用命令\n\n```bash\nhexo new page roadmap\n```\n\n成功后在 `source/` 文件夹下会生成一个新的文件夹 `/roadmap/index.md`\n\n你可以参照此模板,进行配置,参数说明:\n\n- title: roadmap页面 html 的标题\n- initYear: 默认显示的年份\n\n```markdown\n---\ntitle: 陈不渡 - roadmap\nlayout: roadmap\ninitYear: 2023\nyears:\n 2022:\n - title: 读书\n start: 01-01\n end: 1-5\n - title: 还是读书\n start: 02-01\n end: 05-30\n 2023:\n - title: 越陌度阡\n start: 01-01\n end: 1-2\n - title: 枉用相存\n start: 02-01\n end: 06-30\n - title: 短歌行\n start: 10-26\n end: 10-31\n content: 对酒当歌,人生几何!譬如朝露,去日苦多。慨当以慷,忧思难忘。何以解忧?唯有杜康。青青子衿,悠悠我心。但为君故,沉吟至今。呦呦鹿鸣,食野之苹。\n - title: 声律启蒙\n start: 11-01\n end: 11-31\n content: 花开红锦绣,水漾碧琉璃。去妇因探邻舍枣,出妻为种后园葵\n---\n```\n\n## Resume简历页面\n\n创建页面,你可以使用命令\n\n```bash\nhexo new page resume\n```\n\n成功后在 `source/` 文件夹下会生成一个新的文件夹 `/resume/index.md`\n\n你可以参照此模板,进行配置,参数说明:\n\n- title: resume 页面 html 的标题\n- avatar: 头像图片的地址\n\n```markdown\n---\ntitle: resume\nlayout: resume\navatar: /img/avatar.png\nname: Hi! Mozzie\nrole: Full Stack\nemail: himozzie@gmail.com\nphone: +86 180-xxxx-xxx\nbirth: Jan 21, 1994\nlocation: Nanjing, China\nsocial:\n - name: github\n link: https://github.com/17px\n icon: svg\n\nabout:\n - My job is to build your website so that it is functional and user-friendly but at the same time attractive. \n - Moreover, I add personal touch to your product and make sure that is eye-catching and easy to use. My aim is to bring across your message and identity in the most creative way. I created web design for many famous brand companies.\n\nskill:\n - Familiar with Node, with backend development capabilities, experience in individual application projects such as SpringBoot, Egg, Koa2, and Midway, and experience in Nestjs microservice application projects\n - Having experience in Monorepo engineering and possessing the ability to separate the front and rear ends of a single unit and apply DevOps\n - Familiar with three. js, familiar with Vtk. js, with development experience in medical 3D front-end and graphics related fields\n - Master basic Linux commands and understand the basic use of Nginx and Docker\n\neducation:\n - school: University School of the Arts\n time: 2012-2016\n\nworkExp:\n - inc: Creative Director\n time: 2021.09 ~ 至今\n - inc: Web Designer\n time: 2021.01 ~ 2021.09\n\nprojectExp:\n - name: PC/React • Annotation, Algorithm Data Center\n desc: This is a xxx system. It mainly includes a b c function. I am mainly responsible for the development and maintenance of the x, y, and z modules.\n\n list:\n - Using pnpm workspace to manage multiple code repositories in Monorepo, supporting the coexistence of multiple frameworks, and sharing common component libraries and capabilities\n - Use Rollup to package some functional capabilities (such as a b) on your own, which can be used for both browsers and node.js to achieve code isomorphism\n - Develop the system server using Nest.js and use it for the microservice system of the project\n\n - name: PC/React • Tavigator Aortic Root/Peripheral\n desc: This is a xxx system. It mainly includes a b c function. I am mainly responsible for the development and maintenance of the x, y, and z modules.\n \n list:\n - Using pnpm workspace to manage multiple code repositories in Monorepo, supporting the coexistence of multiple frameworks, and sharing common component libraries and capabilities\n - Use Rollup to package some functional capabilities (such as a b) on your own, which can be used for both browsers and node.js to achieve code isomorphism\n - Develop the system server using Nest.js and use it for the microservice system of the project\n\n---\n```","slug":"Cosy 入门","published":1,"date":"2023-10-23T04:01:13.108Z","updated":"2023-10-30T07:43:27.292Z","comments":1,"layout":"post","photos":[],"link":"","_id":"clodvl50z0003egz30n73cnoa","content":"<h1 id=\"Hexo-安装主题\"><a href=\"#Hexo-安装主题\" class=\"headerlink\" title=\"Hexo 安装主题\"></a>Hexo 安装主题</h1><p><code>Hexo</code> 主题的安装方式非常简单,只需将主题 <code>Hexo-theme-cosy</code> 复制目录的 <code>themes</code> 目录下,然后在 <code>Hexo</code> 的 <code>_config.yml</code> 中修改下主题配置即可</p>\n<pre class=\"line-numbers language-yaml\" data-language=\"yaml\"><code class=\"language-yaml\"><span class=\"token comment\"># 找到 theme 配置项</span>\n<span class=\"token key atrule\">theme</span><span class=\"token punctuation\">:</span> Hexo<span class=\"token punctuation\">-</span>theme<span class=\"token punctuation\">-</span>cosy<span aria-hidden=\"true\" class=\"line-numbers-rows\"><span></span><span></span></span></code></pre>\n\n<h2 id=\"获取-Cosy\"><a href=\"#获取-Cosy\" class=\"headerlink\" title=\"获取 Cosy\"></a>获取 Cosy</h2><ul>\n<li>进入 <a href=\"https://github.com/17px/hexo-theme-cosy/tree/main\">Cosy 代码仓库</a>,了解最新的主题开发进度</li>\n<li>在 <a href=\"https://github.com/17px/hexo-theme-cosy/releases\">发布页面</a> 下载 <code>hexo-theme-cosy.zip</code></li>\n<li>解压至站点的 <code>themes</code> 目录下</li>\n<li>在 Hexo 的 <code>_config.yml</code> 中启用</li>\n</ul>\n<h1 id=\"hexo配置\"><a href=\"#hexo配置\" class=\"headerlink\" title=\"hexo配置\"></a>hexo配置</h1><p>在 <code>Hexo</code> 的 <code>_config.yml</code> 中调整</p>\n<h2 id=\"基础配置\"><a href=\"#基础配置\" class=\"headerlink\" title=\"基础配置\"></a>基础配置</h2><pre class=\"line-numbers language-yaml\" data-language=\"yaml\"><code class=\"language-yaml\"><span class=\"token comment\"># 网页标题</span>\n<span class=\"token key atrule\">title</span><span class=\"token punctuation\">:</span> 17px blog\n<span class=\"token comment\"># 侧边栏顶部显示</span>\n<span class=\"token key atrule\">subtitle</span><span class=\"token punctuation\">:</span> <span class=\"token string\">\"Mozzie\"</span>\n<span class=\"token comment\"># 用于SEO的html元描述</span>\n<span class=\"token key atrule\">description</span><span class=\"token punctuation\">:</span> <span class=\"token string\">\"\"</span>\n<span class=\"token comment\"># 用于SEO的html关键字</span>\n<span class=\"token key atrule\">keywords</span><span class=\"token punctuation\">:</span>\n<span class=\"token comment\"># 文章版权声明显示作者名称</span>\n<span class=\"token key atrule\">author</span><span class=\"token punctuation\">:</span> Mozzie\n\n<span class=\"token comment\"># 在此处设置您的网站url</span>\n<span class=\"token key atrule\">url</span><span class=\"token punctuation\">:</span> https<span class=\"token punctuation\">:</span>//mozzie.cn<span aria-hidden=\"true\" class=\"line-numbers-rows\"><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span></span></code></pre>\n\n<h2 id=\"语言\"><a href=\"#语言\" class=\"headerlink\" title=\"语言\"></a>语言</h2><p>你可以在 <code>hexo-theme-cosy/languages</code> 中找到不同的语言文件,如果想切换语言,在配置文件中,填入 <code>yml</code> 的文件名</p>\n<pre class=\"line-numbers language-yaml\" data-language=\"yaml\"><code class=\"language-yaml\"><span class=\"token key atrule\">language</span><span class=\"token punctuation\">:</span> en<span aria-hidden=\"true\" class=\"line-numbers-rows\"><span></span></span></code></pre>\n\n<h2 id=\"文章语法高亮\"><a href=\"#文章语法高亮\" class=\"headerlink\" title=\"文章语法高亮\"></a>文章语法高亮</h2><p>关闭hexo默认的highlight.js语法高亮</p>\n<pre class=\"line-numbers language-yaml\" data-language=\"yaml\"><code class=\"language-yaml\"><span class=\"token key atrule\">highlight</span><span class=\"token punctuation\">:</span>\n <span class=\"token key atrule\">enable</span><span class=\"token punctuation\">:</span> <span class=\"token boolean important\">false</span>\n <span class=\"token key atrule\">line_number</span><span class=\"token punctuation\">:</span> <span class=\"token boolean important\">true</span>\n <span class=\"token key atrule\">auto_detect</span><span class=\"token punctuation\">:</span> <span class=\"token boolean important\">false</span>\n <span class=\"token key atrule\">tab_replace</span><span class=\"token punctuation\">:</span> <span class=\"token string\">\"\"</span>\n <span class=\"token key atrule\">wrap</span><span class=\"token punctuation\">:</span> <span class=\"token boolean important\">true</span>\n <span class=\"token key atrule\">hljs</span><span class=\"token punctuation\">:</span> <span class=\"token boolean important\">false</span>\n\n<span class=\"token key atrule\">prismjs</span><span class=\"token punctuation\">:</span>\n <span class=\"token key atrule\">enable</span><span class=\"token punctuation\">:</span> <span class=\"token boolean important\">true</span>\n <span class=\"token key atrule\">preprocess</span><span class=\"token punctuation\">:</span> <span class=\"token boolean important\">true</span>\n <span class=\"token key atrule\">line_number</span><span class=\"token punctuation\">:</span> <span class=\"token boolean important\">true</span>\n <span class=\"token key atrule\">line_threshold</span><span class=\"token punctuation\">:</span> <span class=\"token number\">0</span>\n <span class=\"token key atrule\">tab_replace</span><span class=\"token punctuation\">:</span> <span class=\"token string\">\"\"</span><span aria-hidden=\"true\" class=\"line-numbers-rows\"><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span></span></code></pre>\n\n<h1 id=\"Cosy-主题配置\"><a href=\"#Cosy-主题配置\" class=\"headerlink\" title=\"Cosy 主题配置\"></a>Cosy 主题配置</h1><p>下面的配置基于 <code>Hexo-theme-cosy</code> 下的 <code>_config.yml</code> </p>\n<h2 id=\"文章分类图标\"><a href=\"#文章分类图标\" class=\"headerlink\" title=\"文章分类图标\"></a>文章分类图标</h2><p>按照顺序,依次设置 <code>svg</code> 图标,可以在 <a href=\"https://www.xicons.org/\">xicon</a> 方面的获取丰富的图标</p>\n<pre class=\"line-numbers language-yaml\" data-language=\"yaml\"><code class=\"language-yaml\"><span class=\"token key atrule\">postCategoryIcons</span><span class=\"token punctuation\">:</span>\n <span class=\"token punctuation\">-</span> <svg<span class=\"token punctuation\">></span><span class=\"token punctuation\">...</span></svg<span class=\"token punctuation\">></span>\n <span class=\"token punctuation\">-</span> <svg<span class=\"token punctuation\">></span><span class=\"token punctuation\">...</span></svg<span class=\"token punctuation\">></span>\n <span class=\"token punctuation\">-</span> <svg<span class=\"token punctuation\">></span><span class=\"token punctuation\">...</span></svg<span class=\"token punctuation\">></span><span aria-hidden=\"true\" class=\"line-numbers-rows\"><span></span><span></span><span></span><span></span></span></code></pre>\n\n<h2 id=\"网站图标-favicon\"><a href=\"#网站图标-favicon\" class=\"headerlink\" title=\"网站图标 favicon\"></a>网站图标 favicon</h2><ul>\n<li>支持 <code>svg</code></li>\n<li>支持 <code>图片url</code>,如:<code>/img/favicon.png</code></li>\n</ul>\n<pre class=\"line-numbers language-yaml\" data-language=\"yaml\"><code class=\"language-yaml\"><span class=\"token key atrule\">favicon</span><span class=\"token punctuation\">:</span> <span class=\"token string\">''</span><span aria-hidden=\"true\" class=\"line-numbers-rows\"><span></span></span></code></pre>\n\n<h2 id=\"ICP备案号\"><a href=\"#ICP备案号\" class=\"headerlink\" title=\"ICP备案号\"></a>ICP备案号</h2><p>😁 如不需要备案号,可直接删除</p>\n<pre class=\"line-numbers language-yaml\" data-language=\"yaml\"><code class=\"language-yaml\"><span class=\"token key atrule\">icp</span><span class=\"token punctuation\">:</span> 苏ICP备xxxxxxx号<span class=\"token punctuation\">-</span>x<span aria-hidden=\"true\" class=\"line-numbers-rows\"><span></span></span></code></pre>\n\n<h2 id=\"首页底部文字\"><a href=\"#首页底部文字\" class=\"headerlink\" title=\"首页底部文字\"></a>首页底部文字</h2><p>😁 如不需要,可直接删除,或者改为 <code>false</code> </p>\n<pre class=\"line-numbers language-yaml\" data-language=\"yaml\"><code class=\"language-yaml\"><span class=\"token key atrule\">motto</span><span class=\"token punctuation\">:</span> <span class=\"token boolean important\">false</span><span aria-hidden=\"true\" class=\"line-numbers-rows\"><span></span></span></code></pre>\n\n<h2 id=\"文章版权申明\"><a href=\"#文章版权申明\" class=\"headerlink\" title=\"文章版权申明\"></a>文章版权申明</h2><p>默认开启,当 <code>enable: false</code>,默认关闭</p>\n<pre class=\"line-numbers language-yaml\" data-language=\"yaml\"><code class=\"language-yaml\"><span class=\"token key atrule\">postCopyright</span><span class=\"token punctuation\">:</span>\n <span class=\"token key atrule\">enable</span><span class=\"token punctuation\">:</span> <span class=\"token boolean important\">true</span>\n <span class=\"token key atrule\">license</span><span class=\"token punctuation\">:</span> CC BY<span class=\"token punctuation\">-</span>NC<span class=\"token punctuation\">-</span>SA 4.0\n <span class=\"token key atrule\">license_url</span><span class=\"token punctuation\">:</span> https<span class=\"token punctuation\">:</span>//creativecommons.org/licenses/by<span class=\"token punctuation\">-</span>nc<span class=\"token punctuation\">-</span>sa/4.0/<span aria-hidden=\"true\" class=\"line-numbers-rows\"><span></span><span></span><span></span><span></span></span></code></pre>\n\n<h2 id=\"katex-数学公式\"><a href=\"#katex-数学公式\" class=\"headerlink\" title=\"katex 数学公式\"></a>katex 数学公式</h2><p>可自行配置 <code>cdn</code></p>\n<pre class=\"line-numbers language-yaml\" data-language=\"yaml\"><code class=\"language-yaml\"><span class=\"token key atrule\">katex</span><span class=\"token punctuation\">:</span>\n <span class=\"token key atrule\">enable</span><span class=\"token punctuation\">:</span> <span class=\"token boolean important\">true</span>\n <span class=\"token key atrule\">jsCdn</span><span class=\"token punctuation\">:</span> //cdn.jsdelivr.net/npm/katex@0.13.18/dist/katex.min.js\n <span class=\"token key atrule\">cssCdn</span><span class=\"token punctuation\">:</span> //cdn.jsdelivr.net/npm/katex@0.13.18/dist/katex.min.css<span aria-hidden=\"true\" class=\"line-numbers-rows\"><span></span><span></span><span></span><span></span></span></code></pre>\n\n<h2 id=\"mermaid-流程图\"><a href=\"#mermaid-流程图\" class=\"headerlink\" title=\"mermaid 流程图\"></a>mermaid 流程图</h2><p>在撰写时,请使用 <code>{% mermaid %}` 和 `{% endmermaid %}</code> 包裹</p>\n<pre class=\"line-numbers language-markdown\" data-language=\"markdown\"><code class=\"language-markdown\">{% mermaid %}\ngraph TD;\n A --> B;\n A --> C;\n B --> D;\n C --> D;\n{% endmermaid %}<span aria-hidden=\"true\" class=\"line-numbers-rows\"><span></span><span></span><span></span><span></span><span></span><span></span><span></span></span></code></pre>\n\n<p>相应配置如下</p>\n<pre class=\"line-numbers language-yaml\" data-language=\"yaml\"><code class=\"language-yaml\"><span class=\"token key atrule\">mermaid</span><span class=\"token punctuation\">:</span>\n <span class=\"token key atrule\">enable</span><span class=\"token punctuation\">:</span> <span class=\"token boolean important\">true</span>\n <span class=\"token key atrule\">cdn</span><span class=\"token punctuation\">:</span> //cdn.jsdelivr.net/npm/mermaid@10.4.0/dist/mermaid.min.js<span aria-hidden=\"true\" class=\"line-numbers-rows\"><span></span><span></span><span></span></span></code></pre>\n\n<h2 id=\"valine-文章评论\"><a href=\"#valine-文章评论\" class=\"headerlink\" title=\"valine 文章评论\"></a>valine 文章评论</h2><p>首先需要注册 <code>LeanCloud</code> 国际区用户,创建数据库</p>\n<p>请根据相关地区法规,酌情</p>\n<pre class=\"line-numbers language-yaml\" data-language=\"yaml\"><code class=\"language-yaml\"><span class=\"token key atrule\">valine</span><span class=\"token punctuation\">:</span>\n <span class=\"token key atrule\">enable</span><span class=\"token punctuation\">:</span> <span class=\"token boolean important\">true</span>\n <span class=\"token comment\"># 替换</span>\n <span class=\"token key atrule\">appId</span><span class=\"token punctuation\">:</span> appId\n <span class=\"token comment\"># 替换</span>\n <span class=\"token key atrule\">appKey</span><span class=\"token punctuation\">:</span> appKey\n <span class=\"token key atrule\">avatar</span><span class=\"token punctuation\">:</span> monsterid\n <span class=\"token key atrule\">cdn</span><span class=\"token punctuation\">:</span> //unpkg.com/valine@latest/dist/Valine.min.js\n <span class=\"token comment\"># 替换</span>\n <span class=\"token key atrule\">serverURLs</span><span class=\"token punctuation\">:</span> //xxxxxxxx.api.lncldglobal.com<span aria-hidden=\"true\" class=\"line-numbers-rows\"><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span></span></code></pre>\n\n<h1 id=\"algolia搜索\"><a href=\"#algolia搜索\" class=\"headerlink\" title=\"algolia搜索\"></a>algolia搜索</h1><p>博客自带的本地搜索,基于前端开发,存在或多或少的问题,建议换成 <code>algolia</code>,免费账户 总共有 <code>10,000</code> 条记录,每月有 <code>100,000</code> 的操作数</p>\n<h2 id=\"注册-amp-获取-Key\"><a href=\"#注册-amp-获取-Key\" class=\"headerlink\" title=\"注册 & 获取 Key\"></a>注册 & 获取 Key</h2><ol>\n<li><p>创建一个新的 <code>Index</code>,例如 <code>hex-blog</code></p>\n</li>\n<li><p>复制并保存:</p>\n</li>\n</ol>\n<ul>\n<li>Application ID</li>\n<li>Search-Only API Key</li>\n<li>Admin API Key</li>\n<li>Usage API Key</li>\n</ul>\n<p><img src=\"/img/algolia-api-keys.png\" alt=\"API Keys\"></p>\n<ol start=\"3\">\n<li>替换配置</li>\n</ol>\n<p>在 <code>Hexo</code> 的 <code>_config.yml</code> 中加入</p>\n<pre class=\"line-numbers language-yaml\" data-language=\"yaml\"><code class=\"language-yaml\"><span class=\"token key atrule\">algolia</span><span class=\"token punctuation\">:</span>\n <span class=\"token comment\"># 替换</span>\n <span class=\"token key atrule\">appId</span><span class=\"token punctuation\">:</span> Application ID\n <span class=\"token comment\"># 替换</span>\n <span class=\"token key atrule\">apiKey</span><span class=\"token punctuation\">:</span> Usage API Key\n <span class=\"token comment\"># 请勿泄露,用于上报,替换</span>\n <span class=\"token key atrule\">adminApiKey</span><span class=\"token punctuation\">:</span> Admin API Key\n <span class=\"token comment\"># 替换</span>\n <span class=\"token key atrule\">SearchOnlyAPIKey</span><span class=\"token punctuation\">:</span> Search<span class=\"token punctuation\">-</span>Only API Key\n <span class=\"token key atrule\">chunkSize</span><span class=\"token punctuation\">:</span> <span class=\"token number\">5000</span>\n <span class=\"token comment\"># 替换</span>\n <span class=\"token key atrule\">indexName</span><span class=\"token punctuation\">:</span> hex<span class=\"token punctuation\">-</span>blog\n <span class=\"token key atrule\">fields</span><span class=\"token punctuation\">:</span>\n <span class=\"token punctuation\">-</span> content<span class=\"token punctuation\">:</span>strip\n <span class=\"token punctuation\">-</span> categories\n <span class=\"token punctuation\">-</span> date\n <span class=\"token punctuation\">-</span> permalink\n <span class=\"token punctuation\">-</span> slug\n <span class=\"token punctuation\">-</span> tags\n <span class=\"token punctuation\">-</span> title<span aria-hidden=\"true\" class=\"line-numbers-rows\"><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span></span></code></pre>\n\n<h2 id=\"安装-hexo-algoliasearch\"><a href=\"#安装-hexo-algoliasearch\" class=\"headerlink\" title=\"安装 hexo-algoliasearch\"></a>安装 hexo-algoliasearch</h2><p>这是 Hexo 博客帖子索引插件,自动化提交索引到 Algolia</p>\n<blockquote>\n<p>如出遇到问题,可阅读 <a href=\"https://www.npmjs.com/package/hexo-algoliasearch\">hexo-algoliasearch 仓库</a> 最新说明</p>\n</blockquote>\n<p>安装命令:</p>\n<pre class=\"line-numbers language-bash\" data-language=\"bash\"><code class=\"language-bash\"><span class=\"token function\">npm</span> <span class=\"token function\">install</span> hexo-algoliasearch <span class=\"token parameter variable\">--save</span><span aria-hidden=\"true\" class=\"line-numbers-rows\"><span></span></span></code></pre>\n\n<h2 id=\"使用-algolia\"><a href=\"#使用-algolia\" class=\"headerlink\" title=\"使用 algolia\"></a>使用 algolia</h2><p>在每次博客发布之前,进行索引上传的操作,命令通常如下</p>\n<pre class=\"line-numbers language-bash\" data-language=\"bash\"><code class=\"language-bash\">hexo clean\nhexo generate\nhexo algolia<span aria-hidden=\"true\" class=\"line-numbers-rows\"><span></span><span></span><span></span></span></code></pre>\n\n\n<h1 id=\"🇨🇳-和风天气-Widget\"><a href=\"#🇨🇳-和风天气-Widget\" class=\"headerlink\" title=\"🇨🇳 和风天气 Widget\"></a>🇨🇳 和风天气 Widget</h1><p>Cosy 主要针对国内用户,在首页集成了和风天气的卡片,通过 <a href=\"https://dev.qweather.com/docs/start/\">和风天气开发服务</a> 注册</p>\n<p>注册完成后,在配置中填入你的 <code>appKey</code> 和 <code>cityCode(城市代码)</code></p>\n<pre class=\"line-numbers language-yaml\" data-language=\"yaml\"><code class=\"language-yaml\"><span class=\"token key atrule\">weather</span><span class=\"token punctuation\">:</span>\n <span class=\"token key atrule\">enable</span><span class=\"token punctuation\">:</span> <span class=\"token boolean important\">true</span>\n <span class=\"token comment\"># 替换</span>\n <span class=\"token key atrule\">cityCode</span><span class=\"token punctuation\">:</span> cityCode\n <span class=\"token key atrule\">appKey</span><span class=\"token punctuation\">:</span> appKey<span aria-hidden=\"true\" class=\"line-numbers-rows\"><span></span><span></span><span></span><span></span><span></span></span></code></pre>\n\n<p>其中 <code>cityCode</code> 可以在 <a href=\"https://github.com/qwd/LocationList\">官方的地区列表仓库</a> 中的 <code>China-City-List-latest.csv</code> 找到你所在城市的 <code>cityCode</code></p>\n<h1 id=\"前置元数据\"><a href=\"#前置元数据\" class=\"headerlink\" title=\"前置元数据\"></a>前置元数据</h1><p>在 Hexo 的 Markdown 文件中,一个典型的 YAML 格式的 <code>Front Matter</code> 可能会是这样的:</p>\n<pre class=\"line-numbers language-markdown\" data-language=\"markdown\"><code class=\"language-markdown\"><span class=\"token front-matter-block\"><span class=\"token punctuation\">---</span>\n<span class=\"token front-matter yaml language-yaml\"><span class=\"token key atrule\">title</span><span class=\"token punctuation\">:</span> 我的文章标题\n<span class=\"token key atrule\">categories</span><span class=\"token punctuation\">:</span>\n<span class=\"token punctuation\">-</span> javascript\n<span class=\"token key atrule\">tags</span><span class=\"token punctuation\">:</span> \n<span class=\"token punctuation\">-</span> 编程\n<span class=\"token punctuation\">-</span> JavaScript</span>\n<span class=\"token punctuation\">---</span></span><span aria-hidden=\"true\" class=\"line-numbers-rows\"><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span></span></code></pre>\n\n<h2 id=\"top\"><a href=\"#top\" class=\"headerlink\" title=\"top\"></a>top</h2><p>实现文章置顶的功能,给定一个数值,可以进行排序,设定了 <code>top</code> 元数据的文章,会在分类列表中,使用 📌 标记</p>\n<p>例如有三篇文章:</p>\n<ul>\n<li>文章1</li>\n</ul>\n<pre class=\"line-numbers language-markdown\" data-language=\"markdown\"><code class=\"language-markdown\"><span class=\"token front-matter-block\"><span class=\"token punctuation\">---</span>\n<span class=\"token front-matter yaml language-yaml\"><span class=\"token key atrule\">title</span><span class=\"token punctuation\">:</span> 文章1\n<span class=\"token key atrule\">top</span><span class=\"token punctuation\">:</span> <span class=\"token number\">0</span>\n<span class=\"token key atrule\">categories</span><span class=\"token punctuation\">:</span>\n<span class=\"token punctuation\">-</span> javascript\n<span class=\"token key atrule\">tags</span><span class=\"token punctuation\">:</span> \n<span class=\"token punctuation\">-</span> 编程\n<span class=\"token punctuation\">-</span> JavaScript</span>\n<span class=\"token punctuation\">---</span></span><span aria-hidden=\"true\" class=\"line-numbers-rows\"><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span></span></code></pre>\n\n<ul>\n<li>文章2</li>\n</ul>\n<pre class=\"line-numbers language-markdown\" data-language=\"markdown\"><code class=\"language-markdown\"><span class=\"token front-matter-block\"><span class=\"token punctuation\">---</span>\n<span class=\"token front-matter yaml language-yaml\"><span class=\"token key atrule\">title</span><span class=\"token punctuation\">:</span> 文章2\n<span class=\"token key atrule\">top</span><span class=\"token punctuation\">:</span> <span class=\"token number\">1</span>\n<span class=\"token key atrule\">categories</span><span class=\"token punctuation\">:</span>\n<span class=\"token punctuation\">-</span> javascript\n<span class=\"token key atrule\">tags</span><span class=\"token punctuation\">:</span> \n<span class=\"token punctuation\">-</span> 编程\n<span class=\"token punctuation\">-</span> JavaScript</span>\n<span class=\"token punctuation\">---</span></span><span aria-hidden=\"true\" class=\"line-numbers-rows\"><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span></span></code></pre>\n\n<ul>\n<li>文章3</li>\n</ul>\n<pre class=\"line-numbers language-markdown\" data-language=\"markdown\"><code class=\"language-markdown\"><span class=\"token front-matter-block\"><span class=\"token punctuation\">---</span>\n<span class=\"token front-matter yaml language-yaml\"><span class=\"token key atrule\">title</span><span class=\"token punctuation\">:</span> 文章3\n<span class=\"token key atrule\">categories</span><span class=\"token punctuation\">:</span>\n<span class=\"token punctuation\">-</span> javascript\n<span class=\"token key atrule\">tags</span><span class=\"token punctuation\">:</span> \n<span class=\"token punctuation\">-</span> 编程\n<span class=\"token punctuation\">-</span> JavaScript</span>\n<span class=\"token punctuation\">---</span></span><span aria-hidden=\"true\" class=\"line-numbers-rows\"><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span></span></code></pre>\n\n<p>那么在 <code>javascript</code> 分类下,排序的顺序依次为:<code>文章1 > 文章2 > 文章3</code></p>\n<h2 id=\"status\"><a href=\"#status\" class=\"headerlink\" title=\"status\"></a>status</h2><p>用于区分文章的状态,同时利用文章分类列表的<code>筛选</code>,进行快速筛选,Cosy 主题内置了 4 种状态</p>\n<ul>\n<li>done:完成</li>\n<li>doing:进行中</li>\n<li>todo:待办</li>\n<li>other:废弃</li>\n</ul>\n<p>例如:</p>\n<pre class=\"line-numbers language-markdown\" data-language=\"markdown\"><code class=\"language-markdown\"><span class=\"token front-matter-block\"><span class=\"token punctuation\">---</span>\n<span class=\"token front-matter yaml language-yaml\"><span class=\"token key atrule\">title</span><span class=\"token punctuation\">:</span> 文章1\n<span class=\"token key atrule\">categories</span><span class=\"token punctuation\">:</span>\n<span class=\"token punctuation\">-</span> javascript\n<span class=\"token key atrule\">status</span><span class=\"token punctuation\">:</span> done</span>\n<span class=\"token punctuation\">---</span></span><span aria-hidden=\"true\" class=\"line-numbers-rows\"><span></span><span></span><span></span><span></span><span></span><span></span></span></code></pre>\n\n<h1 id=\"自定义页面\"><a href=\"#自定义页面\" class=\"headerlink\" title=\"自定义页面\"></a>自定义页面</h1><p>Hexo 使用 Markdown(或其他渲染引擎)解析你的文章,并生成静态文件以快速加载。除了默认生成的文章和归档页面之外,Hexo 还允许你创建自定义页面。</p>\n<h2 id=\"Roadmap路线图\"><a href=\"#Roadmap路线图\" class=\"headerlink\" title=\"Roadmap路线图\"></a>Roadmap路线图</h2><p>创建页面,你可以使用命令</p>\n<pre class=\"line-numbers language-bash\" data-language=\"bash\"><code class=\"language-bash\">hexo new page roadmap<span aria-hidden=\"true\" class=\"line-numbers-rows\"><span></span></span></code></pre>\n\n<p>成功后在 <code>source/</code> 文件夹下会生成一个新的文件夹 <code>/roadmap/index.md</code></p>\n<p>你可以参照此模板,进行配置,参数说明:</p>\n<ul>\n<li>title: roadmap页面 html 的标题</li>\n<li>initYear: 默认显示的年份</li>\n</ul>\n<pre class=\"line-numbers language-markdown\" data-language=\"markdown\"><code class=\"language-markdown\"><span class=\"token front-matter-block\"><span class=\"token punctuation\">---</span>\n<span class=\"token front-matter yaml language-yaml\"><span class=\"token key atrule\">title</span><span class=\"token punctuation\">:</span> 陈不渡 <span class=\"token punctuation\">-</span> roadmap\n<span class=\"token key atrule\">layout</span><span class=\"token punctuation\">:</span> roadmap\n<span class=\"token key atrule\">initYear</span><span class=\"token punctuation\">:</span> <span class=\"token number\">2023</span>\n<span class=\"token key atrule\">years</span><span class=\"token punctuation\">:</span>\n <span class=\"token key atrule\">2022</span><span class=\"token punctuation\">:</span>\n <span class=\"token punctuation\">-</span> <span class=\"token key atrule\">title</span><span class=\"token punctuation\">:</span> 读书\n <span class=\"token key atrule\">start</span><span class=\"token punctuation\">:</span> 01<span class=\"token punctuation\">-</span><span class=\"token number\">01</span>\n <span class=\"token key atrule\">end</span><span class=\"token punctuation\">:</span> 1<span class=\"token punctuation\">-</span><span class=\"token number\">5</span>\n <span class=\"token punctuation\">-</span> <span class=\"token key atrule\">title</span><span class=\"token punctuation\">:</span> 还是读书\n <span class=\"token key atrule\">start</span><span class=\"token punctuation\">:</span> 02<span class=\"token punctuation\">-</span><span class=\"token number\">01</span>\n <span class=\"token key atrule\">end</span><span class=\"token punctuation\">:</span> 05<span class=\"token punctuation\">-</span><span class=\"token number\">30</span>\n <span class=\"token key atrule\">2023</span><span class=\"token punctuation\">:</span>\n <span class=\"token punctuation\">-</span> <span class=\"token key atrule\">title</span><span class=\"token punctuation\">:</span> 越陌度阡\n <span class=\"token key atrule\">start</span><span class=\"token punctuation\">:</span> 01<span class=\"token punctuation\">-</span><span class=\"token number\">01</span>\n <span class=\"token key atrule\">end</span><span class=\"token punctuation\">:</span> 1<span class=\"token punctuation\">-</span><span class=\"token number\">2</span>\n <span class=\"token punctuation\">-</span> <span class=\"token key atrule\">title</span><span class=\"token punctuation\">:</span> 枉用相存\n <span class=\"token key atrule\">start</span><span class=\"token punctuation\">:</span> 02<span class=\"token punctuation\">-</span><span class=\"token number\">01</span>\n <span class=\"token key atrule\">end</span><span class=\"token punctuation\">:</span> 06<span class=\"token punctuation\">-</span><span class=\"token number\">30</span>\n <span class=\"token punctuation\">-</span> <span class=\"token key atrule\">title</span><span class=\"token punctuation\">:</span> 短歌行\n <span class=\"token key atrule\">start</span><span class=\"token punctuation\">:</span> 10<span class=\"token punctuation\">-</span><span class=\"token number\">26</span>\n <span class=\"token key atrule\">end</span><span class=\"token punctuation\">:</span> 10<span class=\"token punctuation\">-</span><span class=\"token number\">31</span>\n <span class=\"token key atrule\">content</span><span class=\"token punctuation\">:</span> 对酒当歌,人生几何!譬如朝露,去日苦多。慨当以慷,忧思难忘。何以解忧?唯有杜康。青青子衿,悠悠我心。但为君故,沉吟至今。呦呦鹿鸣,食野之苹。\n <span class=\"token punctuation\">-</span> <span class=\"token key atrule\">title</span><span class=\"token punctuation\">:</span> 声律启蒙\n <span class=\"token key atrule\">start</span><span class=\"token punctuation\">:</span> 11<span class=\"token punctuation\">-</span><span class=\"token number\">01</span>\n <span class=\"token key atrule\">end</span><span class=\"token punctuation\">:</span> 11<span class=\"token punctuation\">-</span><span class=\"token number\">31</span>\n <span class=\"token key atrule\">content</span><span class=\"token punctuation\">:</span> 花开红锦绣,水漾碧琉璃。去妇因探邻舍枣,出妻为种后园葵</span>\n<span class=\"token punctuation\">---</span></span><span aria-hidden=\"true\" class=\"line-numbers-rows\"><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span></span></code></pre>\n\n<h2 id=\"Resume简历页面\"><a href=\"#Resume简历页面\" class=\"headerlink\" title=\"Resume简历页面\"></a>Resume简历页面</h2><p>创建页面,你可以使用命令</p>\n<pre class=\"line-numbers language-bash\" data-language=\"bash\"><code class=\"language-bash\">hexo new page resume<span aria-hidden=\"true\" class=\"line-numbers-rows\"><span></span></span></code></pre>\n\n<p>成功后在 <code>source/</code> 文件夹下会生成一个新的文件夹 <code>/resume/index.md</code></p>\n<p>你可以参照此模板,进行配置,参数说明:</p>\n<ul>\n<li>title: resume 页面 html 的标题</li>\n<li>avatar: 头像图片的地址</li>\n</ul>\n<pre class=\"line-numbers language-markdown\" data-language=\"markdown\"><code class=\"language-markdown\"><span class=\"token front-matter-block\"><span class=\"token punctuation\">---</span>\n<span class=\"token front-matter yaml language-yaml\"><span class=\"token key atrule\">title</span><span class=\"token punctuation\">:</span> resume\n<span class=\"token key atrule\">layout</span><span class=\"token punctuation\">:</span> resume\n<span class=\"token key atrule\">avatar</span><span class=\"token punctuation\">:</span> /img/avatar.png\n<span class=\"token key atrule\">name</span><span class=\"token punctuation\">:</span> Hi<span class=\"token tag\">!</span> Mozzie\n<span class=\"token key atrule\">role</span><span class=\"token punctuation\">:</span> Full Stack\n<span class=\"token key atrule\">email</span><span class=\"token punctuation\">:</span> himozzie@gmail.com\n<span class=\"token key atrule\">phone</span><span class=\"token punctuation\">:</span> +86 180<span class=\"token punctuation\">-</span>xxxx<span class=\"token punctuation\">-</span>xxx\n<span class=\"token key atrule\">birth</span><span class=\"token punctuation\">:</span> Jan 21<span class=\"token punctuation\">,</span> <span class=\"token number\">1994</span>\n<span class=\"token key atrule\">location</span><span class=\"token punctuation\">:</span> Nanjing<span class=\"token punctuation\">,</span> China\n<span class=\"token key atrule\">social</span><span class=\"token punctuation\">:</span>\n <span class=\"token punctuation\">-</span> <span class=\"token key atrule\">name</span><span class=\"token punctuation\">:</span> github\n <span class=\"token key atrule\">link</span><span class=\"token punctuation\">:</span> https<span class=\"token punctuation\">:</span>//github.com/17px\n <span class=\"token key atrule\">icon</span><span class=\"token punctuation\">:</span> svg\n\n<span class=\"token key atrule\">about</span><span class=\"token punctuation\">:</span>\n <span class=\"token punctuation\">-</span> My job is to build your website so that it is functional and user<span class=\"token punctuation\">-</span>friendly but at the same time attractive. \n <span class=\"token punctuation\">-</span> Moreover<span class=\"token punctuation\">,</span> I add personal touch to your product and make sure that is eye<span class=\"token punctuation\">-</span>catching and easy to use. My aim is to bring across your message and identity in the most creative way. I created web design for many famous brand companies.\n\n<span class=\"token key atrule\">skill</span><span class=\"token punctuation\">:</span>\n <span class=\"token punctuation\">-</span> Familiar with Node<span class=\"token punctuation\">,</span> with backend development capabilities<span class=\"token punctuation\">,</span> experience in individual application projects such as SpringBoot<span class=\"token punctuation\">,</span> Egg<span class=\"token punctuation\">,</span> Koa2<span class=\"token punctuation\">,</span> and Midway<span class=\"token punctuation\">,</span> and experience in Nestjs microservice application projects\n <span class=\"token punctuation\">-</span> Having experience in Monorepo engineering and possessing the ability to separate the front and rear ends of a single unit and apply DevOps\n <span class=\"token punctuation\">-</span> Familiar with three. js<span class=\"token punctuation\">,</span> familiar with Vtk. js<span class=\"token punctuation\">,</span> with development experience in medical 3D front<span class=\"token punctuation\">-</span>end and graphics related fields\n <span class=\"token punctuation\">-</span> Master basic Linux commands and understand the basic use of Nginx and Docker\n\n<span class=\"token key atrule\">education</span><span class=\"token punctuation\">:</span>\n <span class=\"token punctuation\">-</span> <span class=\"token key atrule\">school</span><span class=\"token punctuation\">:</span> University School of the Arts\n <span class=\"token key atrule\">time</span><span class=\"token punctuation\">:</span> 2012<span class=\"token punctuation\">-</span><span class=\"token number\">2016</span>\n\n<span class=\"token key atrule\">workExp</span><span class=\"token punctuation\">:</span>\n <span class=\"token punctuation\">-</span> <span class=\"token key atrule\">inc</span><span class=\"token punctuation\">:</span> Creative Director\n <span class=\"token key atrule\">time</span><span class=\"token punctuation\">:</span> 2021.09 ~ 至今\n <span class=\"token punctuation\">-</span> <span class=\"token key atrule\">inc</span><span class=\"token punctuation\">:</span> Web Designer\n <span class=\"token key atrule\">time</span><span class=\"token punctuation\">:</span> 2021.01 ~ 2021.09\n\n<span class=\"token key atrule\">projectExp</span><span class=\"token punctuation\">:</span>\n <span class=\"token punctuation\">-</span> <span class=\"token key atrule\">name</span><span class=\"token punctuation\">:</span> PC/React • Annotation<span class=\"token punctuation\">,</span> Algorithm Data Center\n <span class=\"token key atrule\">desc</span><span class=\"token punctuation\">:</span> This is a xxx system. It mainly includes a b c function. I am mainly responsible for the development and maintenance of the x<span class=\"token punctuation\">,</span> y<span class=\"token punctuation\">,</span> and z modules.\n\n <span class=\"token key atrule\">list</span><span class=\"token punctuation\">:</span>\n <span class=\"token punctuation\">-</span> Using pnpm workspace to manage multiple code repositories in Monorepo<span class=\"token punctuation\">,</span> supporting the coexistence of multiple frameworks<span class=\"token punctuation\">,</span> and sharing common component libraries and capabilities\n <span class=\"token punctuation\">-</span> Use Rollup to package some functional capabilities (such as a b) on your own<span class=\"token punctuation\">,</span> which can be used for both browsers and node.js to achieve code isomorphism\n <span class=\"token punctuation\">-</span> Develop the system server using Nest.js and use it for the microservice system of the project\n\n <span class=\"token punctuation\">-</span> <span class=\"token key atrule\">name</span><span class=\"token punctuation\">:</span> PC/React • Tavigator Aortic Root/Peripheral\n <span class=\"token key atrule\">desc</span><span class=\"token punctuation\">:</span> This is a xxx system. It mainly includes a b c function. I am mainly responsible for the development and maintenance of the x<span class=\"token punctuation\">,</span> y<span class=\"token punctuation\">,</span> and z modules.\n \n <span class=\"token key atrule\">list</span><span class=\"token punctuation\">:</span>\n <span class=\"token punctuation\">-</span> Using pnpm workspace to manage multiple code repositories in Monorepo<span class=\"token punctuation\">,</span> supporting the coexistence of multiple frameworks<span class=\"token punctuation\">,</span> and sharing common component libraries and capabilities\n <span class=\"token punctuation\">-</span> Use Rollup to package some functional capabilities (such as a b) on your own<span class=\"token punctuation\">,</span> which can be used for both browsers and node.js to achieve code isomorphism\n <span class=\"token punctuation\">-</span> Develop the system server using Nest.js and use it for the microservice system of the project</span>\n\n<span class=\"token punctuation\">---</span></span><span aria-hidden=\"true\" class=\"line-numbers-rows\"><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span></span></code></pre>","site":{"data":{}},"excerpt":"","more":"<h1 id=\"Hexo-安装主题\"><a href=\"#Hexo-安装主题\" class=\"headerlink\" title=\"Hexo 安装主题\"></a>Hexo 安装主题</h1><p><code>Hexo</code> 主题的安装方式非常简单,只需将主题 <code>Hexo-theme-cosy</code> 复制目录的 <code>themes</code> 目录下,然后在 <code>Hexo</code> 的 <code>_config.yml</code> 中修改下主题配置即可</p>\n<pre class=\"line-numbers language-yaml\" data-language=\"yaml\"><code class=\"language-yaml\"><span class=\"token comment\"># 找到 theme 配置项</span>\n<span class=\"token key atrule\">theme</span><span class=\"token punctuation\">:</span> Hexo<span class=\"token punctuation\">-</span>theme<span class=\"token punctuation\">-</span>cosy<span aria-hidden=\"true\" class=\"line-numbers-rows\"><span></span><span></span></span></code></pre>\n\n<h2 id=\"获取-Cosy\"><a href=\"#获取-Cosy\" class=\"headerlink\" title=\"获取 Cosy\"></a>获取 Cosy</h2><ul>\n<li>进入 <a href=\"https://github.com/17px/hexo-theme-cosy/tree/main\">Cosy 代码仓库</a>,了解最新的主题开发进度</li>\n<li>在 <a href=\"https://github.com/17px/hexo-theme-cosy/releases\">发布页面</a> 下载 <code>hexo-theme-cosy.zip</code></li>\n<li>解压至站点的 <code>themes</code> 目录下</li>\n<li>在 Hexo 的 <code>_config.yml</code> 中启用</li>\n</ul>\n<h1 id=\"hexo配置\"><a href=\"#hexo配置\" class=\"headerlink\" title=\"hexo配置\"></a>hexo配置</h1><p>在 <code>Hexo</code> 的 <code>_config.yml</code> 中调整</p>\n<h2 id=\"基础配置\"><a href=\"#基础配置\" class=\"headerlink\" title=\"基础配置\"></a>基础配置</h2><pre class=\"line-numbers language-yaml\" data-language=\"yaml\"><code class=\"language-yaml\"><span class=\"token comment\"># 网页标题</span>\n<span class=\"token key atrule\">title</span><span class=\"token punctuation\">:</span> 17px blog\n<span class=\"token comment\"># 侧边栏顶部显示</span>\n<span class=\"token key atrule\">subtitle</span><span class=\"token punctuation\">:</span> <span class=\"token string\">\"Mozzie\"</span>\n<span class=\"token comment\"># 用于SEO的html元描述</span>\n<span class=\"token key atrule\">description</span><span class=\"token punctuation\">:</span> <span class=\"token string\">\"\"</span>\n<span class=\"token comment\"># 用于SEO的html关键字</span>\n<span class=\"token key atrule\">keywords</span><span class=\"token punctuation\">:</span>\n<span class=\"token comment\"># 文章版权声明显示作者名称</span>\n<span class=\"token key atrule\">author</span><span class=\"token punctuation\">:</span> Mozzie\n\n<span class=\"token comment\"># 在此处设置您的网站url</span>\n<span class=\"token key atrule\">url</span><span class=\"token punctuation\">:</span> https<span class=\"token punctuation\">:</span>//mozzie.cn<span aria-hidden=\"true\" class=\"line-numbers-rows\"><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span></span></code></pre>\n\n<h2 id=\"语言\"><a href=\"#语言\" class=\"headerlink\" title=\"语言\"></a>语言</h2><p>你可以在 <code>hexo-theme-cosy/languages</code> 中找到不同的语言文件,如果想切换语言,在配置文件中,填入 <code>yml</code> 的文件名</p>\n<pre class=\"line-numbers language-yaml\" data-language=\"yaml\"><code class=\"language-yaml\"><span class=\"token key atrule\">language</span><span class=\"token punctuation\">:</span> en<span aria-hidden=\"true\" class=\"line-numbers-rows\"><span></span></span></code></pre>\n\n<h2 id=\"文章语法高亮\"><a href=\"#文章语法高亮\" class=\"headerlink\" title=\"文章语法高亮\"></a>文章语法高亮</h2><p>关闭hexo默认的highlight.js语法高亮</p>\n<pre class=\"line-numbers language-yaml\" data-language=\"yaml\"><code class=\"language-yaml\"><span class=\"token key atrule\">highlight</span><span class=\"token punctuation\">:</span>\n <span class=\"token key atrule\">enable</span><span class=\"token punctuation\">:</span> <span class=\"token boolean important\">false</span>\n <span class=\"token key atrule\">line_number</span><span class=\"token punctuation\">:</span> <span class=\"token boolean important\">true</span>\n <span class=\"token key atrule\">auto_detect</span><span class=\"token punctuation\">:</span> <span class=\"token boolean important\">false</span>\n <span class=\"token key atrule\">tab_replace</span><span class=\"token punctuation\">:</span> <span class=\"token string\">\"\"</span>\n <span class=\"token key atrule\">wrap</span><span class=\"token punctuation\">:</span> <span class=\"token boolean important\">true</span>\n <span class=\"token key atrule\">hljs</span><span class=\"token punctuation\">:</span> <span class=\"token boolean important\">false</span>\n\n<span class=\"token key atrule\">prismjs</span><span class=\"token punctuation\">:</span>\n <span class=\"token key atrule\">enable</span><span class=\"token punctuation\">:</span> <span class=\"token boolean important\">true</span>\n <span class=\"token key atrule\">preprocess</span><span class=\"token punctuation\">:</span> <span class=\"token boolean important\">true</span>\n <span class=\"token key atrule\">line_number</span><span class=\"token punctuation\">:</span> <span class=\"token boolean important\">true</span>\n <span class=\"token key atrule\">line_threshold</span><span class=\"token punctuation\">:</span> <span class=\"token number\">0</span>\n <span class=\"token key atrule\">tab_replace</span><span class=\"token punctuation\">:</span> <span class=\"token string\">\"\"</span><span aria-hidden=\"true\" class=\"line-numbers-rows\"><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span></span></code></pre>\n\n<h1 id=\"Cosy-主题配置\"><a href=\"#Cosy-主题配置\" class=\"headerlink\" title=\"Cosy 主题配置\"></a>Cosy 主题配置</h1><p>下面的配置基于 <code>Hexo-theme-cosy</code> 下的 <code>_config.yml</code> </p>\n<h2 id=\"文章分类图标\"><a href=\"#文章分类图标\" class=\"headerlink\" title=\"文章分类图标\"></a>文章分类图标</h2><p>按照顺序,依次设置 <code>svg</code> 图标,可以在 <a href=\"https://www.xicons.org/\">xicon</a> 方面的获取丰富的图标</p>\n<pre class=\"line-numbers language-yaml\" data-language=\"yaml\"><code class=\"language-yaml\"><span class=\"token key atrule\">postCategoryIcons</span><span class=\"token punctuation\">:</span>\n <span class=\"token punctuation\">-</span> <svg<span class=\"token punctuation\">></span><span class=\"token punctuation\">...</span></svg<span class=\"token punctuation\">></span>\n <span class=\"token punctuation\">-</span> <svg<span class=\"token punctuation\">></span><span class=\"token punctuation\">...</span></svg<span class=\"token punctuation\">></span>\n <span class=\"token punctuation\">-</span> <svg<span class=\"token punctuation\">></span><span class=\"token punctuation\">...</span></svg<span class=\"token punctuation\">></span><span aria-hidden=\"true\" class=\"line-numbers-rows\"><span></span><span></span><span></span><span></span></span></code></pre>\n\n<h2 id=\"网站图标-favicon\"><a href=\"#网站图标-favicon\" class=\"headerlink\" title=\"网站图标 favicon\"></a>网站图标 favicon</h2><ul>\n<li>支持 <code>svg</code></li>\n<li>支持 <code>图片url</code>,如:<code>/img/favicon.png</code></li>\n</ul>\n<pre class=\"line-numbers language-yaml\" data-language=\"yaml\"><code class=\"language-yaml\"><span class=\"token key atrule\">favicon</span><span class=\"token punctuation\">:</span> <span class=\"token string\">''</span><span aria-hidden=\"true\" class=\"line-numbers-rows\"><span></span></span></code></pre>\n\n<h2 id=\"ICP备案号\"><a href=\"#ICP备案号\" class=\"headerlink\" title=\"ICP备案号\"></a>ICP备案号</h2><p>😁 如不需要备案号,可直接删除</p>\n<pre class=\"line-numbers language-yaml\" data-language=\"yaml\"><code class=\"language-yaml\"><span class=\"token key atrule\">icp</span><span class=\"token punctuation\">:</span> 苏ICP备xxxxxxx号<span class=\"token punctuation\">-</span>x<span aria-hidden=\"true\" class=\"line-numbers-rows\"><span></span></span></code></pre>\n\n<h2 id=\"首页底部文字\"><a href=\"#首页底部文字\" class=\"headerlink\" title=\"首页底部文字\"></a>首页底部文字</h2><p>😁 如不需要,可直接删除,或者改为 <code>false</code> </p>\n<pre class=\"line-numbers language-yaml\" data-language=\"yaml\"><code class=\"language-yaml\"><span class=\"token key atrule\">motto</span><span class=\"token punctuation\">:</span> <span class=\"token boolean important\">false</span><span aria-hidden=\"true\" class=\"line-numbers-rows\"><span></span></span></code></pre>\n\n<h2 id=\"文章版权申明\"><a href=\"#文章版权申明\" class=\"headerlink\" title=\"文章版权申明\"></a>文章版权申明</h2><p>默认开启,当 <code>enable: false</code>,默认关闭</p>\n<pre class=\"line-numbers language-yaml\" data-language=\"yaml\"><code class=\"language-yaml\"><span class=\"token key atrule\">postCopyright</span><span class=\"token punctuation\">:</span>\n <span class=\"token key atrule\">enable</span><span class=\"token punctuation\">:</span> <span class=\"token boolean important\">true</span>\n <span class=\"token key atrule\">license</span><span class=\"token punctuation\">:</span> CC BY<span class=\"token punctuation\">-</span>NC<span class=\"token punctuation\">-</span>SA 4.0\n <span class=\"token key atrule\">license_url</span><span class=\"token punctuation\">:</span> https<span class=\"token punctuation\">:</span>//creativecommons.org/licenses/by<span class=\"token punctuation\">-</span>nc<span class=\"token punctuation\">-</span>sa/4.0/<span aria-hidden=\"true\" class=\"line-numbers-rows\"><span></span><span></span><span></span><span></span></span></code></pre>\n\n<h2 id=\"katex-数学公式\"><a href=\"#katex-数学公式\" class=\"headerlink\" title=\"katex 数学公式\"></a>katex 数学公式</h2><p>可自行配置 <code>cdn</code></p>\n<pre class=\"line-numbers language-yaml\" data-language=\"yaml\"><code class=\"language-yaml\"><span class=\"token key atrule\">katex</span><span class=\"token punctuation\">:</span>\n <span class=\"token key atrule\">enable</span><span class=\"token punctuation\">:</span> <span class=\"token boolean important\">true</span>\n <span class=\"token key atrule\">jsCdn</span><span class=\"token punctuation\">:</span> //cdn.jsdelivr.net/npm/katex@0.13.18/dist/katex.min.js\n <span class=\"token key atrule\">cssCdn</span><span class=\"token punctuation\">:</span> //cdn.jsdelivr.net/npm/katex@0.13.18/dist/katex.min.css<span aria-hidden=\"true\" class=\"line-numbers-rows\"><span></span><span></span><span></span><span></span></span></code></pre>\n\n<h2 id=\"mermaid-流程图\"><a href=\"#mermaid-流程图\" class=\"headerlink\" title=\"mermaid 流程图\"></a>mermaid 流程图</h2><p>在撰写时,请使用 <code>{% mermaid %}` 和 `{% endmermaid %}</code> 包裹</p>\n<pre class=\"line-numbers language-markdown\" data-language=\"markdown\"><code class=\"language-markdown\">{% mermaid %}\ngraph TD;\n A --> B;\n A --> C;\n B --> D;\n C --> D;\n{% endmermaid %}<span aria-hidden=\"true\" class=\"line-numbers-rows\"><span></span><span></span><span></span><span></span><span></span><span></span><span></span></span></code></pre>\n\n<p>相应配置如下</p>\n<pre class=\"line-numbers language-yaml\" data-language=\"yaml\"><code class=\"language-yaml\"><span class=\"token key atrule\">mermaid</span><span class=\"token punctuation\">:</span>\n <span class=\"token key atrule\">enable</span><span class=\"token punctuation\">:</span> <span class=\"token boolean important\">true</span>\n <span class=\"token key atrule\">cdn</span><span class=\"token punctuation\">:</span> //cdn.jsdelivr.net/npm/mermaid@10.4.0/dist/mermaid.min.js<span aria-hidden=\"true\" class=\"line-numbers-rows\"><span></span><span></span><span></span></span></code></pre>\n\n<h2 id=\"valine-文章评论\"><a href=\"#valine-文章评论\" class=\"headerlink\" title=\"valine 文章评论\"></a>valine 文章评论</h2><p>首先需要注册 <code>LeanCloud</code> 国际区用户,创建数据库</p>\n<p>请根据相关地区法规,酌情</p>\n<pre class=\"line-numbers language-yaml\" data-language=\"yaml\"><code class=\"language-yaml\"><span class=\"token key atrule\">valine</span><span class=\"token punctuation\">:</span>\n <span class=\"token key atrule\">enable</span><span class=\"token punctuation\">:</span> <span class=\"token boolean important\">true</span>\n <span class=\"token comment\"># 替换</span>\n <span class=\"token key atrule\">appId</span><span class=\"token punctuation\">:</span> appId\n <span class=\"token comment\"># 替换</span>\n <span class=\"token key atrule\">appKey</span><span class=\"token punctuation\">:</span> appKey\n <span class=\"token key atrule\">avatar</span><span class=\"token punctuation\">:</span> monsterid\n <span class=\"token key atrule\">cdn</span><span class=\"token punctuation\">:</span> //unpkg.com/valine@latest/dist/Valine.min.js\n <span class=\"token comment\"># 替换</span>\n <span class=\"token key atrule\">serverURLs</span><span class=\"token punctuation\">:</span> //xxxxxxxx.api.lncldglobal.com<span aria-hidden=\"true\" class=\"line-numbers-rows\"><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span></span></code></pre>\n\n<h1 id=\"algolia搜索\"><a href=\"#algolia搜索\" class=\"headerlink\" title=\"algolia搜索\"></a>algolia搜索</h1><p>博客自带的本地搜索,基于前端开发,存在或多或少的问题,建议换成 <code>algolia</code>,免费账户 总共有 <code>10,000</code> 条记录,每月有 <code>100,000</code> 的操作数</p>\n<h2 id=\"注册-amp-获取-Key\"><a href=\"#注册-amp-获取-Key\" class=\"headerlink\" title=\"注册 & 获取 Key\"></a>注册 & 获取 Key</h2><ol>\n<li><p>创建一个新的 <code>Index</code>,例如 <code>hex-blog</code></p>\n</li>\n<li><p>复制并保存:</p>\n</li>\n</ol>\n<ul>\n<li>Application ID</li>\n<li>Search-Only API Key</li>\n<li>Admin API Key</li>\n<li>Usage API Key</li>\n</ul>\n<p><img src=\"/img/algolia-api-keys.png\" alt=\"API Keys\"></p>\n<ol start=\"3\">\n<li>替换配置</li>\n</ol>\n<p>在 <code>Hexo</code> 的 <code>_config.yml</code> 中加入</p>\n<pre class=\"line-numbers language-yaml\" data-language=\"yaml\"><code class=\"language-yaml\"><span class=\"token key atrule\">algolia</span><span class=\"token punctuation\">:</span>\n <span class=\"token comment\"># 替换</span>\n <span class=\"token key atrule\">appId</span><span class=\"token punctuation\">:</span> Application ID\n <span class=\"token comment\"># 替换</span>\n <span class=\"token key atrule\">apiKey</span><span class=\"token punctuation\">:</span> Usage API Key\n <span class=\"token comment\"># 请勿泄露,用于上报,替换</span>\n <span class=\"token key atrule\">adminApiKey</span><span class=\"token punctuation\">:</span> Admin API Key\n <span class=\"token comment\"># 替换</span>\n <span class=\"token key atrule\">SearchOnlyAPIKey</span><span class=\"token punctuation\">:</span> Search<span class=\"token punctuation\">-</span>Only API Key\n <span class=\"token key atrule\">chunkSize</span><span class=\"token punctuation\">:</span> <span class=\"token number\">5000</span>\n <span class=\"token comment\"># 替换</span>\n <span class=\"token key atrule\">indexName</span><span class=\"token punctuation\">:</span> hex<span class=\"token punctuation\">-</span>blog\n <span class=\"token key atrule\">fields</span><span class=\"token punctuation\">:</span>\n <span class=\"token punctuation\">-</span> content<span class=\"token punctuation\">:</span>strip\n <span class=\"token punctuation\">-</span> categories\n <span class=\"token punctuation\">-</span> date\n <span class=\"token punctuation\">-</span> permalink\n <span class=\"token punctuation\">-</span> slug\n <span class=\"token punctuation\">-</span> tags\n <span class=\"token punctuation\">-</span> title<span aria-hidden=\"true\" class=\"line-numbers-rows\"><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span></span></code></pre>\n\n<h2 id=\"安装-hexo-algoliasearch\"><a href=\"#安装-hexo-algoliasearch\" class=\"headerlink\" title=\"安装 hexo-algoliasearch\"></a>安装 hexo-algoliasearch</h2><p>这是 Hexo 博客帖子索引插件,自动化提交索引到 Algolia</p>\n<blockquote>\n<p>如出遇到问题,可阅读 <a href=\"https://www.npmjs.com/package/hexo-algoliasearch\">hexo-algoliasearch 仓库</a> 最新说明</p>\n</blockquote>\n<p>安装命令:</p>\n<pre class=\"line-numbers language-bash\" data-language=\"bash\"><code class=\"language-bash\"><span class=\"token function\">npm</span> <span class=\"token function\">install</span> hexo-algoliasearch <span class=\"token parameter variable\">--save</span><span aria-hidden=\"true\" class=\"line-numbers-rows\"><span></span></span></code></pre>\n\n<h2 id=\"使用-algolia\"><a href=\"#使用-algolia\" class=\"headerlink\" title=\"使用 algolia\"></a>使用 algolia</h2><p>在每次博客发布之前,进行索引上传的操作,命令通常如下</p>\n<pre class=\"line-numbers language-bash\" data-language=\"bash\"><code class=\"language-bash\">hexo clean\nhexo generate\nhexo algolia<span aria-hidden=\"true\" class=\"line-numbers-rows\"><span></span><span></span><span></span></span></code></pre>\n\n\n<h1 id=\"🇨🇳-和风天气-Widget\"><a href=\"#🇨🇳-和风天气-Widget\" class=\"headerlink\" title=\"🇨🇳 和风天气 Widget\"></a>🇨🇳 和风天气 Widget</h1><p>Cosy 主要针对国内用户,在首页集成了和风天气的卡片,通过 <a href=\"https://dev.qweather.com/docs/start/\">和风天气开发服务</a> 注册</p>\n<p>注册完成后,在配置中填入你的 <code>appKey</code> 和 <code>cityCode(城市代码)</code></p>\n<pre class=\"line-numbers language-yaml\" data-language=\"yaml\"><code class=\"language-yaml\"><span class=\"token key atrule\">weather</span><span class=\"token punctuation\">:</span>\n <span class=\"token key atrule\">enable</span><span class=\"token punctuation\">:</span> <span class=\"token boolean important\">true</span>\n <span class=\"token comment\"># 替换</span>\n <span class=\"token key atrule\">cityCode</span><span class=\"token punctuation\">:</span> cityCode\n <span class=\"token key atrule\">appKey</span><span class=\"token punctuation\">:</span> appKey<span aria-hidden=\"true\" class=\"line-numbers-rows\"><span></span><span></span><span></span><span></span><span></span></span></code></pre>\n\n<p>其中 <code>cityCode</code> 可以在 <a href=\"https://github.com/qwd/LocationList\">官方的地区列表仓库</a> 中的 <code>China-City-List-latest.csv</code> 找到你所在城市的 <code>cityCode</code></p>\n<h1 id=\"前置元数据\"><a href=\"#前置元数据\" class=\"headerlink\" title=\"前置元数据\"></a>前置元数据</h1><p>在 Hexo 的 Markdown 文件中,一个典型的 YAML 格式的 <code>Front Matter</code> 可能会是这样的:</p>\n<pre class=\"line-numbers language-markdown\" data-language=\"markdown\"><code class=\"language-markdown\"><span class=\"token front-matter-block\"><span class=\"token punctuation\">---</span>\n<span class=\"token front-matter yaml language-yaml\"><span class=\"token key atrule\">title</span><span class=\"token punctuation\">:</span> 我的文章标题\n<span class=\"token key atrule\">categories</span><span class=\"token punctuation\">:</span>\n<span class=\"token punctuation\">-</span> javascript\n<span class=\"token key atrule\">tags</span><span class=\"token punctuation\">:</span> \n<span class=\"token punctuation\">-</span> 编程\n<span class=\"token punctuation\">-</span> JavaScript</span>\n<span class=\"token punctuation\">---</span></span><span aria-hidden=\"true\" class=\"line-numbers-rows\"><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span></span></code></pre>\n\n<h2 id=\"top\"><a href=\"#top\" class=\"headerlink\" title=\"top\"></a>top</h2><p>实现文章置顶的功能,给定一个数值,可以进行排序,设定了 <code>top</code> 元数据的文章,会在分类列表中,使用 📌 标记</p>\n<p>例如有三篇文章:</p>\n<ul>\n<li>文章1</li>\n</ul>\n<pre class=\"line-numbers language-markdown\" data-language=\"markdown\"><code class=\"language-markdown\"><span class=\"token front-matter-block\"><span class=\"token punctuation\">---</span>\n<span class=\"token front-matter yaml language-yaml\"><span class=\"token key atrule\">title</span><span class=\"token punctuation\">:</span> 文章1\n<span class=\"token key atrule\">top</span><span class=\"token punctuation\">:</span> <span class=\"token number\">0</span>\n<span class=\"token key atrule\">categories</span><span class=\"token punctuation\">:</span>\n<span class=\"token punctuation\">-</span> javascript\n<span class=\"token key atrule\">tags</span><span class=\"token punctuation\">:</span> \n<span class=\"token punctuation\">-</span> 编程\n<span class=\"token punctuation\">-</span> JavaScript</span>\n<span class=\"token punctuation\">---</span></span><span aria-hidden=\"true\" class=\"line-numbers-rows\"><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span></span></code></pre>\n\n<ul>\n<li>文章2</li>\n</ul>\n<pre class=\"line-numbers language-markdown\" data-language=\"markdown\"><code class=\"language-markdown\"><span class=\"token front-matter-block\"><span class=\"token punctuation\">---</span>\n<span class=\"token front-matter yaml language-yaml\"><span class=\"token key atrule\">title</span><span class=\"token punctuation\">:</span> 文章2\n<span class=\"token key atrule\">top</span><span class=\"token punctuation\">:</span> <span class=\"token number\">1</span>\n<span class=\"token key atrule\">categories</span><span class=\"token punctuation\">:</span>\n<span class=\"token punctuation\">-</span> javascript\n<span class=\"token key atrule\">tags</span><span class=\"token punctuation\">:</span> \n<span class=\"token punctuation\">-</span> 编程\n<span class=\"token punctuation\">-</span> JavaScript</span>\n<span class=\"token punctuation\">---</span></span><span aria-hidden=\"true\" class=\"line-numbers-rows\"><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span></span></code></pre>\n\n<ul>\n<li>文章3</li>\n</ul>\n<pre class=\"line-numbers language-markdown\" data-language=\"markdown\"><code class=\"language-markdown\"><span class=\"token front-matter-block\"><span class=\"token punctuation\">---</span>\n<span class=\"token front-matter yaml language-yaml\"><span class=\"token key atrule\">title</span><span class=\"token punctuation\">:</span> 文章3\n<span class=\"token key atrule\">categories</span><span class=\"token punctuation\">:</span>\n<span class=\"token punctuation\">-</span> javascript\n<span class=\"token key atrule\">tags</span><span class=\"token punctuation\">:</span> \n<span class=\"token punctuation\">-</span> 编程\n<span class=\"token punctuation\">-</span> JavaScript</span>\n<span class=\"token punctuation\">---</span></span><span aria-hidden=\"true\" class=\"line-numbers-rows\"><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span></span></code></pre>\n\n<p>那么在 <code>javascript</code> 分类下,排序的顺序依次为:<code>文章1 > 文章2 > 文章3</code></p>\n<h2 id=\"status\"><a href=\"#status\" class=\"headerlink\" title=\"status\"></a>status</h2><p>用于区分文章的状态,同时利用文章分类列表的<code>筛选</code>,进行快速筛选,Cosy 主题内置了 4 种状态</p>\n<ul>\n<li>done:完成</li>\n<li>doing:进行中</li>\n<li>todo:待办</li>\n<li>other:废弃</li>\n</ul>\n<p>例如:</p>\n<pre class=\"line-numbers language-markdown\" data-language=\"markdown\"><code class=\"language-markdown\"><span class=\"token front-matter-block\"><span class=\"token punctuation\">---</span>\n<span class=\"token front-matter yaml language-yaml\"><span class=\"token key atrule\">title</span><span class=\"token punctuation\">:</span> 文章1\n<span class=\"token key atrule\">categories</span><span class=\"token punctuation\">:</span>\n<span class=\"token punctuation\">-</span> javascript\n<span class=\"token key atrule\">status</span><span class=\"token punctuation\">:</span> done</span>\n<span class=\"token punctuation\">---</span></span><span aria-hidden=\"true\" class=\"line-numbers-rows\"><span></span><span></span><span></span><span></span><span></span><span></span></span></code></pre>\n\n<h1 id=\"自定义页面\"><a href=\"#自定义页面\" class=\"headerlink\" title=\"自定义页面\"></a>自定义页面</h1><p>Hexo 使用 Markdown(或其他渲染引擎)解析你的文章,并生成静态文件以快速加载。除了默认生成的文章和归档页面之外,Hexo 还允许你创建自定义页面。</p>\n<h2 id=\"Roadmap路线图\"><a href=\"#Roadmap路线图\" class=\"headerlink\" title=\"Roadmap路线图\"></a>Roadmap路线图</h2><p>创建页面,你可以使用命令</p>\n<pre class=\"line-numbers language-bash\" data-language=\"bash\"><code class=\"language-bash\">hexo new page roadmap<span aria-hidden=\"true\" class=\"line-numbers-rows\"><span></span></span></code></pre>\n\n<p>成功后在 <code>source/</code> 文件夹下会生成一个新的文件夹 <code>/roadmap/index.md</code></p>\n<p>你可以参照此模板,进行配置,参数说明:</p>\n<ul>\n<li>title: roadmap页面 html 的标题</li>\n<li>initYear: 默认显示的年份</li>\n</ul>\n<pre class=\"line-numbers language-markdown\" data-language=\"markdown\"><code class=\"language-markdown\"><span class=\"token front-matter-block\"><span class=\"token punctuation\">---</span>\n<span class=\"token front-matter yaml language-yaml\"><span class=\"token key atrule\">title</span><span class=\"token punctuation\">:</span> 陈不渡 <span class=\"token punctuation\">-</span> roadmap\n<span class=\"token key atrule\">layout</span><span class=\"token punctuation\">:</span> roadmap\n<span class=\"token key atrule\">initYear</span><span class=\"token punctuation\">:</span> <span class=\"token number\">2023</span>\n<span class=\"token key atrule\">years</span><span class=\"token punctuation\">:</span>\n <span class=\"token key atrule\">2022</span><span class=\"token punctuation\">:</span>\n <span class=\"token punctuation\">-</span> <span class=\"token key atrule\">title</span><span class=\"token punctuation\">:</span> 读书\n <span class=\"token key atrule\">start</span><span class=\"token punctuation\">:</span> 01<span class=\"token punctuation\">-</span><span class=\"token number\">01</span>\n <span class=\"token key atrule\">end</span><span class=\"token punctuation\">:</span> 1<span class=\"token punctuation\">-</span><span class=\"token number\">5</span>\n <span class=\"token punctuation\">-</span> <span class=\"token key atrule\">title</span><span class=\"token punctuation\">:</span> 还是读书\n <span class=\"token key atrule\">start</span><span class=\"token punctuation\">:</span> 02<span class=\"token punctuation\">-</span><span class=\"token number\">01</span>\n <span class=\"token key atrule\">end</span><span class=\"token punctuation\">:</span> 05<span class=\"token punctuation\">-</span><span class=\"token number\">30</span>\n <span class=\"token key atrule\">2023</span><span class=\"token punctuation\">:</span>\n <span class=\"token punctuation\">-</span> <span class=\"token key atrule\">title</span><span class=\"token punctuation\">:</span> 越陌度阡\n <span class=\"token key atrule\">start</span><span class=\"token punctuation\">:</span> 01<span class=\"token punctuation\">-</span><span class=\"token number\">01</span>\n <span class=\"token key atrule\">end</span><span class=\"token punctuation\">:</span> 1<span class=\"token punctuation\">-</span><span class=\"token number\">2</span>\n <span class=\"token punctuation\">-</span> <span class=\"token key atrule\">title</span><span class=\"token punctuation\">:</span> 枉用相存\n <span class=\"token key atrule\">start</span><span class=\"token punctuation\">:</span> 02<span class=\"token punctuation\">-</span><span class=\"token number\">01</span>\n <span class=\"token key atrule\">end</span><span class=\"token punctuation\">:</span> 06<span class=\"token punctuation\">-</span><span class=\"token number\">30</span>\n <span class=\"token punctuation\">-</span> <span class=\"token key atrule\">title</span><span class=\"token punctuation\">:</span> 短歌行\n <span class=\"token key atrule\">start</span><span class=\"token punctuation\">:</span> 10<span class=\"token punctuation\">-</span><span class=\"token number\">26</span>\n <span class=\"token key atrule\">end</span><span class=\"token punctuation\">:</span> 10<span class=\"token punctuation\">-</span><span class=\"token number\">31</span>\n <span class=\"token key atrule\">content</span><span class=\"token punctuation\">:</span> 对酒当歌,人生几何!譬如朝露,去日苦多。慨当以慷,忧思难忘。何以解忧?唯有杜康。青青子衿,悠悠我心。但为君故,沉吟至今。呦呦鹿鸣,食野之苹。\n <span class=\"token punctuation\">-</span> <span class=\"token key atrule\">title</span><span class=\"token punctuation\">:</span> 声律启蒙\n <span class=\"token key atrule\">start</span><span class=\"token punctuation\">:</span> 11<span class=\"token punctuation\">-</span><span class=\"token number\">01</span>\n <span class=\"token key atrule\">end</span><span class=\"token punctuation\">:</span> 11<span class=\"token punctuation\">-</span><span class=\"token number\">31</span>\n <span class=\"token key atrule\">content</span><span class=\"token punctuation\">:</span> 花开红锦绣,水漾碧琉璃。去妇因探邻舍枣,出妻为种后园葵</span>\n<span class=\"token punctuation\">---</span></span><span aria-hidden=\"true\" class=\"line-numbers-rows\"><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span></span></code></pre>\n\n<h2 id=\"Resume简历页面\"><a href=\"#Resume简历页面\" class=\"headerlink\" title=\"Resume简历页面\"></a>Resume简历页面</h2><p>创建页面,你可以使用命令</p>\n<pre class=\"line-numbers language-bash\" data-language=\"bash\"><code class=\"language-bash\">hexo new page resume<span aria-hidden=\"true\" class=\"line-numbers-rows\"><span></span></span></code></pre>\n\n<p>成功后在 <code>source/</code> 文件夹下会生成一个新的文件夹 <code>/resume/index.md</code></p>\n<p>你可以参照此模板,进行配置,参数说明:</p>\n<ul>\n<li>title: resume 页面 html 的标题</li>\n<li>avatar: 头像图片的地址</li>\n</ul>\n<pre class=\"line-numbers language-markdown\" data-language=\"markdown\"><code class=\"language-markdown\"><span class=\"token front-matter-block\"><span class=\"token punctuation\">---</span>\n<span class=\"token front-matter yaml language-yaml\"><span class=\"token key atrule\">title</span><span class=\"token punctuation\">:</span> resume\n<span class=\"token key atrule\">layout</span><span class=\"token punctuation\">:</span> resume\n<span class=\"token key atrule\">avatar</span><span class=\"token punctuation\">:</span> /img/avatar.png\n<span class=\"token key atrule\">name</span><span class=\"token punctuation\">:</span> Hi<span class=\"token tag\">!</span> Mozzie\n<span class=\"token key atrule\">role</span><span class=\"token punctuation\">:</span> Full Stack\n<span class=\"token key atrule\">email</span><span class=\"token punctuation\">:</span> himozzie@gmail.com\n<span class=\"token key atrule\">phone</span><span class=\"token punctuation\">:</span> +86 180<span class=\"token punctuation\">-</span>xxxx<span class=\"token punctuation\">-</span>xxx\n<span class=\"token key atrule\">birth</span><span class=\"token punctuation\">:</span> Jan 21<span class=\"token punctuation\">,</span> <span class=\"token number\">1994</span>\n<span class=\"token key atrule\">location</span><span class=\"token punctuation\">:</span> Nanjing<span class=\"token punctuation\">,</span> China\n<span class=\"token key atrule\">social</span><span class=\"token punctuation\">:</span>\n <span class=\"token punctuation\">-</span> <span class=\"token key atrule\">name</span><span class=\"token punctuation\">:</span> github\n <span class=\"token key atrule\">link</span><span class=\"token punctuation\">:</span> https<span class=\"token punctuation\">:</span>//github.com/17px\n <span class=\"token key atrule\">icon</span><span class=\"token punctuation\">:</span> svg\n\n<span class=\"token key atrule\">about</span><span class=\"token punctuation\">:</span>\n <span class=\"token punctuation\">-</span> My job is to build your website so that it is functional and user<span class=\"token punctuation\">-</span>friendly but at the same time attractive. \n <span class=\"token punctuation\">-</span> Moreover<span class=\"token punctuation\">,</span> I add personal touch to your product and make sure that is eye<span class=\"token punctuation\">-</span>catching and easy to use. My aim is to bring across your message and identity in the most creative way. I created web design for many famous brand companies.\n\n<span class=\"token key atrule\">skill</span><span class=\"token punctuation\">:</span>\n <span class=\"token punctuation\">-</span> Familiar with Node<span class=\"token punctuation\">,</span> with backend development capabilities<span class=\"token punctuation\">,</span> experience in individual application projects such as SpringBoot<span class=\"token punctuation\">,</span> Egg<span class=\"token punctuation\">,</span> Koa2<span class=\"token punctuation\">,</span> and Midway<span class=\"token punctuation\">,</span> and experience in Nestjs microservice application projects\n <span class=\"token punctuation\">-</span> Having experience in Monorepo engineering and possessing the ability to separate the front and rear ends of a single unit and apply DevOps\n <span class=\"token punctuation\">-</span> Familiar with three. js<span class=\"token punctuation\">,</span> familiar with Vtk. js<span class=\"token punctuation\">,</span> with development experience in medical 3D front<span class=\"token punctuation\">-</span>end and graphics related fields\n <span class=\"token punctuation\">-</span> Master basic Linux commands and understand the basic use of Nginx and Docker\n\n<span class=\"token key atrule\">education</span><span class=\"token punctuation\">:</span>\n <span class=\"token punctuation\">-</span> <span class=\"token key atrule\">school</span><span class=\"token punctuation\">:</span> University School of the Arts\n <span class=\"token key atrule\">time</span><span class=\"token punctuation\">:</span> 2012<span class=\"token punctuation\">-</span><span class=\"token number\">2016</span>\n\n<span class=\"token key atrule\">workExp</span><span class=\"token punctuation\">:</span>\n <span class=\"token punctuation\">-</span> <span class=\"token key atrule\">inc</span><span class=\"token punctuation\">:</span> Creative Director\n <span class=\"token key atrule\">time</span><span class=\"token punctuation\">:</span> 2021.09 ~ 至今\n <span class=\"token punctuation\">-</span> <span class=\"token key atrule\">inc</span><span class=\"token punctuation\">:</span> Web Designer\n <span class=\"token key atrule\">time</span><span class=\"token punctuation\">:</span> 2021.01 ~ 2021.09\n\n<span class=\"token key atrule\">projectExp</span><span class=\"token punctuation\">:</span>\n <span class=\"token punctuation\">-</span> <span class=\"token key atrule\">name</span><span class=\"token punctuation\">:</span> PC/React • Annotation<span class=\"token punctuation\">,</span> Algorithm Data Center\n <span class=\"token key atrule\">desc</span><span class=\"token punctuation\">:</span> This is a xxx system. It mainly includes a b c function. I am mainly responsible for the development and maintenance of the x<span class=\"token punctuation\">,</span> y<span class=\"token punctuation\">,</span> and z modules.\n\n <span class=\"token key atrule\">list</span><span class=\"token punctuation\">:</span>\n <span class=\"token punctuation\">-</span> Using pnpm workspace to manage multiple code repositories in Monorepo<span class=\"token punctuation\">,</span> supporting the coexistence of multiple frameworks<span class=\"token punctuation\">,</span> and sharing common component libraries and capabilities\n <span class=\"token punctuation\">-</span> Use Rollup to package some functional capabilities (such as a b) on your own<span class=\"token punctuation\">,</span> which can be used for both browsers and node.js to achieve code isomorphism\n <span class=\"token punctuation\">-</span> Develop the system server using Nest.js and use it for the microservice system of the project\n\n <span class=\"token punctuation\">-</span> <span class=\"token key atrule\">name</span><span class=\"token punctuation\">:</span> PC/React • Tavigator Aortic Root/Peripheral\n <span class=\"token key atrule\">desc</span><span class=\"token punctuation\">:</span> This is a xxx system. It mainly includes a b c function. I am mainly responsible for the development and maintenance of the x<span class=\"token punctuation\">,</span> y<span class=\"token punctuation\">,</span> and z modules.\n \n <span class=\"token key atrule\">list</span><span class=\"token punctuation\">:</span>\n <span class=\"token punctuation\">-</span> Using pnpm workspace to manage multiple code repositories in Monorepo<span class=\"token punctuation\">,</span> supporting the coexistence of multiple frameworks<span class=\"token punctuation\">,</span> and sharing common component libraries and capabilities\n <span class=\"token punctuation\">-</span> Use Rollup to package some functional capabilities (such as a b) on your own<span class=\"token punctuation\">,</span> which can be used for both browsers and node.js to achieve code isomorphism\n <span class=\"token punctuation\">-</span> Develop the system server using Nest.js and use it for the microservice system of the project</span>\n\n<span class=\"token punctuation\">---</span></span><span aria-hidden=\"true\" class=\"line-numbers-rows\"><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span></span></code></pre>"},{"title":"Cosy Starter Guide","top":1,"status":"doing","_content":"\n[🇨🇳 中文文档](https://mozzie.cn/2023/10/20/Cosy%20%E5%85%A5%E9%97%A8/)\n\n\n# Hexo Installation\n\nInstalling a `Hexo` theme is straightforward. Simply copy the `Hexo-theme-cosy` directory to the `themes` directory, and then modify the theme configuration in `Hexo`'s `_config.yml`.\n\n\n```yml\n# Locate the theme setting\ntheme: hexo-theme-cosy\n```\n\n## Acquiring Cosy\n\n- Visit [Cosy's code repository](https://github.com/17px/hexo-theme-cosy/tree/main) to stay updated on the latest theme developments.\n- Download `hexo-theme-cosy.zip` from the [releases page](https://github.com/17px/hexo-theme-cosy/releases).\n- Extract it into your site's `themes` directory.\n- Enable it in Hexo's `_config.yml`.\n\n# Hexo Configuration\n\nAdjust settings in `Hexo`'s `_config.yml`.\n\n## Basic Configuration\n\n```yml\n# Website title\ntitle: 17px blog\n# Sidebar header\nsubtitle: \"Mozzie\"\n# HTML meta description for SEO\ndescription: \"\"\n# HTML meta keywords for SEO\nkeywords:\n# Copyright text displaying author's name\nauthor: Mozzie\n\n# Set your website URL here\nurl: https://mozzie.cn\n```\n\n## Language Switch\n\nYou can find different language files in `hex theme liner/languages`. If you want to switch languages, fill in the file name of `yml` in the `_config.yml` file\n\n```yml\nlanguage: en\n```\n\n## Code Highlighting\n\nDisable Hexo's default highlight.js syntax highlighting.\n\n```yml\nhighlight:\n enable: false\n line_number: true\n auto_detect: false\n tab_replace: \"\"\n wrap: true\n hljs: false\n\nprismjs:\n enable: true\n preprocess: true\n line_number: true\n line_threshold: 0\n tab_replace: \"\"\n```\n\n# Cosy Theme Configuration\n\n💡 The following settings are based on the `_config.yml` under `hexo-theme-cosy`.\n\n## Post Category Icons\n\nIn sequence, set the `svg` icons. You can get a wide variety of icons at [xicon](https://www.xicons.org/).\n\n```yml\npostCategoryIcons:\n - <svg>...</svg>\n - <svg>...</svg>\n - <svg>...</svg>\n```\n\n## Website Favicon\n\n- Supports `svg`\n- Supports `image URL`, e.g., `/img/favicon.png`\n\n```yml\nfavicon: ''\n```\n\n## ICP Number 🇨🇳\n\n😁 If not required, can be directly deleted.\n\n```yml\nicp: 苏ICP备xxxxxxx号-x\n```\n\n## Footer Text on Homepage 🇨🇳\n\n😁 If not required, can be directly deleted or set to `false`.\n\n```yml\nmotto: false\n```\n\n## Post Copyright Statement\n\nEnabled by default. When `enable: false`, it is disabled by default.\n\n```yml\npostCopyright:\n enable: true\n license: CC BY-NC-SA 4.0\n license_url: https://creativecommons.org/licenses/by-nc-sa/4.0/\n```\n\n## Katex Mathematical Formulas\n\nYou can configure the CDN yourself.\n\n```yml\nkatex:\n enable: true\n jsCdn: //cdn.jsdelivr.net/npm/katex@0.13.18/dist/katex.min.js\n cssCdn: //cdn.jsdelivr.net/npm/katex@0.13.18/dist/katex.min.css\n```\n\n## Mermaid Flowcharts\n\nTo draft flowchart syntax, use `{% mermaid %}` and `{% endmermaid %}` as wrappers.\n\n```markdown\n{% mermaid %}\ngraph TD;\n A --> B;\n A --> C;\n B --> D;\n C --> D;\n{% endmermaid %}\n```\n\nCorresponding configurations are as follows:\n\n```yml\nmermaid:\n enable: true\n cdn: //cdn.jsdelivr.net/npm/mermaid@10.4.0/dist/mermaid.min.js\n```\n\n## Valine Comments\n\nFirst, register as a `LeanCloud` international user and create a database.\n\nPlease proceed in accordance with relevant regional regulations.\n\n```yml\nvaline:\n enable: true\n # 替换\n appId: appId\n # 替换\n appKey: appKey\n avatar: monsterid\n cdn: //unpkg.com/valine@latest/dist/Valine.min.js\n # 替换\n serverURLs: //xxxxxxxx.api.lncldglobal.com\n```\n\n# Algolia Search\n\nThe blog comes with built-in local search, based on frontend development, which may have some issues. It's recommended to switch to `Algolia`. The free account has a total of 10,000 records and 100,000 operations per month.\n\n## Register & Acquire Key\n\n1. Create a new `Index`, for example, `hex-blog`\n\n2. Copy and save:\n - Application ID\n - Search-Only API Key\n - Admin API Key\n - Usage API Key\n\n![API Keys](/img/algolia-api-keys.png)\n\n3. Replace configurations\n\nAdd the following to Hexo's `_config.yml`\n\n```yml\nalgolia:\n # Replace\n appId: Application ID\n # Replace\n apiKey: Usage API Key\n # Do not disclose, used for reporting, replace\n adminApiKey: Admin API Key\n # Replace\n SearchOnlyAPIKey: Search-Only API Key\n chunkSize: 5000\n # Replace\n indexName: hex-blog\n fields:\n - content:strip\n - categories\n - date\n - permalink\n - slug\n - tags\n - title\n```\n\n## Install hexo-algoliasearch\n\nThis is a Hexo blog post index plugin that automates the submission of indexes to Algolia.\n\n> If you encounter any problems, you can read the [hexo-algoliasearch repository](https://www.npmjs.com/package/hexo-algoliasearch) for the latest instructions.\n\nInstallation command:\n\n```bash\nnpm install hexo-algoliasearch --save\n```\n\n## Using Algolia\n\nBefore publishing each blog post, carry out index uploading operations. The usual commands are as follows:\n\n```bash\nhexo clean\nhexo generate\nhexo algolia\n``` \n\n\n# QWeather Widget 🇨🇳\n\nCosy mainly targets domestic users and integrates QWeather cards on the homepage. Register via [QWeather Developer Service](https://dev.qweather.com/docs/start/).\n\nAfter registering, fill in your `appKey` and `cityCode` in the configuration.\n\n```yml\nweather:\n enable: true\n # Replace\n cityCode: cityCode\n appKey: appKey\n```\n\nYou can find your city's `cityCode` in the official region list repository's `China-City-List-latest.csv`.\n\n\n# Front Matter\n\nIn Hexo's Markdown files, a typical YAML-formatted `Front Matter` might look like this:\n\n\n```markdown\n---\ntitle: My Article Title\ncategories:\n- javascript\ntags: \n- Programming\n- JavaScript\n---\n```\n\n## top\n\nTo pin an article to the top, assign a numerical value to the `top` metadata. Articles with a specified `top` value will be marked with a 📌 icon in the category list.\n\nFor example, if there are three articles:\n\n- Article 1\n\n```markdown\n---\ntitle: Article 1\ntop: 0\ncategories:\n - javascript\n---\n```\n\n- Article 2\n\n```markdown\n---\ntitle: Article 2\ntop: 1\ncategories:\n - javascript\n---\n```\n\n- Article 3\n\n```markdown\n---\ntitle: Article 3\ncategories:\n - javascript\n---\n```\n\nThen, under the `javascript` category, the sort order will be: `Article 1 > Article 2 > Article 3`.\n\n## status\n\nThis is used to differentiate the status of articles and can be quickly `filtered` using the category list. The Cosy theme comes with 4 built-in statuses:\n\n- done: Completed\n- doing: In Progress\n- todo: To Do\n- other: Abandoned\n\nFor example:\n\n```markdown\n---\ntitle: Article 1\ncategories:\n- javascript\nstatus: done\n---\n```\n\n\n\n# Custom Page\n\nHexo uses Markdown (or other rendering engine) to parse your article and generate static files for quick loading. In addition to the default generated articles and archive pages, Hexo also allows you to create custom pages.\n\n## Roadmap\n\nTo create a page, you can use the command\n\n```bash\nhexo new page roadmap\n```\n\nAfter success, a new folder `/roadmap/index.md` will be generated under the `source/` folder\n\nYou can refer to this template for configure `/roadmap/index.md`, parameter description:\n\n- title: Title of roadmap page HTML\n- initYear: Default displayed year\n\n```markdown\ntitle: Title - roadmap\nlayout: roadmap\ninitYear: 2023\nyears:\n 2022:\n - title: reading\n start: 01-01\n end: 1-5\n - title: cooking\n start: 02-01\n end: 05-30\n 2023:\n - title: Yue Mo Du Qian\n start: 01-01\n end: 1-2\n - title: To use and preserve in vain\n start: 02-01\n end: 06-30\n - title: Short Song Line\n start: 10-26\n end: 10-31\n content: Singing and drinking, geometry of life! For example, the morning dew is more bitter than the past. Be generous and forget your worries. How to relieve worries? Only Du Kang. Qingqing Zijin, carefree in my heart. But for your sake, I have been pondering until now. Yo, deer chirp, eating wild apples.\n - title: Prosody enlightenment\n start: 11-01\n end: 11-31\n content: The flowers bloom in red and beautiful colors, and the water ripples with azure glass. Going to my wife to explore my neighbor's date, going to my wife to plant a backyard sunflower\n```\n\n## Resume\n\nTo create a page, you can use the command\n\n```bash\nhexo new page resume\n```\n\nAfter success, a new folder will be generated folder `/resume/index.md` under the `source/`\n\nYou can refer to this template for configure `/resume/index.md`, parameter description:\n\n- title: The title of the resume page's HTML\n- avatar: Address of the avatar image\n\n```markdown\ntitle: resume\nlayout: resume\navatar: /img/avatar.png\nname: Hi! Mozzie\nrole: Full Stack\nemail: himozzie@gmail.com\nphone: +86 180-xxxx-xxx\nbirth: Jan 21, 1994\nlocation: Nanjing, China\nsocial:\n - name: github\n link: https://github.com/17px\n icon: svg\n\nabout:\n - My job is to build your website so that it is functional and user-friendly but at the same time attractive. \n - Moreover, I add personal touch to your product and make sure that is eye-catching and easy to use. My aim is to bring across your message and identity in the most creative way. I created web design for many famous brand companies.\n\nskill:\n - Familiar with Node, with backend development capabilities, experience in individual application projects such as SpringBoot, Egg, Koa2, and Midway, and experience in Nestjs microservice application projects\n - Having experience in Monorepo engineering and possessing the ability to separate the front and rear ends of a single unit and apply DevOps\n - Familiar with three. js, familiar with Vtk. js, with development experience in medical 3D front-end and graphics related fields\n - Master basic Linux commands and understand the basic use of Nginx and Docker\n\neducation:\n - school: University School of the Arts\n time: 2012-2016\n\nworkExp:\n - inc: Creative Director\n time: 2021.09 ~ today\n - inc: Web Designer\n time: 2021.01 ~ 2021.09\n\nprojectExp:\n - name: PC/React • Annotation, Algorithm Data Center\n desc: This is a xxx system. It mainly includes a b c function. I am mainly responsible for the development and maintenance of the x, y, and z modules.\n\n list:\n - Using pnpm workspace to manage multiple code repositories in Monorepo, supporting the coexistence of multiple frameworks, and sharing common component libraries and capabilities\n - Use Rollup to package some functional capabilities (such as a b) on your own, which can be used for both browsers and node.js to achieve code isomorphism\n - Develop the system server using Nest.js and use it for the microservice system of the project\n\n - name: PC/React • Tavigator Aortic Root/Peripheral\n desc: This is a xxx system. It mainly includes a b c function. I am mainly responsible for the development and maintenance of the x, y, and z modules.\n \n list:\n - Using pnpm workspace to manage multiple code repositories in Monorepo, supporting the coexistence of multiple frameworks, and sharing common component libraries and capabilities\n - Use Rollup to package some functional capabilities (such as a b) on your own, which can be used for both browsers and node.js to achieve code isomorphism\n - Develop the system server using Nest.js and use it for the microservice system of the project\n```","source":"_posts/Cosy-Starter-Guide.md","raw":"---\ntitle: Cosy Starter Guide\ntop: 1\ncategories:\n - Hexo\nstatus: doing\n---\n\n[🇨🇳 中文文档](https://mozzie.cn/2023/10/20/Cosy%20%E5%85%A5%E9%97%A8/)\n\n\n# Hexo Installation\n\nInstalling a `Hexo` theme is straightforward. Simply copy the `Hexo-theme-cosy` directory to the `themes` directory, and then modify the theme configuration in `Hexo`'s `_config.yml`.\n\n\n```yml\n# Locate the theme setting\ntheme: hexo-theme-cosy\n```\n\n## Acquiring Cosy\n\n- Visit [Cosy's code repository](https://github.com/17px/hexo-theme-cosy/tree/main) to stay updated on the latest theme developments.\n- Download `hexo-theme-cosy.zip` from the [releases page](https://github.com/17px/hexo-theme-cosy/releases).\n- Extract it into your site's `themes` directory.\n- Enable it in Hexo's `_config.yml`.\n\n# Hexo Configuration\n\nAdjust settings in `Hexo`'s `_config.yml`.\n\n## Basic Configuration\n\n```yml\n# Website title\ntitle: 17px blog\n# Sidebar header\nsubtitle: \"Mozzie\"\n# HTML meta description for SEO\ndescription: \"\"\n# HTML meta keywords for SEO\nkeywords:\n# Copyright text displaying author's name\nauthor: Mozzie\n\n# Set your website URL here\nurl: https://mozzie.cn\n```\n\n## Language Switch\n\nYou can find different language files in `hex theme liner/languages`. If you want to switch languages, fill in the file name of `yml` in the `_config.yml` file\n\n```yml\nlanguage: en\n```\n\n## Code Highlighting\n\nDisable Hexo's default highlight.js syntax highlighting.\n\n```yml\nhighlight:\n enable: false\n line_number: true\n auto_detect: false\n tab_replace: \"\"\n wrap: true\n hljs: false\n\nprismjs:\n enable: true\n preprocess: true\n line_number: true\n line_threshold: 0\n tab_replace: \"\"\n```\n\n# Cosy Theme Configuration\n\n💡 The following settings are based on the `_config.yml` under `hexo-theme-cosy`.\n\n## Post Category Icons\n\nIn sequence, set the `svg` icons. You can get a wide variety of icons at [xicon](https://www.xicons.org/).\n\n```yml\npostCategoryIcons:\n - <svg>...</svg>\n - <svg>...</svg>\n - <svg>...</svg>\n```\n\n## Website Favicon\n\n- Supports `svg`\n- Supports `image URL`, e.g., `/img/favicon.png`\n\n```yml\nfavicon: ''\n```\n\n## ICP Number 🇨🇳\n\n😁 If not required, can be directly deleted.\n\n```yml\nicp: 苏ICP备xxxxxxx号-x\n```\n\n## Footer Text on Homepage 🇨🇳\n\n😁 If not required, can be directly deleted or set to `false`.\n\n```yml\nmotto: false\n```\n\n## Post Copyright Statement\n\nEnabled by default. When `enable: false`, it is disabled by default.\n\n```yml\npostCopyright:\n enable: true\n license: CC BY-NC-SA 4.0\n license_url: https://creativecommons.org/licenses/by-nc-sa/4.0/\n```\n\n## Katex Mathematical Formulas\n\nYou can configure the CDN yourself.\n\n```yml\nkatex:\n enable: true\n jsCdn: //cdn.jsdelivr.net/npm/katex@0.13.18/dist/katex.min.js\n cssCdn: //cdn.jsdelivr.net/npm/katex@0.13.18/dist/katex.min.css\n```\n\n## Mermaid Flowcharts\n\nTo draft flowchart syntax, use `{% mermaid %}` and `{% endmermaid %}` as wrappers.\n\n```markdown\n{% mermaid %}\ngraph TD;\n A --> B;\n A --> C;\n B --> D;\n C --> D;\n{% endmermaid %}\n```\n\nCorresponding configurations are as follows:\n\n```yml\nmermaid:\n enable: true\n cdn: //cdn.jsdelivr.net/npm/mermaid@10.4.0/dist/mermaid.min.js\n```\n\n## Valine Comments\n\nFirst, register as a `LeanCloud` international user and create a database.\n\nPlease proceed in accordance with relevant regional regulations.\n\n```yml\nvaline:\n enable: true\n # 替换\n appId: appId\n # 替换\n appKey: appKey\n avatar: monsterid\n cdn: //unpkg.com/valine@latest/dist/Valine.min.js\n # 替换\n serverURLs: //xxxxxxxx.api.lncldglobal.com\n```\n\n# Algolia Search\n\nThe blog comes with built-in local search, based on frontend development, which may have some issues. It's recommended to switch to `Algolia`. The free account has a total of 10,000 records and 100,000 operations per month.\n\n## Register & Acquire Key\n\n1. Create a new `Index`, for example, `hex-blog`\n\n2. Copy and save:\n - Application ID\n - Search-Only API Key\n - Admin API Key\n - Usage API Key\n\n![API Keys](/img/algolia-api-keys.png)\n\n3. Replace configurations\n\nAdd the following to Hexo's `_config.yml`\n\n```yml\nalgolia:\n # Replace\n appId: Application ID\n # Replace\n apiKey: Usage API Key\n # Do not disclose, used for reporting, replace\n adminApiKey: Admin API Key\n # Replace\n SearchOnlyAPIKey: Search-Only API Key\n chunkSize: 5000\n # Replace\n indexName: hex-blog\n fields:\n - content:strip\n - categories\n - date\n - permalink\n - slug\n - tags\n - title\n```\n\n## Install hexo-algoliasearch\n\nThis is a Hexo blog post index plugin that automates the submission of indexes to Algolia.\n\n> If you encounter any problems, you can read the [hexo-algoliasearch repository](https://www.npmjs.com/package/hexo-algoliasearch) for the latest instructions.\n\nInstallation command:\n\n```bash\nnpm install hexo-algoliasearch --save\n```\n\n## Using Algolia\n\nBefore publishing each blog post, carry out index uploading operations. The usual commands are as follows:\n\n```bash\nhexo clean\nhexo generate\nhexo algolia\n``` \n\n\n# QWeather Widget 🇨🇳\n\nCosy mainly targets domestic users and integrates QWeather cards on the homepage. Register via [QWeather Developer Service](https://dev.qweather.com/docs/start/).\n\nAfter registering, fill in your `appKey` and `cityCode` in the configuration.\n\n```yml\nweather:\n enable: true\n # Replace\n cityCode: cityCode\n appKey: appKey\n```\n\nYou can find your city's `cityCode` in the official region list repository's `China-City-List-latest.csv`.\n\n\n# Front Matter\n\nIn Hexo's Markdown files, a typical YAML-formatted `Front Matter` might look like this:\n\n\n```markdown\n---\ntitle: My Article Title\ncategories:\n- javascript\ntags: \n- Programming\n- JavaScript\n---\n```\n\n## top\n\nTo pin an article to the top, assign a numerical value to the `top` metadata. Articles with a specified `top` value will be marked with a 📌 icon in the category list.\n\nFor example, if there are three articles:\n\n- Article 1\n\n```markdown\n---\ntitle: Article 1\ntop: 0\ncategories:\n - javascript\n---\n```\n\n- Article 2\n\n```markdown\n---\ntitle: Article 2\ntop: 1\ncategories:\n - javascript\n---\n```\n\n- Article 3\n\n```markdown\n---\ntitle: Article 3\ncategories:\n - javascript\n---\n```\n\nThen, under the `javascript` category, the sort order will be: `Article 1 > Article 2 > Article 3`.\n\n## status\n\nThis is used to differentiate the status of articles and can be quickly `filtered` using the category list. The Cosy theme comes with 4 built-in statuses:\n\n- done: Completed\n- doing: In Progress\n- todo: To Do\n- other: Abandoned\n\nFor example:\n\n```markdown\n---\ntitle: Article 1\ncategories:\n- javascript\nstatus: done\n---\n```\n\n\n\n# Custom Page\n\nHexo uses Markdown (or other rendering engine) to parse your article and generate static files for quick loading. In addition to the default generated articles and archive pages, Hexo also allows you to create custom pages.\n\n## Roadmap\n\nTo create a page, you can use the command\n\n```bash\nhexo new page roadmap\n```\n\nAfter success, a new folder `/roadmap/index.md` will be generated under the `source/` folder\n\nYou can refer to this template for configure `/roadmap/index.md`, parameter description:\n\n- title: Title of roadmap page HTML\n- initYear: Default displayed year\n\n```markdown\ntitle: Title - roadmap\nlayout: roadmap\ninitYear: 2023\nyears:\n 2022:\n - title: reading\n start: 01-01\n end: 1-5\n - title: cooking\n start: 02-01\n end: 05-30\n 2023:\n - title: Yue Mo Du Qian\n start: 01-01\n end: 1-2\n - title: To use and preserve in vain\n start: 02-01\n end: 06-30\n - title: Short Song Line\n start: 10-26\n end: 10-31\n content: Singing and drinking, geometry of life! For example, the morning dew is more bitter than the past. Be generous and forget your worries. How to relieve worries? Only Du Kang. Qingqing Zijin, carefree in my heart. But for your sake, I have been pondering until now. Yo, deer chirp, eating wild apples.\n - title: Prosody enlightenment\n start: 11-01\n end: 11-31\n content: The flowers bloom in red and beautiful colors, and the water ripples with azure glass. Going to my wife to explore my neighbor's date, going to my wife to plant a backyard sunflower\n```\n\n## Resume\n\nTo create a page, you can use the command\n\n```bash\nhexo new page resume\n```\n\nAfter success, a new folder will be generated folder `/resume/index.md` under the `source/`\n\nYou can refer to this template for configure `/resume/index.md`, parameter description:\n\n- title: The title of the resume page's HTML\n- avatar: Address of the avatar image\n\n```markdown\ntitle: resume\nlayout: resume\navatar: /img/avatar.png\nname: Hi! Mozzie\nrole: Full Stack\nemail: himozzie@gmail.com\nphone: +86 180-xxxx-xxx\nbirth: Jan 21, 1994\nlocation: Nanjing, China\nsocial:\n - name: github\n link: https://github.com/17px\n icon: svg\n\nabout:\n - My job is to build your website so that it is functional and user-friendly but at the same time attractive. \n - Moreover, I add personal touch to your product and make sure that is eye-catching and easy to use. My aim is to bring across your message and identity in the most creative way. I created web design for many famous brand companies.\n\nskill:\n - Familiar with Node, with backend development capabilities, experience in individual application projects such as SpringBoot, Egg, Koa2, and Midway, and experience in Nestjs microservice application projects\n - Having experience in Monorepo engineering and possessing the ability to separate the front and rear ends of a single unit and apply DevOps\n - Familiar with three. js, familiar with Vtk. js, with development experience in medical 3D front-end and graphics related fields\n - Master basic Linux commands and understand the basic use of Nginx and Docker\n\neducation:\n - school: University School of the Arts\n time: 2012-2016\n\nworkExp:\n - inc: Creative Director\n time: 2021.09 ~ today\n - inc: Web Designer\n time: 2021.01 ~ 2021.09\n\nprojectExp:\n - name: PC/React • Annotation, Algorithm Data Center\n desc: This is a xxx system. It mainly includes a b c function. I am mainly responsible for the development and maintenance of the x, y, and z modules.\n\n list:\n - Using pnpm workspace to manage multiple code repositories in Monorepo, supporting the coexistence of multiple frameworks, and sharing common component libraries and capabilities\n - Use Rollup to package some functional capabilities (such as a b) on your own, which can be used for both browsers and node.js to achieve code isomorphism\n - Develop the system server using Nest.js and use it for the microservice system of the project\n\n - name: PC/React • Tavigator Aortic Root/Peripheral\n desc: This is a xxx system. It mainly includes a b c function. I am mainly responsible for the development and maintenance of the x, y, and z modules.\n \n list:\n - Using pnpm workspace to manage multiple code repositories in Monorepo, supporting the coexistence of multiple frameworks, and sharing common component libraries and capabilities\n - Use Rollup to package some functional capabilities (such as a b) on your own, which can be used for both browsers and node.js to achieve code isomorphism\n - Develop the system server using Nest.js and use it for the microservice system of the project\n```","slug":"Cosy-Starter-Guide","published":1,"date":"2023-10-23T04:01:13.108Z","updated":"2023-10-30T07:44:49.576Z","comments":1,"layout":"post","photos":[],"link":"","_id":"clodvl5110005egz372gm10m3","content":"<p><a href=\"https://mozzie.cn/2023/10/20/Cosy%20%E5%85%A5%E9%97%A8/\">🇨🇳 中文文档</a></p>\n<h1 id=\"Hexo-Installation\"><a href=\"#Hexo-Installation\" class=\"headerlink\" title=\"Hexo Installation\"></a>Hexo Installation</h1><p>Installing a <code>Hexo</code> theme is straightforward. Simply copy the <code>Hexo-theme-cosy</code> directory to the <code>themes</code> directory, and then modify the theme configuration in <code>Hexo</code>‘s <code>_config.yml</code>.</p>\n<pre class=\"line-numbers language-yaml\" data-language=\"yaml\"><code class=\"language-yaml\"><span class=\"token comment\"># Locate the theme setting</span>\n<span class=\"token key atrule\">theme</span><span class=\"token punctuation\">:</span> hexo<span class=\"token punctuation\">-</span>theme<span class=\"token punctuation\">-</span>cosy<span aria-hidden=\"true\" class=\"line-numbers-rows\"><span></span><span></span></span></code></pre>\n\n<h2 id=\"Acquiring-Cosy\"><a href=\"#Acquiring-Cosy\" class=\"headerlink\" title=\"Acquiring Cosy\"></a>Acquiring Cosy</h2><ul>\n<li>Visit <a href=\"https://github.com/17px/hexo-theme-cosy/tree/main\">Cosy’s code repository</a> to stay updated on the latest theme developments.</li>\n<li>Download <code>hexo-theme-cosy.zip</code> from the <a href=\"https://github.com/17px/hexo-theme-cosy/releases\">releases page</a>.</li>\n<li>Extract it into your site’s <code>themes</code> directory.</li>\n<li>Enable it in Hexo’s <code>_config.yml</code>.</li>\n</ul>\n<h1 id=\"Hexo-Configuration\"><a href=\"#Hexo-Configuration\" class=\"headerlink\" title=\"Hexo Configuration\"></a>Hexo Configuration</h1><p>Adjust settings in <code>Hexo</code>‘s <code>_config.yml</code>.</p>\n<h2 id=\"Basic-Configuration\"><a href=\"#Basic-Configuration\" class=\"headerlink\" title=\"Basic Configuration\"></a>Basic Configuration</h2><pre class=\"line-numbers language-yaml\" data-language=\"yaml\"><code class=\"language-yaml\"><span class=\"token comment\"># Website title</span>\n<span class=\"token key atrule\">title</span><span class=\"token punctuation\">:</span> 17px blog\n<span class=\"token comment\"># Sidebar header</span>\n<span class=\"token key atrule\">subtitle</span><span class=\"token punctuation\">:</span> <span class=\"token string\">\"Mozzie\"</span>\n<span class=\"token comment\"># HTML meta description for SEO</span>\n<span class=\"token key atrule\">description</span><span class=\"token punctuation\">:</span> <span class=\"token string\">\"\"</span>\n<span class=\"token comment\"># HTML meta keywords for SEO</span>\n<span class=\"token key atrule\">keywords</span><span class=\"token punctuation\">:</span>\n<span class=\"token comment\"># Copyright text displaying author's name</span>\n<span class=\"token key atrule\">author</span><span class=\"token punctuation\">:</span> Mozzie\n\n<span class=\"token comment\"># Set your website URL here</span>\n<span class=\"token key atrule\">url</span><span class=\"token punctuation\">:</span> https<span class=\"token punctuation\">:</span>//mozzie.cn<span aria-hidden=\"true\" class=\"line-numbers-rows\"><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span></span></code></pre>\n\n<h2 id=\"Language-Switch\"><a href=\"#Language-Switch\" class=\"headerlink\" title=\"Language Switch\"></a>Language Switch</h2><p>You can find different language files in <code>hex theme liner/languages</code>. If you want to switch languages, fill in the file name of <code>yml</code> in the <code>_config.yml</code> file</p>\n<pre class=\"line-numbers language-yaml\" data-language=\"yaml\"><code class=\"language-yaml\"><span class=\"token key atrule\">language</span><span class=\"token punctuation\">:</span> en<span aria-hidden=\"true\" class=\"line-numbers-rows\"><span></span></span></code></pre>\n\n<h2 id=\"Code-Highlighting\"><a href=\"#Code-Highlighting\" class=\"headerlink\" title=\"Code Highlighting\"></a>Code Highlighting</h2><p>Disable Hexo’s default highlight.js syntax highlighting.</p>\n<pre class=\"line-numbers language-yaml\" data-language=\"yaml\"><code class=\"language-yaml\"><span class=\"token key atrule\">highlight</span><span class=\"token punctuation\">:</span>\n <span class=\"token key atrule\">enable</span><span class=\"token punctuation\">:</span> <span class=\"token boolean important\">false</span>\n <span class=\"token key atrule\">line_number</span><span class=\"token punctuation\">:</span> <span class=\"token boolean important\">true</span>\n <span class=\"token key atrule\">auto_detect</span><span class=\"token punctuation\">:</span> <span class=\"token boolean important\">false</span>\n <span class=\"token key atrule\">tab_replace</span><span class=\"token punctuation\">:</span> <span class=\"token string\">\"\"</span>\n <span class=\"token key atrule\">wrap</span><span class=\"token punctuation\">:</span> <span class=\"token boolean important\">true</span>\n <span class=\"token key atrule\">hljs</span><span class=\"token punctuation\">:</span> <span class=\"token boolean important\">false</span>\n\n<span class=\"token key atrule\">prismjs</span><span class=\"token punctuation\">:</span>\n <span class=\"token key atrule\">enable</span><span class=\"token punctuation\">:</span> <span class=\"token boolean important\">true</span>\n <span class=\"token key atrule\">preprocess</span><span class=\"token punctuation\">:</span> <span class=\"token boolean important\">true</span>\n <span class=\"token key atrule\">line_number</span><span class=\"token punctuation\">:</span> <span class=\"token boolean important\">true</span>\n <span class=\"token key atrule\">line_threshold</span><span class=\"token punctuation\">:</span> <span class=\"token number\">0</span>\n <span class=\"token key atrule\">tab_replace</span><span class=\"token punctuation\">:</span> <span class=\"token string\">\"\"</span><span aria-hidden=\"true\" class=\"line-numbers-rows\"><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span></span></code></pre>\n\n<h1 id=\"Cosy-Theme-Configuration\"><a href=\"#Cosy-Theme-Configuration\" class=\"headerlink\" title=\"Cosy Theme Configuration\"></a>Cosy Theme Configuration</h1><p>💡 The following settings are based on the <code>_config.yml</code> under <code>hexo-theme-cosy</code>.</p>\n<h2 id=\"Post-Category-Icons\"><a href=\"#Post-Category-Icons\" class=\"headerlink\" title=\"Post Category Icons\"></a>Post Category Icons</h2><p>In sequence, set the <code>svg</code> icons. You can get a wide variety of icons at <a href=\"https://www.xicons.org/\">xicon</a>.</p>\n<pre class=\"line-numbers language-yaml\" data-language=\"yaml\"><code class=\"language-yaml\"><span class=\"token key atrule\">postCategoryIcons</span><span class=\"token punctuation\">:</span>\n <span class=\"token punctuation\">-</span> <svg<span class=\"token punctuation\">></span><span class=\"token punctuation\">...</span></svg<span class=\"token punctuation\">></span>\n <span class=\"token punctuation\">-</span> <svg<span class=\"token punctuation\">></span><span class=\"token punctuation\">...</span></svg<span class=\"token punctuation\">></span>\n <span class=\"token punctuation\">-</span> <svg<span class=\"token punctuation\">></span><span class=\"token punctuation\">...</span></svg<span class=\"token punctuation\">></span><span aria-hidden=\"true\" class=\"line-numbers-rows\"><span></span><span></span><span></span><span></span></span></code></pre>\n\n<h2 id=\"Website-Favicon\"><a href=\"#Website-Favicon\" class=\"headerlink\" title=\"Website Favicon\"></a>Website Favicon</h2><ul>\n<li>Supports <code>svg</code></li>\n<li>Supports <code>image URL</code>, e.g., <code>/img/favicon.png</code></li>\n</ul>\n<pre class=\"line-numbers language-yaml\" data-language=\"yaml\"><code class=\"language-yaml\"><span class=\"token key atrule\">favicon</span><span class=\"token punctuation\">:</span> <span class=\"token string\">''</span><span aria-hidden=\"true\" class=\"line-numbers-rows\"><span></span></span></code></pre>\n\n<h2 id=\"ICP-Number-🇨🇳\"><a href=\"#ICP-Number-🇨🇳\" class=\"headerlink\" title=\"ICP Number 🇨🇳\"></a>ICP Number 🇨🇳</h2><p>😁 If not required, can be directly deleted.</p>\n<pre class=\"line-numbers language-yaml\" data-language=\"yaml\"><code class=\"language-yaml\"><span class=\"token key atrule\">icp</span><span class=\"token punctuation\">:</span> 苏ICP备xxxxxxx号<span class=\"token punctuation\">-</span>x<span aria-hidden=\"true\" class=\"line-numbers-rows\"><span></span></span></code></pre>\n\n<h2 id=\"Footer-Text-on-Homepage-🇨🇳\"><a href=\"#Footer-Text-on-Homepage-🇨🇳\" class=\"headerlink\" title=\"Footer Text on Homepage 🇨🇳\"></a>Footer Text on Homepage 🇨🇳</h2><p>😁 If not required, can be directly deleted or set to <code>false</code>.</p>\n<pre class=\"line-numbers language-yaml\" data-language=\"yaml\"><code class=\"language-yaml\"><span class=\"token key atrule\">motto</span><span class=\"token punctuation\">:</span> <span class=\"token boolean important\">false</span><span aria-hidden=\"true\" class=\"line-numbers-rows\"><span></span></span></code></pre>\n\n<h2 id=\"Post-Copyright-Statement\"><a href=\"#Post-Copyright-Statement\" class=\"headerlink\" title=\"Post Copyright Statement\"></a>Post Copyright Statement</h2><p>Enabled by default. When <code>enable: false</code>, it is disabled by default.</p>\n<pre class=\"line-numbers language-yaml\" data-language=\"yaml\"><code class=\"language-yaml\"><span class=\"token key atrule\">postCopyright</span><span class=\"token punctuation\">:</span>\n <span class=\"token key atrule\">enable</span><span class=\"token punctuation\">:</span> <span class=\"token boolean important\">true</span>\n <span class=\"token key atrule\">license</span><span class=\"token punctuation\">:</span> CC BY<span class=\"token punctuation\">-</span>NC<span class=\"token punctuation\">-</span>SA 4.0\n <span class=\"token key atrule\">license_url</span><span class=\"token punctuation\">:</span> https<span class=\"token punctuation\">:</span>//creativecommons.org/licenses/by<span class=\"token punctuation\">-</span>nc<span class=\"token punctuation\">-</span>sa/4.0/<span aria-hidden=\"true\" class=\"line-numbers-rows\"><span></span><span></span><span></span><span></span></span></code></pre>\n\n<h2 id=\"Katex-Mathematical-Formulas\"><a href=\"#Katex-Mathematical-Formulas\" class=\"headerlink\" title=\"Katex Mathematical Formulas\"></a>Katex Mathematical Formulas</h2><p>You can configure the CDN yourself.</p>\n<pre class=\"line-numbers language-yaml\" data-language=\"yaml\"><code class=\"language-yaml\"><span class=\"token key atrule\">katex</span><span class=\"token punctuation\">:</span>\n <span class=\"token key atrule\">enable</span><span class=\"token punctuation\">:</span> <span class=\"token boolean important\">true</span>\n <span class=\"token key atrule\">jsCdn</span><span class=\"token punctuation\">:</span> //cdn.jsdelivr.net/npm/katex@0.13.18/dist/katex.min.js\n <span class=\"token key atrule\">cssCdn</span><span class=\"token punctuation\">:</span> //cdn.jsdelivr.net/npm/katex@0.13.18/dist/katex.min.css<span aria-hidden=\"true\" class=\"line-numbers-rows\"><span></span><span></span><span></span><span></span></span></code></pre>\n\n<h2 id=\"Mermaid-Flowcharts\"><a href=\"#Mermaid-Flowcharts\" class=\"headerlink\" title=\"Mermaid Flowcharts\"></a>Mermaid Flowcharts</h2><p>To draft flowchart syntax, use <code>{% mermaid %}` and `{% endmermaid %}</code> as wrappers.</p>\n<pre class=\"line-numbers language-markdown\" data-language=\"markdown\"><code class=\"language-markdown\">{% mermaid %}\ngraph TD;\n A --> B;\n A --> C;\n B --> D;\n C --> D;\n{% endmermaid %}<span aria-hidden=\"true\" class=\"line-numbers-rows\"><span></span><span></span><span></span><span></span><span></span><span></span><span></span></span></code></pre>\n\n<p>Corresponding configurations are as follows:</p>\n<pre class=\"line-numbers language-yaml\" data-language=\"yaml\"><code class=\"language-yaml\"><span class=\"token key atrule\">mermaid</span><span class=\"token punctuation\">:</span>\n <span class=\"token key atrule\">enable</span><span class=\"token punctuation\">:</span> <span class=\"token boolean important\">true</span>\n <span class=\"token key atrule\">cdn</span><span class=\"token punctuation\">:</span> //cdn.jsdelivr.net/npm/mermaid@10.4.0/dist/mermaid.min.js<span aria-hidden=\"true\" class=\"line-numbers-rows\"><span></span><span></span><span></span></span></code></pre>\n\n<h2 id=\"Valine-Comments\"><a href=\"#Valine-Comments\" class=\"headerlink\" title=\"Valine Comments\"></a>Valine Comments</h2><p>First, register as a <code>LeanCloud</code> international user and create a database.</p>\n<p>Please proceed in accordance with relevant regional regulations.</p>\n<pre class=\"line-numbers language-yaml\" data-language=\"yaml\"><code class=\"language-yaml\"><span class=\"token key atrule\">valine</span><span class=\"token punctuation\">:</span>\n <span class=\"token key atrule\">enable</span><span class=\"token punctuation\">:</span> <span class=\"token boolean important\">true</span>\n <span class=\"token comment\"># 替换</span>\n <span class=\"token key atrule\">appId</span><span class=\"token punctuation\">:</span> appId\n <span class=\"token comment\"># 替换</span>\n <span class=\"token key atrule\">appKey</span><span class=\"token punctuation\">:</span> appKey\n <span class=\"token key atrule\">avatar</span><span class=\"token punctuation\">:</span> monsterid\n <span class=\"token key atrule\">cdn</span><span class=\"token punctuation\">:</span> //unpkg.com/valine@latest/dist/Valine.min.js\n <span class=\"token comment\"># 替换</span>\n <span class=\"token key atrule\">serverURLs</span><span class=\"token punctuation\">:</span> //xxxxxxxx.api.lncldglobal.com<span aria-hidden=\"true\" class=\"line-numbers-rows\"><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span></span></code></pre>\n\n<h1 id=\"Algolia-Search\"><a href=\"#Algolia-Search\" class=\"headerlink\" title=\"Algolia Search\"></a>Algolia Search</h1><p>The blog comes with built-in local search, based on frontend development, which may have some issues. It’s recommended to switch to <code>Algolia</code>. The free account has a total of 10,000 records and 100,000 operations per month.</p>\n<h2 id=\"Register-amp-Acquire-Key\"><a href=\"#Register-amp-Acquire-Key\" class=\"headerlink\" title=\"Register & Acquire Key\"></a>Register & Acquire Key</h2><ol>\n<li><p>Create a new <code>Index</code>, for example, <code>hex-blog</code></p>\n</li>\n<li><p>Copy and save:</p>\n</li>\n</ol>\n<ul>\n<li>Application ID</li>\n<li>Search-Only API Key</li>\n<li>Admin API Key</li>\n<li>Usage API Key</li>\n</ul>\n<p><img src=\"/img/algolia-api-keys.png\" alt=\"API Keys\"></p>\n<ol start=\"3\">\n<li>Replace configurations</li>\n</ol>\n<p>Add the following to Hexo’s <code>_config.yml</code></p>\n<pre class=\"line-numbers language-yaml\" data-language=\"yaml\"><code class=\"language-yaml\"><span class=\"token key atrule\">algolia</span><span class=\"token punctuation\">:</span>\n <span class=\"token comment\"># Replace</span>\n <span class=\"token key atrule\">appId</span><span class=\"token punctuation\">:</span> Application ID\n <span class=\"token comment\"># Replace</span>\n <span class=\"token key atrule\">apiKey</span><span class=\"token punctuation\">:</span> Usage API Key\n <span class=\"token comment\"># Do not disclose, used for reporting, replace</span>\n <span class=\"token key atrule\">adminApiKey</span><span class=\"token punctuation\">:</span> Admin API Key\n <span class=\"token comment\"># Replace</span>\n <span class=\"token key atrule\">SearchOnlyAPIKey</span><span class=\"token punctuation\">:</span> Search<span class=\"token punctuation\">-</span>Only API Key\n <span class=\"token key atrule\">chunkSize</span><span class=\"token punctuation\">:</span> <span class=\"token number\">5000</span>\n <span class=\"token comment\"># Replace</span>\n <span class=\"token key atrule\">indexName</span><span class=\"token punctuation\">:</span> hex<span class=\"token punctuation\">-</span>blog\n <span class=\"token key atrule\">fields</span><span class=\"token punctuation\">:</span>\n <span class=\"token punctuation\">-</span> content<span class=\"token punctuation\">:</span>strip\n <span class=\"token punctuation\">-</span> categories\n <span class=\"token punctuation\">-</span> date\n <span class=\"token punctuation\">-</span> permalink\n <span class=\"token punctuation\">-</span> slug\n <span class=\"token punctuation\">-</span> tags\n <span class=\"token punctuation\">-</span> title<span aria-hidden=\"true\" class=\"line-numbers-rows\"><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span></span></code></pre>\n\n<h2 id=\"Install-hexo-algoliasearch\"><a href=\"#Install-hexo-algoliasearch\" class=\"headerlink\" title=\"Install hexo-algoliasearch\"></a>Install hexo-algoliasearch</h2><p>This is a Hexo blog post index plugin that automates the submission of indexes to Algolia.</p>\n<blockquote>\n<p>If you encounter any problems, you can read the <a href=\"https://www.npmjs.com/package/hexo-algoliasearch\">hexo-algoliasearch repository</a> for the latest instructions.</p>\n</blockquote>\n<p>Installation command:</p>\n<pre class=\"line-numbers language-bash\" data-language=\"bash\"><code class=\"language-bash\"><span class=\"token function\">npm</span> <span class=\"token function\">install</span> hexo-algoliasearch <span class=\"token parameter variable\">--save</span><span aria-hidden=\"true\" class=\"line-numbers-rows\"><span></span></span></code></pre>\n\n<h2 id=\"Using-Algolia\"><a href=\"#Using-Algolia\" class=\"headerlink\" title=\"Using Algolia\"></a>Using Algolia</h2><p>Before publishing each blog post, carry out index uploading operations. The usual commands are as follows:</p>\n<pre class=\"line-numbers language-bash\" data-language=\"bash\"><code class=\"language-bash\">hexo clean\nhexo generate\nhexo algolia<span aria-hidden=\"true\" class=\"line-numbers-rows\"><span></span><span></span><span></span></span></code></pre>\n\n\n<h1 id=\"QWeather-Widget-🇨🇳\"><a href=\"#QWeather-Widget-🇨🇳\" class=\"headerlink\" title=\"QWeather Widget 🇨🇳\"></a>QWeather Widget 🇨🇳</h1><p>Cosy mainly targets domestic users and integrates QWeather cards on the homepage. Register via <a href=\"https://dev.qweather.com/docs/start/\">QWeather Developer Service</a>.</p>\n<p>After registering, fill in your <code>appKey</code> and <code>cityCode</code> in the configuration.</p>\n<pre class=\"line-numbers language-yaml\" data-language=\"yaml\"><code class=\"language-yaml\"><span class=\"token key atrule\">weather</span><span class=\"token punctuation\">:</span>\n <span class=\"token key atrule\">enable</span><span class=\"token punctuation\">:</span> <span class=\"token boolean important\">true</span>\n <span class=\"token comment\"># Replace</span>\n <span class=\"token key atrule\">cityCode</span><span class=\"token punctuation\">:</span> cityCode\n <span class=\"token key atrule\">appKey</span><span class=\"token punctuation\">:</span> appKey<span aria-hidden=\"true\" class=\"line-numbers-rows\"><span></span><span></span><span></span><span></span><span></span></span></code></pre>\n\n<p>You can find your city’s <code>cityCode</code> in the official region list repository’s <code>China-City-List-latest.csv</code>.</p>\n<h1 id=\"Front-Matter\"><a href=\"#Front-Matter\" class=\"headerlink\" title=\"Front Matter\"></a>Front Matter</h1><p>In Hexo’s Markdown files, a typical YAML-formatted <code>Front Matter</code> might look like this:</p>\n<pre class=\"line-numbers language-markdown\" data-language=\"markdown\"><code class=\"language-markdown\"><span class=\"token front-matter-block\"><span class=\"token punctuation\">---</span>\n<span class=\"token front-matter yaml language-yaml\"><span class=\"token key atrule\">title</span><span class=\"token punctuation\">:</span> My Article Title\n<span class=\"token key atrule\">categories</span><span class=\"token punctuation\">:</span>\n<span class=\"token punctuation\">-</span> javascript\n<span class=\"token key atrule\">tags</span><span class=\"token punctuation\">:</span> \n<span class=\"token punctuation\">-</span> Programming\n<span class=\"token punctuation\">-</span> JavaScript</span>\n<span class=\"token punctuation\">---</span></span><span aria-hidden=\"true\" class=\"line-numbers-rows\"><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span></span></code></pre>\n\n<h2 id=\"top\"><a href=\"#top\" class=\"headerlink\" title=\"top\"></a>top</h2><p>To pin an article to the top, assign a numerical value to the <code>top</code> metadata. Articles with a specified <code>top</code> value will be marked with a 📌 icon in the category list.</p>\n<p>For example, if there are three articles:</p>\n<ul>\n<li>Article 1</li>\n</ul>\n<pre class=\"line-numbers language-markdown\" data-language=\"markdown\"><code class=\"language-markdown\"><span class=\"token front-matter-block\"><span class=\"token punctuation\">---</span>\n<span class=\"token front-matter yaml language-yaml\"><span class=\"token key atrule\">title</span><span class=\"token punctuation\">:</span> Article 1\n<span class=\"token key atrule\">top</span><span class=\"token punctuation\">:</span> <span class=\"token number\">0</span>\n<span class=\"token key atrule\">categories</span><span class=\"token punctuation\">:</span>\n <span class=\"token punctuation\">-</span> javascript</span>\n<span class=\"token punctuation\">---</span></span><span aria-hidden=\"true\" class=\"line-numbers-rows\"><span></span><span></span><span></span><span></span><span></span><span></span></span></code></pre>\n\n<ul>\n<li>Article 2</li>\n</ul>\n<pre class=\"line-numbers language-markdown\" data-language=\"markdown\"><code class=\"language-markdown\"><span class=\"token front-matter-block\"><span class=\"token punctuation\">---</span>\n<span class=\"token front-matter yaml language-yaml\"><span class=\"token key atrule\">title</span><span class=\"token punctuation\">:</span> Article 2\n<span class=\"token key atrule\">top</span><span class=\"token punctuation\">:</span> <span class=\"token number\">1</span>\n<span class=\"token key atrule\">categories</span><span class=\"token punctuation\">:</span>\n <span class=\"token punctuation\">-</span> javascript</span>\n<span class=\"token punctuation\">---</span></span><span aria-hidden=\"true\" class=\"line-numbers-rows\"><span></span><span></span><span></span><span></span><span></span><span></span></span></code></pre>\n\n<ul>\n<li>Article 3</li>\n</ul>\n<pre class=\"line-numbers language-markdown\" data-language=\"markdown\"><code class=\"language-markdown\"><span class=\"token front-matter-block\"><span class=\"token punctuation\">---</span>\n<span class=\"token front-matter yaml language-yaml\"><span class=\"token key atrule\">title</span><span class=\"token punctuation\">:</span> Article 3\n<span class=\"token key atrule\">categories</span><span class=\"token punctuation\">:</span>\n <span class=\"token punctuation\">-</span> javascript</span>\n<span class=\"token punctuation\">---</span></span><span aria-hidden=\"true\" class=\"line-numbers-rows\"><span></span><span></span><span></span><span></span><span></span></span></code></pre>\n\n<p>Then, under the <code>javascript</code> category, the sort order will be: <code>Article 1 > Article 2 > Article 3</code>.</p>\n<h2 id=\"status\"><a href=\"#status\" class=\"headerlink\" title=\"status\"></a>status</h2><p>This is used to differentiate the status of articles and can be quickly <code>filtered</code> using the category list. The Cosy theme comes with 4 built-in statuses:</p>\n<ul>\n<li>done: Completed</li>\n<li>doing: In Progress</li>\n<li>todo: To Do</li>\n<li>other: Abandoned</li>\n</ul>\n<p>For example:</p>\n<pre class=\"line-numbers language-markdown\" data-language=\"markdown\"><code class=\"language-markdown\"><span class=\"token front-matter-block\"><span class=\"token punctuation\">---</span>\n<span class=\"token front-matter yaml language-yaml\"><span class=\"token key atrule\">title</span><span class=\"token punctuation\">:</span> Article 1\n<span class=\"token key atrule\">categories</span><span class=\"token punctuation\">:</span>\n<span class=\"token punctuation\">-</span> javascript\n<span class=\"token key atrule\">status</span><span class=\"token punctuation\">:</span> done</span>\n<span class=\"token punctuation\">---</span></span><span aria-hidden=\"true\" class=\"line-numbers-rows\"><span></span><span></span><span></span><span></span><span></span><span></span></span></code></pre>\n\n\n\n<h1 id=\"Custom-Page\"><a href=\"#Custom-Page\" class=\"headerlink\" title=\"Custom Page\"></a>Custom Page</h1><p>Hexo uses Markdown (or other rendering engine) to parse your article and generate static files for quick loading. In addition to the default generated articles and archive pages, Hexo also allows you to create custom pages.</p>\n<h2 id=\"Roadmap\"><a href=\"#Roadmap\" class=\"headerlink\" title=\"Roadmap\"></a>Roadmap</h2><p>To create a page, you can use the command</p>\n<pre class=\"line-numbers language-bash\" data-language=\"bash\"><code class=\"language-bash\">hexo new page roadmap<span aria-hidden=\"true\" class=\"line-numbers-rows\"><span></span></span></code></pre>\n\n<p>After success, a new folder <code>/roadmap/index.md</code> will be generated under the <code>source/</code> folder</p>\n<p>You can refer to this template for configure <code>/roadmap/index.md</code>, parameter description:</p>\n<ul>\n<li>title: Title of roadmap page HTML</li>\n<li>initYear: Default displayed year</li>\n</ul>\n<pre class=\"line-numbers language-markdown\" data-language=\"markdown\"><code class=\"language-markdown\">title: Title - roadmap\nlayout: roadmap\ninitYear: 2023\nyears:\n 2022:\n <span class=\"token list punctuation\">-</span> title: reading\n start: 01-01\n end: 1-5\n <span class=\"token list punctuation\">-</span> title: cooking\n start: 02-01\n end: 05-30\n 2023:\n <span class=\"token list punctuation\">-</span> title: Yue Mo Du Qian\n start: 01-01\n end: 1-2\n <span class=\"token list punctuation\">-</span> title: To use and preserve in vain\n start: 02-01\n end: 06-30\n <span class=\"token list punctuation\">-</span> title: Short Song Line\n start: 10-26\n end: 10-31\n content: Singing and drinking, geometry of life! For example, the morning dew is more bitter than the past. Be generous and forget your worries. How to relieve worries? Only Du Kang. Qingqing Zijin, carefree in my heart. But for your sake, I have been pondering until now. Yo, deer chirp, eating wild apples.\n <span class=\"token list punctuation\">-</span> title: Prosody enlightenment\n start: 11-01\n end: 11-31\n content: The flowers bloom in red and beautiful colors, and the water ripples with azure glass. Going to my wife to explore my neighbor's date, going to my wife to plant a backyard sunflower<span aria-hidden=\"true\" class=\"line-numbers-rows\"><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span></span></code></pre>\n\n<h2 id=\"Resume\"><a href=\"#Resume\" class=\"headerlink\" title=\"Resume\"></a>Resume</h2><p>To create a page, you can use the command</p>\n<pre class=\"line-numbers language-bash\" data-language=\"bash\"><code class=\"language-bash\">hexo new page resume<span aria-hidden=\"true\" class=\"line-numbers-rows\"><span></span></span></code></pre>\n\n<p>After success, a new folder will be generated folder <code>/resume/index.md</code> under the <code>source/</code></p>\n<p>You can refer to this template for configure <code>/resume/index.md</code>, parameter description:</p>\n<ul>\n<li>title: The title of the resume page’s HTML</li>\n<li>avatar: Address of the avatar image</li>\n</ul>\n<pre class=\"line-numbers language-markdown\" data-language=\"markdown\"><code class=\"language-markdown\">title: resume\nlayout: resume\navatar: /img/avatar.png\nname: Hi! Mozzie\nrole: Full Stack\nemail: himozzie@gmail.com\nphone: +86 180-xxxx-xxx\nbirth: Jan 21, 1994\nlocation: Nanjing, China\nsocial:\n <span class=\"token list punctuation\">-</span> name: github\n link: https://github.com/17px\n icon: svg\n\nabout:\n <span class=\"token list punctuation\">-</span> My job is to build your website so that it is functional and user-friendly but at the same time attractive. \n <span class=\"token list punctuation\">-</span> Moreover, I add personal touch to your product and make sure that is eye-catching and easy to use. My aim is to bring across your message and identity in the most creative way. I created web design for many famous brand companies.\n\nskill:\n <span class=\"token list punctuation\">-</span> Familiar with Node, with backend development capabilities, experience in individual application projects such as SpringBoot, Egg, Koa2, and Midway, and experience in Nestjs microservice application projects\n <span class=\"token list punctuation\">-</span> Having experience in Monorepo engineering and possessing the ability to separate the front and rear ends of a single unit and apply DevOps\n <span class=\"token list punctuation\">-</span> Familiar with three. js, familiar with Vtk. js, with development experience in medical 3D front-end and graphics related fields\n <span class=\"token list punctuation\">-</span> Master basic Linux commands and understand the basic use of Nginx and Docker\n\neducation:\n <span class=\"token list punctuation\">-</span> school: University School of the Arts\n time: 2012-2016\n\nworkExp:\n <span class=\"token list punctuation\">-</span> inc: Creative Director\n time: 2021.09 <span class=\"token strike\"><span class=\"token punctuation\">~</span><span class=\"token content\"> today\n - inc: Web Designer\n time: 2021.01 </span><span class=\"token punctuation\">~</span></span> 2021.09\n\nprojectExp:\n <span class=\"token list punctuation\">-</span> name: PC/React • Annotation, Algorithm Data Center\n desc: This is a xxx system. It mainly includes a b c function. I am mainly responsible for the development and maintenance of the x, y, and z modules.\n\n<span class=\"token code keyword\"> list:\n - Using pnpm workspace to manage multiple code repositories in Monorepo, supporting the coexistence of multiple frameworks, and sharing common component libraries and capabilities\n - Use Rollup to package some functional capabilities (such as a b) on your own, which can be used for both browsers and node.js to achieve code isomorphism\n - Develop the system server using Nest.js and use it for the microservice system of the project</span>\n\n <span class=\"token list punctuation\">-</span> name: PC/React • Tavigator Aortic Root/Peripheral\n desc: This is a xxx system. It mainly includes a b c function. I am mainly responsible for the development and maintenance of the x, y, and z modules.\n \n<span class=\"token code keyword\"> list:\n - Using pnpm workspace to manage multiple code repositories in Monorepo, supporting the coexistence of multiple frameworks, and sharing common component libraries and capabilities\n - Use Rollup to package some functional capabilities (such as a b) on your own, which can be used for both browsers and node.js to achieve code isomorphism\n - Develop the system server using Nest.js and use it for the microservice system of the project</span><span aria-hidden=\"true\" class=\"line-numbers-rows\"><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span></span></code></pre>","site":{"data":{}},"excerpt":"","more":"<p><a href=\"https://mozzie.cn/2023/10/20/Cosy%20%E5%85%A5%E9%97%A8/\">🇨🇳 中文文档</a></p>\n<h1 id=\"Hexo-Installation\"><a href=\"#Hexo-Installation\" class=\"headerlink\" title=\"Hexo Installation\"></a>Hexo Installation</h1><p>Installing a <code>Hexo</code> theme is straightforward. Simply copy the <code>Hexo-theme-cosy</code> directory to the <code>themes</code> directory, and then modify the theme configuration in <code>Hexo</code>‘s <code>_config.yml</code>.</p>\n<pre class=\"line-numbers language-yaml\" data-language=\"yaml\"><code class=\"language-yaml\"><span class=\"token comment\"># Locate the theme setting</span>\n<span class=\"token key atrule\">theme</span><span class=\"token punctuation\">:</span> hexo<span class=\"token punctuation\">-</span>theme<span class=\"token punctuation\">-</span>cosy<span aria-hidden=\"true\" class=\"line-numbers-rows\"><span></span><span></span></span></code></pre>\n\n<h2 id=\"Acquiring-Cosy\"><a href=\"#Acquiring-Cosy\" class=\"headerlink\" title=\"Acquiring Cosy\"></a>Acquiring Cosy</h2><ul>\n<li>Visit <a href=\"https://github.com/17px/hexo-theme-cosy/tree/main\">Cosy’s code repository</a> to stay updated on the latest theme developments.</li>\n<li>Download <code>hexo-theme-cosy.zip</code> from the <a href=\"https://github.com/17px/hexo-theme-cosy/releases\">releases page</a>.</li>\n<li>Extract it into your site’s <code>themes</code> directory.</li>\n<li>Enable it in Hexo’s <code>_config.yml</code>.</li>\n</ul>\n<h1 id=\"Hexo-Configuration\"><a href=\"#Hexo-Configuration\" class=\"headerlink\" title=\"Hexo Configuration\"></a>Hexo Configuration</h1><p>Adjust settings in <code>Hexo</code>‘s <code>_config.yml</code>.</p>\n<h2 id=\"Basic-Configuration\"><a href=\"#Basic-Configuration\" class=\"headerlink\" title=\"Basic Configuration\"></a>Basic Configuration</h2><pre class=\"line-numbers language-yaml\" data-language=\"yaml\"><code class=\"language-yaml\"><span class=\"token comment\"># Website title</span>\n<span class=\"token key atrule\">title</span><span class=\"token punctuation\">:</span> 17px blog\n<span class=\"token comment\"># Sidebar header</span>\n<span class=\"token key atrule\">subtitle</span><span class=\"token punctuation\">:</span> <span class=\"token string\">\"Mozzie\"</span>\n<span class=\"token comment\"># HTML meta description for SEO</span>\n<span class=\"token key atrule\">description</span><span class=\"token punctuation\">:</span> <span class=\"token string\">\"\"</span>\n<span class=\"token comment\"># HTML meta keywords for SEO</span>\n<span class=\"token key atrule\">keywords</span><span class=\"token punctuation\">:</span>\n<span class=\"token comment\"># Copyright text displaying author's name</span>\n<span class=\"token key atrule\">author</span><span class=\"token punctuation\">:</span> Mozzie\n\n<span class=\"token comment\"># Set your website URL here</span>\n<span class=\"token key atrule\">url</span><span class=\"token punctuation\">:</span> https<span class=\"token punctuation\">:</span>//mozzie.cn<span aria-hidden=\"true\" class=\"line-numbers-rows\"><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span></span></code></pre>\n\n<h2 id=\"Language-Switch\"><a href=\"#Language-Switch\" class=\"headerlink\" title=\"Language Switch\"></a>Language Switch</h2><p>You can find different language files in <code>hex theme liner/languages</code>. If you want to switch languages, fill in the file name of <code>yml</code> in the <code>_config.yml</code> file</p>\n<pre class=\"line-numbers language-yaml\" data-language=\"yaml\"><code class=\"language-yaml\"><span class=\"token key atrule\">language</span><span class=\"token punctuation\">:</span> en<span aria-hidden=\"true\" class=\"line-numbers-rows\"><span></span></span></code></pre>\n\n<h2 id=\"Code-Highlighting\"><a href=\"#Code-Highlighting\" class=\"headerlink\" title=\"Code Highlighting\"></a>Code Highlighting</h2><p>Disable Hexo’s default highlight.js syntax highlighting.</p>\n<pre class=\"line-numbers language-yaml\" data-language=\"yaml\"><code class=\"language-yaml\"><span class=\"token key atrule\">highlight</span><span class=\"token punctuation\">:</span>\n <span class=\"token key atrule\">enable</span><span class=\"token punctuation\">:</span> <span class=\"token boolean important\">false</span>\n <span class=\"token key atrule\">line_number</span><span class=\"token punctuation\">:</span> <span class=\"token boolean important\">true</span>\n <span class=\"token key atrule\">auto_detect</span><span class=\"token punctuation\">:</span> <span class=\"token boolean important\">false</span>\n <span class=\"token key atrule\">tab_replace</span><span class=\"token punctuation\">:</span> <span class=\"token string\">\"\"</span>\n <span class=\"token key atrule\">wrap</span><span class=\"token punctuation\">:</span> <span class=\"token boolean important\">true</span>\n <span class=\"token key atrule\">hljs</span><span class=\"token punctuation\">:</span> <span class=\"token boolean important\">false</span>\n\n<span class=\"token key atrule\">prismjs</span><span class=\"token punctuation\">:</span>\n <span class=\"token key atrule\">enable</span><span class=\"token punctuation\">:</span> <span class=\"token boolean important\">true</span>\n <span class=\"token key atrule\">preprocess</span><span class=\"token punctuation\">:</span> <span class=\"token boolean important\">true</span>\n <span class=\"token key atrule\">line_number</span><span class=\"token punctuation\">:</span> <span class=\"token boolean important\">true</span>\n <span class=\"token key atrule\">line_threshold</span><span class=\"token punctuation\">:</span> <span class=\"token number\">0</span>\n <span class=\"token key atrule\">tab_replace</span><span class=\"token punctuation\">:</span> <span class=\"token string\">\"\"</span><span aria-hidden=\"true\" class=\"line-numbers-rows\"><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span></span></code></pre>\n\n<h1 id=\"Cosy-Theme-Configuration\"><a href=\"#Cosy-Theme-Configuration\" class=\"headerlink\" title=\"Cosy Theme Configuration\"></a>Cosy Theme Configuration</h1><p>💡 The following settings are based on the <code>_config.yml</code> under <code>hexo-theme-cosy</code>.</p>\n<h2 id=\"Post-Category-Icons\"><a href=\"#Post-Category-Icons\" class=\"headerlink\" title=\"Post Category Icons\"></a>Post Category Icons</h2><p>In sequence, set the <code>svg</code> icons. You can get a wide variety of icons at <a href=\"https://www.xicons.org/\">xicon</a>.</p>\n<pre class=\"line-numbers language-yaml\" data-language=\"yaml\"><code class=\"language-yaml\"><span class=\"token key atrule\">postCategoryIcons</span><span class=\"token punctuation\">:</span>\n <span class=\"token punctuation\">-</span> <svg<span class=\"token punctuation\">></span><span class=\"token punctuation\">...</span></svg<span class=\"token punctuation\">></span>\n <span class=\"token punctuation\">-</span> <svg<span class=\"token punctuation\">></span><span class=\"token punctuation\">...</span></svg<span class=\"token punctuation\">></span>\n <span class=\"token punctuation\">-</span> <svg<span class=\"token punctuation\">></span><span class=\"token punctuation\">...</span></svg<span class=\"token punctuation\">></span><span aria-hidden=\"true\" class=\"line-numbers-rows\"><span></span><span></span><span></span><span></span></span></code></pre>\n\n<h2 id=\"Website-Favicon\"><a href=\"#Website-Favicon\" class=\"headerlink\" title=\"Website Favicon\"></a>Website Favicon</h2><ul>\n<li>Supports <code>svg</code></li>\n<li>Supports <code>image URL</code>, e.g., <code>/img/favicon.png</code></li>\n</ul>\n<pre class=\"line-numbers language-yaml\" data-language=\"yaml\"><code class=\"language-yaml\"><span class=\"token key atrule\">favicon</span><span class=\"token punctuation\">:</span> <span class=\"token string\">''</span><span aria-hidden=\"true\" class=\"line-numbers-rows\"><span></span></span></code></pre>\n\n<h2 id=\"ICP-Number-🇨🇳\"><a href=\"#ICP-Number-🇨🇳\" class=\"headerlink\" title=\"ICP Number 🇨🇳\"></a>ICP Number 🇨🇳</h2><p>😁 If not required, can be directly deleted.</p>\n<pre class=\"line-numbers language-yaml\" data-language=\"yaml\"><code class=\"language-yaml\"><span class=\"token key atrule\">icp</span><span class=\"token punctuation\">:</span> 苏ICP备xxxxxxx号<span class=\"token punctuation\">-</span>x<span aria-hidden=\"true\" class=\"line-numbers-rows\"><span></span></span></code></pre>\n\n<h2 id=\"Footer-Text-on-Homepage-🇨🇳\"><a href=\"#Footer-Text-on-Homepage-🇨🇳\" class=\"headerlink\" title=\"Footer Text on Homepage 🇨🇳\"></a>Footer Text on Homepage 🇨🇳</h2><p>😁 If not required, can be directly deleted or set to <code>false</code>.</p>\n<pre class=\"line-numbers language-yaml\" data-language=\"yaml\"><code class=\"language-yaml\"><span class=\"token key atrule\">motto</span><span class=\"token punctuation\">:</span> <span class=\"token boolean important\">false</span><span aria-hidden=\"true\" class=\"line-numbers-rows\"><span></span></span></code></pre>\n\n<h2 id=\"Post-Copyright-Statement\"><a href=\"#Post-Copyright-Statement\" class=\"headerlink\" title=\"Post Copyright Statement\"></a>Post Copyright Statement</h2><p>Enabled by default. When <code>enable: false</code>, it is disabled by default.</p>\n<pre class=\"line-numbers language-yaml\" data-language=\"yaml\"><code class=\"language-yaml\"><span class=\"token key atrule\">postCopyright</span><span class=\"token punctuation\">:</span>\n <span class=\"token key atrule\">enable</span><span class=\"token punctuation\">:</span> <span class=\"token boolean important\">true</span>\n <span class=\"token key atrule\">license</span><span class=\"token punctuation\">:</span> CC BY<span class=\"token punctuation\">-</span>NC<span class=\"token punctuation\">-</span>SA 4.0\n <span class=\"token key atrule\">license_url</span><span class=\"token punctuation\">:</span> https<span class=\"token punctuation\">:</span>//creativecommons.org/licenses/by<span class=\"token punctuation\">-</span>nc<span class=\"token punctuation\">-</span>sa/4.0/<span aria-hidden=\"true\" class=\"line-numbers-rows\"><span></span><span></span><span></span><span></span></span></code></pre>\n\n<h2 id=\"Katex-Mathematical-Formulas\"><a href=\"#Katex-Mathematical-Formulas\" class=\"headerlink\" title=\"Katex Mathematical Formulas\"></a>Katex Mathematical Formulas</h2><p>You can configure the CDN yourself.</p>\n<pre class=\"line-numbers language-yaml\" data-language=\"yaml\"><code class=\"language-yaml\"><span class=\"token key atrule\">katex</span><span class=\"token punctuation\">:</span>\n <span class=\"token key atrule\">enable</span><span class=\"token punctuation\">:</span> <span class=\"token boolean important\">true</span>\n <span class=\"token key atrule\">jsCdn</span><span class=\"token punctuation\">:</span> //cdn.jsdelivr.net/npm/katex@0.13.18/dist/katex.min.js\n <span class=\"token key atrule\">cssCdn</span><span class=\"token punctuation\">:</span> //cdn.jsdelivr.net/npm/katex@0.13.18/dist/katex.min.css<span aria-hidden=\"true\" class=\"line-numbers-rows\"><span></span><span></span><span></span><span></span></span></code></pre>\n\n<h2 id=\"Mermaid-Flowcharts\"><a href=\"#Mermaid-Flowcharts\" class=\"headerlink\" title=\"Mermaid Flowcharts\"></a>Mermaid Flowcharts</h2><p>To draft flowchart syntax, use <code>{% mermaid %}` and `{% endmermaid %}</code> as wrappers.</p>\n<pre class=\"line-numbers language-markdown\" data-language=\"markdown\"><code class=\"language-markdown\">{% mermaid %}\ngraph TD;\n A --> B;\n A --> C;\n B --> D;\n C --> D;\n{% endmermaid %}<span aria-hidden=\"true\" class=\"line-numbers-rows\"><span></span><span></span><span></span><span></span><span></span><span></span><span></span></span></code></pre>\n\n<p>Corresponding configurations are as follows:</p>\n<pre class=\"line-numbers language-yaml\" data-language=\"yaml\"><code class=\"language-yaml\"><span class=\"token key atrule\">mermaid</span><span class=\"token punctuation\">:</span>\n <span class=\"token key atrule\">enable</span><span class=\"token punctuation\">:</span> <span class=\"token boolean important\">true</span>\n <span class=\"token key atrule\">cdn</span><span class=\"token punctuation\">:</span> //cdn.jsdelivr.net/npm/mermaid@10.4.0/dist/mermaid.min.js<span aria-hidden=\"true\" class=\"line-numbers-rows\"><span></span><span></span><span></span></span></code></pre>\n\n<h2 id=\"Valine-Comments\"><a href=\"#Valine-Comments\" class=\"headerlink\" title=\"Valine Comments\"></a>Valine Comments</h2><p>First, register as a <code>LeanCloud</code> international user and create a database.</p>\n<p>Please proceed in accordance with relevant regional regulations.</p>\n<pre class=\"line-numbers language-yaml\" data-language=\"yaml\"><code class=\"language-yaml\"><span class=\"token key atrule\">valine</span><span class=\"token punctuation\">:</span>\n <span class=\"token key atrule\">enable</span><span class=\"token punctuation\">:</span> <span class=\"token boolean important\">true</span>\n <span class=\"token comment\"># 替换</span>\n <span class=\"token key atrule\">appId</span><span class=\"token punctuation\">:</span> appId\n <span class=\"token comment\"># 替换</span>\n <span class=\"token key atrule\">appKey</span><span class=\"token punctuation\">:</span> appKey\n <span class=\"token key atrule\">avatar</span><span class=\"token punctuation\">:</span> monsterid\n <span class=\"token key atrule\">cdn</span><span class=\"token punctuation\">:</span> //unpkg.com/valine@latest/dist/Valine.min.js\n <span class=\"token comment\"># 替换</span>\n <span class=\"token key atrule\">serverURLs</span><span class=\"token punctuation\">:</span> //xxxxxxxx.api.lncldglobal.com<span aria-hidden=\"true\" class=\"line-numbers-rows\"><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span></span></code></pre>\n\n<h1 id=\"Algolia-Search\"><a href=\"#Algolia-Search\" class=\"headerlink\" title=\"Algolia Search\"></a>Algolia Search</h1><p>The blog comes with built-in local search, based on frontend development, which may have some issues. It’s recommended to switch to <code>Algolia</code>. The free account has a total of 10,000 records and 100,000 operations per month.</p>\n<h2 id=\"Register-amp-Acquire-Key\"><a href=\"#Register-amp-Acquire-Key\" class=\"headerlink\" title=\"Register & Acquire Key\"></a>Register & Acquire Key</h2><ol>\n<li><p>Create a new <code>Index</code>, for example, <code>hex-blog</code></p>\n</li>\n<li><p>Copy and save:</p>\n</li>\n</ol>\n<ul>\n<li>Application ID</li>\n<li>Search-Only API Key</li>\n<li>Admin API Key</li>\n<li>Usage API Key</li>\n</ul>\n<p><img src=\"/img/algolia-api-keys.png\" alt=\"API Keys\"></p>\n<ol start=\"3\">\n<li>Replace configurations</li>\n</ol>\n<p>Add the following to Hexo’s <code>_config.yml</code></p>\n<pre class=\"line-numbers language-yaml\" data-language=\"yaml\"><code class=\"language-yaml\"><span class=\"token key atrule\">algolia</span><span class=\"token punctuation\">:</span>\n <span class=\"token comment\"># Replace</span>\n <span class=\"token key atrule\">appId</span><span class=\"token punctuation\">:</span> Application ID\n <span class=\"token comment\"># Replace</span>\n <span class=\"token key atrule\">apiKey</span><span class=\"token punctuation\">:</span> Usage API Key\n <span class=\"token comment\"># Do not disclose, used for reporting, replace</span>\n <span class=\"token key atrule\">adminApiKey</span><span class=\"token punctuation\">:</span> Admin API Key\n <span class=\"token comment\"># Replace</span>\n <span class=\"token key atrule\">SearchOnlyAPIKey</span><span class=\"token punctuation\">:</span> Search<span class=\"token punctuation\">-</span>Only API Key\n <span class=\"token key atrule\">chunkSize</span><span class=\"token punctuation\">:</span> <span class=\"token number\">5000</span>\n <span class=\"token comment\"># Replace</span>\n <span class=\"token key atrule\">indexName</span><span class=\"token punctuation\">:</span> hex<span class=\"token punctuation\">-</span>blog\n <span class=\"token key atrule\">fields</span><span class=\"token punctuation\">:</span>\n <span class=\"token punctuation\">-</span> content<span class=\"token punctuation\">:</span>strip\n <span class=\"token punctuation\">-</span> categories\n <span class=\"token punctuation\">-</span> date\n <span class=\"token punctuation\">-</span> permalink\n <span class=\"token punctuation\">-</span> slug\n <span class=\"token punctuation\">-</span> tags\n <span class=\"token punctuation\">-</span> title<span aria-hidden=\"true\" class=\"line-numbers-rows\"><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span></span></code></pre>\n\n<h2 id=\"Install-hexo-algoliasearch\"><a href=\"#Install-hexo-algoliasearch\" class=\"headerlink\" title=\"Install hexo-algoliasearch\"></a>Install hexo-algoliasearch</h2><p>This is a Hexo blog post index plugin that automates the submission of indexes to Algolia.</p>\n<blockquote>\n<p>If you encounter any problems, you can read the <a href=\"https://www.npmjs.com/package/hexo-algoliasearch\">hexo-algoliasearch repository</a> for the latest instructions.</p>\n</blockquote>\n<p>Installation command:</p>\n<pre class=\"line-numbers language-bash\" data-language=\"bash\"><code class=\"language-bash\"><span class=\"token function\">npm</span> <span class=\"token function\">install</span> hexo-algoliasearch <span class=\"token parameter variable\">--save</span><span aria-hidden=\"true\" class=\"line-numbers-rows\"><span></span></span></code></pre>\n\n<h2 id=\"Using-Algolia\"><a href=\"#Using-Algolia\" class=\"headerlink\" title=\"Using Algolia\"></a>Using Algolia</h2><p>Before publishing each blog post, carry out index uploading operations. The usual commands are as follows:</p>\n<pre class=\"line-numbers language-bash\" data-language=\"bash\"><code class=\"language-bash\">hexo clean\nhexo generate\nhexo algolia<span aria-hidden=\"true\" class=\"line-numbers-rows\"><span></span><span></span><span></span></span></code></pre>\n\n\n<h1 id=\"QWeather-Widget-🇨🇳\"><a href=\"#QWeather-Widget-🇨🇳\" class=\"headerlink\" title=\"QWeather Widget 🇨🇳\"></a>QWeather Widget 🇨🇳</h1><p>Cosy mainly targets domestic users and integrates QWeather cards on the homepage. Register via <a href=\"https://dev.qweather.com/docs/start/\">QWeather Developer Service</a>.</p>\n<p>After registering, fill in your <code>appKey</code> and <code>cityCode</code> in the configuration.</p>\n<pre class=\"line-numbers language-yaml\" data-language=\"yaml\"><code class=\"language-yaml\"><span class=\"token key atrule\">weather</span><span class=\"token punctuation\">:</span>\n <span class=\"token key atrule\">enable</span><span class=\"token punctuation\">:</span> <span class=\"token boolean important\">true</span>\n <span class=\"token comment\"># Replace</span>\n <span class=\"token key atrule\">cityCode</span><span class=\"token punctuation\">:</span> cityCode\n <span class=\"token key atrule\">appKey</span><span class=\"token punctuation\">:</span> appKey<span aria-hidden=\"true\" class=\"line-numbers-rows\"><span></span><span></span><span></span><span></span><span></span></span></code></pre>\n\n<p>You can find your city’s <code>cityCode</code> in the official region list repository’s <code>China-City-List-latest.csv</code>.</p>\n<h1 id=\"Front-Matter\"><a href=\"#Front-Matter\" class=\"headerlink\" title=\"Front Matter\"></a>Front Matter</h1><p>In Hexo’s Markdown files, a typical YAML-formatted <code>Front Matter</code> might look like this:</p>\n<pre class=\"line-numbers language-markdown\" data-language=\"markdown\"><code class=\"language-markdown\"><span class=\"token front-matter-block\"><span class=\"token punctuation\">---</span>\n<span class=\"token front-matter yaml language-yaml\"><span class=\"token key atrule\">title</span><span class=\"token punctuation\">:</span> My Article Title\n<span class=\"token key atrule\">categories</span><span class=\"token punctuation\">:</span>\n<span class=\"token punctuation\">-</span> javascript\n<span class=\"token key atrule\">tags</span><span class=\"token punctuation\">:</span> \n<span class=\"token punctuation\">-</span> Programming\n<span class=\"token punctuation\">-</span> JavaScript</span>\n<span class=\"token punctuation\">---</span></span><span aria-hidden=\"true\" class=\"line-numbers-rows\"><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span></span></code></pre>\n\n<h2 id=\"top\"><a href=\"#top\" class=\"headerlink\" title=\"top\"></a>top</h2><p>To pin an article to the top, assign a numerical value to the <code>top</code> metadata. Articles with a specified <code>top</code> value will be marked with a 📌 icon in the category list.</p>\n<p>For example, if there are three articles:</p>\n<ul>\n<li>Article 1</li>\n</ul>\n<pre class=\"line-numbers language-markdown\" data-language=\"markdown\"><code class=\"language-markdown\"><span class=\"token front-matter-block\"><span class=\"token punctuation\">---</span>\n<span class=\"token front-matter yaml language-yaml\"><span class=\"token key atrule\">title</span><span class=\"token punctuation\">:</span> Article 1\n<span class=\"token key atrule\">top</span><span class=\"token punctuation\">:</span> <span class=\"token number\">0</span>\n<span class=\"token key atrule\">categories</span><span class=\"token punctuation\">:</span>\n <span class=\"token punctuation\">-</span> javascript</span>\n<span class=\"token punctuation\">---</span></span><span aria-hidden=\"true\" class=\"line-numbers-rows\"><span></span><span></span><span></span><span></span><span></span><span></span></span></code></pre>\n\n<ul>\n<li>Article 2</li>\n</ul>\n<pre class=\"line-numbers language-markdown\" data-language=\"markdown\"><code class=\"language-markdown\"><span class=\"token front-matter-block\"><span class=\"token punctuation\">---</span>\n<span class=\"token front-matter yaml language-yaml\"><span class=\"token key atrule\">title</span><span class=\"token punctuation\">:</span> Article 2\n<span class=\"token key atrule\">top</span><span class=\"token punctuation\">:</span> <span class=\"token number\">1</span>\n<span class=\"token key atrule\">categories</span><span class=\"token punctuation\">:</span>\n <span class=\"token punctuation\">-</span> javascript</span>\n<span class=\"token punctuation\">---</span></span><span aria-hidden=\"true\" class=\"line-numbers-rows\"><span></span><span></span><span></span><span></span><span></span><span></span></span></code></pre>\n\n<ul>\n<li>Article 3</li>\n</ul>\n<pre class=\"line-numbers language-markdown\" data-language=\"markdown\"><code class=\"language-markdown\"><span class=\"token front-matter-block\"><span class=\"token punctuation\">---</span>\n<span class=\"token front-matter yaml language-yaml\"><span class=\"token key atrule\">title</span><span class=\"token punctuation\">:</span> Article 3\n<span class=\"token key atrule\">categories</span><span class=\"token punctuation\">:</span>\n <span class=\"token punctuation\">-</span> javascript</span>\n<span class=\"token punctuation\">---</span></span><span aria-hidden=\"true\" class=\"line-numbers-rows\"><span></span><span></span><span></span><span></span><span></span></span></code></pre>\n\n<p>Then, under the <code>javascript</code> category, the sort order will be: <code>Article 1 > Article 2 > Article 3</code>.</p>\n<h2 id=\"status\"><a href=\"#status\" class=\"headerlink\" title=\"status\"></a>status</h2><p>This is used to differentiate the status of articles and can be quickly <code>filtered</code> using the category list. The Cosy theme comes with 4 built-in statuses:</p>\n<ul>\n<li>done: Completed</li>\n<li>doing: In Progress</li>\n<li>todo: To Do</li>\n<li>other: Abandoned</li>\n</ul>\n<p>For example:</p>\n<pre class=\"line-numbers language-markdown\" data-language=\"markdown\"><code class=\"language-markdown\"><span class=\"token front-matter-block\"><span class=\"token punctuation\">---</span>\n<span class=\"token front-matter yaml language-yaml\"><span class=\"token key atrule\">title</span><span class=\"token punctuation\">:</span> Article 1\n<span class=\"token key atrule\">categories</span><span class=\"token punctuation\">:</span>\n<span class=\"token punctuation\">-</span> javascript\n<span class=\"token key atrule\">status</span><span class=\"token punctuation\">:</span> done</span>\n<span class=\"token punctuation\">---</span></span><span aria-hidden=\"true\" class=\"line-numbers-rows\"><span></span><span></span><span></span><span></span><span></span><span></span></span></code></pre>\n\n\n\n<h1 id=\"Custom-Page\"><a href=\"#Custom-Page\" class=\"headerlink\" title=\"Custom Page\"></a>Custom Page</h1><p>Hexo uses Markdown (or other rendering engine) to parse your article and generate static files for quick loading. In addition to the default generated articles and archive pages, Hexo also allows you to create custom pages.</p>\n<h2 id=\"Roadmap\"><a href=\"#Roadmap\" class=\"headerlink\" title=\"Roadmap\"></a>Roadmap</h2><p>To create a page, you can use the command</p>\n<pre class=\"line-numbers language-bash\" data-language=\"bash\"><code class=\"language-bash\">hexo new page roadmap<span aria-hidden=\"true\" class=\"line-numbers-rows\"><span></span></span></code></pre>\n\n<p>After success, a new folder <code>/roadmap/index.md</code> will be generated under the <code>source/</code> folder</p>\n<p>You can refer to this template for configure <code>/roadmap/index.md</code>, parameter description:</p>\n<ul>\n<li>title: Title of roadmap page HTML</li>\n<li>initYear: Default displayed year</li>\n</ul>\n<pre class=\"line-numbers language-markdown\" data-language=\"markdown\"><code class=\"language-markdown\">title: Title - roadmap\nlayout: roadmap\ninitYear: 2023\nyears:\n 2022:\n <span class=\"token list punctuation\">-</span> title: reading\n start: 01-01\n end: 1-5\n <span class=\"token list punctuation\">-</span> title: cooking\n start: 02-01\n end: 05-30\n 2023:\n <span class=\"token list punctuation\">-</span> title: Yue Mo Du Qian\n start: 01-01\n end: 1-2\n <span class=\"token list punctuation\">-</span> title: To use and preserve in vain\n start: 02-01\n end: 06-30\n <span class=\"token list punctuation\">-</span> title: Short Song Line\n start: 10-26\n end: 10-31\n content: Singing and drinking, geometry of life! For example, the morning dew is more bitter than the past. Be generous and forget your worries. How to relieve worries? Only Du Kang. Qingqing Zijin, carefree in my heart. But for your sake, I have been pondering until now. Yo, deer chirp, eating wild apples.\n <span class=\"token list punctuation\">-</span> title: Prosody enlightenment\n start: 11-01\n end: 11-31\n content: The flowers bloom in red and beautiful colors, and the water ripples with azure glass. Going to my wife to explore my neighbor's date, going to my wife to plant a backyard sunflower<span aria-hidden=\"true\" class=\"line-numbers-rows\"><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span></span></code></pre>\n\n<h2 id=\"Resume\"><a href=\"#Resume\" class=\"headerlink\" title=\"Resume\"></a>Resume</h2><p>To create a page, you can use the command</p>\n<pre class=\"line-numbers language-bash\" data-language=\"bash\"><code class=\"language-bash\">hexo new page resume<span aria-hidden=\"true\" class=\"line-numbers-rows\"><span></span></span></code></pre>\n\n<p>After success, a new folder will be generated folder <code>/resume/index.md</code> under the <code>source/</code></p>\n<p>You can refer to this template for configure <code>/resume/index.md</code>, parameter description:</p>\n<ul>\n<li>title: The title of the resume page’s HTML</li>\n<li>avatar: Address of the avatar image</li>\n</ul>\n<pre class=\"line-numbers language-markdown\" data-language=\"markdown\"><code class=\"language-markdown\">title: resume\nlayout: resume\navatar: /img/avatar.png\nname: Hi! Mozzie\nrole: Full Stack\nemail: himozzie@gmail.com\nphone: +86 180-xxxx-xxx\nbirth: Jan 21, 1994\nlocation: Nanjing, China\nsocial:\n <span class=\"token list punctuation\">-</span> name: github\n link: https://github.com/17px\n icon: svg\n\nabout:\n <span class=\"token list punctuation\">-</span> My job is to build your website so that it is functional and user-friendly but at the same time attractive. \n <span class=\"token list punctuation\">-</span> Moreover, I add personal touch to your product and make sure that is eye-catching and easy to use. My aim is to bring across your message and identity in the most creative way. I created web design for many famous brand companies.\n\nskill:\n <span class=\"token list punctuation\">-</span> Familiar with Node, with backend development capabilities, experience in individual application projects such as SpringBoot, Egg, Koa2, and Midway, and experience in Nestjs microservice application projects\n <span class=\"token list punctuation\">-</span> Having experience in Monorepo engineering and possessing the ability to separate the front and rear ends of a single unit and apply DevOps\n <span class=\"token list punctuation\">-</span> Familiar with three. js, familiar with Vtk. js, with development experience in medical 3D front-end and graphics related fields\n <span class=\"token list punctuation\">-</span> Master basic Linux commands and understand the basic use of Nginx and Docker\n\neducation:\n <span class=\"token list punctuation\">-</span> school: University School of the Arts\n time: 2012-2016\n\nworkExp:\n <span class=\"token list punctuation\">-</span> inc: Creative Director\n time: 2021.09 <span class=\"token strike\"><span class=\"token punctuation\">~</span><span class=\"token content\"> today\n - inc: Web Designer\n time: 2021.01 </span><span class=\"token punctuation\">~</span></span> 2021.09\n\nprojectExp:\n <span class=\"token list punctuation\">-</span> name: PC/React • Annotation, Algorithm Data Center\n desc: This is a xxx system. It mainly includes a b c function. I am mainly responsible for the development and maintenance of the x, y, and z modules.\n\n<span class=\"token code keyword\"> list:\n - Using pnpm workspace to manage multiple code repositories in Monorepo, supporting the coexistence of multiple frameworks, and sharing common component libraries and capabilities\n - Use Rollup to package some functional capabilities (such as a b) on your own, which can be used for both browsers and node.js to achieve code isomorphism\n - Develop the system server using Nest.js and use it for the microservice system of the project</span>\n\n <span class=\"token list punctuation\">-</span> name: PC/React • Tavigator Aortic Root/Peripheral\n desc: This is a xxx system. It mainly includes a b c function. I am mainly responsible for the development and maintenance of the x, y, and z modules.\n \n<span class=\"token code keyword\"> list:\n - Using pnpm workspace to manage multiple code repositories in Monorepo, supporting the coexistence of multiple frameworks, and sharing common component libraries and capabilities\n - Use Rollup to package some functional capabilities (such as a b) on your own, which can be used for both browsers and node.js to achieve code isomorphism\n - Develop the system server using Nest.js and use it for the microservice system of the project</span><span aria-hidden=\"true\" class=\"line-numbers-rows\"><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span></span></code></pre>"},{"title":"Markdown Sample","description":"A very simple way to add structured data to a page.","status":"done","top":0,"keywords":"Markdown, 代码高亮 (Codes), 引用 (Blockquotes), 列表 (Lists), 图片 (Images), 表格 (Tables), Emoji, TeX(KaTeX), 流程图 (mermaid)","_content":"\n# Linear Markdown Sample\n\n![markdown](https://pandao.github.io/editor.md/images/logos/editormd-logo-180x180.png)\n\n\n# Heading 1 link [Heading link](https://github.com/pandao/editor.md \"Heading link\")\n## Heading 2 link [Heading link](https://github.com/pandao/editor.md \"Heading link\")\n### Heading 3 link [Heading link](https://github.com/pandao/editor.md \"Heading link\")\n#### Heading 4 link [Heading link](https://github.com/pandao/editor.md \"Heading link\") Heading link [Heading link](https://github.com/pandao/editor.md \"Heading link\")\n##### Heading 5 link [Heading link](https://github.com/pandao/editor.md \"Heading link\")\n###### Heading 6 link [Heading link](https://github.com/pandao/editor.md \"Heading link\")\n\n\n\n# 字符效果和横线等\n \n----\n\n~~删除线~~ <s>删除线(开启识别HTML标签时)</s>\n*斜体字* _斜体字_\n**粗体** __粗体__\n***粗斜体*** ___粗斜体___\n\n上标:X<sub>2</sub>,下标:O<sup>2</sup>\n\n**缩写(同HTML的abbr标签)**\n\n> 即更长的单词或短语的缩写形式,前提是开启识别HTML标签时,已默认开启\n\nThe <abbr title=\"Hyper Text Markup Language\">HTML</abbr> specification is maintained by the <abbr title=\"World Wide Web Consortium\">W3C</abbr>.\n\n# 引用 Blockquotes\n\n> 引用文本 Blockquotes\n\n引用的行内混合 Blockquotes\n \n> 引用:如果想要插入空白换行`即<br />标签`,在插入处先键入两个以上的空格然后回车即可,[普通链接](http://localhost/)。\n\n# 锚点与链接 Links\n\n[普通链接](http://localhost/)\n\n[普通链接带标题](http://localhost/ \"普通链接带标题\")\n\n直接链接:<https://github.com>\n\nhttps://baidu.com\n\n[锚点链接][anchor-id] \n\n[anchor-id]: http://www.this-anchor-link.com/\n\n[mailto:test.test@gmail.com](mailto:test.test@gmail.com)\n\nGFM a-tail link [@pandao](https://my.oschina.net/u/3691274) 邮箱地址自动链接 test.test@gmail.com www@vip.qq.com\n\n> @pandao\n\n# 多语言代码高亮 Codes\n\n## 行内代码 Inline code\n\n执行命令:`npm install marked`\n\n## JS代码 \n\n```javascript\nfunction test() {\n\tconsole.log(\"Hello world!\");\n}\n \n(function(){\n var box = function() {\n return box.fn.init();\n };\n\n box.prototype = box.fn = {\n init : function(){\n console.log('box.init()');\n\n\t\t\treturn this;\n },\n\n\t\tadd : function(str) {\n\t\t\talert(\"add\", str);\n\n\t\t\treturn this;\n\t\t},\n\n\t\tremove : function(str) {\n\t\t\talert(\"remove\", str);\n\n\t\t\treturn this;\n\t\t}\n };\n \n box.fn.init.prototype = box.fn;\n \n window.box =box;\n})();\n\nvar testBox = box();\ntestBox.add(\"jQuery\").remove(\"jQuery\");\n```\n\n## HTML 代码 HTML codes\n\n```html\n<!DOCTYPE html>\n<html>\n <head>\n <mate charest=\"utf-8\" />\n <meta name=\"keywords\" content=\"Editor.md, Markdown, Editor\" />\n <title>Hello world!</title>\n <style type=\"text/css\">\n body{font-size:14px;color:#444;font-family: \"Microsoft Yahei\", Tahoma, \"Hiragino Sans GB\", Arial;background:#fff;}\n ul{list-style: none;}\n img{border:none;vertical-align: middle;}\n </style>\n </head>\n <body>\n <h1 class=\"text-xxl\">Hello world!</h1>\n <p class=\"text-green\">Plain text</p>\n </body>\n</html>\n```\n\n# 图片 Images\n\nImage:\n\n![](https://pandao.github.io/editor.md/examples/images/4.jpg)\n\n> Follow your heart.\n\n![](https://pandao.github.io/editor.md/examples/images/8.jpg)\n\n> 图为:厦门白城沙滩\n\n图片加链接 (Image + Link):\n\n[![](https://pandao.github.io/editor.md/examples/images/7.jpg)](https://pandao.github.io/editor.md/images/7.jpg \"李健首张专辑《似水流年》封面\")\n\n> 图为:李健首张专辑《似水流年》封面\n \n----\n\n# 列表 Lists\n\n## 无序列表(减号)Unordered Lists (-)\n \n- 列表一\n- 列表二\n- 列表三\n \n## 无序列表(星号)Unordered Lists (*)\n\n* 列表一\n* 列表二\n* 列表三\n\n## 无序列表(加号和嵌套)Unordered Lists (+)\n \n+ 列表一\n+ 列表二\n + 列表二-1\n + 列表二-2\n + 列表二-3\n+ 列表三\n * 列表一\n * 列表二\n * 列表三\n\n## 有序列表 Ordered Lists (-)\n \n1. 第一行\n2. 第二行\n3. 第三行\n\n## GFM task list\n\n- [x] GFM task list 1\n- [x] GFM task list 2\n- [ ] GFM task list 3\n - [ ] GFM task list 3-1\n - [ ] GFM task list 3-2\n - [ ] GFM task list 3-3\n- [ ] GFM task list 4\n - [ ] GFM task list 4-1\n - [ ] GFM task list 4-2\n \n----\n \n# 绘制表格 Tables\n\n| 项目 | 价格 | 数量 |\n| ------ | ----: | :---: |\n| 计算机 | $1600 | 5 |\n| 手机 | $12 | 12 |\n| 管线 | $1 | 234 |\n \n| First Header | Second Header |\n| ------------ | ------------- |\n| Content Cell | Content Cell |\n| Content Cell | Content Cell |\n\n| First Header | Second Header |\n| ------------ | ------------- |\n| Content Cell | Content Cell |\n| Content Cell | Content Cell |\n\n| Function name | Description |\n| ------------- | -------------------------- |\n| `help()` | Display the help window. |\n| `destroy()` | **Destroy your computer!** |\n\n| Left-Aligned | Center Aligned | Right Aligned |\n| :------------ | :-------------: | ------------: |\n| col 3 is | some wordy text | $1600 |\n| col 2 is | centered | $12 |\n| zebra stripes | are neat | $1 |\n\n| Item | Value |\n| -------- | ----: |\n| Computer | $1600 |\n| Phone | $12 |\n| Pipe | $1 |\n \n# 科学公式 TeX(KaTeX)\n\n$$E=mc^2$$\n\n$$x > y$$\n\n$$\\(\\sqrt{3x-1}+(1+x)^2\\)$$\n \n$$\\sin(\\alpha)^{\\theta}=\\sum_{i=0}^{n}(x^i + \\cos(f))$$\n\n\n# 绘制流程图 mermaid\n\n{% mermaid %}\ngraph TD;\n A --> B;\n A --> C;\n B --> D;\n C --> D;\n{% endmermaid %}\n\n \n \nEnd","source":"_posts/Markdown Sample.md","raw":"---\ntitle: Markdown Sample\ndescription: A very simple way to add structured data to a page.\nstatus: done\ntop: 0\ncategories: \n- Hexo\nkeywords: \"Markdown, 代码高亮 (Codes), 引用 (Blockquotes), 列表 (Lists), 图片 (Images), 表格 (Tables), Emoji, TeX(KaTeX), 流程图 (mermaid)\"\n---\n\n# Linear Markdown Sample\n\n![markdown](https://pandao.github.io/editor.md/images/logos/editormd-logo-180x180.png)\n\n\n# Heading 1 link [Heading link](https://github.com/pandao/editor.md \"Heading link\")\n## Heading 2 link [Heading link](https://github.com/pandao/editor.md \"Heading link\")\n### Heading 3 link [Heading link](https://github.com/pandao/editor.md \"Heading link\")\n#### Heading 4 link [Heading link](https://github.com/pandao/editor.md \"Heading link\") Heading link [Heading link](https://github.com/pandao/editor.md \"Heading link\")\n##### Heading 5 link [Heading link](https://github.com/pandao/editor.md \"Heading link\")\n###### Heading 6 link [Heading link](https://github.com/pandao/editor.md \"Heading link\")\n\n\n\n# 字符效果和横线等\n \n----\n\n~~删除线~~ <s>删除线(开启识别HTML标签时)</s>\n*斜体字* _斜体字_\n**粗体** __粗体__\n***粗斜体*** ___粗斜体___\n\n上标:X<sub>2</sub>,下标:O<sup>2</sup>\n\n**缩写(同HTML的abbr标签)**\n\n> 即更长的单词或短语的缩写形式,前提是开启识别HTML标签时,已默认开启\n\nThe <abbr title=\"Hyper Text Markup Language\">HTML</abbr> specification is maintained by the <abbr title=\"World Wide Web Consortium\">W3C</abbr>.\n\n# 引用 Blockquotes\n\n> 引用文本 Blockquotes\n\n引用的行内混合 Blockquotes\n \n> 引用:如果想要插入空白换行`即<br />标签`,在插入处先键入两个以上的空格然后回车即可,[普通链接](http://localhost/)。\n\n# 锚点与链接 Links\n\n[普通链接](http://localhost/)\n\n[普通链接带标题](http://localhost/ \"普通链接带标题\")\n\n直接链接:<https://github.com>\n\nhttps://baidu.com\n\n[锚点链接][anchor-id] \n\n[anchor-id]: http://www.this-anchor-link.com/\n\n[mailto:test.test@gmail.com](mailto:test.test@gmail.com)\n\nGFM a-tail link [@pandao](https://my.oschina.net/u/3691274) 邮箱地址自动链接 test.test@gmail.com www@vip.qq.com\n\n> @pandao\n\n# 多语言代码高亮 Codes\n\n## 行内代码 Inline code\n\n执行命令:`npm install marked`\n\n## JS代码 \n\n```javascript\nfunction test() {\n\tconsole.log(\"Hello world!\");\n}\n \n(function(){\n var box = function() {\n return box.fn.init();\n };\n\n box.prototype = box.fn = {\n init : function(){\n console.log('box.init()');\n\n\t\t\treturn this;\n },\n\n\t\tadd : function(str) {\n\t\t\talert(\"add\", str);\n\n\t\t\treturn this;\n\t\t},\n\n\t\tremove : function(str) {\n\t\t\talert(\"remove\", str);\n\n\t\t\treturn this;\n\t\t}\n };\n \n box.fn.init.prototype = box.fn;\n \n window.box =box;\n})();\n\nvar testBox = box();\ntestBox.add(\"jQuery\").remove(\"jQuery\");\n```\n\n## HTML 代码 HTML codes\n\n```html\n<!DOCTYPE html>\n<html>\n <head>\n <mate charest=\"utf-8\" />\n <meta name=\"keywords\" content=\"Editor.md, Markdown, Editor\" />\n <title>Hello world!</title>\n <style type=\"text/css\">\n body{font-size:14px;color:#444;font-family: \"Microsoft Yahei\", Tahoma, \"Hiragino Sans GB\", Arial;background:#fff;}\n ul{list-style: none;}\n img{border:none;vertical-align: middle;}\n </style>\n </head>\n <body>\n <h1 class=\"text-xxl\">Hello world!</h1>\n <p class=\"text-green\">Plain text</p>\n </body>\n</html>\n```\n\n# 图片 Images\n\nImage:\n\n![](https://pandao.github.io/editor.md/examples/images/4.jpg)\n\n> Follow your heart.\n\n![](https://pandao.github.io/editor.md/examples/images/8.jpg)\n\n> 图为:厦门白城沙滩\n\n图片加链接 (Image + Link):\n\n[![](https://pandao.github.io/editor.md/examples/images/7.jpg)](https://pandao.github.io/editor.md/images/7.jpg \"李健首张专辑《似水流年》封面\")\n\n> 图为:李健首张专辑《似水流年》封面\n \n----\n\n# 列表 Lists\n\n## 无序列表(减号)Unordered Lists (-)\n \n- 列表一\n- 列表二\n- 列表三\n \n## 无序列表(星号)Unordered Lists (*)\n\n* 列表一\n* 列表二\n* 列表三\n\n## 无序列表(加号和嵌套)Unordered Lists (+)\n \n+ 列表一\n+ 列表二\n + 列表二-1\n + 列表二-2\n + 列表二-3\n+ 列表三\n * 列表一\n * 列表二\n * 列表三\n\n## 有序列表 Ordered Lists (-)\n \n1. 第一行\n2. 第二行\n3. 第三行\n\n## GFM task list\n\n- [x] GFM task list 1\n- [x] GFM task list 2\n- [ ] GFM task list 3\n - [ ] GFM task list 3-1\n - [ ] GFM task list 3-2\n - [ ] GFM task list 3-3\n- [ ] GFM task list 4\n - [ ] GFM task list 4-1\n - [ ] GFM task list 4-2\n \n----\n \n# 绘制表格 Tables\n\n| 项目 | 价格 | 数量 |\n| ------ | ----: | :---: |\n| 计算机 | $1600 | 5 |\n| 手机 | $12 | 12 |\n| 管线 | $1 | 234 |\n \n| First Header | Second Header |\n| ------------ | ------------- |\n| Content Cell | Content Cell |\n| Content Cell | Content Cell |\n\n| First Header | Second Header |\n| ------------ | ------------- |\n| Content Cell | Content Cell |\n| Content Cell | Content Cell |\n\n| Function name | Description |\n| ------------- | -------------------------- |\n| `help()` | Display the help window. |\n| `destroy()` | **Destroy your computer!** |\n\n| Left-Aligned | Center Aligned | Right Aligned |\n| :------------ | :-------------: | ------------: |\n| col 3 is | some wordy text | $1600 |\n| col 2 is | centered | $12 |\n| zebra stripes | are neat | $1 |\n\n| Item | Value |\n| -------- | ----: |\n| Computer | $1600 |\n| Phone | $12 |\n| Pipe | $1 |\n \n# 科学公式 TeX(KaTeX)\n\n$$E=mc^2$$\n\n$$x > y$$\n\n$$\\(\\sqrt{3x-1}+(1+x)^2\\)$$\n \n$$\\sin(\\alpha)^{\\theta}=\\sum_{i=0}^{n}(x^i + \\cos(f))$$\n\n\n# 绘制流程图 mermaid\n\n{% mermaid %}\ngraph TD;\n A --> B;\n A --> C;\n B --> D;\n C --> D;\n{% endmermaid %}\n\n \n \nEnd","slug":"Markdown Sample","published":1,"date":"2023-10-23T04:01:13.108Z","updated":"2023-10-23T04:01:13.108Z","comments":1,"layout":"post","photos":[],"link":"","_id":"clodvl5110006egz3gahygeng","content":"<h1 id=\"Linear-Markdown-Sample\"><a href=\"#Linear-Markdown-Sample\" class=\"headerlink\" title=\"Linear Markdown Sample\"></a>Linear Markdown Sample</h1><p><img src=\"https://pandao.github.io/editor.md/images/logos/editormd-logo-180x180.png\" alt=\"markdown\"></p>\n<h1 id=\"Heading-1-link-Heading-link\"><a href=\"#Heading-1-link-Heading-link\" class=\"headerlink\" title=\"Heading 1 link Heading link\"></a>Heading 1 link <a href=\"https://github.com/pandao/editor.md\" title=\"Heading link\">Heading link</a></h1><h2 id=\"Heading-2-link-Heading-link\"><a href=\"#Heading-2-link-Heading-link\" class=\"headerlink\" title=\"Heading 2 link Heading link\"></a>Heading 2 link <a href=\"https://github.com/pandao/editor.md\" title=\"Heading link\">Heading link</a></h2><h3 id=\"Heading-3-link-Heading-link\"><a href=\"#Heading-3-link-Heading-link\" class=\"headerlink\" title=\"Heading 3 link Heading link\"></a>Heading 3 link <a href=\"https://github.com/pandao/editor.md\" title=\"Heading link\">Heading link</a></h3><h4 id=\"Heading-4-link-Heading-link-Heading-link-Heading-link\"><a href=\"#Heading-4-link-Heading-link-Heading-link-Heading-link\" class=\"headerlink\" title=\"Heading 4 link Heading link Heading link Heading link\"></a>Heading 4 link <a href=\"https://github.com/pandao/editor.md\" title=\"Heading link\">Heading link</a> Heading link <a href=\"https://github.com/pandao/editor.md\" title=\"Heading link\">Heading link</a></h4><h5 id=\"Heading-5-link-Heading-link\"><a href=\"#Heading-5-link-Heading-link\" class=\"headerlink\" title=\"Heading 5 link Heading link\"></a>Heading 5 link <a href=\"https://github.com/pandao/editor.md\" title=\"Heading link\">Heading link</a></h5><h6 id=\"Heading-6-link-Heading-link\"><a href=\"#Heading-6-link-Heading-link\" class=\"headerlink\" title=\"Heading 6 link Heading link\"></a>Heading 6 link <a href=\"https://github.com/pandao/editor.md\" title=\"Heading link\">Heading link</a></h6><h1 id=\"字符效果和横线等\"><a href=\"#字符效果和横线等\" class=\"headerlink\" title=\"字符效果和横线等\"></a>字符效果和横线等</h1><hr>\n<p><del>删除线</del> <s>删除线(开启识别HTML标签时)</s><br><em>斜体字</em> <em>斜体字</em><br><strong>粗体</strong> <strong>粗体</strong><br><em><strong>粗斜体</strong></em> <em><strong>粗斜体</strong></em></p>\n<p>上标:X<sub>2</sub>,下标:O<sup>2</sup></p>\n<p><strong>缩写(同HTML的abbr标签)</strong></p>\n<blockquote>\n<p>即更长的单词或短语的缩写形式,前提是开启识别HTML标签时,已默认开启</p>\n</blockquote>\n<p>The <abbr title=\"Hyper Text Markup Language\">HTML</abbr> specification is maintained by the <abbr title=\"World Wide Web Consortium\">W3C</abbr>.</p>\n<h1 id=\"引用-Blockquotes\"><a href=\"#引用-Blockquotes\" class=\"headerlink\" title=\"引用 Blockquotes\"></a>引用 Blockquotes</h1><blockquote>\n<p>引用文本 Blockquotes</p>\n</blockquote>\n<p>引用的行内混合 Blockquotes</p>\n<blockquote>\n<p>引用:如果想要插入空白换行<code>即<br />标签</code>,在插入处先键入两个以上的空格然后回车即可,<a href=\"http://localhost/\">普通链接</a>。</p>\n</blockquote>\n<h1 id=\"锚点与链接-Links\"><a href=\"#锚点与链接-Links\" class=\"headerlink\" title=\"锚点与链接 Links\"></a>锚点与链接 Links</h1><p><a href=\"http://localhost/\">普通链接</a></p>\n<p><a href=\"http://localhost/\" title=\"普通链接带标题\">普通链接带标题</a></p>\n<p>直接链接:<a href=\"https://github.com/\">https://github.com</a></p>\n<p><a href=\"https://baidu.com/\">https://baidu.com</a></p>\n<p><a href=\"http://www.this-anchor-link.com/\">锚点链接</a> </p>\n<p><a href=\"mailto:test.test@gmail.com\">mailto:test.test@gmail.com</a></p>\n<p>GFM a-tail link <a href=\"https://my.oschina.net/u/3691274\">@pandao</a> 邮箱地址自动链接 <a href=\"mailto:test.test@gmail.com\">test.test@gmail.com</a> <a href=\"mailto:www@vip.qq.com\">www@vip.qq.com</a></p>\n<blockquote>\n<p>@pandao</p>\n</blockquote>\n<h1 id=\"多语言代码高亮-Codes\"><a href=\"#多语言代码高亮-Codes\" class=\"headerlink\" title=\"多语言代码高亮 Codes\"></a>多语言代码高亮 Codes</h1><h2 id=\"行内代码-Inline-code\"><a href=\"#行内代码-Inline-code\" class=\"headerlink\" title=\"行内代码 Inline code\"></a>行内代码 Inline code</h2><p>执行命令:<code>npm install marked</code></p>\n<h2 id=\"JS代码\"><a href=\"#JS代码\" class=\"headerlink\" title=\"JS代码\"></a>JS代码</h2><pre class=\"line-numbers language-javascript\" data-language=\"javascript\"><code class=\"language-javascript\"><span class=\"token keyword\">function</span> <span class=\"token function\">test</span><span class=\"token punctuation\">(</span><span class=\"token punctuation\">)</span> <span class=\"token punctuation\">{</span>\n\tconsole<span class=\"token punctuation\">.</span><span class=\"token function\">log</span><span class=\"token punctuation\">(</span><span class=\"token string\">\"Hello world!\"</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span>\n<span class=\"token punctuation\">}</span>\n \n<span class=\"token punctuation\">(</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\">var</span> <span class=\"token function-variable function\">box</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> box<span class=\"token punctuation\">.</span>fn<span class=\"token punctuation\">.</span><span class=\"token function\">init</span><span class=\"token punctuation\">(</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span>\n <span class=\"token punctuation\">}</span><span class=\"token punctuation\">;</span>\n\n box<span class=\"token punctuation\">.</span>prototype <span class=\"token operator\">=</span> box<span class=\"token punctuation\">.</span>fn <span class=\"token operator\">=</span> <span class=\"token punctuation\">{</span>\n <span class=\"token function-variable function\">init</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 console<span class=\"token punctuation\">.</span><span class=\"token function\">log</span><span class=\"token punctuation\">(</span><span class=\"token string\">'box.init()'</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span>\n\n\t\t\t<span class=\"token keyword\">return</span> <span class=\"token keyword\">this</span><span class=\"token punctuation\">;</span>\n <span class=\"token punctuation\">}</span><span class=\"token punctuation\">,</span>\n\n\t\t<span class=\"token function-variable function\">add</span> <span class=\"token operator\">:</span> <span class=\"token keyword\">function</span><span class=\"token punctuation\">(</span><span class=\"token parameter\">str</span><span class=\"token punctuation\">)</span> <span class=\"token punctuation\">{</span>\n\t\t\t<span class=\"token function\">alert</span><span class=\"token punctuation\">(</span><span class=\"token string\">\"add\"</span><span class=\"token punctuation\">,</span> str<span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span>\n\n\t\t\t<span class=\"token keyword\">return</span> <span class=\"token keyword\">this</span><span class=\"token punctuation\">;</span>\n\t\t<span class=\"token punctuation\">}</span><span class=\"token punctuation\">,</span>\n\n\t\t<span class=\"token function-variable function\">remove</span> <span class=\"token operator\">:</span> <span class=\"token keyword\">function</span><span class=\"token punctuation\">(</span><span class=\"token parameter\">str</span><span class=\"token punctuation\">)</span> <span class=\"token punctuation\">{</span>\n\t\t\t<span class=\"token function\">alert</span><span class=\"token punctuation\">(</span><span class=\"token string\">\"remove\"</span><span class=\"token punctuation\">,</span> str<span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span>\n\n\t\t\t<span class=\"token keyword\">return</span> <span class=\"token keyword\">this</span><span class=\"token punctuation\">;</span>\n\t\t<span class=\"token punctuation\">}</span>\n <span class=\"token punctuation\">}</span><span class=\"token punctuation\">;</span>\n \n box<span class=\"token punctuation\">.</span>fn<span class=\"token punctuation\">.</span>init<span class=\"token punctuation\">.</span>prototype <span class=\"token operator\">=</span> box<span class=\"token punctuation\">.</span>fn<span class=\"token punctuation\">;</span>\n \n window<span class=\"token punctuation\">.</span>box <span class=\"token operator\">=</span>box<span class=\"token punctuation\">;</span>\n<span class=\"token punctuation\">}</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">(</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span>\n\n<span class=\"token keyword\">var</span> testBox <span class=\"token operator\">=</span> <span class=\"token function\">box</span><span class=\"token punctuation\">(</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span>\ntestBox<span class=\"token punctuation\">.</span><span class=\"token function\">add</span><span class=\"token punctuation\">(</span><span class=\"token string\">\"jQuery\"</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">.</span><span class=\"token function\">remove</span><span class=\"token punctuation\">(</span><span class=\"token string\">\"jQuery\"</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span><span aria-hidden=\"true\" class=\"line-numbers-rows\"><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span></span></code></pre>\n\n<h2 id=\"HTML-代码-HTML-codes\"><a href=\"#HTML-代码-HTML-codes\" class=\"headerlink\" title=\"HTML 代码 HTML codes\"></a>HTML 代码 HTML codes</h2><pre class=\"line-numbers language-markup\" data-language=\"markup\"><code class=\"language-markup\"><span class=\"token doctype\"><span class=\"token punctuation\"><!</span><span class=\"token doctype-tag\">DOCTYPE</span> <span class=\"token name\">html</span><span class=\"token punctuation\">></span></span>\n<span class=\"token tag\"><span class=\"token tag\"><span class=\"token punctuation\"><</span>html</span><span class=\"token punctuation\">></span></span>\n <span class=\"token tag\"><span class=\"token tag\"><span class=\"token punctuation\"><</span>head</span><span class=\"token punctuation\">></span></span>\n <span class=\"token tag\"><span class=\"token tag\"><span class=\"token punctuation\"><</span>mate</span> <span class=\"token attr-name\">charest</span><span class=\"token attr-value\"><span class=\"token punctuation attr-equals\">=</span><span class=\"token punctuation\">\"</span>utf-8<span class=\"token punctuation\">\"</span></span> <span class=\"token punctuation\">/></span></span>\n <span class=\"token tag\"><span class=\"token tag\"><span class=\"token punctuation\"><</span>meta</span> <span class=\"token attr-name\">name</span><span class=\"token attr-value\"><span class=\"token punctuation attr-equals\">=</span><span class=\"token punctuation\">\"</span>keywords<span class=\"token punctuation\">\"</span></span> <span class=\"token attr-name\">content</span><span class=\"token attr-value\"><span class=\"token punctuation attr-equals\">=</span><span class=\"token punctuation\">\"</span>Editor.md, Markdown, Editor<span class=\"token punctuation\">\"</span></span> <span class=\"token punctuation\">/></span></span>\n <span class=\"token tag\"><span class=\"token tag\"><span class=\"token punctuation\"><</span>title</span><span class=\"token punctuation\">></span></span>Hello world!<span class=\"token tag\"><span class=\"token tag\"><span class=\"token punctuation\"></</span>title</span><span class=\"token punctuation\">></span></span>\n <span class=\"token tag\"><span class=\"token tag\"><span class=\"token punctuation\"><</span>style</span> <span class=\"token attr-name\">type</span><span class=\"token attr-value\"><span class=\"token punctuation attr-equals\">=</span><span class=\"token punctuation\">\"</span>text/css<span class=\"token punctuation\">\"</span></span><span class=\"token punctuation\">></span></span><span class=\"token style\"><span class=\"token language-css\">\n <span class=\"token selector\">body</span><span class=\"token punctuation\">{</span><span class=\"token property\">font-size</span><span class=\"token punctuation\">:</span>14px<span class=\"token punctuation\">;</span><span class=\"token property\">color</span><span class=\"token punctuation\">:</span>#444<span class=\"token punctuation\">;</span><span class=\"token property\">font-family</span><span class=\"token punctuation\">:</span> <span class=\"token string\">\"Microsoft Yahei\"</span><span class=\"token punctuation\">,</span> Tahoma<span class=\"token punctuation\">,</span> <span class=\"token string\">\"Hiragino Sans GB\"</span><span class=\"token punctuation\">,</span> Arial<span class=\"token punctuation\">;</span><span class=\"token property\">background</span><span class=\"token punctuation\">:</span>#fff<span class=\"token punctuation\">;</span><span class=\"token punctuation\">}</span>\n <span class=\"token selector\">ul</span><span class=\"token punctuation\">{</span><span class=\"token property\">list-style</span><span class=\"token punctuation\">:</span> none<span class=\"token punctuation\">;</span><span class=\"token punctuation\">}</span>\n <span class=\"token selector\">img</span><span class=\"token punctuation\">{</span><span class=\"token property\">border</span><span class=\"token punctuation\">:</span>none<span class=\"token punctuation\">;</span><span class=\"token property\">vertical-align</span><span class=\"token punctuation\">:</span> middle<span class=\"token punctuation\">;</span><span class=\"token punctuation\">}</span>\n </span></span><span class=\"token tag\"><span class=\"token tag\"><span class=\"token punctuation\"></</span>style</span><span class=\"token punctuation\">></span></span>\n <span class=\"token tag\"><span class=\"token tag\"><span class=\"token punctuation\"></</span>head</span><span class=\"token punctuation\">></span></span>\n <span class=\"token tag\"><span class=\"token tag\"><span class=\"token punctuation\"><</span>body</span><span class=\"token punctuation\">></span></span>\n <span class=\"token tag\"><span class=\"token tag\"><span class=\"token punctuation\"><</span>h1</span> <span class=\"token attr-name\">class</span><span class=\"token attr-value\"><span class=\"token punctuation attr-equals\">=</span><span class=\"token punctuation\">\"</span>text-xxl<span class=\"token punctuation\">\"</span></span><span class=\"token punctuation\">></span></span>Hello world!<span class=\"token tag\"><span class=\"token tag\"><span class=\"token punctuation\"></</span>h1</span><span class=\"token punctuation\">></span></span>\n <span class=\"token tag\"><span class=\"token tag\"><span class=\"token punctuation\"><</span>p</span> <span class=\"token attr-name\">class</span><span class=\"token attr-value\"><span class=\"token punctuation attr-equals\">=</span><span class=\"token punctuation\">\"</span>text-green<span class=\"token punctuation\">\"</span></span><span class=\"token punctuation\">></span></span>Plain text<span class=\"token tag\"><span class=\"token tag\"><span class=\"token punctuation\"></</span>p</span><span class=\"token punctuation\">></span></span>\n <span class=\"token tag\"><span class=\"token tag\"><span class=\"token punctuation\"></</span>body</span><span class=\"token punctuation\">></span></span>\n<span class=\"token tag\"><span class=\"token tag\"><span class=\"token punctuation\"></</span>html</span><span class=\"token punctuation\">></span></span><span aria-hidden=\"true\" class=\"line-numbers-rows\"><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span></span></code></pre>\n\n<h1 id=\"图片-Images\"><a href=\"#图片-Images\" class=\"headerlink\" title=\"图片 Images\"></a>图片 Images</h1><p>Image:</p>\n<p><img src=\"https://pandao.github.io/editor.md/examples/images/4.jpg\"></p>\n<blockquote>\n<p>Follow your heart.</p>\n</blockquote>\n<p><img src=\"https://pandao.github.io/editor.md/examples/images/8.jpg\"></p>\n<blockquote>\n<p>图为:厦门白城沙滩</p>\n</blockquote>\n<p>图片加链接 (Image + Link):</p>\n<p><a href=\"https://pandao.github.io/editor.md/images/7.jpg\" title=\"李健首张专辑《似水流年》封面\"><img src=\"https://pandao.github.io/editor.md/examples/images/7.jpg\"></a></p>\n<blockquote>\n<p>图为:李健首张专辑《似水流年》封面</p>\n</blockquote>\n<hr>\n<h1 id=\"列表-Lists\"><a href=\"#列表-Lists\" class=\"headerlink\" title=\"列表 Lists\"></a>列表 Lists</h1><h2 id=\"无序列表(减号)Unordered-Lists\"><a href=\"#无序列表(减号)Unordered-Lists\" class=\"headerlink\" title=\"无序列表(减号)Unordered Lists (-)\"></a>无序列表(减号)Unordered Lists (-)</h2><ul>\n<li>列表一</li>\n<li>列表二</li>\n<li>列表三</li>\n</ul>\n<h2 id=\"无序列表(星号)Unordered-Lists\"><a href=\"#无序列表(星号)Unordered-Lists\" class=\"headerlink\" title=\"无序列表(星号)Unordered Lists (*)\"></a>无序列表(星号)Unordered Lists (*)</h2><ul>\n<li>列表一</li>\n<li>列表二</li>\n<li>列表三</li>\n</ul>\n<h2 id=\"无序列表(加号和嵌套)Unordered-Lists\"><a href=\"#无序列表(加号和嵌套)Unordered-Lists\" class=\"headerlink\" title=\"无序列表(加号和嵌套)Unordered Lists (+)\"></a>无序列表(加号和嵌套)Unordered Lists (+)</h2><ul>\n<li>列表一</li>\n<li>列表二<ul>\n<li>列表二-1</li>\n<li>列表二-2</li>\n<li>列表二-3</li>\n</ul>\n</li>\n<li>列表三<ul>\n<li>列表一</li>\n<li>列表二</li>\n<li>列表三</li>\n</ul>\n</li>\n</ul>\n<h2 id=\"有序列表-Ordered-Lists\"><a href=\"#有序列表-Ordered-Lists\" class=\"headerlink\" title=\"有序列表 Ordered Lists (-)\"></a>有序列表 Ordered Lists (-)</h2><ol>\n<li>第一行</li>\n<li>第二行</li>\n<li>第三行</li>\n</ol>\n<h2 id=\"GFM-task-list\"><a href=\"#GFM-task-list\" class=\"headerlink\" title=\"GFM task list\"></a>GFM task list</h2><ul>\n<li><input checked=\"\" disabled=\"\" type=\"checkbox\"> GFM task list 1</li>\n<li><input checked=\"\" disabled=\"\" type=\"checkbox\"> GFM task list 2</li>\n<li><input disabled=\"\" type=\"checkbox\"> GFM task list 3<ul>\n<li><input disabled=\"\" type=\"checkbox\"> GFM task list 3-1</li>\n<li><input disabled=\"\" type=\"checkbox\"> GFM task list 3-2</li>\n<li><input disabled=\"\" type=\"checkbox\"> GFM task list 3-3</li>\n</ul>\n</li>\n<li><input disabled=\"\" type=\"checkbox\"> GFM task list 4<ul>\n<li><input disabled=\"\" type=\"checkbox\"> GFM task list 4-1</li>\n<li><input disabled=\"\" type=\"checkbox\"> GFM task list 4-2</li>\n</ul>\n</li>\n</ul>\n<hr>\n<h1 id=\"绘制表格-Tables\"><a href=\"#绘制表格-Tables\" class=\"headerlink\" title=\"绘制表格 Tables\"></a>绘制表格 Tables</h1><table>\n<thead>\n<tr>\n<th>项目</th>\n<th align=\"right\">价格</th>\n<th align=\"center\">数量</th>\n</tr>\n</thead>\n<tbody><tr>\n<td>计算机</td>\n<td align=\"right\">$1600</td>\n<td align=\"center\">5</td>\n</tr>\n<tr>\n<td>手机</td>\n<td align=\"right\">$12</td>\n<td align=\"center\">12</td>\n</tr>\n<tr>\n<td>管线</td>\n<td align=\"right\">$1</td>\n<td align=\"center\">234</td>\n</tr>\n</tbody></table>\n<table>\n<thead>\n<tr>\n<th>First Header</th>\n<th>Second Header</th>\n</tr>\n</thead>\n<tbody><tr>\n<td>Content Cell</td>\n<td>Content Cell</td>\n</tr>\n<tr>\n<td>Content Cell</td>\n<td>Content Cell</td>\n</tr>\n</tbody></table>\n<table>\n<thead>\n<tr>\n<th>First Header</th>\n<th>Second Header</th>\n</tr>\n</thead>\n<tbody><tr>\n<td>Content Cell</td>\n<td>Content Cell</td>\n</tr>\n<tr>\n<td>Content Cell</td>\n<td>Content Cell</td>\n</tr>\n</tbody></table>\n<table>\n<thead>\n<tr>\n<th>Function name</th>\n<th>Description</th>\n</tr>\n</thead>\n<tbody><tr>\n<td><code>help()</code></td>\n<td>Display the help window.</td>\n</tr>\n<tr>\n<td><code>destroy()</code></td>\n<td><strong>Destroy your computer!</strong></td>\n</tr>\n</tbody></table>\n<table>\n<thead>\n<tr>\n<th align=\"left\">Left-Aligned</th>\n<th align=\"center\">Center Aligned</th>\n<th align=\"right\">Right Aligned</th>\n</tr>\n</thead>\n<tbody><tr>\n<td align=\"left\">col 3 is</td>\n<td align=\"center\">some wordy text</td>\n<td align=\"right\">$1600</td>\n</tr>\n<tr>\n<td align=\"left\">col 2 is</td>\n<td align=\"center\">centered</td>\n<td align=\"right\">$12</td>\n</tr>\n<tr>\n<td align=\"left\">zebra stripes</td>\n<td align=\"center\">are neat</td>\n<td align=\"right\">$1</td>\n</tr>\n</tbody></table>\n<table>\n<thead>\n<tr>\n<th>Item</th>\n<th align=\"right\">Value</th>\n</tr>\n</thead>\n<tbody><tr>\n<td>Computer</td>\n<td align=\"right\">$1600</td>\n</tr>\n<tr>\n<td>Phone</td>\n<td align=\"right\">$12</td>\n</tr>\n<tr>\n<td>Pipe</td>\n<td align=\"right\">$1</td>\n</tr>\n</tbody></table>\n<h1 id=\"科学公式-TeX-KaTeX\"><a href=\"#科学公式-TeX-KaTeX\" class=\"headerlink\" title=\"科学公式 TeX(KaTeX)\"></a>科学公式 TeX(KaTeX)</h1><p>$$E=mc^2$$</p>\n<p>$$x > y$$</p>\n<p>$$(\\sqrt{3x-1}+(1+x)^2)$$</p>\n<p>$$\\sin(\\alpha)^{\\theta}=\\sum_{i=0}^{n}(x^i + \\cos(f))$$</p>\n<h1 id=\"绘制流程图-mermaid\"><a href=\"#绘制流程图-mermaid\" class=\"headerlink\" title=\"绘制流程图 mermaid\"></a>绘制流程图 mermaid</h1><div class=\"mermaid\">\n graph TD;\n A --> B;\n A --> C;\n B --> D;\n C --> D;\n </div>\n\n<p>End</p>\n","site":{"data":{}},"excerpt":"","more":"<h1 id=\"Linear-Markdown-Sample\"><a href=\"#Linear-Markdown-Sample\" class=\"headerlink\" title=\"Linear Markdown Sample\"></a>Linear Markdown Sample</h1><p><img src=\"https://pandao.github.io/editor.md/images/logos/editormd-logo-180x180.png\" alt=\"markdown\"></p>\n<h1 id=\"Heading-1-link-Heading-link\"><a href=\"#Heading-1-link-Heading-link\" class=\"headerlink\" title=\"Heading 1 link Heading link\"></a>Heading 1 link <a href=\"https://github.com/pandao/editor.md\" title=\"Heading link\">Heading link</a></h1><h2 id=\"Heading-2-link-Heading-link\"><a href=\"#Heading-2-link-Heading-link\" class=\"headerlink\" title=\"Heading 2 link Heading link\"></a>Heading 2 link <a href=\"https://github.com/pandao/editor.md\" title=\"Heading link\">Heading link</a></h2><h3 id=\"Heading-3-link-Heading-link\"><a href=\"#Heading-3-link-Heading-link\" class=\"headerlink\" title=\"Heading 3 link Heading link\"></a>Heading 3 link <a href=\"https://github.com/pandao/editor.md\" title=\"Heading link\">Heading link</a></h3><h4 id=\"Heading-4-link-Heading-link-Heading-link-Heading-link\"><a href=\"#Heading-4-link-Heading-link-Heading-link-Heading-link\" class=\"headerlink\" title=\"Heading 4 link Heading link Heading link Heading link\"></a>Heading 4 link <a href=\"https://github.com/pandao/editor.md\" title=\"Heading link\">Heading link</a> Heading link <a href=\"https://github.com/pandao/editor.md\" title=\"Heading link\">Heading link</a></h4><h5 id=\"Heading-5-link-Heading-link\"><a href=\"#Heading-5-link-Heading-link\" class=\"headerlink\" title=\"Heading 5 link Heading link\"></a>Heading 5 link <a href=\"https://github.com/pandao/editor.md\" title=\"Heading link\">Heading link</a></h5><h6 id=\"Heading-6-link-Heading-link\"><a href=\"#Heading-6-link-Heading-link\" class=\"headerlink\" title=\"Heading 6 link Heading link\"></a>Heading 6 link <a href=\"https://github.com/pandao/editor.md\" title=\"Heading link\">Heading link</a></h6><h1 id=\"字符效果和横线等\"><a href=\"#字符效果和横线等\" class=\"headerlink\" title=\"字符效果和横线等\"></a>字符效果和横线等</h1><hr>\n<p><del>删除线</del> <s>删除线(开启识别HTML标签时)</s><br><em>斜体字</em> <em>斜体字</em><br><strong>粗体</strong> <strong>粗体</strong><br><em><strong>粗斜体</strong></em> <em><strong>粗斜体</strong></em></p>\n<p>上标:X<sub>2</sub>,下标:O<sup>2</sup></p>\n<p><strong>缩写(同HTML的abbr标签)</strong></p>\n<blockquote>\n<p>即更长的单词或短语的缩写形式,前提是开启识别HTML标签时,已默认开启</p>\n</blockquote>\n<p>The <abbr title=\"Hyper Text Markup Language\">HTML</abbr> specification is maintained by the <abbr title=\"World Wide Web Consortium\">W3C</abbr>.</p>\n<h1 id=\"引用-Blockquotes\"><a href=\"#引用-Blockquotes\" class=\"headerlink\" title=\"引用 Blockquotes\"></a>引用 Blockquotes</h1><blockquote>\n<p>引用文本 Blockquotes</p>\n</blockquote>\n<p>引用的行内混合 Blockquotes</p>\n<blockquote>\n<p>引用:如果想要插入空白换行<code>即<br />标签</code>,在插入处先键入两个以上的空格然后回车即可,<a href=\"http://localhost/\">普通链接</a>。</p>\n</blockquote>\n<h1 id=\"锚点与链接-Links\"><a href=\"#锚点与链接-Links\" class=\"headerlink\" title=\"锚点与链接 Links\"></a>锚点与链接 Links</h1><p><a href=\"http://localhost/\">普通链接</a></p>\n<p><a href=\"http://localhost/\" title=\"普通链接带标题\">普通链接带标题</a></p>\n<p>直接链接:<a href=\"https://github.com/\">https://github.com</a></p>\n<p><a href=\"https://baidu.com/\">https://baidu.com</a></p>\n<p><a href=\"http://www.this-anchor-link.com/\">锚点链接</a> </p>\n<p><a href=\"mailto:test.test@gmail.com\">mailto:test.test@gmail.com</a></p>\n<p>GFM a-tail link <a href=\"https://my.oschina.net/u/3691274\">@pandao</a> 邮箱地址自动链接 <a href=\"mailto:test.test@gmail.com\">test.test@gmail.com</a> <a href=\"mailto:www@vip.qq.com\">www@vip.qq.com</a></p>\n<blockquote>\n<p>@pandao</p>\n</blockquote>\n<h1 id=\"多语言代码高亮-Codes\"><a href=\"#多语言代码高亮-Codes\" class=\"headerlink\" title=\"多语言代码高亮 Codes\"></a>多语言代码高亮 Codes</h1><h2 id=\"行内代码-Inline-code\"><a href=\"#行内代码-Inline-code\" class=\"headerlink\" title=\"行内代码 Inline code\"></a>行内代码 Inline code</h2><p>执行命令:<code>npm install marked</code></p>\n<h2 id=\"JS代码\"><a href=\"#JS代码\" class=\"headerlink\" title=\"JS代码\"></a>JS代码</h2><pre class=\"line-numbers language-javascript\" data-language=\"javascript\"><code class=\"language-javascript\"><span class=\"token keyword\">function</span> <span class=\"token function\">test</span><span class=\"token punctuation\">(</span><span class=\"token punctuation\">)</span> <span class=\"token punctuation\">{</span>\n\tconsole<span class=\"token punctuation\">.</span><span class=\"token function\">log</span><span class=\"token punctuation\">(</span><span class=\"token string\">\"Hello world!\"</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span>\n<span class=\"token punctuation\">}</span>\n \n<span class=\"token punctuation\">(</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\">var</span> <span class=\"token function-variable function\">box</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> box<span class=\"token punctuation\">.</span>fn<span class=\"token punctuation\">.</span><span class=\"token function\">init</span><span class=\"token punctuation\">(</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span>\n <span class=\"token punctuation\">}</span><span class=\"token punctuation\">;</span>\n\n box<span class=\"token punctuation\">.</span>prototype <span class=\"token operator\">=</span> box<span class=\"token punctuation\">.</span>fn <span class=\"token operator\">=</span> <span class=\"token punctuation\">{</span>\n <span class=\"token function-variable function\">init</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 console<span class=\"token punctuation\">.</span><span class=\"token function\">log</span><span class=\"token punctuation\">(</span><span class=\"token string\">'box.init()'</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span>\n\n\t\t\t<span class=\"token keyword\">return</span> <span class=\"token keyword\">this</span><span class=\"token punctuation\">;</span>\n <span class=\"token punctuation\">}</span><span class=\"token punctuation\">,</span>\n\n\t\t<span class=\"token function-variable function\">add</span> <span class=\"token operator\">:</span> <span class=\"token keyword\">function</span><span class=\"token punctuation\">(</span><span class=\"token parameter\">str</span><span class=\"token punctuation\">)</span> <span class=\"token punctuation\">{</span>\n\t\t\t<span class=\"token function\">alert</span><span class=\"token punctuation\">(</span><span class=\"token string\">\"add\"</span><span class=\"token punctuation\">,</span> str<span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span>\n\n\t\t\t<span class=\"token keyword\">return</span> <span class=\"token keyword\">this</span><span class=\"token punctuation\">;</span>\n\t\t<span class=\"token punctuation\">}</span><span class=\"token punctuation\">,</span>\n\n\t\t<span class=\"token function-variable function\">remove</span> <span class=\"token operator\">:</span> <span class=\"token keyword\">function</span><span class=\"token punctuation\">(</span><span class=\"token parameter\">str</span><span class=\"token punctuation\">)</span> <span class=\"token punctuation\">{</span>\n\t\t\t<span class=\"token function\">alert</span><span class=\"token punctuation\">(</span><span class=\"token string\">\"remove\"</span><span class=\"token punctuation\">,</span> str<span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span>\n\n\t\t\t<span class=\"token keyword\">return</span> <span class=\"token keyword\">this</span><span class=\"token punctuation\">;</span>\n\t\t<span class=\"token punctuation\">}</span>\n <span class=\"token punctuation\">}</span><span class=\"token punctuation\">;</span>\n \n box<span class=\"token punctuation\">.</span>fn<span class=\"token punctuation\">.</span>init<span class=\"token punctuation\">.</span>prototype <span class=\"token operator\">=</span> box<span class=\"token punctuation\">.</span>fn<span class=\"token punctuation\">;</span>\n \n window<span class=\"token punctuation\">.</span>box <span class=\"token operator\">=</span>box<span class=\"token punctuation\">;</span>\n<span class=\"token punctuation\">}</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">(</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span>\n\n<span class=\"token keyword\">var</span> testBox <span class=\"token operator\">=</span> <span class=\"token function\">box</span><span class=\"token punctuation\">(</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span>\ntestBox<span class=\"token punctuation\">.</span><span class=\"token function\">add</span><span class=\"token punctuation\">(</span><span class=\"token string\">\"jQuery\"</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">.</span><span class=\"token function\">remove</span><span class=\"token punctuation\">(</span><span class=\"token string\">\"jQuery\"</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span><span aria-hidden=\"true\" class=\"line-numbers-rows\"><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span></span></code></pre>\n\n<h2 id=\"HTML-代码-HTML-codes\"><a href=\"#HTML-代码-HTML-codes\" class=\"headerlink\" title=\"HTML 代码 HTML codes\"></a>HTML 代码 HTML codes</h2><pre class=\"line-numbers language-markup\" data-language=\"markup\"><code class=\"language-markup\"><span class=\"token doctype\"><span class=\"token punctuation\"><!</span><span class=\"token doctype-tag\">DOCTYPE</span> <span class=\"token name\">html</span><span class=\"token punctuation\">></span></span>\n<span class=\"token tag\"><span class=\"token tag\"><span class=\"token punctuation\"><</span>html</span><span class=\"token punctuation\">></span></span>\n <span class=\"token tag\"><span class=\"token tag\"><span class=\"token punctuation\"><</span>head</span><span class=\"token punctuation\">></span></span>\n <span class=\"token tag\"><span class=\"token tag\"><span class=\"token punctuation\"><</span>mate</span> <span class=\"token attr-name\">charest</span><span class=\"token attr-value\"><span class=\"token punctuation attr-equals\">=</span><span class=\"token punctuation\">\"</span>utf-8<span class=\"token punctuation\">\"</span></span> <span class=\"token punctuation\">/></span></span>\n <span class=\"token tag\"><span class=\"token tag\"><span class=\"token punctuation\"><</span>meta</span> <span class=\"token attr-name\">name</span><span class=\"token attr-value\"><span class=\"token punctuation attr-equals\">=</span><span class=\"token punctuation\">\"</span>keywords<span class=\"token punctuation\">\"</span></span> <span class=\"token attr-name\">content</span><span class=\"token attr-value\"><span class=\"token punctuation attr-equals\">=</span><span class=\"token punctuation\">\"</span>Editor.md, Markdown, Editor<span class=\"token punctuation\">\"</span></span> <span class=\"token punctuation\">/></span></span>\n <span class=\"token tag\"><span class=\"token tag\"><span class=\"token punctuation\"><</span>title</span><span class=\"token punctuation\">></span></span>Hello world!<span class=\"token tag\"><span class=\"token tag\"><span class=\"token punctuation\"></</span>title</span><span class=\"token punctuation\">></span></span>\n <span class=\"token tag\"><span class=\"token tag\"><span class=\"token punctuation\"><</span>style</span> <span class=\"token attr-name\">type</span><span class=\"token attr-value\"><span class=\"token punctuation attr-equals\">=</span><span class=\"token punctuation\">\"</span>text/css<span class=\"token punctuation\">\"</span></span><span class=\"token punctuation\">></span></span><span class=\"token style\"><span class=\"token language-css\">\n <span class=\"token selector\">body</span><span class=\"token punctuation\">{</span><span class=\"token property\">font-size</span><span class=\"token punctuation\">:</span>14px<span class=\"token punctuation\">;</span><span class=\"token property\">color</span><span class=\"token punctuation\">:</span>#444<span class=\"token punctuation\">;</span><span class=\"token property\">font-family</span><span class=\"token punctuation\">:</span> <span class=\"token string\">\"Microsoft Yahei\"</span><span class=\"token punctuation\">,</span> Tahoma<span class=\"token punctuation\">,</span> <span class=\"token string\">\"Hiragino Sans GB\"</span><span class=\"token punctuation\">,</span> Arial<span class=\"token punctuation\">;</span><span class=\"token property\">background</span><span class=\"token punctuation\">:</span>#fff<span class=\"token punctuation\">;</span><span class=\"token punctuation\">}</span>\n <span class=\"token selector\">ul</span><span class=\"token punctuation\">{</span><span class=\"token property\">list-style</span><span class=\"token punctuation\">:</span> none<span class=\"token punctuation\">;</span><span class=\"token punctuation\">}</span>\n <span class=\"token selector\">img</span><span class=\"token punctuation\">{</span><span class=\"token property\">border</span><span class=\"token punctuation\">:</span>none<span class=\"token punctuation\">;</span><span class=\"token property\">vertical-align</span><span class=\"token punctuation\">:</span> middle<span class=\"token punctuation\">;</span><span class=\"token punctuation\">}</span>\n </span></span><span class=\"token tag\"><span class=\"token tag\"><span class=\"token punctuation\"></</span>style</span><span class=\"token punctuation\">></span></span>\n <span class=\"token tag\"><span class=\"token tag\"><span class=\"token punctuation\"></</span>head</span><span class=\"token punctuation\">></span></span>\n <span class=\"token tag\"><span class=\"token tag\"><span class=\"token punctuation\"><</span>body</span><span class=\"token punctuation\">></span></span>\n <span class=\"token tag\"><span class=\"token tag\"><span class=\"token punctuation\"><</span>h1</span> <span class=\"token attr-name\">class</span><span class=\"token attr-value\"><span class=\"token punctuation attr-equals\">=</span><span class=\"token punctuation\">\"</span>text-xxl<span class=\"token punctuation\">\"</span></span><span class=\"token punctuation\">></span></span>Hello world!<span class=\"token tag\"><span class=\"token tag\"><span class=\"token punctuation\"></</span>h1</span><span class=\"token punctuation\">></span></span>\n <span class=\"token tag\"><span class=\"token tag\"><span class=\"token punctuation\"><</span>p</span> <span class=\"token attr-name\">class</span><span class=\"token attr-value\"><span class=\"token punctuation attr-equals\">=</span><span class=\"token punctuation\">\"</span>text-green<span class=\"token punctuation\">\"</span></span><span class=\"token punctuation\">></span></span>Plain text<span class=\"token tag\"><span class=\"token tag\"><span class=\"token punctuation\"></</span>p</span><span class=\"token punctuation\">></span></span>\n <span class=\"token tag\"><span class=\"token tag\"><span class=\"token punctuation\"></</span>body</span><span class=\"token punctuation\">></span></span>\n<span class=\"token tag\"><span class=\"token tag\"><span class=\"token punctuation\"></</span>html</span><span class=\"token punctuation\">></span></span><span aria-hidden=\"true\" class=\"line-numbers-rows\"><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span></span></code></pre>\n\n<h1 id=\"图片-Images\"><a href=\"#图片-Images\" class=\"headerlink\" title=\"图片 Images\"></a>图片 Images</h1><p>Image:</p>\n<p><img src=\"https://pandao.github.io/editor.md/examples/images/4.jpg\"></p>\n<blockquote>\n<p>Follow your heart.</p>\n</blockquote>\n<p><img src=\"https://pandao.github.io/editor.md/examples/images/8.jpg\"></p>\n<blockquote>\n<p>图为:厦门白城沙滩</p>\n</blockquote>\n<p>图片加链接 (Image + Link):</p>\n<p><a href=\"https://pandao.github.io/editor.md/images/7.jpg\" title=\"李健首张专辑《似水流年》封面\"><img src=\"https://pandao.github.io/editor.md/examples/images/7.jpg\"></a></p>\n<blockquote>\n<p>图为:李健首张专辑《似水流年》封面</p>\n</blockquote>\n<hr>\n<h1 id=\"列表-Lists\"><a href=\"#列表-Lists\" class=\"headerlink\" title=\"列表 Lists\"></a>列表 Lists</h1><h2 id=\"无序列表(减号)Unordered-Lists\"><a href=\"#无序列表(减号)Unordered-Lists\" class=\"headerlink\" title=\"无序列表(减号)Unordered Lists (-)\"></a>无序列表(减号)Unordered Lists (-)</h2><ul>\n<li>列表一</li>\n<li>列表二</li>\n<li>列表三</li>\n</ul>\n<h2 id=\"无序列表(星号)Unordered-Lists\"><a href=\"#无序列表(星号)Unordered-Lists\" class=\"headerlink\" title=\"无序列表(星号)Unordered Lists (*)\"></a>无序列表(星号)Unordered Lists (*)</h2><ul>\n<li>列表一</li>\n<li>列表二</li>\n<li>列表三</li>\n</ul>\n<h2 id=\"无序列表(加号和嵌套)Unordered-Lists\"><a href=\"#无序列表(加号和嵌套)Unordered-Lists\" class=\"headerlink\" title=\"无序列表(加号和嵌套)Unordered Lists (+)\"></a>无序列表(加号和嵌套)Unordered Lists (+)</h2><ul>\n<li>列表一</li>\n<li>列表二<ul>\n<li>列表二-1</li>\n<li>列表二-2</li>\n<li>列表二-3</li>\n</ul>\n</li>\n<li>列表三<ul>\n<li>列表一</li>\n<li>列表二</li>\n<li>列表三</li>\n</ul>\n</li>\n</ul>\n<h2 id=\"有序列表-Ordered-Lists\"><a href=\"#有序列表-Ordered-Lists\" class=\"headerlink\" title=\"有序列表 Ordered Lists (-)\"></a>有序列表 Ordered Lists (-)</h2><ol>\n<li>第一行</li>\n<li>第二行</li>\n<li>第三行</li>\n</ol>\n<h2 id=\"GFM-task-list\"><a href=\"#GFM-task-list\" class=\"headerlink\" title=\"GFM task list\"></a>GFM task list</h2><ul>\n<li><input checked=\"\" disabled=\"\" type=\"checkbox\"> GFM task list 1</li>\n<li><input checked=\"\" disabled=\"\" type=\"checkbox\"> GFM task list 2</li>\n<li><input disabled=\"\" type=\"checkbox\"> GFM task list 3<ul>\n<li><input disabled=\"\" type=\"checkbox\"> GFM task list 3-1</li>\n<li><input disabled=\"\" type=\"checkbox\"> GFM task list 3-2</li>\n<li><input disabled=\"\" type=\"checkbox\"> GFM task list 3-3</li>\n</ul>\n</li>\n<li><input disabled=\"\" type=\"checkbox\"> GFM task list 4<ul>\n<li><input disabled=\"\" type=\"checkbox\"> GFM task list 4-1</li>\n<li><input disabled=\"\" type=\"checkbox\"> GFM task list 4-2</li>\n</ul>\n</li>\n</ul>\n<hr>\n<h1 id=\"绘制表格-Tables\"><a href=\"#绘制表格-Tables\" class=\"headerlink\" title=\"绘制表格 Tables\"></a>绘制表格 Tables</h1><table>\n<thead>\n<tr>\n<th>项目</th>\n<th align=\"right\">价格</th>\n<th align=\"center\">数量</th>\n</tr>\n</thead>\n<tbody><tr>\n<td>计算机</td>\n<td align=\"right\">$1600</td>\n<td align=\"center\">5</td>\n</tr>\n<tr>\n<td>手机</td>\n<td align=\"right\">$12</td>\n<td align=\"center\">12</td>\n</tr>\n<tr>\n<td>管线</td>\n<td align=\"right\">$1</td>\n<td align=\"center\">234</td>\n</tr>\n</tbody></table>\n<table>\n<thead>\n<tr>\n<th>First Header</th>\n<th>Second Header</th>\n</tr>\n</thead>\n<tbody><tr>\n<td>Content Cell</td>\n<td>Content Cell</td>\n</tr>\n<tr>\n<td>Content Cell</td>\n<td>Content Cell</td>\n</tr>\n</tbody></table>\n<table>\n<thead>\n<tr>\n<th>First Header</th>\n<th>Second Header</th>\n</tr>\n</thead>\n<tbody><tr>\n<td>Content Cell</td>\n<td>Content Cell</td>\n</tr>\n<tr>\n<td>Content Cell</td>\n<td>Content Cell</td>\n</tr>\n</tbody></table>\n<table>\n<thead>\n<tr>\n<th>Function name</th>\n<th>Description</th>\n</tr>\n</thead>\n<tbody><tr>\n<td><code>help()</code></td>\n<td>Display the help window.</td>\n</tr>\n<tr>\n<td><code>destroy()</code></td>\n<td><strong>Destroy your computer!</strong></td>\n</tr>\n</tbody></table>\n<table>\n<thead>\n<tr>\n<th align=\"left\">Left-Aligned</th>\n<th align=\"center\">Center Aligned</th>\n<th align=\"right\">Right Aligned</th>\n</tr>\n</thead>\n<tbody><tr>\n<td align=\"left\">col 3 is</td>\n<td align=\"center\">some wordy text</td>\n<td align=\"right\">$1600</td>\n</tr>\n<tr>\n<td align=\"left\">col 2 is</td>\n<td align=\"center\">centered</td>\n<td align=\"right\">$12</td>\n</tr>\n<tr>\n<td align=\"left\">zebra stripes</td>\n<td align=\"center\">are neat</td>\n<td align=\"right\">$1</td>\n</tr>\n</tbody></table>\n<table>\n<thead>\n<tr>\n<th>Item</th>\n<th align=\"right\">Value</th>\n</tr>\n</thead>\n<tbody><tr>\n<td>Computer</td>\n<td align=\"right\">$1600</td>\n</tr>\n<tr>\n<td>Phone</td>\n<td align=\"right\">$12</td>\n</tr>\n<tr>\n<td>Pipe</td>\n<td align=\"right\">$1</td>\n</tr>\n</tbody></table>\n<h1 id=\"科学公式-TeX-KaTeX\"><a href=\"#科学公式-TeX-KaTeX\" class=\"headerlink\" title=\"科学公式 TeX(KaTeX)\"></a>科学公式 TeX(KaTeX)</h1><p>$$E=mc^2$$</p>\n<p>$$x > y$$</p>\n<p>$$(\\sqrt{3x-1}+(1+x)^2)$$</p>\n<p>$$\\sin(\\alpha)^{\\theta}=\\sum_{i=0}^{n}(x^i + \\cos(f))$$</p>\n<h1 id=\"绘制流程图-mermaid\"><a href=\"#绘制流程图-mermaid\" class=\"headerlink\" title=\"绘制流程图 mermaid\"></a>绘制流程图 mermaid</h1><div class=\"mermaid\">\n graph TD;\n A --> B;\n A --> C;\n B --> D;\n C --> D;\n </div>\n\n<p>End</p>\n"},{"title":"verdaccio 搭建 npm私库","status":"done","_content":"\n# 使用 docker 搭建 verdaccio\n\n创建 & 配置`config.yaml`文件\n\n```yaml\n# Read about the best practices\n# https://verdaccio.org/docs/best\n\n# path to a directory with all packages\nstorage: /verdaccio/storage/data\n# path to a directory with plugins to include\nplugins: /verdaccio/plugins\n\n# 包体积上限,默认10mb\nmax_body_size: 1024mb\n\n\nweb:\n enable: true\n title: Mozzie-NPM\n # gravatar: false\n # login: true\n pkgManagers:\n - npm\n - yarn\n - pnpm\n html_cache: true\n showFooter: false\n\nauth:\n htpasswd:\n file: /verdaccio/storage/htpasswd\n # 关闭注册,手动添加用户,默认Bcrypt算法,随便找个网页生成个密码,使用账号:密码添加到 htpasswd 文件中,例如 test:$2a$10$0xPGVnpcdxcfmFxtWyWDx./TRtm/W/gSzib/jck3w.sF9x.Ur8t8W\n max_users: -1\n\n\ni18n:\n web: zh-CN\n\n# notify: # 配置 Webhook 推送到钉钉,记得修改 access_token 和 atMobiles\n# method: POST\n# headers: [{ \"Content-Type\": \"application/json\" }]\n# endpoint: https://oapi.dingtalk.com/robot/send?access_token=xxxx\n# content: '{\"msgtype\":\"text\", \"at\": {\"atMobiles\": [\"13000000000\"] }, \"text\":{\"content\":\"NPM 发布新包:\\n > 包名称:{{name}} \\n > 版本号:{{#each versions}}{{version}}{{/each}} \\n > 发布者:{{publisher.name}} \"}}'\n\nuplinks:\n npmjs:\n url: https://registry.npmjs.org/\n yarn:\n url: https://registry.yarnpkg.com/\n timeout: 10s\n taobao:\n url: https://registry.npmmirror.com/\n timeout: 10s\n\npackages:\n \"@*/*\":\n # 可访问权限,web界面看不见,不登陆,也无法 install 包\n access: $authenticated # $all\n # 发布权限, $authenticated 表示只有通过验证的人\n publish: $authenticated\n # 可取消发布权限\n unpublish: $authenticated\n # 包不存在时的代理\n proxy: npmjs yarn taobao\n \"**\":\n access: $authenticated # $all\n publish: $authenticated\n unpublish: $authenticated\n proxy: npmjs yarn taobao\n\nmiddlewares:\n audit:\n enabled: true\nlisten: 0.0.0.0:4873\nlog: { type: stdout, format: pretty, level: http }\n```\n\n创建容器,环境变量,`VERDACCIO_PUBLIC_URL`是静态资源的前缀地址,由于nginx挂了`ssl`,如果使用`http`可以不添加\n\n```bash\ndocker run \\\n-p 4873:4873 \\\n--restart=always \\\n--network mozzie.cn-net \\\n--network-alias verdaccio \\\n--env VERDACCIO_PORT=4873 \\\n--env VERDACCIO_PUBLIC_URL=https://npm.mozzie.cn \\\n--ip 172.21.0.196 \\\n--name verdaccio \\\n-v /www/wwwroot/nginx/html/verdaccio/storage:/verdaccio/storage \\\n-v /www/wwwroot/nginx/html/verdaccio/config:/verdaccio/conf \\\n-v /www/wwwroot/nginx/html/verdaccio/plugins:/verdaccio/plugins \\\n-d verdaccio/verdaccio\n```\n\n\n\n配置nginx的反向代理conf,注意所在的docker网络,使用`container_name`\n\n\n\n```conf\nserver {\n # listen 80;\n listen 443 ssl;\n server_name npm.mozzie.cn;\n ssl_certificate /etc/nginx/ssl/npm.mozzie.cn_bundle.pem;\n ssl_certificate_key /etc/nginx/ssl/npm.mozzie.cn.key;\n gzip on;\n\n location / {\n proxy_set_header X-Real-IP $remote_addr;\n proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;\n proxy_set_header Host $host;\n proxy_set_header X-NginX-Proxy true;\n proxy_pass http://verdaccio:4873/;\n proxy_redirect off;\n }\n}\n```\n\n运行添加用户,报错,因为 `htpasswd`默认创建在宿主机,也就是上面挂载的`/www/wwwroot/nginx/html/verdaccio/storage`目录中\n\n```bash\nnpm adduser --registry https://npm.mozzie.cn/\n```\n\n配置`htpasswd`、`storage` 文件夹权限\n\n```bash\n# 宿主机中执行\ncd /www/wwwroot/nginx/html/verdaccio/storage\ntouch htpasswd\nsudo chown 10001:65533 htpasswd\nsudo chown -R 10001:65533 /www/wwwroot/nginx/html/verdaccio/storage\n```\n\n# verdaccio 用户管理\n\n由于在 `config.yml` 中关闭了可访问权限\n\n```yaml\nauth:\n htpasswd:\n file: /verdaccio/storage/htpasswd\n # 关闭注册,手动添加用户,默认Bcrypt算法,\n max_users: -1\n\npackages:\n \"@*/*\":\n # 可访问权限,web界面看不见,不登陆,也无法 install 包\n access: $authenticated # $all\n # 发布权限, $authenticated 表示只有通过验证的人\n publish: $authenticated\n # 可取消发布权限\n unpublish: $authenticated\n \"**\":\n access: $authenticated\n publish: $authenticated\n unpublish: $authenticated\n```\n\n默认的 `addUser` 策略是 `Bcrypt` 生成密码,随便找个网页生成个密码,使用`账号:密码`添加到 `htpasswd` 文件中,例如 \n\n```bash\ntest:$2a$10$0xPGVnpcdxcfmFxtWyWDx./TRtm/W/gSzib/jck3w.sF9x.Ur8t8W\n```\n\n因此在实际开发中,管理员手动给用户创建好账号,然后根据用户的包管理工具,进行登录,例如以 `npm` 为例\n\n```bash\nnpm adduser --registry https://npm.mozzie.cn/\n# 输入 Username: mozzie | Password: xxx | Email: (this IS public) himozzie@foxmail.com\n# 提示登陆成功 Logged in as mozzie on https://npm.mozzie.cn/.\n```\n\n在系统的 `cat ~/.npmrc` 中会增加一行,就可以正常的进行以来的安装了\n\n```bash\n//npm.mozzie.cn/:_authToken=\"Do/wrh5QzsnYaNU4x3ZlVA==\"\n```\n\n# 项目 .npmrc Scope区分\n\n需要指定 `.npmrc` 来区别 `Scope` 的安装地址,例如一个包名为 `@mozzie/hook`,对应的私库为 `https://npm.mozzie.cn/`\n\n```bash\nregistry=http://registry.npm.taobao.org/\n@mozzie:registry=https://npm.mozzie.cn\n# npm拉包的校验\n//https://npm.mozzie.cn/:_authToken=xxxxxxxxxxxxx\n```","source":"_posts/front-end/verdaccio.md","raw":"---\ntitle: verdaccio 搭建 npm私库\ncategories:\n - Front-End\nstatus: done\n---\n\n# 使用 docker 搭建 verdaccio\n\n创建 & 配置`config.yaml`文件\n\n```yaml\n# Read about the best practices\n# https://verdaccio.org/docs/best\n\n# path to a directory with all packages\nstorage: /verdaccio/storage/data\n# path to a directory with plugins to include\nplugins: /verdaccio/plugins\n\n# 包体积上限,默认10mb\nmax_body_size: 1024mb\n\n\nweb:\n enable: true\n title: Mozzie-NPM\n # gravatar: false\n # login: true\n pkgManagers:\n - npm\n - yarn\n - pnpm\n html_cache: true\n showFooter: false\n\nauth:\n htpasswd:\n file: /verdaccio/storage/htpasswd\n # 关闭注册,手动添加用户,默认Bcrypt算法,随便找个网页生成个密码,使用账号:密码添加到 htpasswd 文件中,例如 test:$2a$10$0xPGVnpcdxcfmFxtWyWDx./TRtm/W/gSzib/jck3w.sF9x.Ur8t8W\n max_users: -1\n\n\ni18n:\n web: zh-CN\n\n# notify: # 配置 Webhook 推送到钉钉,记得修改 access_token 和 atMobiles\n# method: POST\n# headers: [{ \"Content-Type\": \"application/json\" }]\n# endpoint: https://oapi.dingtalk.com/robot/send?access_token=xxxx\n# content: '{\"msgtype\":\"text\", \"at\": {\"atMobiles\": [\"13000000000\"] }, \"text\":{\"content\":\"NPM 发布新包:\\n > 包名称:{{name}} \\n > 版本号:{{#each versions}}{{version}}{{/each}} \\n > 发布者:{{publisher.name}} \"}}'\n\nuplinks:\n npmjs:\n url: https://registry.npmjs.org/\n yarn:\n url: https://registry.yarnpkg.com/\n timeout: 10s\n taobao:\n url: https://registry.npmmirror.com/\n timeout: 10s\n\npackages:\n \"@*/*\":\n # 可访问权限,web界面看不见,不登陆,也无法 install 包\n access: $authenticated # $all\n # 发布权限, $authenticated 表示只有通过验证的人\n publish: $authenticated\n # 可取消发布权限\n unpublish: $authenticated\n # 包不存在时的代理\n proxy: npmjs yarn taobao\n \"**\":\n access: $authenticated # $all\n publish: $authenticated\n unpublish: $authenticated\n proxy: npmjs yarn taobao\n\nmiddlewares:\n audit:\n enabled: true\nlisten: 0.0.0.0:4873\nlog: { type: stdout, format: pretty, level: http }\n```\n\n创建容器,环境变量,`VERDACCIO_PUBLIC_URL`是静态资源的前缀地址,由于nginx挂了`ssl`,如果使用`http`可以不添加\n\n```bash\ndocker run \\\n-p 4873:4873 \\\n--restart=always \\\n--network mozzie.cn-net \\\n--network-alias verdaccio \\\n--env VERDACCIO_PORT=4873 \\\n--env VERDACCIO_PUBLIC_URL=https://npm.mozzie.cn \\\n--ip 172.21.0.196 \\\n--name verdaccio \\\n-v /www/wwwroot/nginx/html/verdaccio/storage:/verdaccio/storage \\\n-v /www/wwwroot/nginx/html/verdaccio/config:/verdaccio/conf \\\n-v /www/wwwroot/nginx/html/verdaccio/plugins:/verdaccio/plugins \\\n-d verdaccio/verdaccio\n```\n\n\n\n配置nginx的反向代理conf,注意所在的docker网络,使用`container_name`\n\n\n\n```conf\nserver {\n # listen 80;\n listen 443 ssl;\n server_name npm.mozzie.cn;\n ssl_certificate /etc/nginx/ssl/npm.mozzie.cn_bundle.pem;\n ssl_certificate_key /etc/nginx/ssl/npm.mozzie.cn.key;\n gzip on;\n\n location / {\n proxy_set_header X-Real-IP $remote_addr;\n proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;\n proxy_set_header Host $host;\n proxy_set_header X-NginX-Proxy true;\n proxy_pass http://verdaccio:4873/;\n proxy_redirect off;\n }\n}\n```\n\n运行添加用户,报错,因为 `htpasswd`默认创建在宿主机,也就是上面挂载的`/www/wwwroot/nginx/html/verdaccio/storage`目录中\n\n```bash\nnpm adduser --registry https://npm.mozzie.cn/\n```\n\n配置`htpasswd`、`storage` 文件夹权限\n\n```bash\n# 宿主机中执行\ncd /www/wwwroot/nginx/html/verdaccio/storage\ntouch htpasswd\nsudo chown 10001:65533 htpasswd\nsudo chown -R 10001:65533 /www/wwwroot/nginx/html/verdaccio/storage\n```\n\n# verdaccio 用户管理\n\n由于在 `config.yml` 中关闭了可访问权限\n\n```yaml\nauth:\n htpasswd:\n file: /verdaccio/storage/htpasswd\n # 关闭注册,手动添加用户,默认Bcrypt算法,\n max_users: -1\n\npackages:\n \"@*/*\":\n # 可访问权限,web界面看不见,不登陆,也无法 install 包\n access: $authenticated # $all\n # 发布权限, $authenticated 表示只有通过验证的人\n publish: $authenticated\n # 可取消发布权限\n unpublish: $authenticated\n \"**\":\n access: $authenticated\n publish: $authenticated\n unpublish: $authenticated\n```\n\n默认的 `addUser` 策略是 `Bcrypt` 生成密码,随便找个网页生成个密码,使用`账号:密码`添加到 `htpasswd` 文件中,例如 \n\n```bash\ntest:$2a$10$0xPGVnpcdxcfmFxtWyWDx./TRtm/W/gSzib/jck3w.sF9x.Ur8t8W\n```\n\n因此在实际开发中,管理员手动给用户创建好账号,然后根据用户的包管理工具,进行登录,例如以 `npm` 为例\n\n```bash\nnpm adduser --registry https://npm.mozzie.cn/\n# 输入 Username: mozzie | Password: xxx | Email: (this IS public) himozzie@foxmail.com\n# 提示登陆成功 Logged in as mozzie on https://npm.mozzie.cn/.\n```\n\n在系统的 `cat ~/.npmrc` 中会增加一行,就可以正常的进行以来的安装了\n\n```bash\n//npm.mozzie.cn/:_authToken=\"Do/wrh5QzsnYaNU4x3ZlVA==\"\n```\n\n# 项目 .npmrc Scope区分\n\n需要指定 `.npmrc` 来区别 `Scope` 的安装地址,例如一个包名为 `@mozzie/hook`,对应的私库为 `https://npm.mozzie.cn/`\n\n```bash\nregistry=http://registry.npm.taobao.org/\n@mozzie:registry=https://npm.mozzie.cn\n# npm拉包的校验\n//https://npm.mozzie.cn/:_authToken=xxxxxxxxxxxxx\n```","slug":"front-end/verdaccio","published":1,"date":"2023-10-20T02:25:55.131Z","updated":"2023-10-20T02:27:35.158Z","comments":1,"layout":"post","photos":[],"link":"","_id":"clodvl514000eegz3fzrv14dz","content":"<h1 id=\"使用-docker-搭建-verdaccio\"><a href=\"#使用-docker-搭建-verdaccio\" class=\"headerlink\" title=\"使用 docker 搭建 verdaccio\"></a>使用 docker 搭建 verdaccio</h1><p>创建 & 配置<code>config.yaml</code>文件</p>\n<pre class=\"line-numbers language-yaml\" data-language=\"yaml\"><code class=\"language-yaml\"><span class=\"token comment\"># Read about the best practices</span>\n<span class=\"token comment\"># https://verdaccio.org/docs/best</span>\n\n<span class=\"token comment\"># path to a directory with all packages</span>\n<span class=\"token key atrule\">storage</span><span class=\"token punctuation\">:</span> /verdaccio/storage/data\n<span class=\"token comment\"># path to a directory with plugins to include</span>\n<span class=\"token key atrule\">plugins</span><span class=\"token punctuation\">:</span> /verdaccio/plugins\n\n<span class=\"token comment\"># 包体积上限,默认10mb</span>\n<span class=\"token key atrule\">max_body_size</span><span class=\"token punctuation\">:</span> 1024mb\n\n\n<span class=\"token key atrule\">web</span><span class=\"token punctuation\">:</span>\n <span class=\"token key atrule\">enable</span><span class=\"token punctuation\">:</span> <span class=\"token boolean important\">true</span>\n <span class=\"token key atrule\">title</span><span class=\"token punctuation\">:</span> Mozzie<span class=\"token punctuation\">-</span>NPM\n <span class=\"token comment\"># gravatar: false</span>\n <span class=\"token comment\"># login: true</span>\n <span class=\"token key atrule\">pkgManagers</span><span class=\"token punctuation\">:</span>\n <span class=\"token punctuation\">-</span> npm\n <span class=\"token punctuation\">-</span> yarn\n <span class=\"token punctuation\">-</span> pnpm\n <span class=\"token key atrule\">html_cache</span><span class=\"token punctuation\">:</span> <span class=\"token boolean important\">true</span>\n <span class=\"token key atrule\">showFooter</span><span class=\"token punctuation\">:</span> <span class=\"token boolean important\">false</span>\n\n<span class=\"token key atrule\">auth</span><span class=\"token punctuation\">:</span>\n <span class=\"token key atrule\">htpasswd</span><span class=\"token punctuation\">:</span>\n <span class=\"token key atrule\">file</span><span class=\"token punctuation\">:</span> /verdaccio/storage/htpasswd\n <span class=\"token comment\"># 关闭注册,手动添加用户,默认Bcrypt算法,随便找个网页生成个密码,使用账号:密码添加到 htpasswd 文件中,例如 test:$2a$10$0xPGVnpcdxcfmFxtWyWDx./TRtm/W/gSzib/jck3w.sF9x.Ur8t8W</span>\n <span class=\"token key atrule\">max_users</span><span class=\"token punctuation\">:</span> <span class=\"token number\">-1</span>\n\n\n<span class=\"token key atrule\">i18n</span><span class=\"token punctuation\">:</span>\n <span class=\"token key atrule\">web</span><span class=\"token punctuation\">:</span> zh<span class=\"token punctuation\">-</span>CN\n\n<span class=\"token comment\"># notify: # 配置 Webhook 推送到钉钉,记得修改 access_token 和 atMobiles</span>\n<span class=\"token comment\"># method: POST</span>\n<span class=\"token comment\"># headers: [{ \"Content-Type\": \"application/json\" }]</span>\n<span class=\"token comment\"># endpoint: https://oapi.dingtalk.com/robot/send?access_token=xxxx</span>\n<span class=\"token comment\"># content: '{\"msgtype\":\"text\", \"at\": {\"atMobiles\": [\"13000000000\"] }, \"text\":{\"content\":\"NPM 发布新包:\\n > 包名称:{{name}} \\n > 版本号:{{#each versions}}{{version}}{{/each}} \\n > 发布者:{{publisher.name}} \"}}'</span>\n\n<span class=\"token key atrule\">uplinks</span><span class=\"token punctuation\">:</span>\n <span class=\"token key atrule\">npmjs</span><span class=\"token punctuation\">:</span>\n <span class=\"token key atrule\">url</span><span class=\"token punctuation\">:</span> https<span class=\"token punctuation\">:</span>//registry.npmjs.org/\n <span class=\"token key atrule\">yarn</span><span class=\"token punctuation\">:</span>\n <span class=\"token key atrule\">url</span><span class=\"token punctuation\">:</span> https<span class=\"token punctuation\">:</span>//registry.yarnpkg.com/\n <span class=\"token key atrule\">timeout</span><span class=\"token punctuation\">:</span> 10s\n <span class=\"token key atrule\">taobao</span><span class=\"token punctuation\">:</span>\n <span class=\"token key atrule\">url</span><span class=\"token punctuation\">:</span> https<span class=\"token punctuation\">:</span>//registry.npmmirror.com/\n <span class=\"token key atrule\">timeout</span><span class=\"token punctuation\">:</span> 10s\n\n<span class=\"token key atrule\">packages</span><span class=\"token punctuation\">:</span>\n <span class=\"token key atrule\">\"@*/*\"</span><span class=\"token punctuation\">:</span>\n <span class=\"token comment\"># 可访问权限,web界面看不见,不登陆,也无法 install 包</span>\n <span class=\"token key atrule\">access</span><span class=\"token punctuation\">:</span> $authenticated <span class=\"token comment\"># $all</span>\n <span class=\"token comment\"># 发布权限, $authenticated 表示只有通过验证的人</span>\n <span class=\"token key atrule\">publish</span><span class=\"token punctuation\">:</span> $authenticated\n <span class=\"token comment\"># 可取消发布权限</span>\n <span class=\"token key atrule\">unpublish</span><span class=\"token punctuation\">:</span> $authenticated\n <span class=\"token comment\"># 包不存在时的代理</span>\n <span class=\"token key atrule\">proxy</span><span class=\"token punctuation\">:</span> npmjs yarn taobao\n <span class=\"token key atrule\">\"**\"</span><span class=\"token punctuation\">:</span>\n <span class=\"token key atrule\">access</span><span class=\"token punctuation\">:</span> $authenticated <span class=\"token comment\"># $all</span>\n <span class=\"token key atrule\">publish</span><span class=\"token punctuation\">:</span> $authenticated\n <span class=\"token key atrule\">unpublish</span><span class=\"token punctuation\">:</span> $authenticated\n <span class=\"token key atrule\">proxy</span><span class=\"token punctuation\">:</span> npmjs yarn taobao\n\n<span class=\"token key atrule\">middlewares</span><span class=\"token punctuation\">:</span>\n <span class=\"token key atrule\">audit</span><span class=\"token punctuation\">:</span>\n <span class=\"token key atrule\">enabled</span><span class=\"token punctuation\">:</span> <span class=\"token boolean important\">true</span>\n<span class=\"token key atrule\">listen</span><span class=\"token punctuation\">:</span> 0.0.0.0<span class=\"token punctuation\">:</span><span class=\"token number\">4873</span>\n<span class=\"token key atrule\">log</span><span class=\"token punctuation\">:</span> <span class=\"token punctuation\">{</span> <span class=\"token key atrule\">type</span><span class=\"token punctuation\">:</span> stdout<span class=\"token punctuation\">,</span> <span class=\"token key atrule\">format</span><span class=\"token punctuation\">:</span> pretty<span class=\"token punctuation\">,</span> <span class=\"token key atrule\">level</span><span class=\"token punctuation\">:</span> http <span class=\"token punctuation\">}</span><span aria-hidden=\"true\" class=\"line-numbers-rows\"><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span></span></code></pre>\n\n<p>创建容器,环境变量,<code>VERDACCIO_PUBLIC_URL</code>是静态资源的前缀地址,由于nginx挂了<code>ssl</code>,如果使用<code>http</code>可以不添加</p>\n<pre class=\"line-numbers language-bash\" data-language=\"bash\"><code class=\"language-bash\"><span class=\"token function\">docker</span> run <span class=\"token punctuation\">\\</span>\n<span class=\"token parameter variable\">-p</span> <span class=\"token number\">4873</span>:4873 <span class=\"token punctuation\">\\</span>\n<span class=\"token parameter variable\">--restart</span><span class=\"token operator\">=</span>always <span class=\"token punctuation\">\\</span>\n<span class=\"token parameter variable\">--network</span> mozzie.cn-net <span class=\"token punctuation\">\\</span>\n--network-alias verdaccio <span class=\"token punctuation\">\\</span>\n<span class=\"token parameter variable\">--env</span> <span class=\"token assign-left variable\">VERDACCIO_PORT</span><span class=\"token operator\">=</span><span class=\"token number\">4873</span> <span class=\"token punctuation\">\\</span>\n<span class=\"token parameter variable\">--env</span> <span class=\"token assign-left variable\">VERDACCIO_PUBLIC_URL</span><span class=\"token operator\">=</span>https://npm.mozzie.cn <span class=\"token punctuation\">\\</span>\n<span class=\"token parameter variable\">--ip</span> <span class=\"token number\">172.21</span>.0.196 <span class=\"token punctuation\">\\</span>\n<span class=\"token parameter variable\">--name</span> verdaccio <span class=\"token punctuation\">\\</span>\n<span class=\"token parameter variable\">-v</span> /www/wwwroot/nginx/html/verdaccio/storage:/verdaccio/storage <span class=\"token punctuation\">\\</span>\n<span class=\"token parameter variable\">-v</span> /www/wwwroot/nginx/html/verdaccio/config:/verdaccio/conf <span class=\"token punctuation\">\\</span>\n<span class=\"token parameter variable\">-v</span> /www/wwwroot/nginx/html/verdaccio/plugins:/verdaccio/plugins <span class=\"token punctuation\">\\</span>\n<span class=\"token parameter variable\">-d</span> verdaccio/verdaccio<span aria-hidden=\"true\" class=\"line-numbers-rows\"><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span></span></code></pre>\n\n\n\n<p>配置nginx的反向代理conf,注意所在的docker网络,使用<code>container_name</code></p>\n<pre class=\"line-numbers language-conf\" data-language=\"conf\"><code class=\"language-conf\">server {\n # listen 80;\n listen 443 ssl;\n server_name npm.mozzie.cn;\n ssl_certificate /etc/nginx/ssl/npm.mozzie.cn_bundle.pem;\n ssl_certificate_key /etc/nginx/ssl/npm.mozzie.cn.key;\n gzip on;\n\n location / {\n proxy_set_header X-Real-IP $remote_addr;\n proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;\n proxy_set_header Host $host;\n proxy_set_header X-NginX-Proxy true;\n proxy_pass http://verdaccio:4873/;\n proxy_redirect off;\n }\n}<span aria-hidden=\"true\" class=\"line-numbers-rows\"><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span></span></code></pre>\n\n<p>运行添加用户,报错,因为 <code>htpasswd</code>默认创建在宿主机,也就是上面挂载的<code>/www/wwwroot/nginx/html/verdaccio/storage</code>目录中</p>\n<pre class=\"line-numbers language-bash\" data-language=\"bash\"><code class=\"language-bash\"><span class=\"token function\">npm</span> adduser <span class=\"token parameter variable\">--registry</span> https://npm.mozzie.cn/<span aria-hidden=\"true\" class=\"line-numbers-rows\"><span></span></span></code></pre>\n\n<p>配置<code>htpasswd</code>、<code>storage</code> 文件夹权限</p>\n<pre class=\"line-numbers language-bash\" data-language=\"bash\"><code class=\"language-bash\"><span class=\"token comment\"># 宿主机中执行</span>\n<span class=\"token builtin class-name\">cd</span> /www/wwwroot/nginx/html/verdaccio/storage\n<span class=\"token function\">touch</span> htpasswd\n<span class=\"token function\">sudo</span> <span class=\"token function\">chown</span> <span class=\"token number\">10001</span>:65533 htpasswd\n<span class=\"token function\">sudo</span> <span class=\"token function\">chown</span> <span class=\"token parameter variable\">-R</span> <span class=\"token number\">10001</span>:65533 /www/wwwroot/nginx/html/verdaccio/storage<span aria-hidden=\"true\" class=\"line-numbers-rows\"><span></span><span></span><span></span><span></span><span></span></span></code></pre>\n\n<h1 id=\"verdaccio-用户管理\"><a href=\"#verdaccio-用户管理\" class=\"headerlink\" title=\"verdaccio 用户管理\"></a>verdaccio 用户管理</h1><p>由于在 <code>config.yml</code> 中关闭了可访问权限</p>\n<pre class=\"line-numbers language-yaml\" data-language=\"yaml\"><code class=\"language-yaml\"><span class=\"token key atrule\">auth</span><span class=\"token punctuation\">:</span>\n <span class=\"token key atrule\">htpasswd</span><span class=\"token punctuation\">:</span>\n <span class=\"token key atrule\">file</span><span class=\"token punctuation\">:</span> /verdaccio/storage/htpasswd\n <span class=\"token comment\"># 关闭注册,手动添加用户,默认Bcrypt算法,</span>\n <span class=\"token key atrule\">max_users</span><span class=\"token punctuation\">:</span> <span class=\"token number\">-1</span>\n\n<span class=\"token key atrule\">packages</span><span class=\"token punctuation\">:</span>\n <span class=\"token key atrule\">\"@*/*\"</span><span class=\"token punctuation\">:</span>\n <span class=\"token comment\"># 可访问权限,web界面看不见,不登陆,也无法 install 包</span>\n <span class=\"token key atrule\">access</span><span class=\"token punctuation\">:</span> $authenticated <span class=\"token comment\"># $all</span>\n <span class=\"token comment\"># 发布权限, $authenticated 表示只有通过验证的人</span>\n <span class=\"token key atrule\">publish</span><span class=\"token punctuation\">:</span> $authenticated\n <span class=\"token comment\"># 可取消发布权限</span>\n <span class=\"token key atrule\">unpublish</span><span class=\"token punctuation\">:</span> $authenticated\n <span class=\"token key atrule\">\"**\"</span><span class=\"token punctuation\">:</span>\n <span class=\"token key atrule\">access</span><span class=\"token punctuation\">:</span> $authenticated\n <span class=\"token key atrule\">publish</span><span class=\"token punctuation\">:</span> $authenticated\n <span class=\"token key atrule\">unpublish</span><span class=\"token punctuation\">:</span> $authenticated<span aria-hidden=\"true\" class=\"line-numbers-rows\"><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span></span></code></pre>\n\n<p>默认的 <code>addUser</code> 策略是 <code>Bcrypt</code> 生成密码,随便找个网页生成个密码,使用<code>账号:密码</code>添加到 <code>htpasswd</code> 文件中,例如 </p>\n<pre class=\"line-numbers language-bash\" data-language=\"bash\"><code class=\"language-bash\">test:<span class=\"token variable\">$2a</span><span class=\"token variable\">$10</span><span class=\"token variable\">$0xPGVnpcdxcfmFxtWyWDx</span>./TRtm/W/gSzib/jck3w.sF9x.Ur8t8W<span aria-hidden=\"true\" class=\"line-numbers-rows\"><span></span></span></code></pre>\n\n<p>因此在实际开发中,管理员手动给用户创建好账号,然后根据用户的包管理工具,进行登录,例如以 <code>npm</code> 为例</p>\n<pre class=\"line-numbers language-bash\" data-language=\"bash\"><code class=\"language-bash\"><span class=\"token function\">npm</span> adduser <span class=\"token parameter variable\">--registry</span> https://npm.mozzie.cn/\n<span class=\"token comment\"># 输入 Username: mozzie | Password: xxx | Email: (this IS public) himozzie@foxmail.com</span>\n<span class=\"token comment\"># 提示登陆成功 Logged in as mozzie on https://npm.mozzie.cn/.</span><span aria-hidden=\"true\" class=\"line-numbers-rows\"><span></span><span></span><span></span></span></code></pre>\n\n<p>在系统的 <code>cat ~/.npmrc</code> 中会增加一行,就可以正常的进行以来的安装了</p>\n<pre class=\"line-numbers language-bash\" data-language=\"bash\"><code class=\"language-bash\">//npm.mozzie.cn/:_authToken<span class=\"token operator\">=</span><span class=\"token string\">\"Do/wrh5QzsnYaNU4x3ZlVA==\"</span><span aria-hidden=\"true\" class=\"line-numbers-rows\"><span></span></span></code></pre>\n\n<h1 id=\"项目-npmrc-Scope区分\"><a href=\"#项目-npmrc-Scope区分\" class=\"headerlink\" title=\"项目 .npmrc Scope区分\"></a>项目 .npmrc Scope区分</h1><p>需要指定 <code>.npmrc</code> 来区别 <code>Scope</code> 的安装地址,例如一个包名为 <code>@mozzie/hook</code>,对应的私库为 <code>https://npm.mozzie.cn/</code></p>\n<pre class=\"line-numbers language-bash\" data-language=\"bash\"><code class=\"language-bash\"><span class=\"token assign-left variable\">registry</span><span class=\"token operator\">=</span>http://registry.npm.taobao.org/\n@mozzie:registry<span class=\"token operator\">=</span>https://npm.mozzie.cn\n<span class=\"token comment\"># npm拉包的校验</span>\n//https://npm.mozzie.cn/:_authToken<span class=\"token operator\">=</span>xxxxxxxxxxxxx<span aria-hidden=\"true\" class=\"line-numbers-rows\"><span></span><span></span><span></span><span></span></span></code></pre>","site":{"data":{}},"excerpt":"","more":"<h1 id=\"使用-docker-搭建-verdaccio\"><a href=\"#使用-docker-搭建-verdaccio\" class=\"headerlink\" title=\"使用 docker 搭建 verdaccio\"></a>使用 docker 搭建 verdaccio</h1><p>创建 & 配置<code>config.yaml</code>文件</p>\n<pre class=\"line-numbers language-yaml\" data-language=\"yaml\"><code class=\"language-yaml\"><span class=\"token comment\"># Read about the best practices</span>\n<span class=\"token comment\"># https://verdaccio.org/docs/best</span>\n\n<span class=\"token comment\"># path to a directory with all packages</span>\n<span class=\"token key atrule\">storage</span><span class=\"token punctuation\">:</span> /verdaccio/storage/data\n<span class=\"token comment\"># path to a directory with plugins to include</span>\n<span class=\"token key atrule\">plugins</span><span class=\"token punctuation\">:</span> /verdaccio/plugins\n\n<span class=\"token comment\"># 包体积上限,默认10mb</span>\n<span class=\"token key atrule\">max_body_size</span><span class=\"token punctuation\">:</span> 1024mb\n\n\n<span class=\"token key atrule\">web</span><span class=\"token punctuation\">:</span>\n <span class=\"token key atrule\">enable</span><span class=\"token punctuation\">:</span> <span class=\"token boolean important\">true</span>\n <span class=\"token key atrule\">title</span><span class=\"token punctuation\">:</span> Mozzie<span class=\"token punctuation\">-</span>NPM\n <span class=\"token comment\"># gravatar: false</span>\n <span class=\"token comment\"># login: true</span>\n <span class=\"token key atrule\">pkgManagers</span><span class=\"token punctuation\">:</span>\n <span class=\"token punctuation\">-</span> npm\n <span class=\"token punctuation\">-</span> yarn\n <span class=\"token punctuation\">-</span> pnpm\n <span class=\"token key atrule\">html_cache</span><span class=\"token punctuation\">:</span> <span class=\"token boolean important\">true</span>\n <span class=\"token key atrule\">showFooter</span><span class=\"token punctuation\">:</span> <span class=\"token boolean important\">false</span>\n\n<span class=\"token key atrule\">auth</span><span class=\"token punctuation\">:</span>\n <span class=\"token key atrule\">htpasswd</span><span class=\"token punctuation\">:</span>\n <span class=\"token key atrule\">file</span><span class=\"token punctuation\">:</span> /verdaccio/storage/htpasswd\n <span class=\"token comment\"># 关闭注册,手动添加用户,默认Bcrypt算法,随便找个网页生成个密码,使用账号:密码添加到 htpasswd 文件中,例如 test:$2a$10$0xPGVnpcdxcfmFxtWyWDx./TRtm/W/gSzib/jck3w.sF9x.Ur8t8W</span>\n <span class=\"token key atrule\">max_users</span><span class=\"token punctuation\">:</span> <span class=\"token number\">-1</span>\n\n\n<span class=\"token key atrule\">i18n</span><span class=\"token punctuation\">:</span>\n <span class=\"token key atrule\">web</span><span class=\"token punctuation\">:</span> zh<span class=\"token punctuation\">-</span>CN\n\n<span class=\"token comment\"># notify: # 配置 Webhook 推送到钉钉,记得修改 access_token 和 atMobiles</span>\n<span class=\"token comment\"># method: POST</span>\n<span class=\"token comment\"># headers: [{ \"Content-Type\": \"application/json\" }]</span>\n<span class=\"token comment\"># endpoint: https://oapi.dingtalk.com/robot/send?access_token=xxxx</span>\n<span class=\"token comment\"># content: '{\"msgtype\":\"text\", \"at\": {\"atMobiles\": [\"13000000000\"] }, \"text\":{\"content\":\"NPM 发布新包:\\n > 包名称:{{name}} \\n > 版本号:{{#each versions}}{{version}}{{/each}} \\n > 发布者:{{publisher.name}} \"}}'</span>\n\n<span class=\"token key atrule\">uplinks</span><span class=\"token punctuation\">:</span>\n <span class=\"token key atrule\">npmjs</span><span class=\"token punctuation\">:</span>\n <span class=\"token key atrule\">url</span><span class=\"token punctuation\">:</span> https<span class=\"token punctuation\">:</span>//registry.npmjs.org/\n <span class=\"token key atrule\">yarn</span><span class=\"token punctuation\">:</span>\n <span class=\"token key atrule\">url</span><span class=\"token punctuation\">:</span> https<span class=\"token punctuation\">:</span>//registry.yarnpkg.com/\n <span class=\"token key atrule\">timeout</span><span class=\"token punctuation\">:</span> 10s\n <span class=\"token key atrule\">taobao</span><span class=\"token punctuation\">:</span>\n <span class=\"token key atrule\">url</span><span class=\"token punctuation\">:</span> https<span class=\"token punctuation\">:</span>//registry.npmmirror.com/\n <span class=\"token key atrule\">timeout</span><span class=\"token punctuation\">:</span> 10s\n\n<span class=\"token key atrule\">packages</span><span class=\"token punctuation\">:</span>\n <span class=\"token key atrule\">\"@*/*\"</span><span class=\"token punctuation\">:</span>\n <span class=\"token comment\"># 可访问权限,web界面看不见,不登陆,也无法 install 包</span>\n <span class=\"token key atrule\">access</span><span class=\"token punctuation\">:</span> $authenticated <span class=\"token comment\"># $all</span>\n <span class=\"token comment\"># 发布权限, $authenticated 表示只有通过验证的人</span>\n <span class=\"token key atrule\">publish</span><span class=\"token punctuation\">:</span> $authenticated\n <span class=\"token comment\"># 可取消发布权限</span>\n <span class=\"token key atrule\">unpublish</span><span class=\"token punctuation\">:</span> $authenticated\n <span class=\"token comment\"># 包不存在时的代理</span>\n <span class=\"token key atrule\">proxy</span><span class=\"token punctuation\">:</span> npmjs yarn taobao\n <span class=\"token key atrule\">\"**\"</span><span class=\"token punctuation\">:</span>\n <span class=\"token key atrule\">access</span><span class=\"token punctuation\">:</span> $authenticated <span class=\"token comment\"># $all</span>\n <span class=\"token key atrule\">publish</span><span class=\"token punctuation\">:</span> $authenticated\n <span class=\"token key atrule\">unpublish</span><span class=\"token punctuation\">:</span> $authenticated\n <span class=\"token key atrule\">proxy</span><span class=\"token punctuation\">:</span> npmjs yarn taobao\n\n<span class=\"token key atrule\">middlewares</span><span class=\"token punctuation\">:</span>\n <span class=\"token key atrule\">audit</span><span class=\"token punctuation\">:</span>\n <span class=\"token key atrule\">enabled</span><span class=\"token punctuation\">:</span> <span class=\"token boolean important\">true</span>\n<span class=\"token key atrule\">listen</span><span class=\"token punctuation\">:</span> 0.0.0.0<span class=\"token punctuation\">:</span><span class=\"token number\">4873</span>\n<span class=\"token key atrule\">log</span><span class=\"token punctuation\">:</span> <span class=\"token punctuation\">{</span> <span class=\"token key atrule\">type</span><span class=\"token punctuation\">:</span> stdout<span class=\"token punctuation\">,</span> <span class=\"token key atrule\">format</span><span class=\"token punctuation\">:</span> pretty<span class=\"token punctuation\">,</span> <span class=\"token key atrule\">level</span><span class=\"token punctuation\">:</span> http <span class=\"token punctuation\">}</span><span aria-hidden=\"true\" class=\"line-numbers-rows\"><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span></span></code></pre>\n\n<p>创建容器,环境变量,<code>VERDACCIO_PUBLIC_URL</code>是静态资源的前缀地址,由于nginx挂了<code>ssl</code>,如果使用<code>http</code>可以不添加</p>\n<pre class=\"line-numbers language-bash\" data-language=\"bash\"><code class=\"language-bash\"><span class=\"token function\">docker</span> run <span class=\"token punctuation\">\\</span>\n<span class=\"token parameter variable\">-p</span> <span class=\"token number\">4873</span>:4873 <span class=\"token punctuation\">\\</span>\n<span class=\"token parameter variable\">--restart</span><span class=\"token operator\">=</span>always <span class=\"token punctuation\">\\</span>\n<span class=\"token parameter variable\">--network</span> mozzie.cn-net <span class=\"token punctuation\">\\</span>\n--network-alias verdaccio <span class=\"token punctuation\">\\</span>\n<span class=\"token parameter variable\">--env</span> <span class=\"token assign-left variable\">VERDACCIO_PORT</span><span class=\"token operator\">=</span><span class=\"token number\">4873</span> <span class=\"token punctuation\">\\</span>\n<span class=\"token parameter variable\">--env</span> <span class=\"token assign-left variable\">VERDACCIO_PUBLIC_URL</span><span class=\"token operator\">=</span>https://npm.mozzie.cn <span class=\"token punctuation\">\\</span>\n<span class=\"token parameter variable\">--ip</span> <span class=\"token number\">172.21</span>.0.196 <span class=\"token punctuation\">\\</span>\n<span class=\"token parameter variable\">--name</span> verdaccio <span class=\"token punctuation\">\\</span>\n<span class=\"token parameter variable\">-v</span> /www/wwwroot/nginx/html/verdaccio/storage:/verdaccio/storage <span class=\"token punctuation\">\\</span>\n<span class=\"token parameter variable\">-v</span> /www/wwwroot/nginx/html/verdaccio/config:/verdaccio/conf <span class=\"token punctuation\">\\</span>\n<span class=\"token parameter variable\">-v</span> /www/wwwroot/nginx/html/verdaccio/plugins:/verdaccio/plugins <span class=\"token punctuation\">\\</span>\n<span class=\"token parameter variable\">-d</span> verdaccio/verdaccio<span aria-hidden=\"true\" class=\"line-numbers-rows\"><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span></span></code></pre>\n\n\n\n<p>配置nginx的反向代理conf,注意所在的docker网络,使用<code>container_name</code></p>\n<pre class=\"line-numbers language-conf\" data-language=\"conf\"><code class=\"language-conf\">server {\n # listen 80;\n listen 443 ssl;\n server_name npm.mozzie.cn;\n ssl_certificate /etc/nginx/ssl/npm.mozzie.cn_bundle.pem;\n ssl_certificate_key /etc/nginx/ssl/npm.mozzie.cn.key;\n gzip on;\n\n location / {\n proxy_set_header X-Real-IP $remote_addr;\n proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;\n proxy_set_header Host $host;\n proxy_set_header X-NginX-Proxy true;\n proxy_pass http://verdaccio:4873/;\n proxy_redirect off;\n }\n}<span aria-hidden=\"true\" class=\"line-numbers-rows\"><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span></span></code></pre>\n\n<p>运行添加用户,报错,因为 <code>htpasswd</code>默认创建在宿主机,也就是上面挂载的<code>/www/wwwroot/nginx/html/verdaccio/storage</code>目录中</p>\n<pre class=\"line-numbers language-bash\" data-language=\"bash\"><code class=\"language-bash\"><span class=\"token function\">npm</span> adduser <span class=\"token parameter variable\">--registry</span> https://npm.mozzie.cn/<span aria-hidden=\"true\" class=\"line-numbers-rows\"><span></span></span></code></pre>\n\n<p>配置<code>htpasswd</code>、<code>storage</code> 文件夹权限</p>\n<pre class=\"line-numbers language-bash\" data-language=\"bash\"><code class=\"language-bash\"><span class=\"token comment\"># 宿主机中执行</span>\n<span class=\"token builtin class-name\">cd</span> /www/wwwroot/nginx/html/verdaccio/storage\n<span class=\"token function\">touch</span> htpasswd\n<span class=\"token function\">sudo</span> <span class=\"token function\">chown</span> <span class=\"token number\">10001</span>:65533 htpasswd\n<span class=\"token function\">sudo</span> <span class=\"token function\">chown</span> <span class=\"token parameter variable\">-R</span> <span class=\"token number\">10001</span>:65533 /www/wwwroot/nginx/html/verdaccio/storage<span aria-hidden=\"true\" class=\"line-numbers-rows\"><span></span><span></span><span></span><span></span><span></span></span></code></pre>\n\n<h1 id=\"verdaccio-用户管理\"><a href=\"#verdaccio-用户管理\" class=\"headerlink\" title=\"verdaccio 用户管理\"></a>verdaccio 用户管理</h1><p>由于在 <code>config.yml</code> 中关闭了可访问权限</p>\n<pre class=\"line-numbers language-yaml\" data-language=\"yaml\"><code class=\"language-yaml\"><span class=\"token key atrule\">auth</span><span class=\"token punctuation\">:</span>\n <span class=\"token key atrule\">htpasswd</span><span class=\"token punctuation\">:</span>\n <span class=\"token key atrule\">file</span><span class=\"token punctuation\">:</span> /verdaccio/storage/htpasswd\n <span class=\"token comment\"># 关闭注册,手动添加用户,默认Bcrypt算法,</span>\n <span class=\"token key atrule\">max_users</span><span class=\"token punctuation\">:</span> <span class=\"token number\">-1</span>\n\n<span class=\"token key atrule\">packages</span><span class=\"token punctuation\">:</span>\n <span class=\"token key atrule\">\"@*/*\"</span><span class=\"token punctuation\">:</span>\n <span class=\"token comment\"># 可访问权限,web界面看不见,不登陆,也无法 install 包</span>\n <span class=\"token key atrule\">access</span><span class=\"token punctuation\">:</span> $authenticated <span class=\"token comment\"># $all</span>\n <span class=\"token comment\"># 发布权限, $authenticated 表示只有通过验证的人</span>\n <span class=\"token key atrule\">publish</span><span class=\"token punctuation\">:</span> $authenticated\n <span class=\"token comment\"># 可取消发布权限</span>\n <span class=\"token key atrule\">unpublish</span><span class=\"token punctuation\">:</span> $authenticated\n <span class=\"token key atrule\">\"**\"</span><span class=\"token punctuation\">:</span>\n <span class=\"token key atrule\">access</span><span class=\"token punctuation\">:</span> $authenticated\n <span class=\"token key atrule\">publish</span><span class=\"token punctuation\">:</span> $authenticated\n <span class=\"token key atrule\">unpublish</span><span class=\"token punctuation\">:</span> $authenticated<span aria-hidden=\"true\" class=\"line-numbers-rows\"><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span></span></code></pre>\n\n<p>默认的 <code>addUser</code> 策略是 <code>Bcrypt</code> 生成密码,随便找个网页生成个密码,使用<code>账号:密码</code>添加到 <code>htpasswd</code> 文件中,例如 </p>\n<pre class=\"line-numbers language-bash\" data-language=\"bash\"><code class=\"language-bash\">test:<span class=\"token variable\">$2a</span><span class=\"token variable\">$10</span><span class=\"token variable\">$0xPGVnpcdxcfmFxtWyWDx</span>./TRtm/W/gSzib/jck3w.sF9x.Ur8t8W<span aria-hidden=\"true\" class=\"line-numbers-rows\"><span></span></span></code></pre>\n\n<p>因此在实际开发中,管理员手动给用户创建好账号,然后根据用户的包管理工具,进行登录,例如以 <code>npm</code> 为例</p>\n<pre class=\"line-numbers language-bash\" data-language=\"bash\"><code class=\"language-bash\"><span class=\"token function\">npm</span> adduser <span class=\"token parameter variable\">--registry</span> https://npm.mozzie.cn/\n<span class=\"token comment\"># 输入 Username: mozzie | Password: xxx | Email: (this IS public) himozzie@foxmail.com</span>\n<span class=\"token comment\"># 提示登陆成功 Logged in as mozzie on https://npm.mozzie.cn/.</span><span aria-hidden=\"true\" class=\"line-numbers-rows\"><span></span><span></span><span></span></span></code></pre>\n\n<p>在系统的 <code>cat ~/.npmrc</code> 中会增加一行,就可以正常的进行以来的安装了</p>\n<pre class=\"line-numbers language-bash\" data-language=\"bash\"><code class=\"language-bash\">//npm.mozzie.cn/:_authToken<span class=\"token operator\">=</span><span class=\"token string\">\"Do/wrh5QzsnYaNU4x3ZlVA==\"</span><span aria-hidden=\"true\" class=\"line-numbers-rows\"><span></span></span></code></pre>\n\n<h1 id=\"项目-npmrc-Scope区分\"><a href=\"#项目-npmrc-Scope区分\" class=\"headerlink\" title=\"项目 .npmrc Scope区分\"></a>项目 .npmrc Scope区分</h1><p>需要指定 <code>.npmrc</code> 来区别 <code>Scope</code> 的安装地址,例如一个包名为 <code>@mozzie/hook</code>,对应的私库为 <code>https://npm.mozzie.cn/</code></p>\n<pre class=\"line-numbers language-bash\" data-language=\"bash\"><code class=\"language-bash\"><span class=\"token assign-left variable\">registry</span><span class=\"token operator\">=</span>http://registry.npm.taobao.org/\n@mozzie:registry<span class=\"token operator\">=</span>https://npm.mozzie.cn\n<span class=\"token comment\"># npm拉包的校验</span>\n//https://npm.mozzie.cn/:_authToken<span class=\"token operator\">=</span>xxxxxxxxxxxxx<span aria-hidden=\"true\" class=\"line-numbers-rows\"><span></span><span></span><span></span><span></span></span></code></pre>"}],"PostAsset":[],"PostCategory":[{"post_id":"clodvl50y0001egz3gb2hg08x","category_id":"clodvl5100004egz32t7g6yae","_id":"clodvl5120008egz3gact7jr8"},{"post_id":"clodvl50z0003egz30n73cnoa","category_id":"clodvl5120007egz39nmxdy42","_id":"clodvl513000begz3bcg64i6v"},{"post_id":"clodvl5110005egz372gm10m3","category_id":"clodvl5120007egz39nmxdy42","_id":"clodvl513000cegz37esadbdl"},{"post_id":"clodvl5110006egz3gahygeng","category_id":"clodvl5120007egz39nmxdy42","_id":"clodvl513000degz3bn0k0mtl"},{"post_id":"clodvl514000eegz3fzrv14dz","category_id":"clodvl514000fegz33md02z8j","_id":"clodvl514000gegz308zibqs6"}],"PostTag":[],"Tag":[]}} |