一名合格前端工程師的進階指南

一名合格前端工程師的進階指南

本文作者王超,現任快狗打車(原58速運)前端負責人。先後任職於人人網、奇虎360,8 年互聯網大廠工作經驗。

從 0 到 1 組建了快狗前端團隊,負責團隊技術體系的搭建,形成了以 Webpack 和 Vue 為基礎、 Node.js 中間層為補充的,自動化、工程化、組件化的快狗前端技術體系。

本文將以王超的親身經歷講述,為什麼工程化是前端 leader 的必修課

一名合格前端工程師的進階指南前端工程化是現代前端的必備技能

Web 前端這幾年進化速度之快讓人咂舌,很多前端工程師都不禁吐槽“學不動了”。

如今已經不是 HTML、CSS、JS 前端三劍客仗劍走天下的時代了。

以我的親身經歷舉例。我在 2011 年左右進入前端領域,當時工作的主要內容是,將設計稿切圖轉成靜態頁面,然後用 jQuery 插件實現一些頁面的輪播圖、跑馬燈等交互效果。

最後使用後端的模板語言如 Smart、Velocity 等將靜態頁面添加頁面邏輯,代碼交給服務端同學完成上線。整個過程中,JS 框架以 jQuery 為主,CSS 頂多用一下 Less。

再來看一下如今的前端工作方式,以我所在的快狗打車前端團隊為例進行說明。前端的開發框架以 Vue 為主,使用 Webpack 解決接口 mock、代碼檢查、代碼編譯、構建、壓縮、添加版本號、部署等全流程的工作。

涉及到的技術點有 Vue、Vuex、ESlint、stylelint、Mock、Webpack、Sass、PostCSS 等。對前端的要求相比幾年前已經從單純的 JS、CSS 問題變成了更多工程化為主的問題。

前端工程化是一個很大的話題,甚至到現在都沒有一個準確的定義。我個人對前端工程化的理解是:“一切能提升前端開發效率,提高前端應用質量的手段和工具都是前端工程化。”(原文句子參見我的課程內容)


一名合格前端工程師的進階指南前端工程化解決哪些問題?

在前端領域越來越繁榮,越來越複雜的今天,學習前端工程化又能給我們帶來哪些好處呢?

1. 極大提升開發效率

前端工程化的演進可以極大地提升開發效率。前端發展到現在,社區湧現出大量的優秀框架和工具,得以將前端工程師從繁重的工作中解脫出來。

舉個例子,同樣地給一個 dom 元素綁定一個 click 事件,使用純 JS 可能這樣做:

一名合格前端工程師的進階指南

我們引入 jQuery 的情況下,就簡單了許多:

一名合格前端工程師的進階指南

如果在 Vue 中,既簡單又清晰:

一名合格前端工程師的進階指南

如果有大量的事件綁定,卻沒有開發工具的支撐,將有大量重複的代碼需要寫,想想就頭疼,其效率之低可見一斑。

2. 降低大型項目的開發難度

首先前端工程化中提倡模塊化、組件化。

模塊化的思想將大型項目的功能進行分解,分拆成一個個獨立的模塊。每個模塊的開發難度直線下降。同時基於版本控制工具 Git,多個開發者可以並行開發,提升開發效率。項目在後期迭代的時候,由於每個模塊相對獨立,耦合性極低,一個功能的調整往往只需要修改其中的一個模塊就可以,風險可控。不至於出現改動一處代碼,引發全局問題的情況。

其次,前端工程化提倡用完善的流程規範和代碼規範來保證大型應用的質量和可維護性。

比如通過 ESlint、stylelint 對代碼進行自動校驗,通過評審、詳細設計、開發、聯調、測試、上線等每個環節的控制,確保項目的高質量和按時交付。向主分支合併代碼必須經過 code review。流程規範確保了大型項目質量和可維護性的同時能夠如期交付。

所以,應用前端工程化的項目,往往能夠更好地規避風險,分散流程壓力,降低開發難度。

3. 更易獲得面試官青睞

前端的崗位技能已經發生深刻的變化。有人甚至戲言成前端工程師為前端配置工程師。

fouber(張雲龍)曾經在自己的博文中說:“前端是一種技術問題較少、工程問題較多的軟件開發領域。”

依稀記得六七年前的前端面試題大概是這種風格:“如何實現水平垂直居中?”“js 事件委託的原理是什麼?”“常見的 css hack 方式有什麼?”,“$(function{}) 與 window.onload 有什麼區別?”

而今天遇到的面試題大概是這種風格:“能講下 Vue 實現雙向數據綁定的原理嗎?”,“Webpack 中如何配置 Babel?”,“promise 和 await/async 的區別是什麼?”

面試問題關注的層次已經有了很大差別。

如果想進入大公司工作,前端工程化更是需要具備的基本素質。大公司的業務往往非常複雜,而且對穩定性的要求極高。與之相對應的前端工程化程度很高,各種配套的基礎建設很成熟。

比如美團點評體系化的工程化方案、移動組件庫 Vix、自動化測試工具 Freekite、Hybrid 功能體驗的解決方案 Titans 等。

想得到大公司的青睞,候選人需要在前端工程化領域有較深的積累。

一名合格前端工程師的進階指南誰需要前端工程化?

初中級前端工程師

初級中級前端工程師工作經驗較少,技術的寬度和廣度都不足,一上來整體掌握前端工程化肯定是有困難的。所以對於這部分同學來講,首要的事情要學會去“用”,循序漸進地去了解其中的原理。

例如在開發之餘,自己學一學如何實現一個簡單的腳手架工具,瞭解一下日常開發必備的腳手架是如何實現的,以點帶面地學習裡面用到的技術點。

期望晉升的前端工程師

前端工程化能力也是一個資深前端的必備技能。工作好多年了,如果連前端工程化都知之甚少,甚至連一個基本的腳手架都不能自己搭建,怎麼能帶領團隊呢?如果去參加公司的晉升,也是沒有說服力的。

想要晉升高 T,必然需要在效率和性能優化等方面有深厚的積累和貢獻。

所以,無論你是處在什麼階段,深入瞭解一下前端工程化都是極有必要的。

很多開發者由於本身入行較短,或者很多工作多年的開發者由於公司業務的原因,沒有機會接觸到前端工程化領域。

對這些不瞭解前端工程化、或者想要加深瞭解前端工程化的讀者,我特別設計了一個課程《透視前端工程化》

課程內容以 Vue 入手(其他框架可對應調整),結合我在團隊中的工程化實踐,帶領大家從零開始搭建一個腳手架,將搭建腳手架用到的技術點逐一拆解,大家看完後,可以對腳手架和工程化思想有個較深入的理解。

相信在學完本課程後,大家至少有以下幾點收穫:

  • 對前端工程化有一個系統認知,且前端知識廣度上有大幅提升;

  • 能獨立設計一套前端工程化解決方案,可直接應用於實際業務;

  • 幫助面試和級別提升,進入更好的平臺,獲得更好的薪酬。

一名合格前端工程師的進階指南

對了,我還為購買這個課程的讀者設置了答疑交流的微信群,大家可以在課程第 03 課內容中獲取到入群方式。

相關推薦

推薦中...