【问题标题】:Haxe NME UI: Best practices for MVC application designHaxe NME UI:MVC 应用程序设计的最佳实践
【发布时间】:2013-06-29 10:02:31
【问题描述】:

昨天我偶然发现了 Haxe NME 项目,这是一个非常有前途的想法。但是,仍然无法使用此框架构建复杂的 UI。在我看来,构建一个针对这么多不同平台的 UI 框架似乎是一项令人生畏的任务,因此我认为这不是一种可行的方法,因为即使是像 Qt 和 wxWidgets 这样古老而成熟的 UI 框架也不支持很多平台。

但是,借助一些漂亮的 UI 设计器工具构建一个特定于平台的 UI,然后将 UI 代码连接到用 Haxe 编写的 UI 无关代码是有意义的。我不知道这是否可行,因为我找不到任何示例,但也许已经编写了一些 MVC Haxe 代码,可以成功连接到不同平台特定 UI 的人想分享他的经验。谢谢。

【问题讨论】:

    标签: model-view-controller user-interface haxe nme


    【解决方案1】:

    你说:

    但是,仍然无法构建复杂的用户界面

    仅仅因为你还没有弄清楚如何去做并不意味着它不可能;)

    之所以可能是因为在 Haxe 生态系统中,语言和编译器跨平台极其一致,NME/OpenFL 提供了相当强大的跨平台渲染环境(HTML 5 有一些怪癖,但其他看起来相当强大)因此,您在这些之上构建的任何东西都将涵盖很多开箱即用的平台。这是关于相当高水平的 - 让编译器和库处理平台的怪癖。

    在 MVC 中,UI 的东西通常是“View”。对于 View / UI 框架,请查看以下库:

    1. Stablex UI
      NME/OpenFL,跨平台。使用 NME API 绘制组件。这是 我玩过的唯一一个,但该演示始终在 android 上运行, flash、html5、原生linux。令人印象深刻。

    2. HaxeUI
      NME,跨平台。再次在舞台上绘制组件。

    3. Prime
      使用 Flash API 绘制。不确定它是否已经跨平台移植。
      另见Talk/Video from WWX conferenceSlides

    4. Guise
      一种真正创新的方式,既可以绘制 UI,也可以使用本机(如果有)。查看博文。

    5. Basis
      包装原生组件的另一种尝试 - 到目前为止有 iOS 和 Android 库。很酷,但我还没玩过。

    对于 MVC,有很多选择:

    1. PrimeVC,上面提到过。
    2. MMVC,基于 RobotLegs 框架,但为 Haxe 量身定制。
    3. 很多小选项 BBMVC PureMVC

    MVC 框架的优势在于它们将视图与应用程序数据(模型)和逻辑(控制器)分开。尝试花一些时间熟悉其中一个 MVC 框架,您将了解如何以可以使用其中之一的方式编写应用程序,然后使用各种视图引擎(无论是原生的还是 NME-)呈现。这可能是一个相当陡峭的学习曲线,但这是您构建可在不同 UI 框架之间轻松移植且易于测试的应用程序的方式,因此您知道它们会随着应用程序复杂性的增长而扩展。

    【讨论】:

    • 谢谢。我知道那些 Haxe UI 框架,但它们不包含很多组件。如果我可以使用 wxWidgets、Qt 或 Flex mxml 之类的任意 UI 框架,然后将外部 UI 粘合到用 Haxe 编写的模型和控制器类之上,我将非常高兴。这可能吗?
    • 是的,但这也是一个非常小的项目,迟早会消失。如果可能的话,我想将 Haxe 与大型 UI 框架结合使用。
    • 该项目正在使用您询问的 wxWidgets,并且与 NME 兼容。我认为有人做过 GTK 绑定,但我有一段时间没有听说过,所以它们可能已经过时了。如果您正在寻找一个已经很有动力的 UI 框架,那么 Haxe 可能不是您的正确选择。这是一门很棒的语言,但社区仍然很小,所以你必须愿意忍受不确定性(至少现在是这样)
    【解决方案2】:

    您似乎面临的主要问题是,没有完整且可供您使用的开箱即用选项。许多项目人员建议做你想做的事。你需要愿意使用它们。 github上的一个小项目可能会被丢弃。如果是这样,它将被丢弃,因为 jo one 使用它,所以它取决于想要使用它的人(即:你)来保持它的运行。

    每个人都不能窃取他人已完成的项目,否则将一事无成。参与是开源的意义所在。

    【讨论】:

      【解决方案3】:

      所有平台都有统一的UI没有意义,每个平台都有不同的工作流程,你有没有尝试在windows上使用IOS列表框,简直是荒谬的。另一方面,一个好的设计可以将视图与业务逻辑分开,您可以与所有目标共享业务逻辑并调整每个目标的视图。看看PureMVC
      Haxe 中的 mvc 示例

      【讨论】:

        猜你喜欢
        • 2014-03-07
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2017-05-25
        • 2010-09-05
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多