#cross-platform #traits #engine #apps #shared #portable #system

narthex_engine_trait

适用于便携式应用程序的共享代码(特质)

3 个版本

0.1.2 2021年10月30日
0.1.1 2021年9月28日
0.1.0 2021年9月27日

#75 in #portable


narthex_web_app 中使用

MPL-2.0 许可证

11KB
69 代码行数,不包括注释

narthex-engine-trait

此crate为创建可在PC和Android移动手机上运行的便携式应用程序的系统提供引擎特质。

更多信息,请参阅API文档:https://docs.rs/narthex_engine_trait/0.1.0/narthex_engine_trait/

此源代码形式受Mozilla公共许可证第2.0版的条款约束。如果没有随此文件分发MPL副本,您可以从中获得一份:https://mozilla.org/MPL/2.0/


lib.rs:

此系统可构建可在PC和Android移动手机上运行的便携式应用程序。

有一个示例仓库,实现了经典Wumpus游戏的PC和Android移动端示例。这两个平台的实现共享一个共同的底层('engine'),否则使用与应用程序差别很小的样板代码。

总体而言

系统包含以下部分,每个部分都在GitHub仓库中。本节描述了在实现不同的应用程序时需要更改哪些部分。某些部分不需要任何更改,某些部分是示例,通常不需要太多更改,而 engine crate 需要编写以提供新应用程序的功能。

  • narthex-engine-trait 定义了 [EngineTrait];实现新应用程序通常不需要更改。
  • narthex-wumpus 是此框架的示例。有关此内容,请参阅 GitHub上的 narthex-wumpus 页面narthex-wumpus 仓库包含以下内容:
  • engine crate 包含实现Wumpus游戏的代码,它实现了 [EngineTrait]。
  • wumpus crate 是游戏PC实现的客户端;实现新应用程序通常不需要太多更改。
  • wumpus-c crate 是 engine crate 的C绑定;实现新应用程序通常不需要太多更改。
  • Wumpus 是游戏Android实现的代码(Java等);实现新应用程序通常不需要太多更改。
  • narthex-web-app 是一些代码,可以更轻松地将应用程序的PC实现组合起来;实现新应用程序通常不需要更改。有关更多信息,请参阅 narthex-web-app 文档

本页面描述了Engine和用户界面之间的[EngineTrait]接口。此crate实现新应用时无需任何更改。

创建引擎(整体架构)

要创建应用程序,您需要在您的应用程序中创建以下类型。满足[EngineTrait]的引擎执行特定于应用程序的功能。

  1. 一开始,用户界面将为引擎创建一个网页视图(浏览器)。
  2. 在初始化时,主程序通过传递满足[ConfigTrait]的Config将配置传递给引擎。
  3. 用户界面将调用engine.initial_html(),并且引擎必须返回一个HTML字符串。
  4. 然后,对于每个用户输入,用户界面使用engine.execute(action)将操作传递给引擎,并且引擎必须返回一个满足[ResponseTrait]的响应返回给用户界面。
  5. 此外,对于应用程序事件,用户界面使用engine.execute(action)将事件传递给引擎,并且引擎必须返回一个满足[ResponseTrait]的响应返回给用户界面。
  6. 最后,引擎将返回一个带有response.shutdown_required()的响应,并且用户界面将终止应用程序。

依赖项

~1.4–2.4MB
~46K SLoC