CMS 开发框架准备开源,想征求一下大家的意见

2022-12-05 17:54:06 +08:00
 ennraven

大家好,

我们公司( The Plant )打算开源一个 CMS 的开发框架 QOR5。在正式开源之前,希望能听取一下大家的意见🙏

QOR5 经过多年迭代,经历了

  1. QOR1 (Ruby on Rails 2010)
  2. QOR2 (Ruby on Rails 2012)
  3. QOR3 (Go 2014 —— 已开源 5.1k stars)
  4. QOR5 (Go 2021)

每个大版本都有很多进步。开源的目的一是回馈社区,二是汲取社区的力量,把项目做的更好。

下面的一些问题希望大家有空讲讲

文档地址 文档内多数示例代码可直接运行。 demo 网站稍后更新

目前我们总结的 QOR5 的特色:

在 Admin 界面开发方面

速度

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 的标准

会有专人负责维护社区,解答问题。

不知大家对于使用这样一个框架,有什么需求和意见 欢迎留言.

现有的功能模块

声明:本文中所链接的 GitHub 仓库(除 QOR3 外)目前均未正式开源,没有 license 。

3770 次点击
所在节点    程序员
25 条回复
jsthon
2022-12-05 18:44:23 +08:00
支持 QOR5 !
hefish
2022-12-05 18:54:12 +08:00
感觉东西是个好东西。
但我还是觉着改模板,不重编译的好一些。
eslizn
2022-12-05 19:02:03 +08:00
gorm 升级下吧
tommyzhang
2022-12-05 19:02:52 +08:00
Ruby on Rails 版本的可以开源吗
kran
2022-12-05 19:09:10 +08:00
喜欢研究 CMS ,看介绍是好东西
lower
2022-12-05 20:52:04 +08:00
有数据采集功能模块么?自动采集别的网站的内容
feiyang221
2022-12-05 21:09:26 +08:00
收藏ᥬ🌝᭄,感觉好厉害的样子
v2wtf
2022-12-05 21:32:13 +08:00
Vuetify 好评
meshell
2022-12-05 22:29:32 +08:00
支持插件功能不?
Lemonadeccc
2022-12-06 08:20:29 +08:00
过几天试一下,马克
ennraven
2022-12-06 09:21:48 +08:00
@hefish hi

> 改模板,不重编译的好一些

能详细说一下吗 不是很明白
ennraven
2022-12-06 09:23:08 +08:00
@eslizn QOR3 里用的还是 GORM1, QOR5 都已经是 GORM2 了。 当时柱子做 GORM1 的时候 我们还是同事呢 哈哈哈 QOR3 的核心也是他写的
ennraven
2022-12-06 09:23:42 +08:00
@tommyzhang 那个是基于 rails 3.x 版本的 现在开源已经没意义了 我们也不维护了。。
ennraven
2022-12-06 09:26:12 +08:00
@kran 哈哈哈 demo 网站很快就会上线 现在也可以到 https://docs.qor5.com/basics/listing.html 里直接点击最下面示例代码的 "check the demo" 看看效果。
ennraven
2022-12-06 09:26:41 +08:00
@lower 是指 API 还是爬虫?
ennraven
2022-12-06 09:30:28 +08:00
@feiyang221 哈哈哈 给个 star 吗 :troll:
ennraven
2022-12-06 09:31:03 +08:00
@v2wtf 是啊 用起来很方便 省太多时间了
ennraven
2022-12-06 09:31:23 +08:00
@meshell 能具体说说吗
hefish
2022-12-06 14:51:45 +08:00
@ennraven 可能是我理解错了。这项目应该是满足我的喜好的。
eslizn
2022-12-06 17:46:45 +08:00
@ennraven 我看那个 qor5 的仓库还是 1 ,那就建议:
1.保留后端渲染能力
2.embed 替换 bindata

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/900294

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX