Theiaプラグインの作成
Theia
このセクションでは、Theiaの一般的なアーキテクチャについて説明します。
Theiaはデスクトップアプリケーションであることも、ブラウザやリモートサービスで実行することもできます。同じコード一式でデスクトップアプリケーションとWebIDEの両方をサポートするために、Theiaは2つの別々のプロセスで実行されます。このプロセスはそれぞれフロントエンドとバックエンドと呼ばれ、WebSocket上のJSON-RPCメッセージまたはHTTP上のREST apiを介して通信します。デスクトップアプリケーションでは、バックエンドとフロントエンドの両方がローカルで実行され、リモートコンテキストではバックエンドがリモートホストで実行されます。
前方部分
フロントエンドプロセスはクライアントを代表し、UIのレンダリングを担当します。ブラウザでは、単にレンダリングループの中で実行されますが、Electronでは、基本的にElectronとNode.jsのAPIを追加したブラウザであるElectronウィンドウの中で実行されます。そして、どんなフロントエンドのコードも、Node.jsを関連付けずに、ブラウザをプラットフォームと仮定することができます。
バックエンド
バックエンドプロセスはNode.js上で動作します。HTTPサーバーとしてexpressを使用します。プラットフォームとしてブラウザに依存するコードを使用する必要はありません。バックエンドアプリケーションのスタートアップは、まず貢献する拡張機能のすべてのDIモジュールをロードし、BackendApplicationのインスタンスを取得してstart(portNumber)を呼び出します。デフォルトでは、バックエンドの express サーバはフロントエンドのコードも提供します。
プラットフォーム分離
extensionsのトップレベルフォルダには、プラットフォームごとに分けられるファイルの追加フォルダがあります:
commonフォルダには、ランタイムに依存しないコードが含まれています。
Browserフォルダには、プラットフォームとしてモダンブラウザの使用を必要とするコードが含まれています。
Electron Browserフォルダには、DOM APIやElectronレンダラー処理に特化したAPIを必要とするフロントエンドのコードが含まれています。
nodeフォルダにはコードが含まれており、プラットフォームとしてNode.jsが必要です。
node-electronフォルダにはElectron固有のコードが含まれています。
Theia アーキテクチャーの概要については、このドキュメントを参照してください。