前端工程化是近幾年比較熱門的一個東西,大大小小的團隊也在朝著這一方向發展,那麼你的團隊做了多少呢?
前端發展簡史
- 石期時代
最初的前端頁面都是一些靜態頁面,人們看到的網頁就像報紙一樣。
- 青銅時代
後端為主的時代,往往頁面都是後端利用一些模版引擎來完成頁面;對於有大量頁面的專案,前端在寫頁面需要構造一定的環境,比如jsp,php等。
- 鐵器時代
隨著ajax的誕生,瀏覽器可以主動從服務端拉取資料,前後端分離的時代到來,SPA應運而生,前端可以處理一些複雜的互動、業務邏輯。
- 工業時代
隨著前端扮演的角色越來越重要,各種SPA框架層出不窮;nodejs的活躍也為前端帶來了更有利開發方式以及更多的發展方向。
前端工程化需要做哪些?
- 程式碼管理工具
目前來看大多數都是git/svn,當然還是推薦使用git,好處自然不用說。
- 專案建立、開發、釋出
專案建立包含了技術選型,目錄結構設計,模組化等。開發中可能會遇到頁面適配、樣式預處理以及開發便捷性。釋出涉及到了程式碼打包、釋出到伺服器,你可能還會做一些打包優化等等。
- 前端自動化工具
對於前端工具這個就很繁雜了,比如圖片壓縮、開啟本地服務代理等等。
當然前端工程化遠不止於此,還有單元測試、規範制定等,本文主要梳理開發中最常見的幾個環節,看看大家目前的狀態是什麼樣子的?有哪些可以做改進。畢竟茹毛飲血不是我們想要的!
在前端開發中“你”是怎麼做的?
-
專案建立
開發一個專案,首先要建立專案,大概收集了幾種方式
- copy後修改一下。
- git clone -> npm install -> npm start(克隆自己的空專案開發)。
- 使用框架官方腳手架(vue-cli, Angular-cli,create-react-app),然後再改改。
- 有自己的腳手架構建器,統一管理(一般是有大牛發力)。 對於前端專案,我們需要做的有很多,比如要適配各種移動端機型,要相容低版本,想用sass/less,還想用es6甚至是ts,對自己嚴格要求加個eslint等等,如果你還處於1,2,3情況,那麼這些東西每次開發新專案都要重新來一遍,如果你很熟練,可能個把小時就弄好了,否則可能建立專案就要半天。
-
專案構建
專案構建目前來說基本都是使用webpack,但是其複雜的配置、版本迭代速度讓很多開發望而生畏,甚至誕生處理webpack配置工程師(有這個的真牛批?)。 但是我們依然需要開發構建和打包構建能提供一些能裡,比如開發熱更新,各種預處理,結合效能優化所需要的一些配置(雪碧圖,程式碼分割,壓縮,cdn),多頁配置,當專案很大的時候我們還需要優化構建速度。突然發現開發完業務功能還有一堆的事情要做,如果沒有相關經驗積累真是頭大。
-
前端工具 nodejs的盛行給前端開發帶來了更多的便捷,各種npm包,node工具。對於工具這一塊TJ大神寫的 commander.js讓我們更加便捷的開發命令式工具,常見的腳手架初始化、程式碼轉化等,真的算是一個神器了。 但是,不得不說,開發還是有一定的技術要求的,註冊命令就要寫一堆東西,還有引數解析;而且如果我們有多個工具,直接這麼來寫是很不方便管理的,比如我想檢視有哪些是我們自己開發的命令。
適合自己的工作流
上面僅僅是介紹了關於專案開發中的問題,隨著前端重要性越來越大,工作量也是與日俱增,而前端工程化正是幫助我們優化流程、減少工作量,因此擁有自己的前端工作流勢在必行。 講了這麼多,給大家推薦一個不錯的前端工作流工具feflow,利用這個工具,從建立專案到業務開發,再到打包釋出,涵蓋了整個完整的工作流程。
- 腳手架和構建器 官方有給出react+redux的腳手架以及基於webpack4的構建器,而且還可以根據官方文件自定義自己的腳手架和構建器,對於不同的框架和業務都可以完美的接入。
- 外掛體系 此外feflow還提供了豐富的外掛體系,你可以自定義各種外掛,通過feflow 命令來呼叫:
feflow.cmd.register('add', '加法運算器', function(args) {
add(args._);
});
function add (args) {
const sum = args.reduce((sum, item) => {
return sum + item
}, 0)
console.log(sum)
return sum
}
複製程式碼
# 呼叫
feflow add 1 2 3
# 輸出
6
複製程式碼
是不是很簡單,並且命令都是可控的(feflow 控制下)。
結語
不管用什麼工具方法,目的都是為了優化工作流程,讓我們輕鬆高效的完成工作。最後附上feflow官網http://www.feflowjs.org/。