考慮這個
//Haxenode.hx
class Haxenode {
@:expose("hello")
public static function hello(){
return "hello";
}
}
@:expose("hello")
部分是把東西module.exports
。
現在啓動
haxe -js haxenode.js -dce no Haxenode
現在你可以在的NodeJS使用haxenode.js
var haxenode = require('./haxenode.js');
var hello = haxenode.hello;
所以,這個組合在一起是一個回答你的問題:
var cp = require('child_process');
function requireHaxe(haxeClassPath,cb){
//generate a JavaScript module from the Haxe file, and then return the generated JavaScript module
cp.exec('haxe -js haxenode.js -dce no ' + haxeClassPath,function(err){
if (err){
cb(err); return;
}
cb(null,require('./haxenode.js'));
});
}
記住,輸出文件名是一個存根。
但是不要這麼做 - 最好在構建步驟(包含所有必要的編譯選項)下編譯haxe,然後在運行時使用常規require
。
這個問題不應該太難解決 - 我只需要找到一種方法來從node.js運行Haxe編譯器,獲取生成的JavaScript文件的名稱,然後導入生成的JavaScript文件。 –
可以使用Haxe生成node.js模塊,如下所述:https://groups.google.com/forum/#!topic/haxelang/6lzIeg6RUC4 –
在node.js中,還可以同步執行系統命令。 http://stackoverflow.com/questions/4443597/node-js-execute-system-command-synchronously –