{"componentChunkName":"component---src-templates-best-practice-detail-tsx","path":"/best-practice/2019-12-14-docsify-with-serverless","result":{"data":{"currentBlog":{"id":"c5d83479-32e7-5a99-acbe-5038f43cadc9","frontmatter":{"thumbnail":"https://img.serverlesscloud.cn/20191217/1576565954158-docsify.png","authors":["Aceyclee"],"categories":["best-practice"],"date":"2019-12-14T00:00:00.000Z","title":"三分钟入坑指北 🔜 Docsify + Serverless Framework 快速创建个人博客系统","description":"通过 Serverless Website 组件快速构建一个 Serverless docsify 个人博客系统。","authorslink":["https://www.zhihu.com/people/Aceyclee"],"translators":null,"translatorslink":null,"tags":["Wintersmith","Docsify"],"keywords":"Docsify,个人博客系统,Serverless Website,Serverless docsify","outdated":true},"wordCount":{"words":170,"sentences":39,"paragraphs":38},"fileAbsolutePath":"/opt/build/repo/content/best-practice/2019-12-14-docsify-with-serverless.md","fields":{"slug":"/best-practice/2019-12-14-docsify-with-serverless/","keywords":["nodejs","serverless","website","无服务器","docsify","serverless","Serverless","yml","html","Framework"]},"html":"<p>之前由于学摄影的关系，为了提高自己的审美，顺便锻炼下自己的英文能力，翻译了不少国外艺术类的 <a href=\"https://www.zhihu.com/collection/291724553\">文章</a>。最近一直想搭一个个人博客来存放这些内容，又懒得折腾建站，遂一直搁置。</p>\n<p>直到偶然发现了 <a href=\"https://docsify.js.org/\">docsify</a> 和 <a href=\"https://github.com/serverless/serverless\">Serverless Framework</a>，建站一下子变得特别容易 —— 用 docsify 创建博客系统，然后用 Serverless Framework 部署服务，三分钟就搞定了！</p>\n<p><strong>简单介绍一下：</strong></p>\n<ul>\n<li><a href=\"https://docsify.js.org/\">docsify</a>：一个神奇的文档网站生成工具，不同于 GitBook、Hexo 的地方是它不会生成将 <code class=\"language-text\">.md</code> 转成 <code class=\"language-text\">.html</code> 文件，所有转换工作都是在运行时进行。而且如果只是需要快速搭建一个小型的文档网站，或者不想因为生成的一堆 <code class=\"language-text\">.html</code> 文件「污染」 commit 记录，只需要创建一个 <code class=\"language-text\">index.html</code> 就可以开始写文档；</li>\n<li><a href=\"https://github.com/serverless/serverless/blob/master/README_CN.md\">Serverless Framework</a>：在 GitHub 上有三万颗星，业界非常受欢迎的无服务器应用框架，开发者无需关心底层资源即可部署完整可用的 Serverless 应用架构。</li>\n</ul>\n<p>接下来我们分三步进行：<strong>安装与初始化 → 配置 yml 文件 → 部署</strong></p>\n<video id=\"video\" controls=\"\" preload=\"none\" poster=\"https://img.serverlesscloud.cn/20191217/1576566243002-docsifyvideopic.png\">\n<source id=\"mp4\" src=\"https://img.serverlesscloud.cn/video/docsify%2B%E7%89%87%E5%B0%BE4.mp4\">\n</video>\n<h2 id=\"▎安装与初始化\"><a href=\"#%E2%96%8E%E5%AE%89%E8%A3%85%E4%B8%8E%E5%88%9D%E5%A7%8B%E5%8C%96\" aria-label=\"▎安装与初始化 permalink\" class=\"anchor\"><svg aria-hidden=\"true\" focusable=\"false\" height=\"16\" version=\"1.1\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"></path></svg></a>▎安装与初始化</h2>\n<p>首先确保系统包含以下环境：</p>\n<ul>\n<li><a href=\"https://nodejs.org/en/\">Node.js</a> (Node.js 版本需不低于 8.6，建议使用 10.0 及以上版本)</li>\n<li><a href=\"https://git-scm.com/\">Git</a></li>\n</ul>\n<p><strong>1. 安装 Serverless Framework</strong></p>\n<div class=\"gatsby-highlight\" data-language=\"text\"><pre class=\"language-text\"><code class=\"language-text\">$ npm install -g serverless</code></pre></div>\n<p><strong>2. 安装 docsify</strong></p>\n<div class=\"gatsby-highlight\" data-language=\"text\"><pre class=\"language-text\"><code class=\"language-text\">$ npm i docsify-cli -g</code></pre></div>\n<p><strong>3. 初始化项目</strong></p>\n<div class=\"gatsby-highlight\" data-language=\"text\"><pre class=\"language-text\"><code class=\"language-text\">$ docsify init docsify</code></pre></div>\n<p>初始化成功后，可以看到 ./docsify 目录下创建的几个文件</p>\n<ul>\n<li><code class=\"language-text\">index.html</code> 入口文件</li>\n<li><code class=\"language-text\">README.md</code> 会做为主页内容渲染</li>\n</ul>\n<p>直接编辑 <code class=\"language-text\">docsify/README.md</code> 就能更新网站内容，当然也可以写多个页面，这是后话。</p>\n<p><strong>4. 本地预览</strong></p>\n<p>运行以下命令，并通过浏览器访问 <a href=\"http://localhost:3000\">http://localhost:3000</a> 即可方便地预览效果，而且提供 LiveReload 功能，可以实时预览。</p>\n<div class=\"gatsby-highlight\" data-language=\"text\"><pre class=\"language-text\"><code class=\"language-text\">$ docsify serve docsify</code></pre></div>\n<h2 id=\"▎配置-yml-文件\"><a href=\"#%E2%96%8E%E9%85%8D%E7%BD%AE-yml-%E6%96%87%E4%BB%B6\" aria-label=\"▎配置 yml 文件 permalink\" class=\"anchor\"><svg aria-hidden=\"true\" focusable=\"false\" height=\"16\" version=\"1.1\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"></path></svg></a>▎配置 yml 文件</h2>\n<p>在项目目录下，创建 <code class=\"language-text\">serverless.yml</code> 文件：</p>\n<div class=\"gatsby-highlight\" data-language=\"text\"><pre class=\"language-text\"><code class=\"language-text\">$ touch serverless.yml</code></pre></div>\n<p>将以下内容写入上述的 yml 文件里：</p>\n<div\n              class=\"gatsby-code-button-container\"\n              data-toaster-id=\"37122652406761914000\"\n              data-toaster-class=\"gatsby-code-button-toaster\"\n              data-toaster-text-class=\"gatsby-code-button-toaster-text\"\n              data-toaster-text=\"代码复制成功\"\n              data-toaster-duration=\"3500\"\n              onClick=\"copyToClipboard(`# serverless.yml\n\nmydocsify:\n  component: &quot;@serverless/tencent-website&quot;\n  inputs:\n    code:\n      src: ./docsify # Upload static files generated by docsify\n      index: index.html\n      error: index.html\n    region: ap-guangzhou\n    bucketName: my-bucket`, `37122652406761914000`)\"\n            >\n              <div\n                class=\"gatsby-code-button\"\n                data-tooltip=\"\"\n              >\n                复制代码<svg class=\"gatsby-code-button-icon\" xmlns=\"http://www.w3.org/2000/svg\" width=\"24\" height=\"24\" viewBox=\"0 0 24 24\"><path fill=\"none\" d=\"M0 0h24v24H0V0z\"/><path d=\"M16 1H2v16h2V3h12V1zm-1 4l6 6v12H6V5h9zm-1 7h5.5L14 6.5V12z\"/></svg>\n              </div>\n            </div>\n<div class=\"gatsby-highlight\" data-language=\"console\"><pre class=\"language-console\"><code class=\"language-console\"># serverless.yml\n\nmydocsify:\n  component: &quot;@serverless/tencent-website&quot;\n  inputs:\n    code:\n      src: ./docsify # Upload static files generated by docsify\n      index: index.html\n      error: index.html\n    region: ap-guangzhou\n    bucketName: my-bucket</code></pre></div>\n<p>配置完成后，文件目录如下：</p>\n<div class=\"gatsby-highlight\" data-language=\"text\"><pre class=\"language-text\"><code class=\"language-text\">.\n├── docsify\n|   ├── index.html\n|   └── README.md\n└── serverless.yml</code></pre></div>\n<h2 id=\"▎部署\"><a href=\"#%E2%96%8E%E9%83%A8%E7%BD%B2\" aria-label=\"▎部署 permalink\" class=\"anchor\"><svg aria-hidden=\"true\" focusable=\"false\" height=\"16\" version=\"1.1\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"></path></svg></a>▎部署</h2>\n<p>通过 <code class=\"language-text\">sls</code> 命令进行部署，这里还可以添加 <code class=\"language-text\">--debug</code> 参数来查看部署过程中的信息，</p>\n<div class=\"gatsby-highlight\" data-language=\"text\"><pre class=\"language-text\"><code class=\"language-text\">$ sls --debug</code></pre></div>\n<p>如果你的账号未 <a href=\"https://cloud.tencent.com/login\">登陆</a> 或 <a href=\"https://cloud.tencent.com/register\">注册</a> 腾讯云，可以直接通过微信扫描命令行中的二维码，从而进行授权登陆和注册。这也是我觉得特别方便的一个地方！</p>\n<p>部署过程中，terminal 显示信息示意：</p>\n<p><img src=\"https://img.serverlesscloud.cn/20191216/1576499845193-terminal.png\" alt=\"部署过程\"></p>\n<p>访问命令行输出的 url，即可查看使用 Serverless Framework 部署的 docsify 文档网站啦~</p>\n<p><img src=\"https://img.serverlesscloud.cn/20191216/1576501239900-WX20191216-205729%402x.png\" alt=\"最终效果\"></p>\n<h2 id=\"▎小结\"><a href=\"#%E2%96%8E%E5%B0%8F%E7%BB%93\" aria-label=\"▎小结 permalink\" class=\"anchor\"><svg aria-hidden=\"true\" focusable=\"false\" height=\"16\" version=\"1.1\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"></path></svg></a>▎小结</h2>\n<p>以上示例基于腾讯云的无服务器框架 <a href=\"https://cloud.tencent.com/product/sf\">Serverless Framework</a> 实现，代码详情可参考完整的 <a href=\"https://github.com/Aceyclee/serverless-docsify\">模板仓库</a> 👈</p>\n<p>虽然这只是一个非常简单的 demo，但是不难看出，Serverless Framework 在快速部署方面的强大能力。比如集成了微信扫描二维码，就直接让我们避开了繁琐的云服务的账号注册、配置的环节。而你需要做的，只是根据 docsify 自身的能力，进行网站的定制而已。通过这两个工具的结合使用，即使编程小白也能快速搭建起自己的个人博客！✌️</p>\n<hr>\n<div id='scf-deploy-iframe-or-md'></div>\n<hr>\n<blockquote>\n<p><strong>传送门：</strong></p>\n<ul>\n<li>GitHub: <a href=\"https://github.com/serverless/serverless/blob/master/README_CN.md\">github.com/serverless</a></li>\n<li>官网：<a href=\"https://serverless.com/\">serverless.com</a></li>\n</ul>\n</blockquote>\n<p>欢迎访问：<a href=\"https://serverlesscloud.cn/\">Serverless 中文网</a>，您可以在 <a href=\"https://serverlesscloud.cn/best-practice\">最佳实践</a> 里体验更多关于 Serverless 应用的开发！😝</p>","tableOfContents":"<ul>\n<li><a href=\"/best-practice/2019-12-14-docsify-with-serverless/#%E2%96%8E%E5%AE%89%E8%A3%85%E4%B8%8E%E5%88%9D%E5%A7%8B%E5%8C%96\">▎安装与初始化</a></li>\n<li><a href=\"/best-practice/2019-12-14-docsify-with-serverless/#%E2%96%8E%E9%85%8D%E7%BD%AE-yml-%E6%96%87%E4%BB%B6\">▎配置 yml 文件</a></li>\n<li><a href=\"/best-practice/2019-12-14-docsify-with-serverless/#%E2%96%8E%E9%83%A8%E7%BD%B2\">▎部署</a></li>\n<li><a href=\"/best-practice/2019-12-14-docsify-with-serverless/#%E2%96%8E%E5%B0%8F%E7%BB%93\">▎小结</a></li>\n</ul>"},"previousBlog":{"id":"8d3e0a32-3028-5f67-b38e-9088a83b37ab","frontmatter":{"thumbnail":"https://img.serverlesscloud.cn/2020115/1579078112543-1577769064015-joshua-aragon-FGXqbqbGt5o-unsplash.jpg","authors":["Aceyclee"],"categories":["guides-and-tutorials"],"date":"2019-12-17T00:00:00.000Z","title":"使用 Serverless Framework，结合云函数 SCF、API 网关和云数据库 MySQL 构建 REST API","description":"本文介绍如何创建一个进行自动化面试评估的 Serverless 应用！","authorslink":["https://www.zhihu.com/people/Aceyclee"],"translators":null,"translatorslink":null,"tags":["Node.js","API 网关"],"keywords":"Serverless 自动化面试评估,Serverless 云数据库 MySQL,云函数 SCF","outdated":null},"wordCount":{"words":259,"sentences":62,"paragraphs":62},"fileAbsolutePath":"/opt/build/repo/content/blog/2019-12-17-node-rest-api-with-serverless-scf-and-mongodb.md","fields":{"slug":"/blog/2019-12-17-node-rest-api-with-serverless-scf-and-mongodb/","keywords":["java","nodejs","serverless","无服务器","云函数","candidate","Serverless","serverless","dev","candidateSubmission","service"]}},"nextBlog":{"id":"a5889900-617d-5aa4-ac8b-56b0aab7d572","frontmatter":{"thumbnail":"https://img.serverlesscloud.cn/202058/1588928638838-v2-b6f54fc4d2939af6f53a5e5592f9d19c_1200x500.jpg","authors":["alanoluo"],"categories":["best-practice"],"date":"2019-12-13T00:00:00.000Z","title":"用 Serverless 搭建个人静态相册网站","description":"通过 Serverless 组件，基于 ThumbsUp 快速搭建个人静态相册网站","authorslink":["https://github.com/alanoluo"],"translators":null,"translatorslink":null,"tags":["Wintersmith","ThumbsUp"],"keywords":"Serverless 组件,ThumbsUp相册,搭建个人静态相册网站,ThumbsUp搭建","outdated":null},"wordCount":{"words":107,"sentences":29,"paragraphs":29},"fileAbsolutePath":"/opt/build/repo/content/best-practice/2019-12-13-Build-personal-album-website-with-serverless.md","fields":{"slug":"/best-practice/2019-12-13-Build-personal-album-website-with-serverless/","keywords":["nodejs","serverless","website","website 组件","无服务器","serverless","website","Serverless","thumbsup","yml","photos","Framework","github"]}}},"pageContext":{"isCreatedByStatefulCreatePages":false,"blogId":"c5d83479-32e7-5a99-acbe-5038f43cadc9","previousBlogId":"8d3e0a32-3028-5f67-b38e-9088a83b37ab","nextBlogId":"a5889900-617d-5aa4-ac8b-56b0aab7d572"}}}