大家好,
我们公司( The Plant )打算开源一个 CMS 的开发框架 QOR5。在正式开源之前,希望能听取一下大家的意见🙏
QOR5 经过多年迭代,经历了
每个大版本都有很多进步。开源的目的一是回馈社区,二是汲取社区的力量,把项目做的更好。
下面的一些问题希望大家有空讲讲
文档地址 文档内多数示例代码可直接运行。 demo 网站稍后更新
QOR5 Admin 集成了 Vuetify , 大量预置组件可以直接使用,无需重复开发。管理界面可由后端独立完成,基本无需前端参与。
我们以前做项目时,复杂一些的管理页面都是后端工程师提供好前端所需的数据,前端在数据的基础上构建出页面,这需要两个团队的密切配合。在去年冬天开发的一个中型项目中,我们使用了 QOR5 ,3 个后端开发人员就做完了之前需要 3 后端 + 2 前端的工作,而且这个项目的管理界面比一般的 CMS 要更复杂,因为它不是一个支撑管理某些前台业务的后端管理系统,而是一个没有前端,核心是数据筛选和自动匹配的数据处理系统,加上客户之前习惯使用 Excel 来进行工作,为了照顾他们的习惯,做出来的 list 页面比较接近 Excel 。但即便这样,我们的 3 个后端开发人员也足以在 QOR5 的帮助下,高效地完成了项目。
在使用预置组件快速构建系统的前提下,提供了友好的扩展接口及开放性,程序员完全有自由来实现各种需求
界面可见的位置基本都可以通过相关函数进行配置,无论是处理逻辑还是显示逻辑都可自定义。所有默认的 CRUD 行为都可以自定义. 预置的组件不满足需求的时候,开发一个新的也完全没问题。
系统完全由 Go 开发(htmlgo),继承了编译语言的优势,减少了 runtime error 。
与 Go 原生的 tmpl 相比,纯用 Go 写的模板文件大幅度地减少了模板里可能出现的 runtime error. 很多错误都会在写代码的时候被发现,程序健壮性大大提高。且避免了难用的 tmpl 语法,直接用 Go 的语法写模板。
内置了丰富的组件,大多数情况下不需要自己再写 JavaScript ,也减少了 JavaScript 的 runtime error 出现的概率。
整个 App 编译成一个可执行文件,不必考虑是否二进制化模板文件,或者需要向服务器上同步模板文件。
部署过用原生 Go 模板的项目的同学应该有经验,模板的处理是个麻烦。要么使用 bindata 之类的工具编译模板,但这导致每次模板的更改都需要重新编译,而且在多人协作的环境中,Git 合并时经常因为编译的二进制文件导致冲突。 另一个解决方案是在部署的时候同步上传模板文件,但这要去协调 App 和模板间的路径、缓存问题等等,给 SRE 团队造成了很多不便。使用 QOR5 之后,这些令人头疼的问题就都解决了,因为所有的模板文件都是用 Go 写的,直接一键编译部署就可以。
QOR5 文档里的示例代码是可以直接执行的, 这保证了文档必须与最新的代码一致,否则编译无法通过。这会半强制地帮助我们持续更新文档,减少文档过期情况的出现。
开源之后我们会推出完整的视频教程,不仅仅是介绍如何使用 QOR5 ,并且还能让初接触编程的同学,完整地学习体验一次,如何从头开发到最终部署上线一个 EC 网站。
我们计划增加 4 个预置模板,CMS, EC Shopping, EC Restaurant 和 Blog. 花一分钟安装就能工作,无论是学习还是作为种子项目都会很方便。
我们有 12 年的框架开发经验, 从 rails 时代过来,深刻体会过项目大了之后找一个函数定义都找不到的痛苦。所以在设计 QOR5 时,严格遵循了 less magic code 的原则,尽最大可能去避免使用各种 hook 之类的隐式调用, 绝大多数逻辑都是显式调用,也就是说跟着函数的调用流程,你可以弄清楚绝大部分的功能是如何运行起来的。
QOR5 是我们对技术的理解和实践的产物,目前用于公司的重大项目中,会持续的更新和维护。正式开源会采用社区维护的 roadmap
安全性上,我们使用 OWASP 验证安全性,至少要通过 L2 的标准
会有专人负责维护社区,解答问题。
不知大家对于使用这样一个框架,有什么需求和意见 欢迎留言.
Publishing System: 内容发布模块。支持页面版本,工作流,定时发布等功能,也是构建纯静态前台网站的核心。
Authentication: 登录模块。 支持第三方和基础邮箱密码登录。
Permission: 权限模块。粒度比较细,可以指定到某条记录对某些用户是否可以访问的程度。
ActivityLog: 操作日志模块。 详细记录系统内每个用户的所有操作。
Microsite: 支持用户自己挂载 HTML 静态小网站到主站上。
Note: 消息通知模块。支持站内信和通知功能。
MediaLibrary: 媒体文件管理模块。 主要用于管理上传的图片和视频文件。与表单中的图片选择器联动。
RichEditor: 富文本编辑器。
SEO: SEO 信息管理模块。
Exchange: 信息交互模块。主要用于导入和导出数据的功能。
Worker: 后台任务模块。主要用于异步任务,即需要比较长的时间在后台执行的任务的管理。
I18n: 国际化模块。
L10n: 本地化模块。
声明:本文中所链接的 GitHub 仓库(除 QOR3 外)目前均未正式开源,没有 license 。
1
jsthon 2022-12-05 18:44:23 +08:00
支持 QOR5 !
|
2
hefish 2022-12-05 18:54:12 +08:00
感觉东西是个好东西。
但我还是觉着改模板,不重编译的好一些。 |
3
eslizn 2022-12-05 19:02:03 +08:00
gorm 升级下吧
|
4
tommyzhang 2022-12-05 19:02:52 +08:00
Ruby on Rails 版本的可以开源吗
|
5
kran 2022-12-05 19:09:10 +08:00 via Android
喜欢研究 CMS ,看介绍是好东西
|
6
lower 2022-12-05 20:52:04 +08:00
有数据采集功能模块么?自动采集别的网站的内容
|
7
feiyang221 2022-12-05 21:09:26 +08:00 via Android
收藏ᥬ🌝᭄,感觉好厉害的样子
|
8
v2wtf 2022-12-05 21:32:13 +08:00
Vuetify 好评
|
9
meshell 2022-12-05 22:29:32 +08:00
支持插件功能不?
|
10
Lemonadeccc 2022-12-06 08:20:29 +08:00 1
过几天试一下,马克
|
12
ennraven OP @eslizn QOR3 里用的还是 GORM1, QOR5 都已经是 GORM2 了。 当时柱子做 GORM1 的时候 我们还是同事呢 哈哈哈 QOR3 的核心也是他写的
|
13
ennraven OP @tommyzhang 那个是基于 rails 3.x 版本的 现在开源已经没意义了 我们也不维护了。。
|
14
ennraven OP @kran 哈哈哈 demo 网站很快就会上线 现在也可以到 https://docs.qor5.com/basics/listing.html 里直接点击最下面示例代码的 "check the demo" 看看效果。
|
16
ennraven OP @feiyang221 哈哈哈 给个 star 吗 :troll:
|
21
ennraven OP @eslizn oh. sorry. 确实是在建模板的时候引入了 gorm1. 已经在改了。
保留后端渲染能力具体是指? 目前我们是不需要用 bindata 的,因为模板也是 Go 写的,直接一起编译了。不知你说的 embed 是不是这个意思 |
22
feiyang221 2022-12-07 13:12:35 +08:00
有用户群之类的吗?
|
23
ennraven OP @feiyang221 打算弄的 现在还没建 ..
|
24
go233 2022-12-29 23:42:34 +08:00 via Android
ror 的可以开源吗?像学学思路
|
25
mawka 2023-02-15 22:21:57 +08:00 via Android
最大能带动多少数据量
|