1

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

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

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

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

4

2 回答 2

1

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

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

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

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

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

于 2013-01-26T05:09:59.763 回答
0

我很少混合代码,但它是这样的:

  • 对于 flash,您不需要任何东西,如果您添加在另一个程序中制作的 swf 库,您可以从 haxe 访问这些类。

  • 除非您想使用无类型,否则没有外部变量,对于 js 是不可能的。或者也许你明白杰森做了什么,我没有:)

  • 对于 cpp 更糟糕的是,您必须使用 cffi 最终会导致代码混乱,用于示例检查 nme 扩展的工作方式。

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

于 2013-01-29T21:52:23.487 回答