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

你能給前端工程化下個定義么?

開發 前端
前端工程化是指圍繞代碼處理的一系列工具鏈,他們把代碼當作字符串處理,并不運行代碼,包括編譯構建、靜態分析、格式化、CI/CD 等等。

作為前端工程師,前端工程化是經常聽到的概念,但雖然經常聽到,很多人對它的認識依然很模糊。

比如,提到前端工程化,他并不能說出什么是前端工程化。給出一門具體的技術,他也不能確定是不是屬于工程化范疇的技術。

這是因為他沒有對前端工程化有一個概念上的認識。

那么,這篇文章我們就來給前端工程化下個定義吧。

什么是前端工程化

提到前端工程化,最容易想到的就是編譯了。很多代碼需要經過編譯才能運行在目標環境:

  • 高版本的語法需要用 babel 編譯成低版本的。
  • less、sass 要經過各自的編譯器轉換成 css 代碼。
  • TypeScript 代碼需要經過 tsc 或者 babel 等編譯器轉成 JS 代碼。
  • ...

前端工程化首先要做的就是支持各種代碼的編譯。

最早的前端工程化是通過任務的形式組織這些編譯過程的,指定對什么文件用什么編譯器編譯,然后輸出到哪個目錄。任務之間可以規定先后順序、串行并行。

gulp 就是這一類工具,叫做任務運行器(task runner)。

這一類工具能夠組織整個編譯流程,對不同的文件分別做相應的處理,使之能運行在目標環境。但因為每個任務都比較獨立,很難做一些全局的優化。

后來出現了另一種思路,不通過任務組織了,而是分析模塊之間的依賴關系,從入口模塊開始構建一棵依賴圖,中間遇到的用到的 js、css、圖片等都會作為他的依賴。然后對依賴圖的每個節點分別用對應的編譯器處理。

有的同學說,這個和 task runner 的方式有啥區別,不都是對不同的文件用不同的編譯器處理么?

那肯定有區別呀,現在有了模塊之間的依賴圖了,那就可以做一些全局的優化:

比如通過分析依賴關系來去掉一些沒有用到的代碼,這叫做 tree shaking。

比如把這些模塊拆分到不同的分組(chunk)里,然后生成不同的文件,這樣把變動頻繁的模塊和不咋變動的模塊分到不同的 chunk,進而生成到不同的文件里,就可以更好的利用緩存,這叫做 code splitting。

而且,因為生成的代碼是自己控制的,有自己的 runtime 代碼,那就可以配合 runtime 來實現一些功能,比如實現模塊的 lazy load,也就是把 code splitting 分出來的 chunk,在運行時動態加載。

這叫做打包工具(bundler),典型的是 webpack。

任務運行器和打包工具的區別還是很明顯的:

任務運行器只是把不同的編譯任務組織起來,并不參與具體的代碼處理,具體處理啥文件,怎么處理都是開發者指定的。

而打包工具則是分析模塊依賴關系,構成依賴圖,通過這種方式確定處理哪些文件,可以基于這種依賴關系實現 tree shking、code splitting 等優化,并且生成的代碼會有自己的 runtime,可以配合 runtime 實現 lazy load 等功能。

因為打包工具這種明顯的優勢,慢慢的就取代了任務運行器,成為了構建的主流方式。

但是打包工具也不是完美的,因為每次都要構建整個依賴圖,對不同文件分別做處理,之后才能生成代碼,所以當項目的模塊多了就會很慢,大項目打包幾分鐘也是很常見的事情。

有痛點問題,大家就會想辦法去解決,所以出現了 no bundle 的方案,也就是不打包,比如 vite。

不打包也就不會進行依賴分析,那怎么確定處理哪些文件呢?

no bundle 是基于瀏覽器支持 es module 來實現的,瀏覽器會做 es module 的依賴分析,然后加載對應的模塊,這樣自然就不用自己做依賴分析了,只需要實現模塊的編譯即可。

所以,no bundle 工具會啟動一個開發服務器,根據請求的模塊路徑來進行相應的編譯,然后返回編譯后的代碼。

當然,生產環境還是需要打包的,會用打包工具來處理。no bundle 方案只是解決了開發環境下打包工具要構建整個依賴圖導致比較慢的痛點問題。

我們回過頭來綜合看一下:

構建的核心是對不同的文件做不同的編譯,最早的任務運行器的方案實現了編譯流程的組織,但是并沒有做全局的優化,也沒有自己的 runtime 代碼,所以出現了基于依賴分析的打包工具,打包工具可以基于依賴分析實現 treeshking、code splitting 等優化,可以配合 runtime 代碼實現 lazy load。但成也依賴分析,敗也依賴分析,這個太慢了,所以出現了 no bundle 的方案,配合瀏覽器對 es module 的支持,只要實現對應模塊的編譯服務即可,不過生產環境還是要打包的。

那我們馬后炮一下,假如回到 gulp 當時的時代,能夠實現打包工具和 no bundle 服務么?

還真不一定,因為打包工具的實現是基于模塊規范的,很早的時候并沒有,所以只能簡單的對編譯流程做下組織。更不用說 no bundle 還要瀏覽器支持 es module 了,這個也是近幾年才可以的。

所以,不管是任務運行器、打包工具、no bundle 服務都是在當時的環境下的最優的解決方案,并不是說被淘汰的就是不好的。

上面我們只聊了構建,那前端工程化就等于構建么?

肯定不是呀,還有很多別的方面,比如代碼的規范和靜態分析:

  • JS 代碼會用 ESLint 來禁止掉一些寫法,比如 concole、debugger 的使用,還可以修復格式問題,比如縮進方式,還能檢查出一些邏輯錯誤,比如 if 中用了賦值。
  • CSS 代碼也同樣會用 StyleLint 來禁用一些寫法,修復格式問題,檢查出一些邏輯錯誤。
  • ESLint、StyleLint 只是局部的格式修復,我們還可以用 prettier 來進行整體的格式化。
  • 如果我們用了 TypeScript,那就可以用 tsc 來進行類型檢查,發現代碼中潛在的類型不匹配的錯誤。

靜態分析工具、格式化工具并不影響構建,他們一般是單獨來跑的,用來發現一些代碼潛在的問題,規范代碼格式等。

代碼寫完之后,會上傳到代碼倉庫,比如 gitlab,代碼托管也是工程化的一部分。

代碼上線的話,需要進行構建和部署,我們可以通過 jenkins 來組織構建流程,當 gitlab 代碼有新的 push 的時候觸發,進行構建,然后把產物部署到服務器,基于 git hook 的構建部署流程就叫做持續集成、持續部署(CI/CD)。這也是前端工程化的一部分。

好像很多東西都屬于前端工程化,那怎么給前端工程化下個定義呢?

前面聊了構建、靜態分析、格式化、代碼托管、CI/CD,不知道大家有沒有發現這些工具的共同特點:

他們的處理對象都是代碼。

他們只是把代碼當作字符串來處理,并不管你用的是 vue、react 還是 angular,你用的啥狀態管理庫、動畫庫之類的。

所以說,前端工程化就是處理代碼的一系列工具鏈,他們并不會運行代碼,只是把代碼作為字符串來進行一系列處理。編譯構建、ci/cd、代碼托管、靜態分析、格式化等都是。

不知道大家是否理解了。我們來看兩個例子:

我們項目用了 react,公共組件比較多,所以封裝了 react 的組件庫。這屬于前端工程化么?

不屬于。前端框架還有組件都是運行時才有的,工程化并不會運行代碼,只會處理代碼。所以組件庫屬于前端基建,但不屬于前端工程化。

我們好幾個項目之間公共代碼比較多,所以改造成了 monorepo 的形式,也就是一個工程下保存了多個項目的代碼,使用了 pnpm workspace 來作為 monorepo 的管理工具,可以自動的進行依賴的關聯,統一的進行依賴安裝、構建、發版等。這屬于前端工程化么?

屬于。monorepo 是組織代碼的方式,pnpm workspace 是管理 monorepo 的工具,它也是處理代碼的工具,不會運行代碼,所以也屬于前端工程化的范疇。

我們公司自研了 IDE,集成了很多內部工具,這屬于前端工程化么?

屬于。IDE 是圍繞代碼編輯的場景來打造一系列工具鏈,也是處理代碼但不會運行代碼,所以屬于前端工程化的范疇。

經過這些例子,相信大家對什么是前端工程化,哪些技術屬于前端工程化就比較清晰了。

我們是前端工程師,所以經常談的是前端的工程化,其實別的語言也有工程化,比如 java 代碼,同樣需要構建、格式化、靜態分析、CI/CD,所以也有工程化的概念。

其實大公司都會有一個工程效能部門,他們做的就是工程化的事情,不過一般是跨語言的工程化,并不局限于前端工程化、后端工程化等。

總結

前端工程化是指圍繞代碼處理的一系列工具鏈,他們把代碼當作字符串處理,并不運行代碼,包括編譯構建、靜態分析、格式化、CI/CD 等等。

我們詳細了解了編譯構建的歷史,從任務運行器、打包工具到 no bundle 服務的演變歷史,他們都是特定時代下的產物。

再就是靜態分析和格式化用的 eslint、stylelint、prettier、tsc 等工具。

前端工程化的范圍可以很大,可以囊括很多工具進來,比如 monorepo、IDE 等等,因為在不同的場景下對代碼處理,也就是工程化有不同的需求。

當你對前端工程化有了清晰的定義之后,對于前端工程化要做哪些事情,哪些技術屬于前端工程化、哪些不屬于,就很容易理清了。

責任編輯:姜華 來源: 神光的編程秘籍
相關推薦

2023-09-15 10:33:45

前端工程化commit

2022-12-01 07:46:01

工程化工具

2021-05-18 19:18:50

前端工程化工程

2015-10-26 10:32:01

前端優化工程化

2022-10-09 14:50:24

前端pnpm工具

2022-08-17 11:33:35

前端配置

2021-06-05 18:01:05

工具Rollup前端

2023-02-15 18:12:43

開發企業級CLI

2018-06-15 10:12:04

滴滴前端分支管理

2022-07-06 11:20:16

前端開發

2022-07-14 11:43:47

Node.jswebpack

2021-11-16 08:13:30

CSS 技巧工程化技術

2021-12-09 11:30:46

CSS技術前端

2021-11-22 06:17:26

npm工程化工具

2023-07-12 11:54:45

大前端WOT全球技術創新大

2022-08-20 18:28:49

汽車軟件

2021-03-19 07:23:23

Go架構Go工程化

2024-07-02 10:48:04

語言項目配置

2021-07-06 10:03:05

軟件開發 技術

2025-09-04 11:10:26

點贊
收藏

51CTO技術棧公眾號

成人在线激情网| 99视频在线| 99国产精品免费| 嫩呦国产一区二区三区av| 亚洲一区二区三区影院| 久久综合狠狠综合久久综青草| 少妇高潮av久久久久久| 久久国产亚洲精品| 欧美va在线播放| 欧美精品色婷婷五月综合| 成年人在线观看网站| 国产成人在线观看| 国产精品国产福利国产秒拍| 日本不卡一二区| 久久久久久毛片免费看 | 日韩不卡免费视频| 久久高清视频免费| 亚洲第一成人网站| 国产精品美女久久久久| 欧美午夜女人视频在线| 在线日韩av永久免费观看| 天堂网在线资源| 精品一二三四区| 538国产精品视频一区二区| 亚洲一二三四五六区| 亚州国产精品| 欧美成人r级一区二区三区| 无码内射中文字幕岛国片| 蜜臀av在线| 国产精品丝袜91| 久久99导航| 成人午夜激情av| 欧美体内she精高潮| 亚洲第一av| 亚洲一区二区三区四区在线 | 欧美男gay| 日韩欧美亚洲国产精品字幕久久久| 97视频在线免费播放| 黄色成人在线网| 1000部国产精品成人观看| 欧美在线一二三区| 五月激情丁香婷婷| 国产精品1区二区.| 91精品视频在线看| 在线观看毛片av| 蜜桃视频一区| 国产69久久精品成人| 国产无码精品视频| 欧美激情五月| 欧美成人免费va影院高清| 亚欧精品视频一区二区三区| 国产精品探花在线观看| 国产视频在线观看一区二区| 中文成人无字幕乱码精品区| baoyu135国产精品免费| 日韩欧美一区在线| 在线观看你懂的视频| 成人乱码手机视频| 欧美精品粉嫩高潮一区二区| 最新天堂在线视频| 亚洲欧美在线人成swag| 欧美日韩一本到| 亚洲精品手机在线观看| 不卡一区视频| 日韩一区二区精品在线观看| 日韩精品在线播放视频| 97超碰成人| 亚洲精品720p| 波多野结衣一本| 国产99久久| 一区二区三区视频免费| 精品熟妇无码av免费久久| 91综合久久| 九九久久久久99精品| 久久久久久久久99| 99国产精品99久久久久久粉嫩| 91福利视频网站| 日韩电影中文字幕在线| 午夜视频在线观| 日韩精品一区二区三区中文| 精品国产免费一区二区三区四区 | 欧美国产视频一区| av电影院在线看| 一道本成人在线| 一区二区三区 日韩| 999精品视频在线观看| 日韩欧美一区二区免费| 国产熟女高潮一区二区三区| 国产一区二区三区电影在线观看 | 99福利在线| 一区二区三区在线播| 国产一区二区网| 91福利精品在线观看| 欧美精品高清视频| a天堂视频在线观看| 郴州新闻综合频道在线直播| 另类少妇人与禽zozz0性伦| 久久久久久久99| 日本不卡123| 99久热re在线精品视频| 久青青在线观看视频国产| 国产精品久久久久久久久快鸭| 日韩一级片一区二区| gay欧美网站| 欧美一区午夜视频在线观看| 三级视频网站在线观看| 成人一区不卡| 97精品在线视频| 国产一区二区小视频| 91亚洲男人天堂| 日本免费在线视频观看| 男女羞羞在线观看| 欧美精品免费视频| 免费污网站在线观看| 国内精品久久久久久久影视麻豆| 国产第一区电影| 成人久久久精品国产乱码一区二区| 久久久久99精品国产片| 偷拍与自拍一区| 99久久综合狠狠综合久久止| 国产高清视频在线| 亚洲国产日韩在线一区模特| 高潮一区二区三区| 女厕嘘嘘一区二区在线播放 | 亚洲网站视频福利| 久久国产波多野结衣| 老司机一区二区三区| 亚洲一区二区中文| 91免费在线| 欧美性极品xxxx做受| 91丨porny丨九色| 欧美伦理在线视频| 欧美亚洲视频在线观看| 黄色一级大片在线免费看国产| 中文字幕的久久| 黄色a级片免费| 国产精品对白久久久久粗| 久久手机精品视频| 亚洲天堂久久久久| 久久精品日韩一区二区三区| 玩弄中年熟妇正在播放| 懂色av一区二区| 欧美俄罗斯乱妇| 国产露脸91国语对白| 国产精品久久久久aaaa| 黑森林精品导航| 欧美色网址大全| 日韩免费高清在线观看| 男人的天堂在线视频| 五月婷婷欧美视频| 中文字幕在线播放视频| 亚洲国产欧美国产综合一区| 国产视频不卡| 福利影院在线看| 日韩av有码在线| 天天做天天爱夜夜爽| 91丨porny丨首页| 久久国产成人精品国产成人亚洲| 精品av导航| 91tv亚洲精品香蕉国产一区7ujn| 人妻妺妺窝人体色www聚色窝| 亚洲午夜精品网| 好吊色视频一区二区三区| 亚洲午夜精品久久久久久app| 国产成人免费电影| 国产夫妻在线| 精品伊人久久97| 人人妻人人做人人爽| 亚洲中文字幕在线一区| 国产精品毛片久久久久久| 手机av在线网| 综合日韩在线| 精品国产乱码久久久久久郑州公司 | 成人午夜淫片100集| 26uuu国产在线精品一区二区| 99精品免费在线观看| 色婷婷亚洲mv天堂mv在影片| 亚洲综合日韩在线| 2019中文字幕在线电影免费 | 欧美日韩国内| 久久精品国产综合精品| 日本欧美不卡| 欧美成人免费大片| 亚洲人妻一区二区| 精品视频一区 二区 三区| 1024手机在线视频| caoporm超碰国产精品| 日韩一级片播放| 中文字幕免费一区二区三区| 国产视频精品网| 国产精品亲子伦av一区二区三区 | av影视在线| 亚洲人成网站777色婷婷| 国产精品久久久久久久成人午夜| 亚洲一区二区在线观看视频 | 色喇叭免费久久综合网| av成人午夜| 欧美与亚洲与日本直播| 欧美成aaa人片免费看| 免费动漫网站在线观看| 欧美一级免费大片| 中文字幕69页| 亚洲黄色小说网站| 91中文字幕永久在线| 国产激情偷乱视频一区二区三区| 国产日韩一区二区在线观看| 欧美韩日精品| 色综合电影网| 国内毛片久久| 91亚洲一区精品| 欧美不卡高清一区二区三区| 欧美激情奇米色| 91在线无精精品白丝| 91福利在线免费| 亚洲人成在线播放| 亚洲精品一区二区三区蜜桃| 精品视频一区 二区 三区| 女人十八岁毛片| 尤物视频一区二区| 国产精品69久久久久孕妇欧美| av电影一区二区| 无套白嫩进入乌克兰美女| 三级欧美在线一区| 妺妺窝人体色777777| 一个色综合网| 亚洲一区二三| jiujiure精品视频播放| 精品亚洲一区二区三区四区五区高| 在线免费成人| 国产精品一区二区三区久久| 亚洲三级欧美| 91av在线国产| 国产在线88av| 亚洲97在线观看| h片视频在线观看| 欧美黑人一级爽快片淫片高清| 午夜视频在线观看网站| 亚洲人成电影网站色xx| 爽爽视频在线观看| 亚洲黄色在线观看| 人妻少妇一区二区三区| 精品久久五月天| 亚洲国产精品国自产拍久久| 日韩精品最新网址| 朝桐光av在线一区二区三区| 欧美一级理论片| 精品国产免费无码久久久| 这里只有精品99re| 国产欧美日韩成人| 91精品国产综合久久香蕉麻豆| 一级日韩一级欧美| 欧美精品在线视频| 国产强伦人妻毛片| 欧美一级一区二区| 精品国产亚洲av麻豆| 欧美一区二区三区白人| 国产a级免费视频| 欧美一级高清片| 懂色av蜜臀av粉嫩av分享吧| 欧美成人综合网站| 亚洲老妇色熟女老太| 精品国产凹凸成av人导航| 蜜臀av免费在线观看| 日韩av一区在线观看| 全色精品综合影院| 亚洲天堂成人在线| 麻豆视频网站在线观看| 成人97在线观看视频| 1stkiss在线漫画| 欧美激情亚洲自拍| 偷拍自拍在线看| 国产精品视频男人的天堂| 日本久久二区| 99re视频在线播放| 林ゆな中文字幕一区二区| 精品欧美一区二区在线观看视频 | 麻豆精品视频在线观看免费| 欧美视频亚洲图片| 国产成人欧美日韩在线电影| 中文字幕人妻一区二区三区| 久久新电视剧免费观看| 美国精品一区二区| 一区二区成人在线| www.com国产| 欧美日韩情趣电影| www.污视频| 亚洲人成欧美中文字幕| 黄色动漫在线| 性欧美激情精品| 精品乱码一区二区三区四区| 成人欧美一区二区三区视频| 欧美极品在线观看| 国产免费xxx| 久久深夜福利| 人妻换人妻仑乱| 91一区一区三区| 我要看黄色一级片| 日本少妇一区二区| 欧美激情按摩在线| 成人免费图片免费观看| 国产日韩欧美在线观看| 欧美成人专区| 亚洲美女自拍偷拍| 久久国产精品99国产| 国产成人av免费观看| 久久精品这里都是精品| 久久久国产成人| 欧美日韩免费在线视频| 婷婷五月综合激情| 久久九九国产精品怡红院| 欧美人与性动交xxⅹxx| 国产精品美女xx| 91精品一区二区三区综合| 无码播放一区二区三区| 国产一区二区电影| 中文字幕黄色网址| 香蕉影视欧美成人| 99国产精品久久久久久久成人| 一本色道久久综合亚洲精品小说 | 综合久久给合久久狠狠狠97色 | 欧美日韩亚洲视频| 亚洲精品成人电影| 俺也去精品视频在线观看| 蜜桃精品在线| 久久国产主播精品| 国内精品久久久久久久影视麻豆 | www.成人网.com| 91精品国产闺蜜国产在线闺蜜| 在线观看国产日韩| 欧美午夜黄色| 午夜精品一区二区三区视频免费看| 激情五月婷婷网| 99热这里只有成人精品国产| 毛片毛片毛片毛片毛片毛片毛片毛片毛片 | 成人免费在线观看入口| 波多野结衣一区二区三区在线| 日韩av在线播放资源| а√天堂中文在线资源8| 91久久久一线二线三线品牌| 亚洲a一区二区三区| 中文字幕 日韩 欧美| 一区视频在线播放| 91福利免费视频| 伊人久久大香线蕉av一区二区| 婷婷六月国产精品久久不卡| 欧美精品亚洲精品| 久久中文在线| jizz18女人高潮| 在线观看av不卡| 92国产在线视频| 国产日韩欧美夫妻视频在线观看| 久久精品国产68国产精品亚洲| 超碰在线播放91| 国产精品久久久久久久岛一牛影视| 亚洲天堂999| 久久精品中文字幕一区| 国产精品麻豆| 亚洲狼人国产精品| 婷婷激情五月综合| 亚洲男子天堂网| 91超碰碰碰碰久久久久久综合| 亚洲国产一区二区精品视频 | 免费黄视频在线观看| 亚洲成人福利片| 欧美xxx.com| 国产精品丝袜视频| 我不卡神马影院| 日本性生活一级片| 午夜日韩在线观看| 精品久久av| 成人福利在线视频| 午夜日韩在线| 中国黄色a级片| 欧美日韩综合色| 深夜国产在线播放| 久久国产精品免费一区| 水蜜桃久久夜色精品一区的特点| 欧美人与禽zoz0善交| 日韩网站在线看片你懂的| 国产精品电影| 亚洲精品国产精品国自产| 国产一区在线不卡| 成年人午夜视频| 中文字幕欧美日韩| 凹凸成人在线| 激情五月亚洲色图| 亚洲日本青草视频在线怡红院| 日本黄视频在线观看| 国产精品精品视频一区二区三区| 综合视频在线| 三上悠亚影音先锋| 欧美一区二区三区日韩| 英国三级经典在线观看| 自拍偷拍99| 91碰在线视频| 国产婷婷在线视频| 日韩免费黄色av| 欧美久久九九| 国产黄色大片免费看| 亚洲国产精品免费|