2016-10-20 48 views
7

我嘗試使用NodeJS(Express)作爲服務器創建angular2應用程序。 問題是,當Express嘗試使用自己的模板引擎並路由請求時,會出現衝突,而angular也使用routes和index.html作爲入口點。如何將ExpressJS服務器與Angular2集成

我該如何整合兩者?

+0

一個angular2項目的設置和運行,但我擔心,如果我創建Express服務器,它將覆蓋文件結構。我找不到一個像樣的參考如何解決它 – Yuvals

+0

這是否解決它? http://stackoverflow.com/a/34864585/2112228 – Sharko

回答

14

通常,NodeJS/Express將用於爲Angular可以使用的端點提供API。 NodeJS只是一個後端,Angular只是一個前端。

雖然角可以從一個NodeJS服務器提供服務,這是浪費資源,因爲大多數的Angular網站是完全靜態的。也就是說,他們是可以通過S3或FTP提供的javascript,CSS和圖像,並通過服務(twitter上的推文,S3存儲桶中的圖像,自定義NodeJS後端的數據等)獲取所有動態內容。換句話說,不需要動態服務器端渲染。

我強烈建議維護這種方法。將您的Angular應用程序託管在像S3這樣的靜態存儲主機上,並使用NodeJS創建REST API,您的應用程序可以通過Angular服務進行交流。發送GET請求來獲取JSON數據。獲取生成的JSON數據並使用它來填充您的應用程序。發送POSTPUTDELETE請求添加或操作數據(假設您計劃擁有後端數據庫)。

通常在您的域中表示的方式是讓http://yourdomain.com指向您的Angular應用程序。然後,您的角度應用程序將調用指向您的Node API的http://yourdomain.com/api/http://api.yourdomain.com。你可以配置你的DNS來執行這些而不是需要你的代碼中的物理子目錄。

+0

但我必須拆分他們的位置?如果我想讓他們從同一個父目錄/項目運行,該怎麼辦? – Yuvals

+0

你可以在不同的地方託管它們,但是配置你的DNS,使它們託管在看起來是相同的域。我強烈建議不要試圖在單個代碼庫中混合後端和前端代碼。 – Soviut

+0

我已更新答案,以包含有關典型託管設置的更多信息。 – Soviut