2017-04-05 30 views
1

有時,當我創建基本的Web工具時,我將從nodeJS後端開始,通常使用ExpressJS創建API服務器。當某些路由被擊中時,服務器通過使用連接的實時狀態呈現來自EJS的HTML來作出響應,然後將其發送到瀏覽器。連接到API的WebApp與後端呈現之間的區別

這個應用程序通常會爲公共靜態資源公開一個目錄,並將提供這些目錄。我想這會給這種形式的網絡應用帶來很多開銷,但我不確定。


其他時候我會用API開始(這可能是完全一樣的NodeJS結構,沒有HTML的渲染,只是狀態管理和API曝光),我將建立一個Angular2或其他HTML網頁,將連接到API,加載有關加載的信息,並在頁面中填充數據。

這些頁面傾向於依賴大量的AJAX調用和jQuery,以便在觸發一堆異步回調之後刷新角度組件。在這個結構中,我將使用像Apache這樣的Web服務器來服務所有文件並定義路由,而網頁中的JS將完成剩下的工作。


兩者的整體優缺點是什麼?爲什麼我應該使用一種策略而不是另一種?它們是否都是可行的並且依賴於規模和使用?我想用負載平衡器進行水平縮放可以適用於這兩種情況。

回答

1

有沒有好的或壞的方法,你可以選擇。上述每種方法都有一些優點,您需要確定哪一種方法最適合您的項目。

幾點,你可能會考慮:

服務器端處理

  • 安全 - 你不必暴露敏感信息(API令牌,登錄等)。

  • 更多的控制 - 您將有更大的控制權,你做什麼與你的資源

  • 「更好」的客戶端支持 - 一些客戶端(IE)不支持同樣的事情其他人。在服務器上呈現HTML而不是在客戶端上操作它將爲您提供對客戶端的更多支持。

  • 在服務器上預渲染資源而不是在客戶端處理異步方法可能會更簡單。

  • 搜索引擎優化,社交分享等 - 你的服務器如何發送資源,多數民衆贊成看到他們。如果預渲染服務器上的所有內容,殭屍程序將能夠抓取您的網站,標記它等等。如果您在客戶端上執行此操作,它只會看到未處理的頁面。這就是說,有辦法解決這個問題。

客戶端處理

  • 等待時間。在客戶端做東西會改善你的加載時間。但要小心,不要做太多的事情,因爲JS是單線程的,重的東西會阻止你的用戶界面。

  • CDN - 你可以爲來自CDN靜態資源(HTML,CSS,JS等),這將大大快於從服務器上的應用程序直接

  • 測試他們提供服務 - 這是很容易模仿的後端服務器時,測試你的UI。

  • 客戶端是特定應用程序/設備等的前端。您投入客戶端的邏輯越多,您需要在不同客戶端之間複製的代碼就越多。因此,如果您打算使用移動應用程序,最好是收集API來調用,而不是將您的邏輯包含在客戶端中。

  • 安全性 - 無論客戶端運行什麼都可以完全被客戶端讀取。不管多少您壓縮,壓縮,加密一切足智多謀的人隨時都可以做任何他想做的與您的代碼

我沒有標註PRO/CON上的目的各點,因爲它是由你來決定它是什麼。

這個列表可以繼續下去,我不想考慮更多的點,因爲它是非常主觀的,最終它取決於開發人員和應用程序。

我個人傾向於選擇「客戶端製作ajax請求」方法或兩者兼而有之 - 在服務器上預渲染某些東西並且客戶端需要休息。請注意後者,因爲如果沒有正確實施,它會打破自動化測試,IDE集成等。

最後注意 - 你應該總是在服務器上做重要的驗證。永遠不要依賴客戶的數據。 「

+0

」最後一點 - 您應該始終在服務器上進行重要的驗證,不要依賴來自客戶端的數據。「是非常有價值的,值得強調。你的答案是徹底的。在接受您的答案之前,我會等待任何額外的輸入。 – Neurax

相關問題