简体中文 | English
更多文档(完善中……)
FreeEIS,是一种可扩展的、企业级系统统一开发框架。FreeEIS旨在解决越来越流行的远程协作开发中,系统拆分及组装的问题。并且通过积累越来越多的功能模块,使得系统的搭建更快捷。
- 远程协作已经成为明显的趋势,特别是在软件开发领域。在疫情的影响下,此趋势更是越来越显著。很多人主动或被动在家办公,与团队进行远程协作。
- 自由职业者是另一个趋势,越来越多的人会倾向于自由地选择短期的工作内容,而不是长期地被『绑』在一个组织内。
- 很多企业,特别是中小软件企业面临着技术团队管理困难的问题。一方面远程办公给团队的沟通增加了成本,另一方面不同类型团队成员(本地、远程、兼职等)的协作给项目的拆分带来了困难。
我们期望能达到如下目标:
- 任何有基础技术背景的人,都可以迅速搭建起一套可以运行的web系统,然后将目光集中在特定领域的新功能设计上!!
- 『强迫』开发人员构建可通用的功能模块,以提高复用降低后续成本。
- 完整的前后端支持,可全栈,可分离。
- 方便地将一个大的项目切分成多个独立的模块,分配给任何类型的团队成员,开发人员不需要考虑系统的其他部分。
- 每个模块都有足够的灵活性和可扩展性,即可是自成一体的庞大系统,也可以是小巧的复用组件或只是一个简单的工具方法。
- 模块之间完全独立。
- 模块之间通过简单的配置(或不需要配置)即可一起工作。
- 通过实现基础的功能模块,使得一般的项目只需要考虑特定领域的业务逻辑。
- 通过一定的规范,任何人开发的功能模块都可以被直接引用。
- 扩展特定领域的功能模块,简化行业解决方案的实现。
FreeEIS相信:任何功能模块都可以是通用的,只是通用范围的不同。如果开发中不考虑通用性,做多少个项目成本都一样高,如果考虑通用性,开发成本将随着积累的模块数量的增加而下降。(复用,在开发人员的脑袋里本是一个很普通的概念,但现实中,却不易做好。我们允许一个模块做不好,但要让不好的模块非常容易被替换或修改。)
FreeEIS定位为:一个基座 + 一组通用模块 + 一组定制模块 = 一套系统。
- 一个基座,指内核模块和项目脚手架。
- 一组通用模块,指的是多数系统中都需要考虑的功能,如字典管理、日志管理、菜单管理、系统配置管理、错误代码管理、账号管理、组织机构管理、角色管理、权限控制等等。FreeEIS会逐步实现这些通用功能模块,并在可能情况下扩大范围。
- 一组定制模块,指的是特定业务需求中,『非通用』的功能模块,需要开发团队根据客户需求定制开发。但在这些模块的开发中,依然可以考虑将它们实现成『相对』通用的模块,以备其他业务或其他人使用。
显然,通用模块数量越大,需要定制的模块越少,开发成本越低。
-
🛠 高扩展性
“一切”皆可为模块,从一个漂亮的按钮、一个简单的运算工具函数,到一套完备的ERP系统,都可以做为FreeEIS中的模块。模块拆分灵活,模块间可零耦合,模块即插即用。同时考虑模块自身的扩展性,可开发模块做为另一模块的“插件”。
-
🎯 聚焦业务逻辑
FreeEIS内核将与业务逻辑无关的功能预制,使得开发人员只需要考虑模块内部的业务逻辑,诸如模块加载、引用依赖、多语言支持、多样式支持、数据模型生成、权限管理与控制、路由生成、Mock功能等等都已经内置在FreeEIS内核中,模块开发过程中不需要再做考虑。特别是像数据模型生成、权限管理与控制,这类通常会消耗开发者大量精力的部分,也被剥离解耦,大大提高了开发效率。
-
🚀 快速集成
FreeEIS中所有的功能都被拆分成大大小小的模块,在需要整合成为一整套系统的时候,只需要配置所需要的模块,或将模块代码(目录)放到统一的位置,FreeEIS内核将自动加载所有需要的模块,并整合为一套完整的系统。这使得系统级的组装更加灵活,可以根据需要极速集成成为大小和功能完全不同的完整系统。
-
🍹 不改变开发习惯
FreeEIS尽力做到少封装,无SDK,避免改变现有的开发习惯。一个脚手架工程 + 一套简单的规范就可以实现快速的系统开发。
-
🚪 代码安全
在某些场景下,我们不希望所有的开发人员拿到很多甚至所有功能模块的代码才可以运行调试自己的功能模块。FreeEIS的设计使得开发人员只关注自己所开发的模块也只需要访问到自己开发的功能模块的代码库,可以在不影响开发的情况下确保代码安全。
当前版本中,前端使用了如下技术或框架,您需要已经对这些技术或框架有所了解甚至拥有相关经验:
- VUE3是我们整个前端部分的基础。
- Quasar Framework是一个基于VUE的框架,具有多种特性,如拥有丰富的组件,支持Material Design,支持跨平台等等。但FreeEIS中并禁止使用其他组件库,您依然可以根据自己的喜好选择,我们只是借助了Quasar Framework的脚手架和跨平台支持,甚至您也可以将FreeEIS放在与Quasar Framework无关的其他VUE工程中使用。
当前版本中,后端使用了如下技术或框架,您需要已经对这些技术或框架有所了解甚至拥有相关经验:
- NodeJS是基础!
- ExpressJS是基础之上的基础😉。
- MongoDB、Mongoose, 目前已经实现的数据库操作模块基于Mongoose,但我们期望后续逐步添加更多数据库的支持。
- Redis,建议使用Redis的docker镜像部署。
# 安装前端脚手架
$ git clone https://github.com/freeeis/free-fe-starter-kit.git fe
# 安装依赖包
$ cd fe
$ yarn install
# 运行
$ yarn start
在使用后端前,请先安装MongoDB和Redis,也可以使用远程部署的实例,FreeEIS的相关内置模块允许配置其地址和端口。另外,Redis不是必须的,如果无法连接到Redis,FreeEIS将使用memory-cache做为缓存,这不会影响开发或运行。
# 安装后端脚手架
$ git clone https://github.com/freeeis/free-be-starter-kit.git be
# 安装依赖包
$ cd be
$ yarn install
# 创建存放机密数据的文件(也可手动创建)
$ touch global.js
# 运行
$ yarn start
成功运行前后端工程后,通过链接http://localhost:8080来访问系统。也可通过修改配置,使前端运行后自动从浏览器中打开页面。
我们期望通过提供一些内置的功能模块,来简化开发人员的工作,比如账号管理、权限控制这些在任何系统中都需要的功能,我们做成了模块,可以直接被引用。下面是一个列表,列出来目前我们所提供的内置功能模块,以及他们的功能。当然,根据我们的宗旨,我们不强制您使用任何一个内置模块,您可以根据自己的需要定制开发所有需要的模块,而只是使用FreeEIS的规范并用她来组装系统。并且我们鼓励您这么做,因为我们相信,在任何一个领域都有很多比我们更加专业的开发人员,我们希望有更多的人开发出越来越多的强大的功能模块供他人使用。
模块 | 前端模块 | 后端模块 | 功能 | 说明 |
---|---|---|---|---|
内核 | free-fe-core | free-be-core | 加载其他模块 | 默认在脚手架中 |
基础功能 | free-fe-core-modules | free-be-core-modules | 数据字典、日志、菜单管理、 系统配置、错误代码管理、 缓存管理、哀悼日、文件处理、 数据校验方法、多语言支持、 多皮肤支持等等 |
默认在脚手架中 |
账号管理 | free-fe-account | free-be-account | 账号管理、组织结构管理、权限管理、 角色管理、权限控制 |
默认在脚手架中 |
数据库 | / | free-be-mongodb | 数据库操作 | 默认在脚手架中 |
演示模块 | free-fe-demo | free-be-demo | 演示模块内部结构和使用方法 | 默认在脚手架中 |
扫码添加微信加入交流群
FreeEIS虽然已经在多个大型项目中得到了验证,但做为开源项目她依然处于比较早期的阶段,需要各位大牛的帮助一起成长。我们欢迎任何建议或意见或贡献,小到一个字的修改,大到架构的调整建议。我们感谢您的任何捐赠、PR、Issue等等,有任何相关问题都可以发邮件给我们:【freeeis@xixineis.com】。感谢🙏🙏!!