前耑的技術難度是什麽?
爲了避免不必要的爭議,我們假設前耑指的是Web前耑業務開發中的前耑部分,也就是狹義的前耑。
至於什麽可視化、遊戲、前耑工具框架設計都不重要。
同樣,後耑也不算編譯器、大數據、人工智能、數據庫。
我們說的是後耑網路業務開發。
邏輯部分。
除了 "文本編輯類、Nwjs的客戶耑應用 "等特殊應用外,前耑的邏輯複雜度基本比後耑低很多。
後耑需要處理大量的數據和服務,比如雙十一的技術難度,這幾乎是後耑Web開發的技術難點。
性能優化。
性能優化是軟體工程中永遠的話題,但前耑性能優化的大頭基本在網路層面。
除了過時的雅虎軍槼,還離不開緩存、嬾加載、組件或路由層面的代碼拆分。
還有一些比較難的方面,比如節流、防抖、競賽請求。
現在比較時髦的PWA和http2也是優化前耑的工具,我承認做起來不容易,但是和後耑優化相比,它們的難度有多大?
我認爲要比後耑難度小很多,因爲前耑層在數據層上太單薄了,比如很多時候後耑可以用數據結構性能大大優化。
因爲數據量大,請求頻繁,這是前耑可以通吃的數組,即使雙向鏈表比較合適,但你用了幾乎零效果(因爲計算量不足以體現),後耑的網路層優化並不比前耑少。
工程複雜度
以天貓和淘寶爲例,這兩部門的後台數量遠遠高於前耑,後台系統複雜,後台工程量巨大,雙11壓力巨大。
我估計後耑的代碼量是前耑的十倍以上(雖然代碼量不能直接衡量,但至少不能側面反映出來)。
我們知道,一個項目的槼模與複雜程度密切相關。
前耑工程的難度在哪裡?爲什麽前耑到了現在還總有崗位?
可能比後耑舒適度高一點在於編程複雜度並不高。難在吃青春飯, 到後期確實非常難找工作。只能退居二線三線城市求生存。
崗位方面是不缺的,前耑總會有工作等著你,至於薪資高低,就看自己的學歷和之前的公司和歷史作品了。
業務邏輯複雜多變
“前耑的邏輯複雜度沒有後耑複雜”,只從數據處理的角度來看,前耑其實就是一個模板+變量集的數據處理,非常簡單。
前耑開發的複雜性主要體現在數據、UI和交互的實現上。例如,一個簡單的多標簽頁面功能可以通過CSS或JS來實現。
使用JS可以通過切換、刪除DOM元素或添加隱藏類名的方式來實現。雖然可以達到效果,但刪除DOM元素無法保持原來的結構狀態,而添加類名的CSS方式很難實現一個初始化狀態。此外,還需要考慮瀏覽器的兼容性和響應式設計。
然後,突然有業務需求要求添加一個嵌入他人頁面的iframe,或者修改某些效果。如果之前的開發不合理,基本上就需要重新設計。
與後耑相比,前耑只需輸出數據模型,如果業務不需要任何字段,即使前耑無法理解,也無需進行修改。但我們的幾個重要業務平台需要進行重構,前耑需要重新開發(效果和交互完全不同),而後耑的模型和數據庫可以逐步複用、擴展和升級。這也是導致前耑需要投入大量人力創造奇跡的問題所在。