{"id":13602408,"url":"https://github.com/TaleLin/lin-cms-koa","last_synced_at":"2025-04-11T08:32:32.076Z","repository":{"id":46197822,"uuid":"175969291","full_name":"TaleLin/lin-cms-koa","owner":"TaleLin","description":"🌀使用Node.JS KOA构建的CMS开发框架","archived":false,"fork":false,"pushed_at":"2022-08-06T09:33:21.000Z","size":406,"stargazers_count":794,"open_issues_count":16,"forks_count":173,"subscribers_count":19,"default_branch":"master","last_synced_at":"2025-04-04T03:38:08.712Z","etag":null,"topics":["cmf","cms","koa","lin"],"latest_commit_sha":null,"homepage":"http://doc.cms.talelin.com/","language":"JavaScript","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/TaleLin.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null}},"created_at":"2019-03-16T12:29:11.000Z","updated_at":"2025-03-20T09:01:35.000Z","dependencies_parsed_at":"2022-08-12T12:40:58.209Z","dependency_job_id":null,"html_url":"https://github.com/TaleLin/lin-cms-koa","commit_stats":null,"previous_names":[],"tags_count":11,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/TaleLin%2Flin-cms-koa","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/TaleLin%2Flin-cms-koa/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/TaleLin%2Flin-cms-koa/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/TaleLin%2Flin-cms-koa/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/TaleLin","download_url":"https://codeload.github.com/TaleLin/lin-cms-koa/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":248361633,"owners_count":21090950,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["cmf","cms","koa","lin"],"created_at":"2024-08-01T18:01:22.339Z","updated_at":"2025-04-11T08:32:27.067Z","avatar_url":"https://github.com/TaleLin.png","language":"JavaScript","readme":"\u003ch1 align=\"center\"\u003e\n  \u003ca href=\"http://doc.cms.talelin.com/\"\u003e\n  \u003cimg src=\"http://doc.cms.talelin.com/left-logo.png\" width=\"250\"/\u003e\u003c/a\u003e\n  \u003cbr\u003e\n  Lin-CMS-Koa\n\u003c/h1\u003e\n\n\u003ch4 align=\"center\"\u003e一个简单易用的CMS后端项目\u003c/h4\u003e\n\n\u003cp align=\"center\"\u003e\n  \u003ca href=\"http://flask.pocoo.org/docs/1.0/\" rel=\"nofollow\"\u003e\n  \u003cimg src=\"https://img.shields.io/badge/koa-2.7.0-green.svg\" alt=\"flask version\" data-canonical-src=\"https://img.shields.io/badge/koa-2.7.0-green.svg\" style=\"max-width:100%;\"\u003e\u003c/a\u003e\n  \u003ca href=\"https://pypi.org/project/Lin-CMS/\" rel=\"nofollow\"\u003e\u003cimg src=\"https://img.shields.io/badge/lin--mizar-0.3.5-green.svg\" alt=\"lin-cms version\" data-canonical-src=\"https://img.shields.io/badge/lin--cms--test-0.0.1--alpha8-red.svg\" style=\"max-width:100%;\"\u003e\u003c/a\u003e\n  \u003ca href=\"http://doc.cms.talelin.com/\" rel=\"nofollow\"\u003e\u003cimg src=\"https://img.shields.io/badge/license-MIT-lightgrey.svg\" alt=\"LISENCE\" data-canonical-src=\"https://img.shields.io/badge/license-MIT-lightgrey.svg\" style=\"max-width:100%;\"\u003e\u003c/a\u003e\n\u003c/p\u003e\n\n\u003cblockquote align=\"center\"\u003e\n  \u003cem\u003eLin-CMS\u003c/em\u003e 是林间有风团队经过大量项目实践所提炼出的一套\u003cstrong\u003e内容管理系统框架\u003c/strong\u003e。\u003cbr\u003e\n Lin-CMS 可以有效的帮助开发者提高 CMS 的开发效率。\n\u003c/blockquote\u003e\n\n\u003cp align=\"center\"\u003e\n  \u003ca href=\"#简介\"\u003e简介\u003c/a\u003e\u0026nbsp;|\u0026nbsp;\u003ca href=\"#版本日志\"\u003e版本日志\u003c/a\u003e\n\u003c/p\u003e\n\n## 简介\n\n### 什么是 Lin CMS？\n\nLin-CMS 是林间有风团队经过大量项目实践所提炼出的一套**内容管理系统框架**。Lin-CMS 可以有效的帮助开发者提高 CMS 的开发效率。\n\n本项目是 Lin CMS 后端的 koa 实现，需要前端？请访问[前端仓库](https://github.com/TaleLin/lin-cms-vue)。\n\n### 当前最新版本\n\nlin-cms-koa(当前示例工程)：0.3.10\n\nlin-mizar(核心库) ：0.3.8\n\n### 文档地址\n\n[http://doc.cms.talelin.com/](http://doc.cms.talelin.com/)\n\n### 线上 demo\n\n[http://face.cms.7yue.pro/](http://face.cms.7yue.pro/)\n\n### 免费入门视频教程 \n\n[https://www.imooc.com/learn/1247](https://www.imooc.com/learn/1247)\n\n### QQ 交流群\n\nQQ 群号：643205479 / 814597236\n\n\u003c!-- \u003cimg class=\"QR-img\" width=\"258\" height=\"300\" src=\"http://imglf3.nosdn0.126.net/img/Qk5LWkJVWkF3Nmdyc2xGcUtScEJLOVV1clErY1dJa0FsQ3E1aDZQWlZHZ2dCbSt4WXA1V3dRPT0.jpg?imageView\u0026thumbnail=1680x0\u0026quality=96\u0026stripmeta=0\u0026type=jpg\"\u003e --\u003e\n\n### 微信公众号\n\n微信搜索：林间有风\n\n\u003cimg class=\"QR-img\" src=\"http://imglf6.nosdn0.126.net/img/YUdIR2E3ME5weEdlNThuRmI4TFh3UWhiNmladWVoaTlXUXpicEFPa1F6czFNYkdmcWRIbGRRPT0.jpg?imageView\u0026thumbnail=500x0\u0026quality=96\u0026stripmeta=0\u0026type=jpg\"\u003e\n\n## 版本日志\n\n最新版本 `0.3.12`\n\n### 0.3.12\n\n1. `A` 新增验证码功能，默认关闭验证码\n2. `U` assets 目录用作本地文件上传，移到项目根目录\n\n### 0.3.11\n\n1. `F` 修复消息中心 API 调用拼写错误\n\n### 0.3.10\n\n1. `A` 新增[消息中心](https://github.com/TaleLin/lin-cms-koa/tree/master/app/extension/socket)扩展\n\n### 0.3.9\n\n1. `F` 修复 logger 第二次模板解析错误的问题\n2. `U` 更新 lin-mizar 到 0.3.8\n\n### 0.3.8\n\n1. `F` 修复 缺少 mysql2\n\n### 0.3.7\n\n1. `U` 优化 编辑用户至少选择一个分组\n\n### 0.3.6\n\n1. `A` 新增 yarn.lock\n2. `U` 更新 lin-mizar 到 0.3.5 版本\n3. `F` 修复 disableLoading 为 `undefined` 的问题\n\n### 0.3.5\n\n1. `U` 更新核心库 lin-mizar 到 0.3.4 版本\n2. `F` 修复文件上传丢失 key 字段\n\n### 0.3.4\n\n1. `U` 更新路由视图权限挂载的方式\n2. `U` HttpException 不允许直接修改 status，传入的参数由 errorCode 改为 code\n3. `U` 新增 code-message 配置，返回的成功码和错误码都在这里配置\n4. `U` 支持自定义工作目录\n5. `U` 更新核心库 lin-mizar 到 0.3.3 版本\n\n### 0.3.3\n\n1. `F` `GET /cms/user/information` 返回完整的头像链接\n2. `F` 文件名重命名为用 `-` 连接，并且使用单数\n\n### 0.3.2\n\n1. `F` 更改文件上传返回字段\n2. `F` `GET admin/users` 和 `GET admin/group/all` 接口过滤 `root` 用户\n3. `F` `PUT /admin/user/{id}` 接口不允许修改 `root` 用户的分组\n\n### 0.3.1\n\n1. `F` 更新 `lin-mizar` 到 `0.3.2` 版本，路由属性名由 `auth` --\u003e `permission`\n\n### 0.3.0\n\n1. `A` 将模型层抽离核心库进行重构\n\n## Lin CMS 的特点\n\nLin CMS 的构筑思想是有其自身特点的。下面我们阐述一些 Lin 的主要特点。\n\n#### Lin CMS 是一个前后端分离的 CMS 解决方案\n\n这意味着，Lin 既提供后台的支撑，也有一套对应的前端系统，当然双端分离的好处不仅仅\n在于此，我们会在后续提供`NodeJS`和`PHP`版本的 Lin。如果你心仪 Lin，却又因为技术\n栈的原因无法即可使用，没关系，我们会在后续提供更多的语言版本。为什么 Lin 要选择\n前后端分离的单页面架构呢？\n\n首先，传统的网站开发更多的是采用服务端渲染的方式，需用使用一种模板语言在服务端完\n成页面渲染：比如 JinJa2、Jade 等。服务端渲染的好处在于可以比较好的支持 SEO，但作\n为内部使用的 CMS 管理系统，SEO 并不重要。\n\n但一个不可忽视的事实是，服务器渲染的页面到底是由前端开发者来完成，还是由服务器开\n发者来完成？其实都不太合适。现在已经没有多少前端开发者是了解这些服务端模板语言的\n，而服务器开发者本身是不太擅长开发页面的。那还是分开吧，前端用最熟悉的 Vue 写 JS\n和 CSS，而服务器只关注自己的 API 即可。\n\n其次，单页面应用程序的体验本身就要好于传统网站。\n\n#### 框架本身已内置了 CMS 常用的功能\n\nLin 已经内置了 CMS 中最为常见的需求：用户管理、权限管理、日志系统等。开发者只需\n要集中精力开发自己的 CMS 业务即可\n\n#### Lin CMS 本身也是一套开发规范\n\nLin CMS 除了内置常见的功能外，还提供了一套开发规范与工具类。换句话说，开发者无需\n再纠结如何验证参数？如何操作数据库？如何做全局的异常处理？API 的结构如何？前端结\n构应该如何组织？这些问题 Lin CMS 已经给出了解决方案。当然，如果你不喜欢 Lin 给出\n的架构，那么自己去实现自己的 CMS 架构也是可以的。但通常情况下，你确实无需再做出\n架构上的改动，Lin 可以满足绝大多数中小型的 CMS 需求。\n\n举例来说，每个 API 都需要校验客户端传递的参数。但校验的方法有很多种，不同的开发\n者会有不同的构筑方案。但 Lin 提供了一套验证机制，开发者无需再纠结如何校验参数，\n只需模仿 Lin 的校验方案去写自己的业务即可。\n\n还是基于这样的一个原则：Lin CMS 只需要开发者关注自己的业务开发，它已经内置了很多\n机制帮助开发者快速开发自己的业务。\n\n#### 基于插件的扩展\n\n任何优秀的框架都需要考虑到扩展。而 Lin 的扩展支持是通过插件的思想来设计的。当你\n需要新增一个功能时，你既可以直接在 Lin 的目录下编写代码，也可以将功能以插件的形\n式封装。比如，你开发了一个文章管理功能，你可以选择以插件的形式来发布，这样其他开\n发者通过安装你的插件就可以使用这个功能了。毫无疑问，以插件的形式封装功能将最大化\n代码的可复用性。你甚至可以把自己开发的插件发布，以提供给其他开发者使用。这种机制\n相当的棒。\n\n#### 前端组件库支持\n\nLin 还将提供一套类似于 Vue Element 的前端组件库，以方便前端开发者快速开发。相比\n于 Vue Element 或 iView 等成熟的组件库，Lin 所提供的组件库将针对 Lin CMS 的整体\n设计风格、交互体验等作出大量的优化，使用 Lin 的组件库将更容易开发出体验更好的\nCMS 系统。当然，Lin 本身不限制开发者选用任何的组件库，你完全可以根据自己的喜好/\n习惯/熟悉度，去选择任意的一个基于 Vue 的组件库，比如前面提到的 Vue Element 和\niView 等。你甚至可以混搭使用。当然，前提是这些组件库是基于 Vue 的。\n\n#### 完善的文档\n\n我们将提供详尽的文档来帮助开发者使用 Lin\n","funding_links":[],"categories":["后端项目","JavaScript"],"sub_categories":[],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2FTaleLin%2Flin-cms-koa","html_url":"https://awesome.ecosyste.ms/projects/github.com%2FTaleLin%2Flin-cms-koa","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2FTaleLin%2Flin-cms-koa/lists"}