通常使用haxe我们需要使用现有的非haxe代码,因此我们可能希望我们的haxe代码吸收系统的某些部分或添加到系统中,而不是编写外部代码,我们不能假设一个很好的haxe设置。
例如,假设我们想要为某些现有的javascript代码添加功能,我们无法轻松控制haxe的入口点,我们必须在当前js代码中注入功能或类。 JS代码可能太复杂而无法重新排列成一种真正的haxe友好格式。因此,一种方法是用我们需要的东西模拟一个类,然后尝试创建一些neko来自动插入并转换它,合并到当前的代码库......但这是一个非常开放的问题,并且会有所不同其他目标。
所以我的问题是你为现有目标代码中的haxe目标代码混合开发了哪些方法,例如在js源代码中添加haxe类,可能使用一些neko来自动插入并重新安排所需的引导代码haxe在haxe类。但是也对你如何与其他目标接近这个问题感兴趣我可能有haxe flash的想法,但不是说PHP或c ++。让我们假设你无法设置标准的主启动结构,并且在每次发布时,你真的希望你的haxe代码在你点击构建按钮时正确地合并回主要的非haxe项目代码。
棘手但非常重要,因为解决方案使得在更多项目中使用haxe变得更加容易。
答案 0 :(得分: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的工作方式(使用它自己的类系统和数据结构等)是不同的,紧密集成可能会有问题。
答案 1 :(得分:0)
我很少混合代码,但在这里:
对于flash你不需要任何东西,如果你添加你在其他程序中创建的swf lib,你可以从haxe访问这些类。
对于js是不可能的。或者也许你了解杰森的所作所为,我没有:)
对于cpp来说更糟糕的是,你必须使用cffi,这将导致代码混乱,样本检查nme扩展如何工作。
从未使用过Java,但我认为这里很简单