做者: @gauseen
前端技術飛速發展,各類技術層出不窮,不再是隻會 切圖 + jQuery + CSS 就能夠行走天下的時代。
隨之帶來的就是 web 應用的複雜度愈來愈高,出現問題的機率也越大。javascript
如何解決多人協同高效開發?如何保證項目可維護性?如何高質量交付任務?成爲每一個前端開發工程師值得思考的一個問題。css
爲解決上面的問題,大佬們引入了前端工程化這個概念。html
將前端開發流程,規範化、標準化、自動化。前端
項目腳手架能夠在新建立一個項目時,簡單敲幾行命令就能夠生成初始化代碼,直接進行頁面級開發。讓開發更加專一於業務邏輯層,而不是各類配置項。vue
如 vue-cli 腳手架,就能夠一鍵式快速構建 Vue.js
應用開發環境。java
我也開發了一個很方便學習的腳手架 feseed-cli,目前支持的模板源碼在這裏查看。
這樣就能夠根據公司業務抽離出來一個基礎項目模板,當須要啓動新項目時,直接敲幾行命令就能夠啦,提升開發效率,統一了公司前端項目技術棧,開發規範等。node
任何重複有規律的編碼,均可以用程序方來解決。構建工具大大提升了開發效率,解放了重複勞動力,如:壓縮、打包、單元測試等操做,加強了前端開發的可玩性。react
構建工具在前端工程化中,像是扮演一個「管理者」的角色。工程化中一系列的規範化、標準化、自動化都須要配合構建工具來實現。webpack
經常使用的構建工具,以下:git
v4.0
支持零配置),經常使用於 Web 應用開發CommonJS、AMD、CMD
。經常使用於工具庫開發task runners
)的流式(stream)構建系統,與 grunt 功能相似,特色是用流式編寫任務代碼,gulp 的流實現,每一個任務能夠並行運行,這使它比 grunt 快不少task runners
)構建工具,grunt 中的每一個任務都是一系列不一樣的插件配置,這些插件以必定順序一個接一個的執行require('modules')
語法的打包工具,就像在 node 環境引用資源同樣ES6
以前沒有模塊(module
)系統,這使得 js 大型應用沒法拆分出小的 module
,很不方便開發和維護。如:nodejs 中可使用 require('module')
爲了解決這個問題,大牛們定製了一些模塊化方案,大致可分爲如下幾種:
AMD(Asynchronous Module Definition):異步模塊定義,依賴前置
CMD(Common Module Definition):通用模塊定義,惰性執行,依賴後置
在 ES6
內置支持 ESM(ECMAScript Module) 模塊系統,有以下特色:
每一個人的代碼風格都不相同,雖然咱們提倡多樣性,可是在一個團隊中,同個項目有不一樣代碼風格,那即是一種災難。
不利於項目後期維護,新人熟悉項目成本高
因此,咱們須要一塊兒討論,根據每一個人開發習慣,制定統一的代碼開發規範
規範有 2 大類
vue
、react
),規定的一些開發規範在使用 vue-cli
腳手架初始化項目時,會有相關 js 規範配置選擇,這裏我比較推薦 standard 規範。
由於 standard 規範有比較好的一個特色,無須配置,史上最便捷的統一代碼風格的方式。
這樣能夠爲團隊節省不少制定規範所浪費的時間,讓開發沒必要糾結於代碼規範,把精力放在代碼設計、開發上。
固然啦,蘿蔔白菜各有所愛,還有不少大公司所推出的規範也可使用,如:Airbnb JavaScript Style Guide、騰訊 Alloyteam 代碼規範 等。
爲了更具體的展現如何配合 git 鉤子,強制規定代碼規範,我寫了 用 git 鉤子, 檢測 js 代碼規範性(eslint、standard) 文章,具體講解了,如何在項目中從零配置 js 規範。
咱們對特定框架(vue.js
)的編碼規範也參考了不少規範文章,作了許多討論。從目錄規範到具體開發細節都有了明確規定,具體可看這裏
Git 是個很好用的代碼版本控制工具。在團隊協做時,也衍生出一些使用規範,幫助咱們提升開發效率、質量。
爲何要保證項目分支圖的簡潔性?
咱們要達到的目標是,任何一個新人,當看到項目提交記錄分支圖時,就能知道這個項目的迭代大體過程,有助於項目理解和管理。
分支圖簡潔的重要性,對好比下:
以下圖,提交分支圖錯綜複雜,根本看不出有意義的信息
以下圖,分支圖很是簡潔,可讀性高,能夠清晰的知道代碼提交歷史,方便回退等操做
如何作到提交信息分支圖的簡潔性?
branch
,多個開發人可在同一個分支開發,提交前,先用 git pull --rebase
,而後再 git push
推到遠程。解惑 git rebase git push -f
master
分支,並在最新 commit
處,新建 tag
,用於標記當前應用版本master
分支,新建 hotfix-xxx
分支去處理 Bug爲何要約定統一的提交消息(Commit Message)?
若是每一個開發人員都按照本身的意願去提交消息,那麼整個項目的提交歷史將會很難分辨提交了哪方面的內容。還有見到提交信息是 123456 !!
因此,咱們須要 Commit Message 規範來限制開發人員提交信息的多樣性,來提升 Git Commit Message 的可讀性。
規範也有不少種,這裏比較推薦 conventional-changelog/commitlint 規範,不少知名項目也使用了該規範。
先後端分離式開發已經很常見了,爲了提升開發效率,先後端並行開發,mock
數據(造假數據) 已是個不可避免的問題。 對前端來講 mock
數據的方式有不少種:
Mock.js 模擬數據生成器
mock
數據代碼,比較麻煩mock
代碼,複用率底GUI
可視化界面,不方便後端開發查看接口、字段等 api
信息easy-mock 是一個可視化,而且能快速生成模擬數據的持久化服務
swagger
,可基於 swagger
快速建立項目接口Mock.js
語法RAP 和 RAP2 阿里媽媽出品,開源接口管理工具 RAP
第一代和二代
Mock.js
語法swagger
數據導入,但支持 JSON
格式數據的導入導出YApi 是一個可本地部署的、打通先後端及 QA 的、可視化的接口管理平臺
Response
斷言Json5
和 Mockjs
定義接口返回數據的結構和文檔swagger、postman、json、har
數據導入以上,我比較推薦 YApi 平臺。
測試種類有不少
對於基礎模塊,如:經常使用方法工具庫,有必要作單元測試
對於穩定的核心業務,如:支付系統、營銷系統有必要作測試
對於非核心業務,功能不穩定的部分,不建議開發自動化測試用例,寫測試用例很浪費時間,有時剛寫完,需求又變了,還要從新寫測試,對人力也是一種浪費。
比較經常使用的測試工具備:
之前,發佈新版本的時候,是用手動發佈代碼的方式,效率低,出錯機率高。
如今,利用 Jenkins 實現自動化構建、測試和部署,大大提升了發佈效率,下降了出錯率。
錯誤監控工具,以下:
線上錯誤監控,是應用發佈到線上後很重要的一環,方便預警、統計、追蹤、排查、復現 Bug 等。
歡迎關注無廣告文章公衆號:學前端