Skip to content

[博客_文章]基于金山文档的博客系统 #12

@imoki

Description

@imoki

摘要:这是基于金山文档的博客系统项目介绍

<title>金山博客系统</title> <style> body { font-family: Arial, sans-serif; line-height: 1.6; margin: 20px; } h1 { text-align: center; } #shield { display: flex; justify-content: center; gap: 10px; margin: 20px 0; } a { color: #007bff; text-decoration: none; } a:hover { text-decoration: underline; } .section { margin-bottom: 20px; } .section h2 { border-bottom: 1px solid #ccc; padding-bottom: 5px; } ul { list-style: none; padding: 0; } li::before { content: "• "; } </style>

🌐 金山博客系统

基于「金山文档」的博客系统 | 零成本·极简单·云存储方案

🎊 简介

零成本、无需懂代码部署博客系统

  1. 若github pages部署纯前端网页,缺乏后端数据支持,若增加后端服务器又可能增加维护成本。
  2. 本项目利用金山文档,通过全链条零成本设计方案,实现无需服务器,又可具备一定后端处理能力的网站项目,增加可玩性。
  3. 由于若采用官网提供的webhook + 令牌方式部署网页会出现跨站问题,因此需要一层中介来解决此类问题。
  4. 本项目使用金山文档与前端网页之间增加一层中间层,从而解决了跨站问题,中间层采用github issues实现。
  5. 为了增加安全性,以避免暴露金山文档后台。
  6. 采用github pages + github issues + 金山云文档的形式,实现具备一定的安全性、交互性的网站。
  7. 为了实现数据存储和数据处理。
  8. 采用金山云文档平替代“云数据库”,采用Airscript脚本进行数据处理。
  9. 提高扩展能力。
  10. 本项目设计思路可实现更过有趣功能噢~

✨ 特性

  • 解决CORS跨域问题
  • 低代码部署,部署简单
  • 零成本方案
  • 文章发布简单,采用增量更新,效率较高
  • 兼容airscript 1.0和airscript 2.0(Beta)

🛰️ 文字部署步骤

  1. 显示层:fork或直接复制项目代码到你的仓库,仓库名为xxx.github.io。(这里的xxx为你github的昵称。自动会启用github page。)
  2. 修改代码开头提示的配置:仅改动script.js和services.js开头(需要修改的部分)部分即可
  3. 数据层:将services.js脚本复制到金山文档Airscript脚本编辑器中,添加网络API,首次运行会自动生成表格,填写此表格,再运行即可发布文章。之后要更新文章,直接修改表格后运行services.js脚本即可更新成功。
  4. 此时就可以访问到你的WEB项目啦。 访问:https://xxx.github.io

⭐ 架构说明

三级设计方案:显示层 - 中间层 - 数据层

  • 前端 - 采用Github Pages进行部署(index.html、script.js、style.css)
  • 中间层 - 采用Github Issues进行缓存
  • 后端 - 采用金山云文档进行存储和处理(services.js

🌈 业务流程

前端处理流程

对中间层数据进行处理,并渲染出文章等数据 - 拿文章

后端处理流程

读取金山文档表格,对表格数据处理后,同步到中间层 - 发文章

对于“文章表”文章置为“不发布”采用虚删方式,仅将github issues内容置空,不删标题 - 删文章

通过一致性校验检测内容变动,仅对变化的部分进行更新,提高执行效率 - 增量更新

🧾 文件说明

  • “[博客_配置]” - 是博客项目的配置
  • “[博客_文章]” - 是博客项目的文章
  • “GITHUB TOKEN“ - 在金山文档的”配置“表中填写,这是操控你仓库的认证信息,这是隐私信息,请不要泄露。
  • ”文章“ - 在金山文档的”文章“表中填写,支持html格式。填写完运行后端脚本即可发布文章
  • “GITHUB TOKEN”获取方式 - 在 https://github.com/settings/tokens 选择 “Generate new token (classic)” ,生成token

🤝 欢迎参与贡献

欢迎各种形式的贡献

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions