0%

Go 的开源 CMS 电商框架 QOR

Go 语言,兼具语法简单、高并发、高性能的特点,在网络编程领域受到欢迎。 (Go 语言的介绍很多,就不再赘述,还不了解 Go 语言的的朋友可以访问官方网站 golang.org 了解详细信息,记得先翻墙哦) 现在已经有许多大家熟知的开源项目使用 Go 语言开发,例如:

  • Docker,不用多说。
  • Lantern,一个翻墙软件
  • Beego 和 Revel,Go 语言写的 Web 框架
  • InfluxDB,一个开源分布式的时序、事件和指标数据库
  • Gogs,搭建自己的 Git 服务 (以上项目都可以在 Github上找到)

作为一个长年参与项目工作的程序员,在使用每一种语言工作的过程中都会寻找一些能让重复工作变简单的东西(也可以说就是懒),对于 Go 语言也不例外。 不像 PHP、Python 可以找到很多 CMS 项目可以快速的搭建网站,Go 语言毕竟还太年轻,虽然有几个很好用的 Web 框架,但开源的 CMS 还很少,QOR 就是其中之一。 QOR,官方(getqor.com)的定义是:QOR 是首个使用 Go 语言开发的电商系统、CMS 的 SDK。它是一组用 Go 编写的库,用于抽象业务应用程序,内容管理系统(CMS)和电子商务系统(EC)所需的通用功能。 根据本人的使用体验,QOR 可以看作是 PHP 中的 ThinkPHP,Python 中的 Django。

QOR 能做什么?

首先,QOR 还不算是 CMS,它比起 Web 框架来说进行了更进一步的封装,将 Web 开发中常用的部分封装成用起来更简单的库。用它来创建一个基于内容管理的 Web 应用更加快速简单。

QOR 目前可用的有 9 个部分(另外有 3 个部分官方标记为 Coming Soon,就不做介绍了)

Admin: 快速为您的应用程序生成一个漂亮、可跨平台运行、可配置的管理后台。用过 Django 的朋友很容易理解,它会生成一个管理 ORM 的 Web 界面,搭配 Role 和 Transition 可以将它自定义成灵活的管理后台。默认主题是基于谷歌 Materials Design 的设计理念;可同时兼容 PC 和移动设备。通常情况下,QOR 的其他所有部分都是围绕 Admin 工作的。

Publish 分别设置预演和正式服务器,使用 Publish,内容管理员就能在正式发布之前预览所更新的内容。支持在预演环境下预览,支持管理员对需要发布到正式服务器的类目进行选择。Publish 可以配置成指定哪些数据类型需要先经预演服务器,再发布到正式服务器上,哪些数据允许预览或直接发布。结合 Role 和 Transition,系统就能灵活完成内容修改和发布工作。

Transition 用 Transition 来体现业务流程和执行业务规则。定义状态、定义事件、定义状态变化的验证条件。

Media Library 支持上传文件至云端或其他位置;支持图像裁剪和调整尺寸。Media Library 支持上传和动态调整图片尺寸,且有选项支持将其保存为多种尺寸和分辨率,以适配多种平台。Media Library 可以配置成文件保存在文件系统或云存储系统,结合 Worker,就能高效管理批量图像的导入和处理。

Worker 运行批处理进程,进行批量数据处理或其他耗时的计算。 Worker 本质上是长进程的调度程序。Worker 提供了一个界面,用于查看一个长进程的进展,中断不完整的长进程,以及查看所有长进程的运行日志。

Exchange 应用程序支持数据以 CSV 或者 Excel 文件导入和导出,是一个数据文件的出口和入口。目前支持的导入和导出文件格式包括 CSV 和 Excel 电子表格。

Internationalization(i18n) 多语言应用程序的翻译工具。

Localization(l10n) 在多语言环境中智能管理你的业务对象。Localization 用于管理多语言环境下的数据对象。请注意,这和简单的文字翻译(Internationalization 包含了这个功能)是不一样的。

Roles 给不同的人分配不同角色,不同角色对应不同的权限,灵活实现细粒度的权限控制。Roles 提供了一个健壮、可配置的架构,从而保证角色和权限的粒度控制。Roles 还能对特定数据字段进行访问控制。使用 Roles 就能使某些功能为特定的用户 / 用户类型生效;结合 Transition,就能让您的应用程序完美体现组织的工作流程。

QOR 应用程序结构

QOR 的核心是上图中的 Engine,它负责管理数据访问和数据处理的接口。 QOR 通过插件方式扩展 Engine,例如使用 worker+exchange 实现数据导入 / 导出,或使用 media_library 实现文件上传。 对于数据库的管理,QOR 默认使用 GORM,当然也可以用其他 ORM 库替换默认的 GORM。 QOR 将前端完全交给开发人员,没有对前端进行任何管理,让开发人员可以自由灵活的开发前端部分。

结束

QOR 虽然目前 Github 上 Star 不到 2000,Fork 也只是接近 300,但 QOR 的模式是挺不错的。

欢迎关注我的其它发布渠道