冰客
2015-1-3 20:23:35
Flarum 使用三层体系结构。 1、核心层 - core 负责管理数据、事件、实体、命令等。 2、中间层 - API 使用 Web API 来操作 Flarum。 3、最外层 - Web App 使用 Ember.js 展示数据。 这样的分层架构就有了很大的灵活性和扩展性。比如最外层完全可以由一个其它 Web App 取代,可以使用 Angular.js、CodeIgniter、Node.js,甚至可以使用一个移动App。通过分层架构,也保证了系统的可测试性和稳定性。 1. CoreFlarum 核心层使用 Laravel 框架,主要包括: Entities 实体,主题(Discussion)、帖子(Post)、用户(User)等都是实体,基于 Laravel 的 Eloquent ORM。实体的权限使用 Permissible ,Permissible 内置了验证规则。 Repositories 用来查找、保存、删除实体,Repositories 提供了一个数据库抽象层。然而目前的开发期间,严格遵守这一约定有时会引起其他的麻烦(尤其是考虑如何扩展实体和 Repo),因此我们使用 Reso 时,需要编写更多的测试代码以保证代码质量。 Commands 和 Domain Events 所有的实体都由命令和事件连接。监听器( Listener)用来更新元数据(帖子数量、最后发贴时间等)、排版帖子内容、发送邮件等。采取这种命令模式 也使得系统很容易扩展。 2. APIFlarum 中处理 API 的类被称为 Actions,这些 Actions 本质上都是微型控制器。这使得编写 Web API 的处理代码变得简单。 Flarum API 的结构按照 JSON-API 规范 设计。这种规范使用了一个软件包 进行了封装。为每个实体定义了不同的序列化格式。 3. WebFlarum 的 Web 端使用了 Ember.js 框架,通过 ember-cli 将 LESS 和 ES6 代码编译为 CSS 和 JavaScript 文件。 Web 层的主要职责是提供一个页面,包括 HTML、CSS、JavaScript,在默认的 Flarum 中使用了 Ember app。我们可以通过添加自己的 javascript 和 css 来扩展 Web 层的功能,甚至可以完全重新 Web 层代码。 via http://discuss.flarum.org.cn/17-flarum-architecture |
GMT+8, 2024-11-15 05:45