现代网络开发
在過去的幾年中,網絡技術經歷了快速增長和重大變化。 我們從框架到表格布局,再到列布局,再到響應式布局。 從html4到xhtml和Flash到html5。 從重型服務器到富客戶端。 從rpc到肥皂休息。 從sql到nosql和大數據。 從MVC到MVP等。 在以下文章中,我想從我的角度描述什么已成為最新技術。
后端是REST API
每個后端應被視為REST api,每個控制器應被視為另一資源。 您想分析問題領域,找到您的資源并為其設計適當的路徑。 它們成為您的MVC架構中的M。 首先開發一個Web應用程序,然后再添加一個額外的REST api被認為是一種反模式。 如果您確實制作了REST api,那么您希望自己使用它,從而使前端成為第一個使用者。 此過程使您以后可以平滑地添加不同種類的客戶端,例如移動應用程序或什至是桌面應用程序。 這也是將您的應用程序功能集成到其他應用程序中的基礎。
分離您的前端
使用帶有jstl表單驗證的jsp構成表單的時代正在逐漸消失。 您不想再將客戶端與服務器技術混合使用。 MVC的V和C已轉移到客戶端,您的后端僅代表模型。 您希望僅使用客戶端技術(html / css / js)并使用REST api將前端完全分開。 GUI邏輯,構建和對齊適當的html元素可以在javascript中實現。 在后端和前端之間進行信息交換的最合適的內容類型是json或xml。
富客戶端和冰雹JavaScript
如今,MVC模式是在客戶端使用javascript及其同類框架實現的。 沒有現成的功能完備的完整javascript框架,但是有很多較小的庫可以解決原子任務。 這不應被認為是壞的或壓倒性的,而是有利的。 它導致了各種各樣的工具,這些工具專注于徹底解決單個問題。 Backbone是基于underscore構建的流行的mvc框架,這是一個js庫,具有強大的實用程序和出色的功能編程功能。 可以添加諸如胡子或把手之類的模板引擎, requirejs將管理模塊內的依賴項。 當然,不能遺漏像jQuery這樣的dom操縱器。 這種趨勢正導致SPA (單頁應用程序)使用大量的AJAJ / AJAX ,并通過表示可添加書簽的視圖狀態的html #anchors進行路由。
為您的前端實施構建過程
隨著瀏覽器不斷提高javascript性能并為html5添加越來越多的支持,前端變得越來越復雜。 現在,您要為前端添加一個構建過程,以編譯所有js和css文件。 您只想將一個縮小的js文件傳送到瀏覽器。 除此之外,我們不再破壞DRY原理的寫作風格。 我們使用更少的動態樣式表語言來使樣式更智能,更簡潔,并在構建過程中將其編譯為CSS。 Node和rhino可能是構建前端的引擎候選者。 盡管節點要快得多,但它需要在構建服務器上輕松安裝。 Rhino在jvm中運行,因此不需要安裝。 您可以將其作為Maven依賴項添加到項目中。
移動網絡與響應設計
在硬件方面,移動設備變得越來越強大,而對HTML5的支持也在移動瀏覽器中Swift增加。 HTML5可能有一天使本地移動應用程序過時。 本地存儲,SQL,地理位置,多媒體,攝像頭訪問,Web套接字,圖形,觸摸事件,WebGL,文件系統訪問,通知等等,所有這些功能有一天將完全可用于移動html5 Web應用程序,希望能在所有設備上正常工作。 到目前為止,我們一直在為android / ios / windows mobile等開發多個應用程序,這是一場經濟噩夢。
移動客戶端已經在Web消費中獲得了可觀的收益,因此不再被忽視。 因此,您希望使GUI 響應 ,從而能夠縮小到較小的顯示分辨率。 明智的公司甚至在考慮臺式機分辨率之前就已經開始設計最小分辨率的用戶界面。 這使擴展更加容易,因為反之則更困難,并且往往會導致痛苦的解決方法。 Bootstrap是許多可幫助您使GUI響應的庫之一。 您可以使用initializr入門。
都不使用!
GWT / ZK正在嘗試提供一個框架,該框架使僅使用Java開發現代的ajax Web應用程序成為可能。 因此,他們基本上是在為前端技術構建Java包裝器。 除此之外,它們還提供了大量的組件。 但是……出于多種原因,我想質疑他們的哲學。
- 它們都產生非常糟糕的html代碼,使您陷入元素和dom-id噩夢的境地,這些噩夢變得很難甚至無法測試,調試和樣式化。 HTML5允許編寫簡短,干凈且可讀的代碼,更好地組織起來。 您想自己編寫html。
- 他們的AJAX調用不基于您需要的REST api。 如果要使用REST API,則可能必須再次編寫。 RPC是GWT的主要通信技術,我對此確實感到擔心。 但是,如果愿意,您仍然可以使REST api與GWT一起使用。
- 它們使您遠離實際生產的技術。 最終,微小的自定義設置可能變得很難甚至不可能。 您基本上是在放棄控制并限制您的可能性。 在許多情況下,這可能會導致死胡同,而死胡同是基于框架而不是技術。 GWT提供了JSNI,可幫助克服此問題。
- 他們永遠不會更新。 隨著瀏覽器的發展日新月異,必須在Java包裝程序中實現新功能,然后才能使用它們,這會延遲您的更新時間。
- 我懷疑包裝本機前端技術是否是個好主意,而且我看不出這樣做的理由。 一個專業的GWT爭論可能是:它正在生成優化的JS代碼。
最后,它們使為以前的java.awt / swing開發人員構建Web應用程序變得更加容易,他們幾乎不了解html / css / js。
他們現在肯定有自己的位置,并且在某些情況下不是一個壞選擇。
翻譯自: https://www.javacodegeeks.com/2013/07/modern-web-development.html
總結
- 上一篇: 教你如何给电脑瘦身电脑如何瘦身
- 下一篇: 龙珠z电脑游戏(龙珠z网游)