如果你問十個全棧工程師,如何快速構建一個Web應用,我相信你會得到10個不同的答案,因為每一名全棧工程師的技術棧都不盡相同。以設計見長的全棧設計師可能會告訴你,做一個很好的設計,然後套用一個部落格系統或基於CMS的內容管理平臺(如Drupal,Jommla,Wordpress)就可以快速建站,而前端全棧工程師可能會建議,用HTML5+JavaScript(AngularJS或React)來寫網站的前端,用Node.js來寫後端服務。我最早是一名Java程式設計師,後來當了架構師,又自學設計,成為了一名全棧工程師。
因此,我會更偏向於使用Java來構建穩定且便於擴充套件的後端服務,並用Html5+CSS3+JavaScript,再結合一些流行的前端框架來快速寫出一個Web應用來。當然,這絕對不是唯一或最優秀的技術組合,你需要根據不同的應用場景和你自身的專長來進行合理的選擇。
網站定位與功能設定
網站無論大小都應該有清晰的定位,也就是你希望你的網站做什麼?這一點非常重要,我見過很多網站雖然功能很多,但由於缺少明晰的定位而少人問津。而我要寫的這個小站只有一個核心功能,那就是要幫助我的微信訂閱使用者們(大多是學習計算機或設計的在校大學生和那些工作不久希望提升技能的設計師或程式設計師們)分享那些優秀的開發或設計(學習)資源。
圍繞這個核心功能,便得到了構成這個網站所需要的三個主體功能:
資源釋出與展示。(核心功能,使用者可以分享他們的資源,也可以看到其他人的分享) 使用者的第三方登入(為了快速開發,我省略了不必要的使用者註冊功能,全部採用第三方社交平臺登入) 使用者反饋功能。(使用者反饋幾乎是我自建的每個網站中都包含的功能,這使我能透過不斷收集使用者的反饋來改進這個平臺。)
至此,已經完成了網站的功能設定,我儘可能省略了一切不必要網站功能,也沒有寫任何文件,這使我能夠以最快的速度將這個Web應用實現出來。這種方式也是目前增長駭客們所普遍採用的一種做法:快速搭建出一個具備核心功能的應用原型 —— MVP(Most Viable Product 最小化可行產品),來驗證自己的業務模型,然後再根據使用者的需求和反饋來不斷進行改進。當然,隨著專案規模的不斷擴大,以及更多團隊成員的加入,我們可以回過頭來再去補齊那些在前期遺漏的文件,記住,僅當確認文件能夠產生價值時,才去編寫它們。
資訊架構
這個階段在不同的團隊或專案中會有很多不同的名字,比如概要設計、業務建模等等,而我最喜歡資訊架構這個名字,因為在這個階段,我們所要做的就是對不同緯度和粒度的資訊進行抽象、規劃、設計,來支撐整個網站的資訊體系。我曾經歷過很多不同的資訊架構方法論,從最初基於模組的設計,到後來的領域驅動設計(DDD)、面向服務的設計(SOA),Oracle的基於資料建模驅動的設計,再到最新的微服務架構設計 等等。我想說,這些方法論大多是針對那些大規模應用而言的,你需要了解它們,並有意識地在你的系統設計中去匹配這些優秀的架構和設計思想,這有利於你做出可擴充套件性良好的系統,從而避免因整個系統複雜度與規模的擴大而導致的大規模重構風險。
對於我們這個小站來說,我們只需要先定義出合適的業務領域和實體模型,這裡,我們定義出以下三個業務實體,併為這些實體新增所需要的欄位。
User-使用者
Resource-資源
Feedback-使用者反饋。
圍繞著這三個領域模型,我們再定義出三個服務,併為它們增加相應的方法:
UserService-使用者服務 ResourceService-資源服務 FeedbackService-使用者反饋服務。
資訊架構階段完成後,我們已經對整個網站有了一個全面的檢視,下一步,我們就可以進入UI設計階段了。
年!
如果你問十個全棧工程師,如何快速構建一個Web應用,我相信你會得到10個不同的答案,因為每一名全棧工程師的技術棧都不盡相同。以設計見長的全棧設計師可能會告訴你,做一個很好的設計,然後套用一個部落格系統或基於CMS的內容管理平臺(如Drupal,Jommla,Wordpress)就可以快速建站,而前端全棧工程師可能會建議,用HTML5+JavaScript(AngularJS或React)來寫網站的前端,用Node.js來寫後端服務。我最早是一名Java程式設計師,後來當了架構師,又自學設計,成為了一名全棧工程師。
因此,我會更偏向於使用Java來構建穩定且便於擴充套件的後端服務,並用Html5+CSS3+JavaScript,再結合一些流行的前端框架來快速寫出一個Web應用來。當然,這絕對不是唯一或最優秀的技術組合,你需要根據不同的應用場景和你自身的專長來進行合理的選擇。
網站定位與功能設定
網站無論大小都應該有清晰的定位,也就是你希望你的網站做什麼?這一點非常重要,我見過很多網站雖然功能很多,但由於缺少明晰的定位而少人問津。而我要寫的這個小站只有一個核心功能,那就是要幫助我的微信訂閱使用者們(大多是學習計算機或設計的在校大學生和那些工作不久希望提升技能的設計師或程式設計師們)分享那些優秀的開發或設計(學習)資源。
圍繞這個核心功能,便得到了構成這個網站所需要的三個主體功能:
資源釋出與展示。(核心功能,使用者可以分享他們的資源,也可以看到其他人的分享) 使用者的第三方登入(為了快速開發,我省略了不必要的使用者註冊功能,全部採用第三方社交平臺登入) 使用者反饋功能。(使用者反饋幾乎是我自建的每個網站中都包含的功能,這使我能透過不斷收集使用者的反饋來改進這個平臺。)
至此,已經完成了網站的功能設定,我儘可能省略了一切不必要網站功能,也沒有寫任何文件,這使我能夠以最快的速度將這個Web應用實現出來。這種方式也是目前增長駭客們所普遍採用的一種做法:快速搭建出一個具備核心功能的應用原型 —— MVP(Most Viable Product 最小化可行產品),來驗證自己的業務模型,然後再根據使用者的需求和反饋來不斷進行改進。當然,隨著專案規模的不斷擴大,以及更多團隊成員的加入,我們可以回過頭來再去補齊那些在前期遺漏的文件,記住,僅當確認文件能夠產生價值時,才去編寫它們。
資訊架構
這個階段在不同的團隊或專案中會有很多不同的名字,比如概要設計、業務建模等等,而我最喜歡資訊架構這個名字,因為在這個階段,我們所要做的就是對不同緯度和粒度的資訊進行抽象、規劃、設計,來支撐整個網站的資訊體系。我曾經歷過很多不同的資訊架構方法論,從最初基於模組的設計,到後來的領域驅動設計(DDD)、面向服務的設計(SOA),Oracle的基於資料建模驅動的設計,再到最新的微服務架構設計 等等。我想說,這些方法論大多是針對那些大規模應用而言的,你需要了解它們,並有意識地在你的系統設計中去匹配這些優秀的架構和設計思想,這有利於你做出可擴充套件性良好的系統,從而避免因整個系統複雜度與規模的擴大而導致的大規模重構風險。
對於我們這個小站來說,我們只需要先定義出合適的業務領域和實體模型,這裡,我們定義出以下三個業務實體,併為這些實體新增所需要的欄位。
User-使用者
Resource-資源
Feedback-使用者反饋。
圍繞著這三個領域模型,我們再定義出三個服務,併為它們增加相應的方法:
UserService-使用者服務 ResourceService-資源服務 FeedbackService-使用者反饋服務。
資訊架構階段完成後,我們已經對整個網站有了一個全面的檢視,下一步,我們就可以進入UI設計階段了。
年!