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

来源:https://www.cnblogs.com/TT485480/archive/2020/04/09/12665314.html
-Advertisement-
Play Games

一、前端工程化是現代前端的必備技能 Web 前端這幾年進化速度之快讓人咂舌,很多前端工程師都不禁吐槽“學不動了”。 如今已經不是 HTML、CSS、JS 前端三劍客仗劍走天下的時代了。 以親身經歷舉例, 2011 年左右進入前端領域,當時工作的主要內容是,將設計稿切圖轉成靜態頁面,然後用 jQuer ...


一、前端工程化是現代前端的必備技能

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,必然需要在效率和性能優化等方面有深厚的積累和貢獻。

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

我目前是在職前端開發,如果你現在也想學習前端開發技術, 在入門學習前端的過程當中有遇見任何關於學習方法,學習路線,學習效率等方面的問題, 你都可以申請加入我的前端學習交流裙:前面:600 中間:610 最後:151。裡面聚集了一些正在自學前端的初學者, 裙文件裡面也有我做前端技術這段時間整理的一些前端學習手冊,前端面試題, 前端開發工具,PDF文檔書籍教程,需要的話都可以自行來獲取下載。


您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • 事先聲明:本文由初學者撰寫,為一次探索的過程,可能有不嚴謹和準確的地方,望讀者多多諒解並積極指正! 場景描述: 在一次前端開發過程中,我使用了一個網頁模板,該模板包含一個主頁和四個子頁面,如下圖: 具體的效果是,點擊主頁中的一個按鈕會在彈框內顯示子頁面的內容,如下圖: 具體的實現是在主頁面中留出面板 ...
  • 百度了下關於力軟敏捷框架 jfGrid的教程,基本沒有,出來的全是jqGrid。好吧看來只能自己上手了 今天來講講列設置屬性里數據格式化事件(formatter)的使用 常規的使用方式如上圖所示。 先來說說各個參數的意思: cellvalue 當前單元格的數據值,也就是你賦的值是什麼就是什麼。 ro ...
  • 目錄 非同步編程樣例 樣例解析 淺談Promise如何實現非同步執行 參考 1.非同步編程樣例 樣例: 執行結果: 2.樣例解析 在樣例代碼中, 非同步函數使用了 和`await Generator Promise async await Generator Promise`實現。 第一步:先將 和`awa ...
  • 高度坍塌:浮動元素佈局導致的問題 高度坍塌的根源:浮動盒子脫離了常規流,因此常規流盒子進行高度計算時,不會考慮浮動盒子的高度。 <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <meta name="viewport" c ...
  • 上接 ES6 - 基礎學習(3): 變數的解構賦值 函數參數的解構賦值 1、基本用法 function add([x, y]) { return x + y; } console.log(add([1, 2])); // 3 // 如上面代碼所示,函數add的形參錶面是一個數組,但在實參參數傳入時, ...
  • Web前端開發入行門檻低,是很多人轉行的首選。但依然有一些想轉行學習Web前端的人在徘徊、猶豫,怕學不好前端,更因為是零基礎不知道如何入手。下麵,我就給大家介紹一下學習Web前端開發難嗎?都要學習哪些內容? 根據市面上企業需求和大部分學員的基礎,主要學習一下內容: 1、前端頁面重構。主要內容為PC端 ...
  • 使用float實現文字環繞圖片代碼: <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <meta name="viewport" content="width=device-width, initial-scale=1.0 ...
  • 需求:有一個圖片列表,我想要在圖片onload成功之後獲取載入成功的圖片列表,圖片資源載入為非同步,我們使用ES7的async await方式實現,多張圖片,是用for迴圈。 註意:圖片載入失敗一定要加監聽,await只有在有返回之後才會繼續向下執行,無論成功與失敗,否則第一張圖載入失敗,下麵的awa ...
一周排行
    -Advertisement-
    Play Games
  • 移動開發(一):使用.NET MAUI開發第一個安卓APP 對於工作多年的C#程式員來說,近來想嘗試開發一款安卓APP,考慮了很久最終選擇使用.NET MAUI這個微軟官方的框架來嘗試體驗開發安卓APP,畢竟是使用Visual Studio開發工具,使用起來也比較的順手,結合微軟官方的教程進行了安卓 ...
  • 前言 QuestPDF 是一個開源 .NET 庫,用於生成 PDF 文檔。使用了C# Fluent API方式可簡化開發、減少錯誤並提高工作效率。利用它可以輕鬆生成 PDF 報告、發票、導出文件等。 項目介紹 QuestPDF 是一個革命性的開源 .NET 庫,它徹底改變了我們生成 PDF 文檔的方 ...
  • 項目地址 項目後端地址: https://github.com/ZyPLJ/ZYTteeHole 項目前端頁面地址: ZyPLJ/TreeHoleVue (github.com) https://github.com/ZyPLJ/TreeHoleVue 目前項目測試訪問地址: http://tree ...
  • 話不多說,直接開乾 一.下載 1.官方鏈接下載: https://www.microsoft.com/zh-cn/sql-server/sql-server-downloads 2.在下載目錄中找到下麵這個小的安裝包 SQL2022-SSEI-Dev.exe,運行開始下載SQL server; 二. ...
  • 前言 隨著物聯網(IoT)技術的迅猛發展,MQTT(消息隊列遙測傳輸)協議憑藉其輕量級和高效性,已成為眾多物聯網應用的首選通信標準。 MQTTnet 作為一個高性能的 .NET 開源庫,為 .NET 平臺上的 MQTT 客戶端與伺服器開發提供了強大的支持。 本文將全面介紹 MQTTnet 的核心功能 ...
  • Serilog支持多種接收器用於日誌存儲,增強器用於添加屬性,LogContext管理動態屬性,支持多種輸出格式包括純文本、JSON及ExpressionTemplate。還提供了自定義格式化選項,適用於不同需求。 ...
  • 目錄簡介獲取 HTML 文檔解析 HTML 文檔測試參考文章 簡介 動態內容網站使用 JavaScript 腳本動態檢索和渲染數據,爬取信息時需要模擬瀏覽器行為,否則獲取到的源碼基本是空的。 本文使用的爬取步驟如下: 使用 Selenium 獲取渲染後的 HTML 文檔 使用 HtmlAgility ...
  • 1.前言 什麼是熱更新 游戲或者軟體更新時,無需重新下載客戶端進行安裝,而是在應用程式啟動的情況下,在內部進行資源或者代碼更新 Unity目前常用熱更新解決方案 HybridCLR,Xlua,ILRuntime等 Unity目前常用資源管理解決方案 AssetBundles,Addressable, ...
  • 本文章主要是在C# ASP.NET Core Web API框架實現向手機發送驗證碼簡訊功能。這裡我選擇是一個互億無線簡訊驗證碼平臺,其實像阿裡雲,騰訊雲上面也可以。 首先我們先去 互億無線 https://www.ihuyi.com/api/sms.html 去註冊一個賬號 註冊完成賬號後,它會送 ...
  • 通過以下方式可以高效,並保證數據同步的可靠性 1.API設計 使用RESTful設計,確保API端點明確,並使用適當的HTTP方法(如POST用於創建,PUT用於更新)。 設計清晰的請求和響應模型,以確保客戶端能夠理解預期格式。 2.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...