身爲前端,不該該只會作網頁。應該時刻對產品保持深入的思考:這個產品的價值是什麼?它是如何帶來收益的?如何更好地知足需求、實現其價值?在這篇文章我將分享一些個人思考,以應用的類型來分類討論。前端
好比論壇、博客平臺、微博、新聞門戶、信息展現平臺(如58同城、大衆點評)。發佈者能夠是管理員、商戶、普通用戶。git
業務上,產品的目標是促進雙方溝通和互動(好比58同城鏈接買賣雙方、大衆點評鏈接消費者和消費者)。分類、搜索、推薦、SEO對於業務有很重要的做用,產品應該不遺餘力地將用戶引導到最有價值的內容上。程序員
服務端主要負責存儲,前端負責展現。先後端的交互相對比較簡單,主要是提交和獲取數據。
在這種應用中,最重要的頁面應該就是首頁、列表頁和詳情頁了。
對於首頁,一個很重要的特性是:不一樣用戶看到的首頁應該是不同的,首頁應該針對具體用戶展現個性化的數據。即便沒有能力用機器學習來作推薦信息流,至少也應該容許用戶選擇本身感興趣的內容、容許用戶將常常訪問的專欄放在首頁,將用戶最快地引導到最有價值的內容。
對於列表頁,應該作好內容分類、過濾、檢索。在這方面能夠學習leetcode:
github
嚴格來說leetcode不屬於這裏講的發佈/展現型應用,它的主要賣點在於在線評測。不過,好的UI設計理念是通用的。
另外要注意,好的UI設計應該是有本身的風格的,或緊湊務實,或簡潔大方,或特立獨行,考慮用戶羣體和應用的定位之後再作決定。
對於詳情頁,須要具體分析。作好SEO每每有很大的幫助,利用用戶發佈的內容吸引更多的用戶。另外,在主要內容的結尾展現一個」相關推薦「也是一個好主意,引導用戶瀏覽更多的內容。若是對於業務有幫助,能夠考慮加入更多的多媒體形式,好比視頻、圖片、更多的文本格式(富文本)。編程
這種應用複雜性相對較低,開發人員不會不少,協做成本比較低,所以作好代碼複用是一個基本要求,這有助於最大化開發效率,併爲後續迭代下降工做量。
加載性能對於這種應用也很是重要,前端應該投入更多精力。在性能優化上我會專門寫後續文章,讀者能夠先參考awesome-learning-resources中的資料。
能夠看出,在發佈/展現型應用中,前端要解決的問題主要是代碼上的問題(UI優化、性能優化、代碼複用)。後端
好比淘寶、美團外賣、滴滴打車、企業內部採購平臺。大部分業務流程都是交易流程、事務處理流程。性能優化
將業務流程搬到線上,其意義包括:架構
業務流程中涉及到的信息交流應該所有在線完成(好比填寫/審批申請單)。若是業務流程有不可避免的線下操做、系統外部操做(好比收/發快遞),那麼系統也應該接入相關外部服務(好比快遞、銀行),對這些操做提供記錄和追蹤的功能,保證系統能參與到、影響到業務流程中的每個方面。併發
整個系統須要不少開發人員來共同完成,分別負責各自的業務流程。而且不一樣的業務流程之間可能須要共享數據、互調接口。這大大增長了開發人員的溝通協做成本。爲了下降它,能夠經過如下手段:框架
作好模塊化管理和先後端分層,解耦不一樣層的工做。分層的好處以下:
若是用戶量很大,還會對系統的性能提出更高的要求。根據業務特徵,進行如下優化:
能夠看出,在業務流程在線化這種類型的應用中,開發者要解決的問題主要是人的問題(管理的問題)和系統效率的問題。前端不能侷限於用框架寫頁面,更要從工程師的角度來優化開發流程和系統效率。不只要關注軟件最終的運行結果,更要關注開發流程建設、團隊建設、基礎設施建設、系統架構建設。
好比系統控制平臺、運營平臺、leetcode。
這種產品的業務邏輯比較簡單。用戶使用它們的目的,主要是委託系統(主要是後端)完成某種操做/計算,這個操做的結果可以知足用戶。
好比用戶經過系統控制平臺來修改其餘系統的配置和行爲。有一些控制平臺還擁有監控的功能,後端會持續收集某個系統個各個指標,前端對這些指標進行可視化展現。
又好比用戶經過使用leetcode,讓後端運行評測,從而檢驗本身答案的正確性(leetcode的主要部分就是發佈/展現平臺+評測系統)。
技術上的主要難點在於如何進行模塊劃分,爲其餘開發者、用戶提供簡單的抽象(思惟模型)。
一個好的抽象的例子:一個控制系統用來管理上萬臺機器(節點)的運營。系統將這些節點按照樹狀結構組織起來,就像文件系統同樣:同一個機房的節點用一個文件夾(大節點)組織起來,同一個城市的節點用一個文件夾(大節點)組織起來。而後,提供一幅世界地圖,每一個城市節點在其中標註出來。經過UI或腳本,能夠批量選擇、批量操做節點。
前端上,若是須要展現的數據(操做的結果),還須要將數據充分可視化。提升用戶高效操做(大批量)數據的能力。
後端的技術特色取決於它爲用戶完成什麼樣的操做。後端的API應該提供比較合理的抽象和封裝。
注意,這些產品分類不是互斥的,有可能一個產品在某個功能上像A,在另外一個功能上像B。咱們應該學會分析產品的方法,而不是套用現有案例。
你的產品是什麼樣的?這個產品的價值是什麼?它是如何更好地知足用戶需求、實現其價值的?歡迎與我分享!