精品欧美一区二区三区在线观看 _久久久久国色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成www在线影院| 亚洲精品手机在线观看| 三级资源在线| 日本一区二区三区dvd视频在线| 久久欧美在线电影| 国产又粗又长又黄的视频| 日本一区二区三区视频在线看 | 懂色中文一区二区在线播放| 日本人成精品视频在线| 日本精品在线免费观看| 伊人久久大香线蕉av不卡| 欧美一区二区三区视频在线观看| 亚洲一区二区在线看| 日本高清视频在线| 韩国视频一区二区| 日韩免费在线视频| 国产成人精品亚洲男人的天堂| 日韩成人久久| 欧美性欧美巨大黑白大战| 嫩草影院中文字幕| 欧洲日本在线| 国产午夜精品美女毛片视频| 国产精品一区二区你懂得| 亚洲一卡二卡在线观看| 亚洲欧美日韩一区在线观看| 欧美激情一级精品国产| 欧美日韩午夜视频| 精品久久影院| 亚洲男人天堂久| 免费在线观看成年人视频| 欧美午夜网站| 91麻豆精品国产91久久久久久 | 激情成人综合网| 国产精品com| 青草视频在线观看免费| 亚洲欧洲一区二区天堂久久| 欧美人在线观看| 四虎精品免费视频| 91精品国产91久久久久久密臀| 日韩一区二区三区观看| 亚洲最大天堂网| 自拍偷拍欧美日韩| 678五月天丁香亚洲综合网| 日韩av在线中文| 福利一区二区| 欧美日韩国产综合草草| 做a视频在线观看| 综合久草视频| 欧美成人bangbros| www.555国产精品免费| 日本成人精品| 精品国产乱码久久久久久久久 | 久草中文综合在线| 欧美视频裸体精品| 成人午夜免费在线| 天堂√中文最新版在线| 欧美性猛交xxxx免费看| 青青青国产在线视频| 美女网站视频一区| 欧美日韩国产综合视频在线观看 | 成人一级片免费看| 大色综合视频网站在线播放| 国产亚洲精品日韩| 精品在线观看一区| 欧美~级网站不卡| 午夜精品福利视频| www.毛片.com| 久久成人免费电影| www.久久艹| 日韩成人黄色| 欧美国产综合一区二区| 一级特黄妇女高潮| 在线黄色的网站| 欧美日韩一区三区四区| 国产欧美激情视频| 欧美a大片欧美片| 国产亚洲精品久久久久久| 极品色av影院| 日韩视频一区二区三区在线播放免费观看| 久久精品国产亚洲精品2020| 九九在线观看视频| 亚洲欧美日韩视频二区| 国产一区二中文字幕在线看| 亚洲国产999| 国产亚洲短视频| 欧美少妇一区二区三区| 丁香高清在线观看完整电影视频| 国产精品久久久久三级| 无码日本精品xxxxxxxxx| 男女在线观看视频| 在线观看不卡视频| 五月天丁香社区| 成人网18免费网站| 欧美黄色三级网站| 中文在线免费观看| 懂色av一区二区三区免费观看| 亚洲最大福利视频网| 污视频在线免费| 亚洲欧美另类在线| 午夜激情福利在线| 狠狠一区二区三区| 欧美成年人视频网站| 国产又粗又猛又黄视频| 成人在线视频一区二区| 亚洲最新免费视频| 自拍偷拍欧美视频| 精品欧美一区二区在线观看| 91麻豆精品国产91久久综合| 在线成人黄色| www.久久艹| av网站网址在线观看| 欧洲一区二区三区免费视频| 岛国精品资源网站| 欧美精品激情| 成人激情视频小说免费下载| 欧美日韩国产中文字幕在线| 亚洲国产成人精品视频| 国产农村妇女精品久久| 欧美激情成人| 国产精品视频自拍| 国产小视频在线| 黑人狂躁日本妞一区二区三区 | 国产91精品在线| 亚洲精品456在线播放狼人| 2018天天弄| 狠狠色丁香婷婷综合| 视频一区二区三区在线观看 | 欧美激情久久久久| 国产免费久久久| 亚洲天天做日日做天天谢日日欢| 亚洲国产一二三精品无码| 国产精品蜜月aⅴ在线| 亚洲男人天堂2024| 欧美一区二区三区网站| 91看片淫黄大片一级在线观看| 亚洲欧洲久久| 成人在线免费av| 亚洲午夜小视频| 日本一本在线观看| 欧美激情一区在线观看| av五月天在线| 色综合咪咪久久网| 91精品久久久久久久久久久久久久| 午夜精品久久久久久久96蜜桃 | 日韩精品亚洲专区| 久久久99国产精品免费| 欧美调教sm| 亚洲精品国产精品自产a区红杏吧 亚洲精品国产精品乱码不99按摩 亚洲精品国产精品久久清纯直播 亚洲精品国产精品国自产在线 | 国产精品1区二区.| 91亚洲精品国产| 精品三级av在线导航| 国语自产精品视频在线看| 五月婷婷深深爱| 日韩欧美在线一区| 日本高清黄色片| 激情久久久久久久久久久久久久久久| 国产伦精品一区二区三区免费视频| 巨骚激情综合| 欧美午夜在线一二页| 亚洲熟女毛茸茸| 国产高清精品在线| 免费网站永久免费观看| 欧美日韩导航| 国产精品欧美久久久| 麻豆tv入口在线看| 精品国产伦一区二区三区观看方式 | 欧美韩国日本一区| 亚洲综合在线一区二区| 激情欧美一区二区三区| 鲁片一区二区三区| 久久精品超碰| 久久久久久av| 国产在线你懂得| 欧美一级片在线看| 可以免费看的av毛片| 亚洲国产精华液网站w| 四虎1515hh.com| 99精品久久| 午夜一区二区三区| 91久久偷偷做嫩草影院电| 琪琪亚洲精品午夜在线| 韩国av网站在线| 亚洲精品电影网站| 国产精品女同一区二区| 欧美特黄级在线| 国产少妇在线观看| 久久久精品人体av艺术| 深夜做爰性大片蜜桃| 香蕉久久a毛片| 美女黄色片网站| 国产成人精品三级高清久久91| 午夜精品国产精品大乳美女| 在线日本视频| 日韩成人在线视频| jlzzjlzz亚洲女人18| 一本色道亚洲精品aⅴ| 欧美黑吊大战白妞| 国产目拍亚洲精品99久久精品| 97在线免费公开视频| 91成人免费| 欧美一区免费视频| 久久九九热re6这里有精品| 国产又爽又黄的激情精品视频 | 亚洲少妇久久久| 在线成人黄色| 97在线免费视频观看| 精品久久不卡| 免费在线国产精品| 中文字幕亚洲在线观看| 国产精品视频一区国模私拍| 日本а中文在线天堂| 欧美夫妻性生活xx| 拍真实国产伦偷精品| 国产亚洲欧美aaaa| 欧洲一区av| 亚洲国产精品资源| 亚洲经典一区二区| 欧美一区二区三区人| 一级黄色录像大片| 在线观看视频91| 亚洲天堂男人av| 欧美色道久久88综合亚洲精品| 蜜桃传媒一区二区亚洲| 99re视频精品| 国产黑丝一区二区| 成人高清视频免费观看| 中文在线字幕观看| 国产成人午夜精品影院观看视频| 欧美 日韩 国产 高清| 国产精品v亚洲精品v日韩精品 | 亚州视频一区二区三区| 日韩欧美久久一区| www男人的天堂| 日韩亚洲欧美在线| 成人激情四射网| 精品国免费一区二区三区| www.成人在线观看| 欧美tk丨vk视频| 黄色一级a毛片| 亚洲激情电影中文字幕| 天堂在线资源库| 日韩精品亚洲元码| 可以在线观看的av| 视频在线观看一区二区| 欧美极品视频| 久久99热这里只有精品国产 | 国产精品美女久久久久久久久 | 欧美激情一区二区三区久久久| 四虎国产精品永远| 亚洲老头老太hd| 成人在线免费看| 日韩视频免费在线| 国产原创在线观看| 欧美大片网站在线观看| aa级大片免费在线观看| 91精品国产一区| 欧美日韩激情电影| 成人福利在线视频| 波多野结衣欧美| 久久亚洲高清| 色乱码一区二区三区网站| 亚洲美女自拍偷拍| 亚洲乱码视频| 在线免费观看av的网站| 国产精品一区久久久久| 久久精品女同亚洲女同13| 国产网站一区二区| 日本aⅴ在线观看| 午夜精品久久久| 欧美 亚洲 另类 激情 另类| 日韩一级大片在线| 青青久草在线| 操日韩av在线电影| 亚洲色图官网| 成人免费视频网址| 欧美国产不卡| 亚洲资源视频| 国产精品日韩| 欧美污在线观看| 久久精品一区二区| 久久一级黄色片| 欧美三级乱人伦电影| 色婷婷中文字幕| 日韩一区二区在线视频| 亚洲女同志freevdieo| 114国产精品久久免费观看| 视频一区欧美| 800av在线免费观看| 麻豆精品一区二区av白丝在线| 国产自偷自偷免费一区 | 欧美日韩中文字幕一区二区三区| 久久99久久精品国产| 五月天综合网站| 黄色高清无遮挡| 国产一区二区精品久久91| 一区二区三区四区免费| 亚洲免费在线播放| 欧美超碰在线观看| 精品国产凹凸成av人网站| seseavlu视频在线| 欧洲亚洲女同hd| 99久热这里只有精品视频免费观看| 99在线首页视频| jvid福利在线一区二区| 久久久久久久午夜| 国产传媒一区在线| 老司机福利在线观看| 狠狠色噜噜狠狠狠狠97| 亚洲精品无amm毛片| 久久精品一区中文字幕| 成人国产精品| 日韩美女一区| 日韩制服丝袜先锋影音| 亚洲第九十七页| 亚洲第一久久影院| 精品国产乱码久久久久久蜜臀网站| 精品国产制服丝袜高跟| 黄色网址在线免费观看| 国产精品欧美日韩| 亚洲品质自拍| 国产精品秘入口18禁麻豆免会员| 日韩在线观看一区二区| 国产精品一区二区人妻喷水| 一区二区三区色| 国产浮力第一页| 久久97精品久久久久久久不卡 | 欧美成人高清| 中文字幕精品一区二区三区在线| 国产精品18久久久久| 看黄色录像一级片| 欧美喷水一区二区| √天堂资源地址在线官网| 国产精品久久在线观看| 精品国产a一区二区三区v免费| 日本免费黄色小视频| 狠狠色丁香久久婷婷综合丁香| 少妇一级淫免费观看| 亚洲国产精品一区二区久久恐怖片| 成年人av网站| 国产一区av在线| 日韩另类视频| 亚洲高清乱码| 久久国产成人午夜av影院| 韩国一级黄色录像| 欧美日韩国产一级| 18加网站在线| 国产伦精品一区二区三区在线| 久久视频精品| 一级做a爱视频| 一区二区三区丝袜| 午夜在线视频观看| 日韩美女毛茸茸| 精品欧美激情在线观看| 性生活免费在线观看| 亚洲色大成网站www久久九九| 中文字幕高清在线免费播放| 国产亚洲欧洲高清一区| 亚洲日韩中文字幕一区| 欧美日韩激情四射| 成人97人人超碰人人99| 日韩精品在线免费视频| 中文日韩在线视频| 国产日韩欧美中文在线| 欧美视频在线观看视频| 久久亚洲欧美国产精品乐播 | www国产亚洲精品| 一本久道久久综合狠狠爱| xxxx日本黄色| 日韩一本二本av| 第84页国产精品| 一区二区成人国产精品| 国产精品主播直播| 综合激情网五月| 视频在线观看一区二区| 国产精品tv| 天天干天天综合| 亚洲成av人片一区二区| 成人高清网站| 97超碰资源| 日韩高清不卡一区二区| 欧美激情一区二区视频| 亚洲品质视频自拍网| 久久天堂久久| www黄色在线| 亚洲综合精品久久| p色视频免费在线观看| 国产亚洲精品自在久久| 美女久久久精品| 日韩欧美三级视频| 久久精品小视频| 国产成人久久|