Humble Haxe,在非 haxe 友好的目标项目中自动合并 haxe 的方法

Humble Haxe, approaches to automating merging haxe within a non haxe friendly target project?

本文关键字:haxe 合并 方法 项目 目标 Haxe 在非 Humble      更新时间:2023-09-26

通常,对于 haxe,我们需要使用现有的非 haxe 代码,因此我们可能希望我们的 haxe 代码吸收系统的某些部分或添加到系统中,而不是编写外部代码,我们不能假设一个好的 haxe 设置的系统。

例如,以js目标为例,假设我们想向一些现有的javascript代码添加功能,我们无法轻松控制haxe的入口点,我们必须在当前的js代码中注入功能或类。 JS代码可能太复杂了,无法重新排列成真正友好的格式。 因此,一种方法是用我们需要的东西模拟一个类,然后尝试创建一些neko来自动插入并转换它,合并到当前的代码库中......但这是一个相当开放的问题,与其他目标不同。

所以我的问题是你开发了什么方法来混合现有目标代码中的 haxe 目标代码,例如在 js 源中添加一个 haxe 类,也许使用一些 neko 来自动插入和重新排列 haxe 类中 haxe 所需的引导代码。 但也对你如何处理其他目标感兴趣,我可能对haxe flash有想法,但没有说PHP或C ++。 假设您无法设置标准的主引导结构,并且在每次发布时,您确实希望在点击构建按钮时将 haxe 代码正确合并回主非 haxe 项目代码。

棘手但非常重要,因为解决方案使在更多项目中使用 haxe 变得更加容易。

我对你说的话只有少量的经验,但这里是:

  • JS - 我使用了一个自定义的 Markdown 库(mdown 的变体),它是用 Haxe 编写的,在一个主要是非 haxe 的 JavaScript 环境中。 我试图让它尽可能"黑匣子"——Haxe 库使用 @:expose 元数据公开了一个静态方法,所以我可以调用 Markdown.convert(str);从我的Javascript中的任何地方。 我们发现尽可能保持"黑匣子"是有益的,因此非 haxe Javascript 知道要提供什么输入以及期望什么输出,但其他一切都是不透明的。

  • PHP - 我做过一两个项目,我在Haxe中做了一些工作,并且不得不将其包含在现有的PHP网站上。 我发现我可以捎带现有网站会话来检查用户是否已通过身份验证,并且我为现有网站设置了一种为应用程序的 Haxe 部分提供"基本模板"的方法,然后 Haxe 将其呈现为该模板。 相当笨拙,但它确实起到了作用,意味着Haxe部分和非Haxe部分的模板都已更新。

  • 服务器端的另一种方法是分离为面向用户的代码和 API。 所以也许Haxe设置了一个JSON API,PHP与之对话。 或者,也许你有一个Haxe网站,它与Ruby/Python API等对话。

所以正如你所看到的 - 我试图让事情变得非常不同。 如果Haxe能够以相对独立的方式运行,并通过获取特定输入并提供特定输出与其他代码进行交互,那么事情的行为可以相对可预测。 我没有尝试过比这更进一步的集成,我认为Haxe的工作方式(使用它自己的类系统和数据结构等)足够不同,以至于紧密集成可能会有问题。

我很少混合代码,但它在这里:

  • 对于Flash,您不需要任何东西,如果您添加在其他程序中制作的SWF库,则可以从Haxe访问类。

  • 对于 JS,如果没有 extern,除非你想使用 untyped。或者也许你明白杰森做了什么,我没有:)

  • 对于
  • CPP来说,情况更糟,你必须使用CFFI,这最终会变成一团糟的代码,对于示例,检查NME扩展是如何工作的。

  • 从未使用过Java,但我认为这很简单