V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
ennraven
V2EX  ›  程序员

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

  •  8
     
  •   ennraven · 2022-12-05 17:54:06 +08:00 · 3737 次点击
    这是一个创建于 721 天前的主题,其中的信息可能已经有所发展或是发生改变。

    大家好,

    我们公司( 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)

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

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

    • 你 /公司现在用什么 CMS 系统?商用 SaaS/自研 /开源?
    • 你 /公司平时用什么框架来开发 CMS ?有什么优缺点?
    • 在开发 CMS 的时候,有什么经常遇到的问题?
    • 你 /公司是否尝试过使用新的框架来开发?如果有,为什么?

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

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

    在 Admin 界面开发方面

    速度

    QOR5 Admin 集成了 Vuetify , 大量预置组件可以直接使用,无需重复开发。管理界面可由后端独立完成,基本无需前端参与。

    我们以前做项目时,复杂一些的管理页面都是后端工程师提供好前端所需的数据,前端在数据的基础上构建出页面,这需要两个团队的密切配合。在去年冬天开发的一个中型项目中,我们使用了 QOR5 ,3 个后端开发人员就做完了之前需要 3 后端 + 2 前端的工作,而且这个项目的管理界面比一般的 CMS 要更复杂,因为它不是一个支撑管理某些前台业务的后端管理系统,而是一个没有前端,核心是数据筛选和自动匹配的数据处理系统,加上客户之前习惯使用 Excel 来进行工作,为了照顾他们的习惯,做出来的 list 页面比较接近 Excel 。但即便这样,我们的 3 个后端开发人员也足以在 QOR5 的帮助下,高效地完成了项目。

    img

    灵活

    在使用预置组件快速构建系统的前提下,提供了友好的扩展接口及开放性,程序员完全有自由来实现各种需求

    界面可见的位置基本都可以通过相关函数进行配置,无论是处理逻辑还是显示逻辑都可自定义。所有默认的 CRUD 行为都可以自定义. 预置的组件不满足需求的时候,开发一个新的也完全没问题。

    健壮

    系统完全由 Go 开发(htmlgo),继承了编译语言的优势,减少了 runtime error 。

    与 Go 原生的 tmpl 相比,纯用 Go 写的模板文件大幅度地减少了模板里可能出现的 runtime error. 很多错误都会在写代码的时候被发现,程序健壮性大大提高。且避免了难用的 tmpl 语法,直接用 Go 的语法写模板。

    内置了丰富的组件,大多数情况下不需要自己再写 JavaScript ,也减少了 JavaScript 的 runtime error 出现的概率。

    img

    方便部署

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

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

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

    现有的功能模块

    • Page Builder: 拖拽式页面构建模块。配置好预置组件之后,可以让用户自己而不是程序员创建新的页面。

    img

    • Publishing System: 内容发布模块。支持页面版本,工作流,定时发布等功能,也是构建纯静态前台网站的核心。

    • Authentication: 登录模块。 支持第三方和基础邮箱密码登录。

    • Permission: 权限模块。粒度比较细,可以指定到某条记录对某些用户是否可以访问的程度。

    • ActivityLog: 操作日志模块。 详细记录系统内每个用户的所有操作。

    • Microsite: 支持用户自己挂载 HTML 静态小网站到主站上。

    • Note: 消息通知模块。支持站内信和通知功能。

    • MediaLibrary: 媒体文件管理模块。 主要用于管理上传的图片和视频文件。与表单中的图片选择器联动。

    • RichEditor: 富文本编辑器。

    • SEO: SEO 信息管理模块。

    • Exchange: 信息交互模块。主要用于导入和导出数据的功能。

    • Worker: 后台任务模块。主要用于异步任务,即需要比较长的时间在后台执行的任务的管理。

    • I18n: 国际化模块。

    • L10n: 本地化模块。

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

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

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

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

    保留后端渲染能力具体是指?

    目前我们是不需要用 bindata 的,因为模板也是 Go 写的,直接一起编译了。不知你说的 embed 是不是这个意思
    feiyang221
        22
    feiyang221  
       2022-12-07 13:12:35 +08:00
    有用户群之类的吗?
    ennraven
        23
    ennraven  
    OP
       2022-12-07 14:40:32 +08:00
    @feiyang221 打算弄的 现在还没建 ..
    go233
        24
    go233  
       2022-12-29 23:42:34 +08:00 via Android
    ror 的可以开源吗?像学学思路
    mawka
        25
    mawka  
       2023-02-15 22:21:57 +08:00 via Android
    最大能带动多少数据量
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   1029 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 30ms · UTC 20:58 · PVG 04:58 · LAX 12:58 · JFK 15:58
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.