# blog-cfw-github **Repository Path**: openall/blog-cfw-github ## Basic Information - **Project Name**: blog-cfw-github - **Description**: CloudFlare Worker + github + vue 博客系统Blog - **Primary Language**: Unknown - **License**: MIT - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2020-03-18 - **Last Updated**: 2020-12-19 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # CloudFlare Worker + github + vue 博客系统 [demo](https://blog.nds9.workers.dev) [项目地址](https://github.com/sunyuting83/blog-cfw-github) --- ## 依赖 * [bulma](https://github.com/jgthms/bulma) * [highlight](https://github.com/highlightjs/highlight.js) * [Font-Awesome](https://github.com/FortAwesome/Font-Awesome) * [core-js](https://github.com/zloirock/core-js) * [vue](https://github.com/vuejs/vue) * [vue-router](https://github.com/vuejs/vue-router) * [markdown-it](https://github.com/markdown-it/markdown-it) * [markdown-it-emoji](https://github.com/markdown-it/markdown-it-emoji) * [CDN](https://www.staticfile.org/) --- ## 简介 基于Cloudflare worker + Github + Vue的博客系统 免服务器 worker负责渲染html和读取github的静态文件 github负责储存静态文件、配置文件、博客文件 vue负责渲染页面 使用markdown-it解析渲染.md文件 *** ### 一些说明 - 这个post.js不是最终版,很多功能还没做完 :( 暂时只有自动添加blog序号的功能(好像)。可以自动生成序号后手动修改: 编号.md的内容。 - 提交可以使用,但要设置好github的帐号 - blog的排序也有问题。现在不是倒序。 我会抽时间完善的。 *** #### CloudFlare域名设置 1. 设置路由规则 ![设置路由规则](https://p.pstatp.com/origin/138a100007ad085fc810e "set router") 2. 添加DNS ![添加DNS](https://p.pstatp.com/origin/138570001bad9b77b0e3d "add a CNAME to DNS") *** #### worker路由 | Path | Description | | ------ | ----------- | | / | 渲染html | | /api/list | 请求列表api 参数 id=请求页面 page=当前分页 limit= 每页请求个数 | | /{path}/{filename} | 静态文件 js、css、json | *** #### 目录结构 | Path | Description | | ------ | ----------- | | /db | 配置及索引json目录 | | /db/config.json | Blog配置文件。 json具体配置请查看 config.json说明 | | /db/index.json | 文章索引文件 json具体配置请查看 index.json说明 | | /db/post.json | 文章列表 post.json说明 | | /post | 文章目录 | | /post/*.md | 文章.md文件(支持html) | | /blog.js | vue渲染源码 | | /index.html | 首页静态文件-调试用 | | /utils.js | 工具合计-暂时没用 | | /worker.js | cloudflare worker主文件 | --- ## 使用 0. ##### Node.js 发布工具 + 确认本地有nodejs环境。在项目目录下运行 ```bash node post.js ``` + 之后根据提示操作 1. ##### fork 本项目 + 修改blog.js 53行 改成你的worker.dev地址 + 修改worker.js 171行 改成你的github账号名 2. ##### 编辑config.json + json具体配置请查看 config.json说明 3. ##### 在post目录下新建.md文件并编辑 + 编辑 db/index.json 在[]内第一行插入 - json具体配置请查看 index.json说明 ```json {"key":"_分类id.1:2","value":".md文件名"} ``` + 编辑 db/post.json 在[]内插入 - json具体配置请查看 post.json说明 ```json { "title":"文章标题", "id":"ebc8b15ab324f369", "content":"文章文件名(不需要.md)", "created_at": 1584172500549, "intro": "文章简介", "iscontent": false, "showhide": false } ``` ##### 以上id或文件名可以使用 utils.js生成 4. ##### 注册cloud flare并新建worker + 复制worker.js内容到worker并保存 5. ##### git push origin --- ## json文件说明 #### config.json ```json { "status": 0, "title":"My Blog", "logo": "https://cdn.jsdelivr.net/gh/vmlite/static/bulma/images/bulma-type.png", "powered": "Powered by Sun © 2020", "icp": "沪ICP备18008848号-1", "classify": [ { "title":"Linux", "id":"d8a7613e9c1d8c08", "path": "linux", "sort": 0, "intro": "" } ] } ``` ```status:0``` 请求状态 ```title:博客标题``` ```logo:博客logo url``` ```powered:版权信息``` ```icp:备案信息``` ```classify:分类列表``` ##### classify说明: ```title:分类名称``` ```id:分类id``` 由当前时间戳md5加密生成 ```path: vue路由路径``` ```sort:排序``` 暂时无效 ```intro:文章简介``` *** #### index.json ```json [ {"key":"_b7bf1bb083c178dc.1:2","value":"ebc8b15ab324f369"}, {"key":"_d8a7613e9c1d8c08.1:1","value":"5b5f57943586f02f"} ] ``` ```key:_分类id.该分类下索引数:文章总索引数``` ```value:文章id``` 最新的文章请添加到首行,分页采取index方式获取列表 key的 . 后面每次 +1 , : 后面每次 +1 保证key的唯一性 value的值对应 post.json 里文章id *** #### post.json ```json [ { "title":"测试文章2", "id":"5b5f57943586f02f", "content":"6f8329eb9b358e92", "created_at": 1584172505060, "intro": "somecode", "iscontent": false, "showhide": false } ] ``` ```title:文章标题``` ```id:文章id``` (生成规则同classify) ```content:文章内容文件名``` (不包含.md) ```created_at:创建时间``` ```intro:文章简介``` ```iscontent:用于判断显示[intro/content]``` ```showhide:用于判断[展开/收起]``` ~~```newcontent:文章标题``` 请求后由vue渲染生成 无需添加至json文件~~ 文章id对应 index.json -> value值 --- ## 计划 1. 添加tag功能 2. 评论功能(找个公共评论插件) 3. 添加自动提交功能(本地js、python命令行,自动生成.md文件名,自动添加index.js post.js 自动提交) 4. 通过github api制作在线post文章功能 5. 搜索功能