{"id":15253523,"url":"https://github.com/talelin/lin-cms-koa-core","last_synced_at":"2025-04-11T11:17:23.600Z","repository":{"id":34329279,"uuid":"176616607","full_name":"TaleLin/lin-cms-koa-core","owner":"TaleLin","description":"A simple and practical CMS implememted by koa","archived":false,"fork":false,"pushed_at":"2023-06-04T13:16:23.000Z","size":1782,"stargazers_count":48,"open_issues_count":20,"forks_count":21,"subscribers_count":1,"default_branch":"master","last_synced_at":"2025-03-25T07:41:32.298Z","etag":null,"topics":["cmf","cms","koa","lin"],"latest_commit_sha":null,"homepage":"https://talelin.github.io/lin-cms-koa-core/index.html","language":"TypeScript","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,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2019-03-19T23:51:36.000Z","updated_at":"2024-06-29T03:33:25.000Z","dependencies_parsed_at":"2024-06-19T04:09:58.543Z","dependency_job_id":"3ebaf356-179c-4f94-bae2-5bd4f3b9cba4","html_url":"https://github.com/TaleLin/lin-cms-koa-core","commit_stats":{"total_commits":90,"total_committers":5,"mean_commits":18.0,"dds":"0.33333333333333337","last_synced_commit":"733dce36be8a3a6a12d3de803c9bdc2f7314177a"},"previous_names":[],"tags_count":7,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/TaleLin%2Flin-cms-koa-core","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/TaleLin%2Flin-cms-koa-core/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/TaleLin%2Flin-cms-koa-core/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/TaleLin%2Flin-cms-koa-core/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/TaleLin","download_url":"https://codeload.github.com/TaleLin/lin-cms-koa-core/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":248381795,"owners_count":21094528,"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-09-29T21:05:20.324Z","updated_at":"2025-04-11T11:17:23.552Z","avatar_url":"https://github.com/TaleLin.png","language":"TypeScript","funding_links":[],"categories":[],"sub_categories":[],"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-Core\n\u003c/h1\u003e\n\n\u003ch4 align=\"center\"\u003e一个简单易用的CMS后端项目 | \u003ca href=\"http://doc.cms.talelin.com/\" target=\"_blank\"\u003eLin-CMS-Koa的核心库\u003c/a\u003e\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=\"http://doc.cms.7yue.pro/\" 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\u0026nbsp;|\u0026nbsp;\u003ca href=\"#下个版本开发计划\"\u003e下个版本开发计划\u003c/a\u003e\n\u003c/p\u003e\n\n## 简介\n\n### 什么是 Lin CMS？\n\nLin-CMS 是林间有风团队经过大量项目实践所提炼出的一套**内容管理系统框\n架**。Lin-CMS 可以有效的帮助开发者提高 CMS 的开发效率。\n\n### 起步项目\n\n[https://github.com/TaleLin/lin-cms-koa](https://github.com/TaleLin/lin-cms-koa)\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### 微信公众号\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.9`\n\n### 0.3.9\n\n1. `F`: 使用自定义 async-busboy; 修复小图上传超时的问题\n\n### 0.3.8\n\n1. `F` 修复 token 抛出异常时 code 不正确的问题\n\n### 0.3.7\n\n1. `U` 优化发布脚本\n\n### 0.3.6\n\n1. `F` 修复 Uploader.generateName()\n\n### 0.3.5\n\n1. `A` 增加 yarn.lock\n2. `F` 修复 disableLoading 没有导出的问题\n\n### 0.3.4\n\n1. `F` 修复 文件名生成\n2. `U` 移除 文档生成，后续优化\n\n### 0.3.3\n\n1. `A` 新增 `code-message` 配置 \n2. `A` 新增 统一设置权限组\n3. `A` 新增 测试用例 \n4. `U` 更新 Token 认证错误码\n5. `U` 更新 HttpException 参数改为 code 和 message，不允许直接更改 status\n6. `F` 修复 LinRouter 路由视图简写的模式\n\n### 0.3.0\n\n1. `A` 抽离 model 层\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","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Ftalelin%2Flin-cms-koa-core","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Ftalelin%2Flin-cms-koa-core","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Ftalelin%2Flin-cms-koa-core/lists"}