ClojureScript を使用して Foxx サービスを実装したいと考えています。
各開発ステップでトランスパイラーを実行することで、TypescriptとCoffeescriptを使用できることを読んだことがあります。
ClojureScriptでも同様のことができますか?
ClojureScript を使用して Foxx サービスを実装したいと考えています。
各開発ステップでトランスパイラーを実行することで、TypescriptとCoffeescriptを使用できることを読んだことがあります。
ClojureScriptでも同様のことができますか?
私は Foxx で Clojurescript を使用して素晴らしい時間を過ごしました。その結果がこのオープン ソース ライブラリです: https://github.com/arango-cljs/forest 2 年前にこの作業をやめた理由は、REPL ワークフローが十分ではなかったからです。そしてWebsocketの欠如。しかし、Clojurescript-in-Clojurescript はすぐに利用できるようになり、Boot ビルド ツールが誕生し、ArangoDB+Foxx はその後大幅に改善されたと思います。ご興味のある方はご相談に応じます。
私たちの知る限り、ArangoDB/Foxx で実行できるような方法で ClojureScript アプリケーションを作成することはできません。
TypeScript や CoffeeScript とは異なり、ClojureScript は単なる言語ではなく、アプリケーション ランタイムです。これは、JavaScript の代替構文としてではなく、JavaScript エンジンでたまたま実行されるアプリケーションを作成する方法として考えたほうがよいでしょう。つまり、再利用可能な ClojureScript モジュールを作成することは可能ですが、任意の JavaScript モジュールではなく、スタンドアロンの ClojureScript アプリケーションを作成するように設計されています。
これはもともとブラウザで実行するように設計されており、Node のようなモジュール システムを念頭に置いて書かれていないため、Google Closure Compiler を介してグローバル名前空間を使用します。これは、同じコンテキストで複数のアプリケーションを実行すると、名前空間の競合が発生することを意味します。
また、Foxx サービスはステートレスであると予想されます。Foxx サービスは毎回異なる V8 コンテキストで実行されるため、すべての状態をコレクションまたはサーバー応答で永続化する必要があります。一方、ClojureScript は定義上ステートフルです。これは、Lisp として、コードを単なる特殊な形式のデータと見なすためです。
経験則として、JavaScript 言語 (TypeScript、CoffeeScript、LiveScript、PureScript など) の透過的な代替として設計された言語は、問題なく動作するはずです。スタンドアロン アプリケーションを作成するために設計された言語 (ClojureScript や Elm など) は、おそらく機能しません。
いずれにせよ、代替言語 (または Babel) を使用する場合は、ArangoDB の外部でコードをトランスパイルし、生成された JavaScript 出力のみを Foxx バンドルに含める必要があります。ArangoDB 3.0 では、Node.js のようにフック付きの単一のエントリ ポイントを使用できますがrequire
、パフォーマンス上の理由とコンパイル時のエラーを見つけやすくするために、コードをプリコンパイルすることをお勧めします。