前端工程化知識要點回顧 思考

2021-09-19 14:10:02 字數 2094 閱讀 5822

原文:

軟體工程是一門研究用工程化方法構建和維護有效的、實用的和高質量的軟體的學科。

從本質上講,所有web應用都是一種執行在網頁瀏覽器中的軟體,這些軟體的圖形使用者介面(graphical user inte***ce,簡稱gui)即為前端。

前端又不同於傳統的客戶端軟體/後端,因為前端應用具備「免安裝」、「增量安裝」等特性。也「得益」於這些特性,前端應用會遭遇客戶端應用不可能碰到的資源管理問題,這也是前端最容易引起工程問題的點。

開發規範

模組化開發

元件化開發

元件倉庫

效能優化

專案部署

開發流程

開發工具

1-3是技術業務相關的開發需求,4是技術沉澱及共享需求,5-8是工程優化需求

大部分時候我們談的「工程化」其實只是「工具化」。

每乙個單獨的點或許都比較容易實現,但是把這8條串聯起來則是乙個很大的挑戰,而且這8個點相互之間又互有聯絡

前端在第1、2階段耗費了十多年的時間,然後近幾年才井噴式的爆發

由於整個生態的發展緩慢、門欄低、構建應用成本低,前端開發長時間停留在刀耕火種、茹毛飲血的階段

前端不同於 客戶端/後端 的特性(比如增量安裝),導致遭遇的工程會很特殊,很難直接從別的領域套用已有的解決方案

我們自己完全意識不到那是問題?

合理的開發流程及開發規範,包括**規範、模組化元件化規範(分治)等(提高生產力)

一套自動化**質量檢測方案(提高系統可靠性)

一套自動化及高度適應性的專案 發布/部署 方案(提高系統的伸縮性及靈活性)

極致的效能優化,包括減少冗餘的介面請求及資源請求、提高快取命中率等,簡言之就是站點的開啟及執行速度(更好的使用者體驗)

舉三個案例:

最基本的資源合併,我們應該採取哪種策略?全部打包成乙個還是分開打包?如何最高效的利用快取?如何在降低請求數的同時提高快取利用率?移動終端又應該採取哪種策略?

發布的時候我們到底是應該先部署頁面還是靜態資源?如何實現平滑公升級?如果我還想玩個灰度發布呢?

如果採用模組化按需載入的方式開發,每次發布資源檔案都會有不同的md5值,如何在不影響開發體驗的前提下確保能引用到正確的模組?

構建工具 gulp

task-based的方式使得gulp無法(難以)處理資源巢狀的遞迴場景。如 a.js -> b.scss -> md5(d.img) -> md5(b.scss) -> md5(a.js)

基於 資源表+資源管理框架 策略的 fis

其實已經能處理大部分場景了,但是侵入式**實在是無法接受。因為它是乙個框架。

靜態分析工具 webpack

webpack依賴其可配置的loader使其擁有強大的打包能力,但是依然無法實現動態按需載入的需求。類似:

es6 module提供了乙個原生的模組化語法,es6 module loader則能提供乙個原生的模組載入器。對於前端工程而言,資源管理是最核心的問題,而資源管理中載入又是重點更是難點。

可是es6 module loader從es6草案中移除了現在由whatwg組織還在維護制定標準,pending狀態。。

現在有乙個基於這個草案實現的api polyfill module loader。可是你不是規範我這種教條主義者是不會用的?

前端工程化相關問題是隨著前端的發展越來越受到重視的問題,一套好的工程化解決方案能在提高開發效率(包括**編寫的舒適度及多人協作)的同時確保整個系統的伸縮性(各種不同的部署環境)及健壯性(安全),同時在效能上又能有乙個很優異的表現(主要上各種快取策略載入策略等),而且這套方案又應該是對工程師無感知(或感知很小)趨於自動化的一套方案。總之,要達到這個目的前端工程化還有很長一段路要走。

國內工程化第一人系列文章

大公司是如何部署前端**的

相關工具

uc:scrat

前端工程化要點梳理

現在的前端開發已經不是寫幾個頁面,加上些 css js,直接放到伺服器上就行了。前端已經發展出了一套完整的工程體系,現梳理其要點成此文。壓縮,混淆 打包,按需載入 icon 等資源優化 版本號 熱更新js 編譯 ts es6 jsx 等 css 預處理 postcss less scss css m...

前端工程化

為什麼出現了前端工程化?09年之前,我們學習的css,div,js只是對頁面設計進行乙個打輔助的功能,當時只能勉強的成為頁面設計師,為什麼會出現前端工程師 1.突然間前端的需求逐漸增多,使用者對介面的要求越來越高,前端範疇越來越大。2.前後端總是保持一致才能進行開發,不能分開開發,提出前端工程化,也...

前端工程化

一 什麼是前端工程化 根據業務特點,將前端開發流程規範化 標準化 包括開發流程 技術選型,規範,構建發布等用於提公升前端工程師開發效率和 質量,提高產品的質量。實現前端工程化的目的 就是通過流程規範 自動化工具來提公升前端的開發效率 效能 質量 多人協作能力以及開發體驗。前端工程化體系分為 元件化 ...