node.js アプリケーションをコンパイルする方法はありますか?
私は非常に遅いかもしれませんが、nodejs +スクリプトを1つの実行可能ファイルでコンパイルする「nexe」モジュールを使用できます。 https://github.com/crcn/nexe
Node.jsはV8 Javascriptエンジンの上で実行されます。V8Javascriptエンジン自体は、javascriptコードをネイティブコードにコンパイルすることでパフォーマンスを最適化します。
ソースなしで完全に機能するバイナリを取得します。
ネイティブモジュールもサポートされています。 (同じフォルダーに配置する必要があります)
JavaScriptコードは、V8内部コンパイラーを使用してコンパイル時にネイティブコードに変換されます。したがって、ソースをバイナリを実行する必要はなく、パッケージ化されていません。
完全に最適化されたネイティブコードは、クライアントのマシンに基づいて実行時にのみ生成できます。その情報がなければ、EncloseJSは「最適化されていない」コードのみを生成できます。 NodeJSの約2倍の速度で実行されます。
また、実行時にアプリケーションのノードAPIをサポートするために、node.jsランタイムコードが(コードと共に)実行可能ファイル内に配置されます。
ユースケース:
ここに答えがありました: NodeJSアプリケーションの安全な配布 。 Raynos氏:V8ではJavaScriptをプリコンパイルできます。
Closure compiler を使用して、javascriptをコンパイルできます。
CoffeeScript を使用して、coffeescriptをjavascriptにコンパイルすることもできます。
コンパイルで何を達成したいですか?
言うまでもなく、任意のノンブロッキングJavaScriptをコンパイルするというタスクは非常に困難です。
CやASMにコンパイルすることで得られる速度はそれほど大きくありません。サブプロセスを介してCプログラムへの計算をオフロードします。
現在、これには必要以上のものが含まれている可能性があります(また、非グラフィカル環境でのコマンドラインアプリケーションでも動作しないかもしれません)が、 nw.js があります。点滅(つまり、Chromium/Webkit)+ io.js(つまり、Node.js)です。
node-webkit-builder を使用して、Linux、OS X、およびWindows用のネイティブ実行可能バイナリをビルドできます。
GUIが必要な場合、それは大きなプラスです。 Webテクノロジーを使用して構築できます。そうしない場合は、"node-main"
でpackage.json
を指定します(おそらく"window": {"show": false}
を使用しますが、main
ではなくnode-main
を使用するだけでも機能します)
私はそれを正確にこのように使用しようとはせず、可能性としてそこに放り投げました。私はそれが確かに非グラフィカルなNode.jsアプリケーションのためのidealソリューションではないと言うことができます。