Zihao

Make small but daily progress

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的模式是挺不错的。

  • 本文作者: Zihao Yao
  • 本文链接: https://yaozihao.com/go_cms_qor/
  • 版权声明: 本博客所有文章除特别声明外,均采用 BY-NC-SA 许可协议。转载请注明出处!

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