4个版本

0.1.5 2023年3月25日
0.1.3 2022年6月2日
0.1.1 2021年4月23日
0.1.0 2021年2月27日

#2 in #MVC


7 个crate(3个直接)中使用

MPL-2.0 许可证

135KB
2K SLoC

Ruex

API Docs Crates.io Code coverage Tests MPL-2.0 licensed Gitter chat loc

在PureMVC之上的设计模式框架。

PureMVC框架有一个非常明确的目标。那就是帮助您将应用程序的编码兴趣分为三个离散的层次: 模型视图控制器

这种兴趣的分离,以及使它们协同工作所使用的耦合的紧密性和方向,对于构建可扩展和可维护的应用程序至关重要。

在这个经典MVC设计元模式的实现中,这三个应用程序层次由三个简单的单例(只能创建一个实例的类)控制,分别称为 模型视图控制器。统称为“核心演员”。

第四个单例 外观 通过提供一个与核心演员通信的单个接口来简化开发。

模型 & 代理

模型 仅缓存代理的命名引用。代理代码操作数据模型,如有必要与远程服务通信以持久化或检索它。

这导致了可移植的模型层代码。

视图 & 中介

视图主要缓存对 中介 的命名引用。中介代码负责视图组件,添加事件监听器,代表它们发送和接收通知到整个系统,并直接操作它们的状态。

这使视图定义与其控制逻辑分离。

控制器 & 命令

控制器 维护对无状态的命令类的命名映射,这些命令类仅在需要时创建。

命令(Commands)可以检索和与代理(Proxies)交互,发送通知,执行其他 命令(Commands),通常用于协调复杂或系统级活动,如应用程序启动和关闭。它们是应用程序业务逻辑的所在地。

外观(Facade)与核心(Core)

外观(Facade)是另一个单例,初始化核心演员(模型(Model)视图(View)控制器(Controller)),并提供了一个访问它们所有公共方法的单一位置。

通过扩展 外观(Facade),您的应用程序无需直接导入和操作它们即可获得核心演员的所有好处。您只需为您的应用程序实现一次具体的 外观(Facade)即可,而且非常简单。

然后,代理(Proxies)、调解器(Mediators)和命令(Commands)可以使用您的应用程序的具体 外观(Facade)来访问和相互通信。

观察者(Observers)与通知(Notifications)

PureMVC应用程序可能运行在没有访问事件(Event)和事件调度器(EventDispatcher)类的环境中,因此框架实现了一个 观察者(Observer)通知方案,以松散耦合的方式在核心MVC演员和系统其他部分之间进行通信。

您无需担心PureMVC 观察者(Observer)/通知(Notification)实现的细节;它是框架内部的。您将使用一个简单的方法从代理(Proxies)、调解器(Mediators)、命令(Commands)和外观本身发送通知,甚至不需要创建一个 通知(Notification)实例。

快速入门

安装Ruex

cargo add ruex

了解更多信息

社区

贡献

我们相信更广泛的社区可以创建更好的代码。提高社区的第一步是通过为项目点赞来告知开发者。更多的点赞 - 更多的成员。

Star a repo

Angular Rust是一个社区项目,我们欢迎来自所有背景的开发者提供的各种大小的贡献。我们希望Angular Rust社区是一个有趣且友好的地方,因此请阅读我们的行为准则(Code of Conduct),了解哪些行为是不可容忍的。

是Angular Rust的新手吗?

通过帮助我们改进我们的文档来了解框架。我们也非常欢迎提高测试覆盖率的pull requests。

寻找灵感?

查看与Angular Rust / WebAssembly相关的精选内容列表,请访问awesome-angular-rust

有什么疑惑吗?

请随时加入我们的Gitter聊天室或创建一个新的“问题”问题以获得贡献者的帮助。通常,问题会引导改进框架的易用性、更好的文档甚至新的功能!

准备好深入代码了吗?

在审查完贡献代码指南后,查看“良好入门问题”(他们渴望得到关注!)。一旦找到你感兴趣的问题,请随意分配给自己,并不要犹豫寻求指导,问题的复杂程度各不相同。

让我们互相帮助!

来帮助我们解决最重要的问题并获得一小笔现金奖励。我们使用Issuehunt从我们的Open Collective资金中资助问题。如果你真的关心一个问题,你可以选择自己添加资金!

发现了一个错误吗?

报告所有错误!如果开发人员有兴趣并且有时间,我们很乐意帮助他们修复找到的错误。

依赖关系

~10–20MB
~318K SLoC