業務開發須要 webIDE,經技術調研,最終選定了 eclipse Theia。eclipse Theia 的文獻很少,更無官方中文文檔,在閱讀中決定將其翻譯成文。前端
本節對 Theia 的整體架構進行說明node
Theia 能夠是一個桌面應用,也能夠在瀏覽器和遠程服務中運行。爲了用同一套代碼,支持桌面應用和webIDE,Theia 運行在兩個獨立的進程中。這個進程分別被稱爲前端和後端,它們經過WebSockets上的JSON-RPC消息或HTTP上的REST api進行通訊。在桌面應用中,後端和前端都在本地運行,而在遠程上下文中後端將在遠程主機上運行。web
前端和後端流程都有它們的依賴注入容器,能夠貢獻擴展。express
前端進程表明客戶端而且擔任呈現UI的職責。在瀏覽器中,它簡單的在渲染循環中運行,而在Electron中,它在 Electron 的窗口中運行,Electron 窗口是一個基本的帶有附加 Electron和Node.js api的瀏覽器。而任何前端代碼均可以假設瀏覽器是一個平臺,而不用關聯 Node.js。後端
後端進程運行在Node.js上。咱們使用express做爲HTTP服務器。它可能不須要使用任何依賴瀏覽器做爲平臺的代碼(DOM api)。 後端應用程序的啓動將首先加載全部貢獻擴展的DI模塊,而後得到BackendApplication的實例並在其上調用start(portNumber)。默認狀況下,後臺的express服務器也爲前臺提供代碼。api
在擴展程序的頂層文件夾中,咱們還有一個附加的文件夾層,能夠按平臺分開:瀏覽器
common文件夾包含不依賴於任何運行時的代碼。服務器
瀏覽器文件夾包含要求使用現代瀏覽器做爲平臺(DOM API)的代碼。架構
電子瀏覽器文件夾包含須要DOM API以及Electron渲染器過程特定的API的前端代碼。eclipse
節點文件夾包含(後端)代碼,須要Node.js做爲平臺。
node-electron文件夾包含特定於Electron的(後端)代碼。
要了解Theia架構的高層概述,請參閱這個文檔: