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

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

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

    腾讯云最新优惠活动来了:云产品限时1折,云服务器低至88元/年 ,点击这里立即抢购:9i0i.cn/qcloud,更有2860元代金券免费领取,付款直接抵现金用,点击这里立即领取:9i0i.cn/qcloudquan

    (福利推荐:你还在原价购买阿里云服务器?现在阿里云0.8折限时抢购活动来啦!4核8G企业云服务器仅2998元/3年,立即抢购>>>:9i0i.cn/aliyun

    大家好,

    我们公司( 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   ·   实用小工具   ·   1145 人在线   最高记录 6543   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 28ms · UTC 23:24 · PVG 07:24 · LAX 16:24 · JFK 19:24
    Developed with CodeLauncher
    ? Do have faith in what you're doing.


    http://www.vxiaotou.com