前端項(xiàng)目編譯過(guò)程-概念掃盲版

1. 基本概念

主要介紹vue.js乔遮、nodejs、NPM许布、verdaccio的基本概念和用途诲祸。

1.1. vue.js

vue.js 是最火的前端構(gòu)建 Web 界面的 JavaScript 框架,也是一個(gè)通過(guò)簡(jiǎn)潔的 API 提供高效數(shù)據(jù)綁定和靈活組件的系統(tǒng)掀序。

在vue.js中帆焕,一個(gè)核心的概念,就是讓用戶不再操作html的dom元素不恭,解放了用戶的雙手叶雹,讓程序員可以更多的時(shí)間去關(guān)注業(yè)務(wù)邏輯。

一句話解釋:vue是提高前端界面開發(fā)效率而集成了大量功能的js框架换吧。

1.2. Nodejs

node.js不是一門語(yǔ)言折晦,不是庫(kù),不是框架沾瓦,只是一個(gè)javascript運(yùn)行時(shí)環(huán)境剩彬。

node.js可以解析和執(zhí)行javascript代碼,以前只有瀏覽器可以解析執(zhí)行javascript代碼或悲,現(xiàn)在的javascript可以完全脫離瀏覽器來(lái)運(yùn)行柱衔,一切都?xì)w功于node.js。

在node這個(gè)javascript執(zhí)行環(huán)境中為javascript提供了一些服務(wù)器基本的操作:比如文件讀寫缕探,網(wǎng)絡(luò)服務(wù)的構(gòu)建魂莫,網(wǎng)絡(luò)通信,http服務(wù)器等處理

nodejs能做什么爹耗?

  1. Web服務(wù)器后臺(tái)

  2. 命令行工具[比如可以開發(fā)npm耙考,git,hexo]

  3. 對(duì)于前端開發(fā)潭兽,用到node最多的是他的命令行工具

一句話解釋:nodejs在前端項(xiàng)目中的作用倦始,類似于java語(yǔ)言的jdk。它提供了兩個(gè)功能:本地開發(fā)時(shí)的前端服務(wù)器山卦,以及編譯時(shí)的運(yùn)行環(huán)境鞋邑。前端編譯的過(guò)程實(shí)際上是,將vue框架以及各種高級(jí)js語(yǔ)言編譯成瀏覽器能識(shí)別的基礎(chǔ)的js語(yǔ)言怒坯。

1.3. NPM

npm炫狱,Node Package Manager的縮寫,也就是軟件包管理器剔猿。是Nodejs的默認(rèn)包管理器视译。主要進(jìn)行javascript的包管理。通過(guò)npm归敬,我們可以很方便地進(jìn)行javascript包的下載酷含、升級(jí)鄙早,我們也可以把我們開發(fā)的javascript包共享給其他使用者。

目前npm作為Node.js的一個(gè)組件椅亚,在安裝Node.js時(shí)限番,即可自動(dòng)安裝npm。

npm默認(rèn)的源在國(guó)外呀舔,執(zhí)行命令npm install弥虐,實(shí)際上是從國(guó)外的服務(wù)器地址上(https://registry.npmjs.ort/)下載包的過(guò)程,國(guó)內(nèi)使用該鏡像地址媚赖,經(jīng)常出現(xiàn)鏈接不上或者下載速度慢的問(wèn)題霜瘪,所以國(guó)內(nèi)常用的鏡像地址是淘寶鏡像:https://registry.npm.taobao.org/

NPM能干什么惧磺?

使用npm命令颖对,能直接將一個(gè)第三方依賴包下載到本地。如執(zhí)行命令npm install -g verdaccio磨隘,就能將前端倉(cāng)庫(kù)verdaccio缤底,安裝到本地。Vue開發(fā)過(guò)程中依賴眾多的依賴包番捂,比如框架vue个唧、組件庫(kù)ant-design-vue、圖表組件庫(kù)echarts设预、視頻播放器vue-video-player坑鱼、國(guó)際化插件vue-i18n等大大小小的組件,都需要從npm的鏡像地址上下載到本地絮缅。

一句話解釋:npm在前端項(xiàng)目開發(fā)中作為下載、更新呼股、上傳依賴包的工具使用耕魄。

擴(kuò)展知識(shí):npm安裝插件的過(guò)程

image.png

1.4. 倉(cāng)庫(kù)verdaccio

前端倉(cāng)庫(kù),不是前端開發(fā)的必備項(xiàng)彭谁。是否需要倉(cāng)庫(kù)吸奴,要根據(jù)項(xiàng)目的前端架構(gòu)設(shè)計(jì)以及項(xiàng)目的復(fù)雜性而選擇。市面上前端倉(cāng)庫(kù)的插件也有好幾款缠局,verdaccio是體量較小则奥、易于上手的倉(cāng)庫(kù)之一。

倉(cāng)庫(kù)的應(yīng)用場(chǎng)景有以下幾種情況:1狭园、內(nèi)部開發(fā)環(huán)境是離線環(huán)境读处,開發(fā)人員無(wú)法連接到淘寶鏡像等npm公有倉(cāng)庫(kù),此時(shí)需要搭建一個(gè)企業(yè)內(nèi)部的私有倉(cāng)庫(kù)唱矛,解決離線開發(fā)下載依賴包的問(wèn)題罚舱;2井辜、公司產(chǎn)品很大,劃分多個(gè)部門一起開發(fā)管闷,為了保持風(fēng)格統(tǒng)一粥脚,將某些公用模塊抽取出來(lái),做成一個(gè)依賴包包个,上傳到倉(cāng)庫(kù)上刷允,不同部門的人統(tǒng)一下載、升級(jí)該模塊碧囊。典型的應(yīng)用場(chǎng)景如云平臺(tái)和云服務(wù)之間的關(guān)系树灶。門戶、鑒權(quán)等模塊是統(tǒng)一提供的呕臂,每個(gè)服務(wù)不需要重復(fù)開發(fā)破托,去倉(cāng)庫(kù)下載即可;3歧蒋、產(chǎn)品功能多土砂,業(yè)務(wù)復(fù)雜,要分多個(gè)工程來(lái)開發(fā)谜洽,多個(gè)工程所依賴的公共模塊萝映,可開發(fā)成公共依賴包,發(fā)布到倉(cāng)庫(kù)阐虚,供其他工程使用序臂。我們的產(chǎn)品就屬于這一種。目前我們產(chǎn)品是內(nèi)網(wǎng)開發(fā)实束,沒(méi)有網(wǎng)絡(luò)奥秆,所以verdaccio同時(shí)也滿足場(chǎng)景一的描述。

依賴包查找流程如下圖所示咸灿。

image.png

2. 前端工程編譯

2.1. 單工程簡(jiǎn)單編譯

一個(gè)簡(jiǎn)單的vue工程构订,其文件結(jié)構(gòu)如下圖所示:

image.png

package.json中提前配置好了該工程所需的依賴包列表,若需要中途安裝一個(gè)第三方包避矢,則該包的名字也會(huì)被自動(dòng)寫入到package.json中悼瘾。也就是說(shuō),可以提前把依賴包名稱登記在package.json中审胸,也可以在下載包的過(guò)程中亥宿,用命令自動(dòng)寫入到package.json中。(package.json文件不僅僅保存了依賴包列表砂沛,還有該工程的其他信息烫扼,此處簡(jiǎn)化。)

node_modules文件匯集了眾多的依賴包碍庵,該文件一般不提交到代碼庫(kù)中材蛛,編譯時(shí)會(huì)重新下載圆到,每次下載都是增量下載,只下載更新的包卑吭,或者新增加的包芽淡。

image.png

2.2. 前端項(xiàng)目完整編譯

我們的項(xiàng)目有大概23個(gè)前端工程,包括1個(gè)基座工程(100_PortalManage)和22個(gè)插件工程豆赏。編譯時(shí)挣菲,1個(gè)基座工程和22個(gè)插件工程,編譯方式不同掷邦。

22個(gè)插件工程先編譯白胀,插件工程的編譯流程如下所示:

插件工程編譯

基座工程編譯如下所示:

基座工程編譯

完整的編譯流程為,101到126是插件工程抚岗,編譯插件工程時(shí)會(huì)生成包文件libs或杠,上傳到倉(cāng)庫(kù)verdaccio上;插件編譯完成后宣蔚,會(huì)編譯基座100_portalManamge工程向抢,編譯基座工程前,先會(huì)將所依賴第三方包和剛才上傳的插件包一起下載下來(lái)胚委,再編譯基座工程挟鸠,最終生成可直接運(yùn)行的文件,編譯結(jié)束亩冬。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末艘希,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子硅急,更是在濱河造成了極大的恐慌覆享,老刑警劉巖,帶你破解...
    沈念sama閱讀 211,265評(píng)論 6 490
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件营袜,死亡現(xiàn)場(chǎng)離奇詭異淹真,居然都是意外死亡,警方通過(guò)查閱死者的電腦和手機(jī)连茧,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,078評(píng)論 2 385
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)巍糯,“玉大人啸驯,你說(shuō)我怎么就攤上這事∷盥停” “怎么了罚斗?”我有些...
    開封第一講書人閱讀 156,852評(píng)論 0 347
  • 文/不壞的土叔 我叫張陵,是天一觀的道長(zhǎng)宅楞。 經(jīng)常有香客問(wèn)我针姿,道長(zhǎng)袱吆,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 56,408評(píng)論 1 283
  • 正文 為了忘掉前任距淫,我火速辦了婚禮绞绒,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘榕暇。我一直安慰自己蓬衡,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 65,445評(píng)論 5 384
  • 文/花漫 我一把揭開白布彤枢。 她就那樣靜靜地躺著狰晚,像睡著了一般。 火紅的嫁衣襯著肌膚如雪缴啡。 梳的紋絲不亂的頭發(fā)上壁晒,一...
    開封第一講書人閱讀 49,772評(píng)論 1 290
  • 那天,我揣著相機(jī)與錄音业栅,去河邊找鬼秒咐。 笑死,一個(gè)胖子當(dāng)著我的面吹牛式镐,可吹牛的內(nèi)容都是我干的反镇。 我是一名探鬼主播,決...
    沈念sama閱讀 38,921評(píng)論 3 406
  • 文/蒼蘭香墨 我猛地睜開眼娘汞,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼歹茶!你這毒婦竟也來(lái)了?” 一聲冷哼從身側(cè)響起你弦,我...
    開封第一講書人閱讀 37,688評(píng)論 0 266
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤惊豺,失蹤者是張志新(化名)和其女友劉穎,沒(méi)想到半個(gè)月后禽作,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體尸昧,經(jīng)...
    沈念sama閱讀 44,130評(píng)論 1 303
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,467評(píng)論 2 325
  • 正文 我和宋清朗相戀三年旷偿,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了烹俗。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 38,617評(píng)論 1 340
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡萍程,死狀恐怖幢妄,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情茫负,我是刑警寧澤蕉鸳,帶...
    沈念sama閱讀 34,276評(píng)論 4 329
  • 正文 年R本政府宣布,位于F島的核電站,受9級(jí)特大地震影響潮尝,放射性物質(zhì)發(fā)生泄漏榕吼。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,882評(píng)論 3 312
  • 文/蒙蒙 一勉失、第九天 我趴在偏房一處隱蔽的房頂上張望羹蚣。 院中可真熱鬧,春花似錦戴质、人聲如沸度宦。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,740評(píng)論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)戈抄。三九已至,卻和暖如春后专,著一層夾襖步出監(jiān)牢的瞬間划鸽,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 31,967評(píng)論 1 265
  • 我被黑心中介騙來(lái)泰國(guó)打工戚哎, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留裸诽,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 46,315評(píng)論 2 360
  • 正文 我出身青樓型凳,卻偏偏與公主長(zhǎng)得像丈冬,于是被迫代替她去往敵國(guó)和親。 傳聞我的和親對(duì)象是個(gè)殘疾皇子甘畅,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 43,486評(píng)論 2 348

推薦閱讀更多精彩內(nèi)容