精品欧美一区二区三区在线观看 _久久久久国色av免费观看性色_国产精品久久在线观看_亚洲第一综合网站_91精品又粗又猛又爽_小泽玛利亚一区二区免费_91亚洲精品国偷拍自产在线观看 _久久精品视频在线播放_美女精品久久久_欧美日韩国产成人在线

前端工程化指的是什么?

開發 開發工具
工程化,可以理解為使用一些方式,去改良然后提高行業中現有的步驟、設計、應用方式。前端工程化,就是指對前端進行一些流程的標準化,讓開發變得更有效率,且更好地做產品交付。

 大家好,我是前端西瓜哥。今天來看看前端工程化是什么。

什么是前端工程化?

工程化,可以理解為使用一些方式,去改良然后提高行業中現有的步驟、設計、應用方式。前端工程化,就是指對前端進行一些流程的標準化,讓開發變得更有效率,且更好地做產品交付。

一開始,網頁頁面并不復雜,只是提供一些簡單的展示和交互的靜態頁面,甚至不需要后端。

后來需要根據不同用戶返回不同的頁面信息,此時我們會用后端讀取數據,配合一些模板引擎,在后端拼接好內容再返回,這就是所謂的服務端渲染(SSR)。

再后來,頁面變得非常復雜,于是出現了前后端分離,前端被單獨拎了出來,專門寫 html、css 和 js,變成了 單頁面應用(SPA)。但復雜也帶來了很多問題,比如多個腳本的執行時機不對、css 名沖突、文件過于臃腫、錯誤的緩存導致沒能下載最新的資源,等前端復雜后出現的一系列問題。

隨著 Nodejs 的誕生,我們可以用 JS 去寫前端工具了。為了解決上面這些問題,前端界出現了一大堆的工具和框架:Gulp、Angular、babel、Sass、React、Vue、Webpack、Yarn、TypeScript、ESLint、Docker、k8s 等等。

一切都是為了讓前端的開發更工程化,也就是 不停地改良前端項目的開發流程,讓開發者能夠更高效地開發、更好地進行團隊協作、讓代碼的風格標準化、對資源做壓縮以及懶加載、更好地交付部署等。

(當然也因為工具過多,讓前端直呼 “學不動了”)

我們通過四個維度來談談前端工程化一些具體的細節,分別是:

  1. 模塊化
  2. 組件化
  3. 規范化
  4. 自動化

模塊化

模塊化,指的是將代碼功能做拆分,分成獨立地單能相互依賴的片段。

首先是 JS 的模塊化。

JS 一開始的職責是給網頁提供一些簡單的交互,所以語法相對簡單且不支持模塊化。隨著網頁的復雜,發現原來的組織方式帶來了很多問題,變得難以維護。

于是 CommonJS、AMD、ES Module 等模塊系統出現了。正統標準是 ES Module,通過 import 關鍵字引入模塊,通過 export 導出模塊。

JS 的模塊化將代碼做了拆分,解決了全局變量污染、依賴關系不清晰、多人協作不方便、腳本引入順序、單元測試等問題。

CSS 的模塊化。

?CSS 的第一個問題是比較難寫,比如不支持選擇器嵌套,對此我們可以用 CSS 預編譯器(比如 Less、Sass、Stylus)去寫一些更高級的語法,然后編譯成 CSS。

然后是就 命名沖突問題,一種舊的方案是 BEM,就是通過將 CSS 命名 在組件化的框架中,我們有很多方案,可以用 CSS in JS,也可以用 CSS Module,或者 Vue 特有的 CSS Scoped。

HTML 的模塊化。

html 通常是動態的,在服務端我們會使用模板引擎(template),將得到的數據注入到占位符中。在后端 Nodejs,我們可以用 pug、handlebars、ejs 等。

前后端分離后,我們通常使用的是 Vue 的 template(類似 handlebars 語法)以及 React 的 JSX。

資源整合模塊化

不同類型的資源無法組織在一起,比如 JS 引擎能識別引入的 js 文件,但無法識別 css 文件。如果我們希望所有的資源都能組織再一起進行管理,要分別管理一個個不同類型的資源要方便地多。

為了解決這個問題,webpack 誕生了。webpack 是一個模塊打包器,能夠將任何資源轉換為 js 代碼進行導入。比如圖片,它可以先變成一個靜態資源服務的一個資源,然后在 js 文件 import 的時候在轉換為一個 url 字符串,或者直接就變成一個 base64 字符串。

這些需要使用到一些 loader(加載器)。webpack 是一個框架,使用者需要根據需求,添加一些 loader,去識別不同的文件,轉化成 JS 代碼導入。

此外還有 plugin(插件),在這整個流程中做一些處理,比如將導出的 JS 文件插入到 HTML 模板中,或是進行代碼的壓縮等等。

組件化

組件化是 UI 層面上的更細粒度的拆分,一種類似 div 等原生元素的 “自定義元素”。

組件有自己的 HTML、CSS 和 JS,同時有自己的狀態,并支持嵌入到其他組件中并接受外部的數據,可以進行復用。組件化可以看作是 UI 層組織方式的一種模塊化。

目前主流的 React 和 Vue 前端框架都是基于組件的。

原本的以資源類型為單位進行組織的管理(所有 JS 文件放一個文件夾、CSS 同理),其實維護起來比較困難,也不好復用,組件化的構想是以視覺為單位進行拆分,做了結構、樣式、腳本的組裝,抽象出一個 “新的元素”。

組件已經是前端開發的基石了,是一種比較合理的抽象。

規范化

然后就是前端代碼的規范。規范是很重要的,能讓代碼能夠寫得更容易更正確,避免一些不必要的錯誤。

能想到的規范有:

  • 目錄結構規定。
  • 代碼風格(包括 JS、HTML、CSS)。
  • 注釋規范。
  • commit message 規范。
  • git 工作流規范。
  • Code Review。
  • 請求接口規范。

有些規范不太能用工具進行限制,比如目錄結構。但有些規范是可以利用到工具的,下面來說說有哪些和規范相關的工具。

首先是重磅級的 TypeScript。

TS 是有類型的 JS,是 JS 的超集。通過類型,我們可以預測變量的行為,比如一個布爾值類型是不能被作為函數調用的,可能為 undefined 的值需要進行類型收窄后丟棄 undefined 的可能性才能使用。

TS 越來越流行,是因為在大型項目中,類型系統是非常重要的,能夠避免大量的類型錯誤。TS 讓代碼即文檔,降低程序員理解代碼的成本。

如果工具層就能做規范,就不應該用文檔去說明,人不是絕對正確的機器,但工具可以。

然后是 ESLint。

ESLint 能夠檢測 JS 代碼中的錯誤,主要兩個方面:

  1. 代碼質量,比如你不能聲明一個沒有被使用的變量。
  2. 代碼風格,比如字符串引號必須用單引號。

ESLint 有助于統一團隊的風格,讓代碼看起來基本像是一個人寫的,避免出現字符串一會用單引號,一會用雙引號,變量命名一會用下劃線風格,一會用駝峰風格,這種讓強迫癥抓狂的情況。

然后是 commit message。commit message 我們不希望看到像是 “修復了一些 bug” 這種不夠具體的寫法,希望具有一定的結構,比如 "fix(工作臺): 修復了卡片不能滾動的問題"。

對此我們可以用 commitlint 的命令行工具去判斷是否符合特定風格。

當然還需要確保團隊成員是使用了這些工具的,我們可以用保存后自動格式化(需要配合編輯器和對應插件)。然后最重要的就是 git hook,可以在本地 commit 時先對 staged 中的文件做風格校驗和格式化,然后再檢查 commit messge 風格是。如果不對,本地 commit 會失敗。對應的工具是 husky。

自動化

重復的可以自動化的流程化工作,應該盡量去自動化。讓人去做,對人是一種折磨,然后也不能保證質量,因為通常流程也很復雜,即使是簡單,做多了也容易錯。

一個小概率事件只要做的次數足夠多,它就會變成大概率事件。這也是為什么分布式系統中容錯機制是非常重要的原因。

首先想到的自然是 CI/CD(持續集成和持續交付/部署)。我們將代碼提交到遠端倉庫時,或者是給一個分支打了 tag 后,能夠觸發一些腳本,將我們的項目代碼做打包編譯,發布成制品,然后發布到生產環境。這些都是自動化的,流程化的。

CI/CD 工具有很多:Jenkins(比較古老了)、GitLab CI/CD、GitHub Action、Docker(發布制品) 和 k8s(容器編排)等。

前面說的 git hook,在本地 commit 時進行一些操作,也算是一種簡單的自動化。

打包工具

前端工程化的核心是打包工具。

打包工具需要支持的 幾種重要的能力:

  1. 代碼分割:指的將代碼劃分為可以按需 / 同時加載的多個bundles 或組件的能力。比如動態 import、提取公共依賴模塊代碼、多個入口文件沒有重復代碼、支持 ESM 的值引用模擬等。
  2. 哈希:資源更新時做哈希,防止資源緩存。哈希分很多種,比如文件路徑名哈希、內容哈希等。
  3. 包引入:ES Module、CommonJS 以及從 node_modules 目錄引入包的支持。
  4. 非 JS 資源:導入非 JS 資源的支持,像是 webpack 需要使用各種 loader 來支持,有些打包工具是內置的。
  5. 輸出的模塊格式:支持導出為 ES Module、CommonJS 等模塊。
  6. 轉換處理:比如對圖片壓縮、代碼壓縮、JS 版本降低等,在 webpack 中是使用 plugins 來實現的。

其他

還有一些零散的可以提高效率的工具。

  • babel:開發時使用高版本的 ES 語言特性,然后生產環境用 babel 轉換為低版本的兼容性好的 ES5。打包工具內部其實使用了 babel。
  • tsc:tsc(TS 編譯工具) 在支持 TS 的前提下,也支持編譯為 JS 低版本。
  • polyfill:低版本的 ES5,想要使用一些新的 API,可以自己寫函數去模擬,這就是 polyfill,通常我們會使用 core.js 庫,但有些語言層面上的新特性就不能用 polyfill。
  • monorepo:將多個項目放到一個 git 倉庫下,方便包的依賴共用和維護。
  • 異常監控:當前端報錯時,將相關信息提交到異常監控服務,比如 sentry,通常配合 sourcemap 精確定位源碼中的錯誤位置。
  • 制品庫:使用 Nexus 來部署自己的私有制品庫,支持各種制品庫。比如發布 docker 包、npm 包等,配合發版部署;
  • VSCode Snippet:自定義 VSCode 編輯器的代碼片段,可以快速生成一些預置好的代碼模板,減少一些模板代碼的書寫。可以歸為自動化。
  • Mock:前端在后端確認返回數據結構后完成接口前,可以通過模擬虛假數據進行調試開發,比如 yapi 平臺就是除了支持接口文檔,還提供 mock 功能。
  • 單元測試:以模塊(比如組件)為單位進行測試,保證代碼邏輯符合預期。單元測試通常比較耗時,會在提交到遠端時或合并到主分支時進行。流行的單元測試庫有 Jest。
  • 熱重載:因為每次改代碼都要編譯,如果整個項目都要重新編譯開發體驗很差,可以用熱重載只編譯被修改的模塊。
  • 組件庫文檔:可以用 stroybook。如果是 vue 組件,可以考慮用 Vue Press。
  • Tree shaking:丟掉一些引入了但沒有使用的模塊。

結尾

簡單來說,前端工程化是對前端開發流程的改良,是效率工具。

責任編輯:姜華 來源: 前端西瓜哥
相關推薦

2021-05-18 19:18:50

前端工程化工程

2023-09-15 10:33:45

前端工程化commit

2015-10-26 10:32:01

前端優化工程化

2022-07-26 17:19:11

前端前端工程化

2022-10-09 14:50:24

前端pnpm工具

2022-08-17 11:33:35

前端配置

2021-06-05 18:01:05

工具Rollup前端

2018-06-15 10:12:04

滴滴前端分支管理

2023-02-15 18:12:43

開發企業級CLI

2022-07-06 11:20:16

前端開發

2022-07-14 11:43:47

Node.jswebpack

2021-07-06 10:03:05

軟件開發 技術

2020-07-13 09:58:53

數字化轉型IT數據

2021-11-22 06:17:26

npm工程化工具

2011-12-30 10:18:49

Android之父安迪·魯賓Android設備

2023-05-26 16:38:38

2025-08-20 00:00:00

2023-07-12 11:54:45

大前端WOT全球技術創新大

2020-12-24 14:10:17

數據中心數據中心災備災備

2020-09-17 10:30:21

前端模塊化組件
點贊
收藏

51CTO技術棧公眾號

国产精品久久久久一区二区| 亚洲精品aⅴ中文字幕乱码| 亚洲欧美日韩国产成人综合一二三区| 伊人久久一区二区| 在线精品一区二区| 亚洲午夜av久久乱码| 在线a免费观看| 久久男人av资源站| 亚洲特黄一级片| 六十路精品视频| 一级特黄录像免费看| 影音先锋亚洲电影| 色悠悠久久88| www国产视频| 亚洲成人a级片| 欧美丝袜一区二区| 三年中文高清在线观看第6集| 四季av日韩精品一区| 蜜臀av一级做a爰片久久| 久久久亚洲欧洲日产国码aⅴ| 一级黄色片网址| 国产三级精品三级在线观看国产| 欧美影视一区二区三区| 男女视频网站在线观看| av网站网址在线观看| 2020日本不卡一区二区视频| 2014国产精品| 一二三区在线播放| 母乳一区在线观看| 欧美日韩爱爱视频| 成人做爰视频网站| 国产毛片一区二区三区| 亚洲电影第1页| 亚洲天堂一区二区在线观看| 精品福利在线| 色老汉av一区二区三区| 波多野结衣家庭教师在线播放| 超碰公开在线| 亚洲天堂免费在线观看视频| 亚洲国产欧美一区二区三区不卡| 色av男人的天堂免费在线| 丰满岳乱妇一区二区三区| 成人国产在线激情| 中文字幕乱码视频| 日本aⅴ免费视频一区二区三区| 97超视频免费观看| 国产精品100| 亚洲欧洲一区| 国语对白做受69| 久久影院一区二区| 亚洲小说区图片区| 欧美丰满少妇xxxxx| 久草视频在线资源站| 欧美一区二区三区久久精品茉莉花 | 久久久久97| 亚洲国产日韩精品在线| 激情综合激情五月| 91蝌蚪精品视频| 精品国产一区久久| 久久国产劲爆∧v内射| 一区二区三区免费在线看| 日韩欧美高清一区| 日韩精品一区二区三区高清免费| 国产91精品入| 亚洲美女精品久久| 国产精品情侣呻吟对白视频| 久久精品高清| 久久av.com| 免费无遮挡无码永久在线观看视频 | 欧美国产视频| 这里只有精品视频在线观看| 手机看片国产精品| 成功精品影院| 亚洲免费av网址| 特级西西人体高清大胆| 久久久久美女| 欧美黑人一级爽快片淫片高清| 久久久久亚洲天堂| 噜噜噜在线观看免费视频日韩| 国产精品成人国产乱一区| 正在播放亚洲精品| 国产成人亚洲精品狼色在线| 久久资源亚洲| av网页在线| 亚洲一区二区三区国产| 国产女女做受ⅹxx高潮| 日韩精品一级毛片在线播放| 日韩欧美国产不卡| 免费看污片网站| 午夜精品毛片| 2019中文字幕免费视频| 一本一道精品欧美中文字幕| 成人av影院在线| 色播五月综合| 欧美aaa免费| 在线亚洲一区观看| 熟女人妻一区二区三区免费看| 亚洲精品中文字幕99999| 日韩有码在线电影| 久久精品这里有| 美国毛片一区二区三区| 国产精品一区二区不卡视频| 青青操视频在线| 亚洲乱码国产乱码精品精98午夜 | av老司机在线观看| 欧美色中文字幕| 国产视频久久久久久| 欧美wwwww| 欧美亚洲第一区| xxxx国产精品| 国产精品久久午夜夜伦鲁鲁| 欧美啪啪免费视频| 国产色99精品9i| 在线日韩av观看| 日韩精品成人一区| 国产精品系列在线播放| 一区高清视频| 免费成人直播| 亚洲精品v欧美精品v日韩精品| 日本福利片在线观看| 久久婷婷亚洲| 精品视频一区二区| 国产丝袜在线播放| 欧美一区午夜精品| 国产一二三四视频| 日日摸夜夜添夜夜添精品视频 | 亚洲 国产 欧美 日韩| 亚洲视频你懂的| 色噜噜狠狠一区二区| 国产日产精品一区二区三区四区的观看方式| 欧美成人在线免费| 国产露脸无套对白在线播放| 国产精品毛片无遮挡高清| 久久精品香蕉视频| 性欧美lx╳lx╳| 久久久久久亚洲精品中文字幕| 国产乱人乱偷精品视频a人人澡| 欧美国产丝袜视频| 亚洲一二三区av| 欧洲grand老妇人| 国产成人一区二区三区小说| 偷拍自拍在线| 色综合久久中文综合久久97 | 国产精品久久久久久久久动漫 | 日韩av首页| 亚洲视频国产视频| 日日夜夜狠狠操| 久久这里只有精品6| 日韩av片在线看| 香蕉视频一区二区三区| 日韩av黄色在线观看| 欧美日韩在线精品一区二区三区激情综 | 亚洲一区在线免费| 四虎地址8848精品| 美女av一区二区| a天堂在线观看视频| 亚洲日本韩国一区| 女人扒开双腿让男人捅 | 久久免费视频网| 欧美 日韩 综合| 天天操天天色综合| 性久久久久久久久久| 丝袜脚交一区二区| 亚洲国产欧美日韩| 欧美国产中文高清| 久久久久久久香蕉网| 神马久久高清| 欧美视频精品在线| 波多野结衣欲乱| 激情欧美日韩一区二区| 国产又粗又猛又爽又黄的网站| 四虎永久精品在线| 久久久久久午夜| 久草福利在线| 欧美军同video69gay| 国产真人真事毛片| 国产午夜精品一区二区| 免费精品99久久国产综合精品应用| 亚洲91精品| 精品视频一区二区三区四区| 在线成人视屏| 欧美激情在线播放| 韩国福利在线| 欧美一区二区三区不卡| 欧美成人aaaaⅴ片在线看| 久久美女艺术照精彩视频福利播放 | 国产大片免费看| 337p粉嫩大胆噜噜噜噜噜91av| 日本xxxxxxx免费视频| 综合久久十次| 牛人盗摄一区二区三区视频| 亚洲一区导航| 奇米4444一区二区三区 | 你懂的网站在线| 欧美午夜精品一区| 国产真实乱人偷精品视频| 国产欧美日韩视频在线观看| 亚洲午夜精品在线观看| 日韩激情中文字幕| 亚洲熟妇无码av在线播放| 精品日韩在线| 国产一区二区视频在线免费观看| 成人影院在线免费观看| 午夜精品视频网站| 国产原创精品视频| 国产一区二区三区视频在线观看| 亚洲av无码国产综合专区| 欧美综合一区二区三区| 国产无套内射又大又猛又粗又爽| 国产精品久久久久久亚洲伦| 亚洲综合自拍网| 精品夜夜嗨av一区二区三区| 97在线免费公开视频| 欧美视频网站| 在线观看日韩片| 精品视频亚洲| 欧美高清一区二区| 久久久久97| 99在线观看视频| 伦一区二区三区中文字幕v亚洲| 欧美亚洲国产另类| 蜜桃成人365av| 蜜臀久久99精品久久久久久宅男| 精品久久av| 亚洲激情国产精品| 亚洲欧美激情在线观看| 欧美一区二区精品久久911| 在线观看国产一区二区三区| 欧美性猛交xxxx黑人| 人人干人人干人人干| 亚洲精品乱码久久久久久黑人 | 亚洲精品国产偷自在线观看| 欧美在线播放一区| 国产亚洲一卡2卡3卡4卡新区| 久久久99爱| 牛牛影视一区二区三区免费看| 产国精品偷在线| eeuss鲁片一区二区三区| 亚洲va久久久噜噜噜| 色综合视频一区二区三区日韩| 国产精品日韩精品| 国外成人福利视频| 国产精品自拍偷拍| 日本成人一区二区| 成人淫片在线看| 在线视频成人| 亚洲自拍中文字幕| 欧美第一在线视频| 鬼打鬼之黄金道士1992林正英| 中文无码日韩欧| 黄色国产精品一区二区三区| 岛国精品一区| 久久偷窥视频| 国产一区二区在线| 亚洲精品二区| 欧美激情偷拍自拍| 免费看污污视频| 狠久久av成人天堂| 欧美变态另类刺激| 视频一区二区欧美| 色综合色综合色综合色综合| 久久国产精品99久久久久久老狼| 中文字幕第一页在线视频| 国产乱色国产精品免费视频| 秘密基地免费观看完整版中文| 成人黄色国产精品网站大全在线免费观看| 久久性爱视频网站| 久久九九久精品国产免费直播| 久久久精品成人| 亚洲视频小说图片| 日韩精品人妻中文字幕| 色老汉一区二区三区| 国产欧美一级片| 亚洲精品电影网在线观看| 国产精品一级伦理| 久久久99免费视频| 欧美少妇精品| 成人国产精品久久久| 高清日韩欧美| 亚洲一区二区免费视频软件合集| 欧美一区91| 亚洲免费av一区二区三区| 国产一区二区电影| 黄色短视频在线观看| 国产精品久久久久久户外露出| 日日骚一区二区三区| 日韩欧美在线免费| 国产毛片一区二区三区va在线 | 国产视频欧美| 四季av一区二区三区| av中文字幕在线不卡| 三级黄色片在线观看| 欧美日韩精品中文字幕| 国产又粗又大又爽视频| 日韩精品极品在线观看播放免费视频| 91在线播放网站| 韩剧1988在线观看免费完整版| 久久精品97| 看高清中日韩色视频| 欧美激情1区2区3区| 天天色综合天天色| av一二三不卡影片| 老司机成人免费视频| 色哟哟亚洲精品| 亚洲美女综合网| 久久在线免费观看视频| 伊人色综合一区二区三区影院视频| 91在线观看免费观看| 国产一区2区| 成人毛片在线精品国产| 日韩欧美在线免费观看| 国产美女免费看| 亚洲欧美变态国产另类| 宅男网站在线免费观看| 奇米一区二区三区四区久久| 国产一区二区久久久久| 日韩亚洲视频| 一区二区国产在线观看| 夜夜爽久久精品91| 欧美一区自拍| 亚洲精品在线视频| www 日韩| 欧美整片在线观看| 激情小说亚洲色图| 波多野结衣与黑人| 精品无人码麻豆乱码1区2区| 在线免费观看日韩av| 午夜av电影一区| 亚洲成人第一区| 美女999久久久精品视频| 久久电影天堂| 亚洲欧洲国产精品久久| 久久午夜视频| 午夜理伦三级做爰电影| 五月天激情综合| 黄色av一区二区三区| 久久久久久成人精品| 亚洲国产高清在线观看| 欧美日韩一区二区三区电影| 国内精品免费在线观看| 韩国一级黄色录像| 6080午夜不卡| 成人免费网址| 亚洲字幕一区二区| 国内精品美女在线观看| 午夜性福利视频| 亚洲综合久久av| 不卡的日韩av| 欧美极品第一页| 精品欠久久久中文字幕加勒比| 97在线国产视频| av中文字幕亚洲| 在线精品免费视| 国产亚洲精品久久久久久| av在线日韩| 五月天av影院| 国产精品一区二区久久不卡| 久久综合亚洲色hezyo国产| 精品国免费一区二区三区| 国产网站在线| 日本一区二区在线| 老司机免费视频一区二区| 538精品在线视频| 亚洲精品国产美女| 新片速递亚洲合集欧美合集| 亚洲午夜精品久久| 国产成人综合视频| 欧美日韩综合在线观看| 亚洲一区av在线播放| 91精品国产色综合久久不卡粉嫩| 99久re热视频精品98| 白白色亚洲国产精品| 久久久久久无码精品大片| 久久精品国产亚洲一区二区| aaa国产精品视频| 无码人妻丰满熟妇区毛片| 国产精品毛片高清在线完整版| 精品人妻伦一二三区久久 | 久久国产欧美精品| 欧美a级理论片| 欧美成人黄色网| 亚洲美女喷白浆| 国产精品中文| 黄色一级片播放| 1024成人网色www| 色吊丝在线永久观看最新版本| 国产视频福利一区| 日韩午夜电影| 久久久久麻豆v国产| 亚洲成人999| 欧美另类激情| 成人av一级片| 亚洲手机成人高清视频| 三级视频在线播放| 2014国产精品| 蜜桃免费网站一区二区三区| 国产无遮挡又黄又爽在线观看| 一区二区三区精品99久久| 久久久久影视| 三级网站免费看|