
我們已經(jīng)知道前端資產(chǎn)和依賴管理是 npm 的一個(gè)巨大用例,也是 Node.js 采用的主要驅(qū)動(dòng)力。 但究竟有多大? 這是一個(gè)很難回答的問題。 npm 上下載最多的包列表并不是很有幫助:像 async、minimist 和 request 這樣的包是依賴于成千上萬個(gè)其他包的基本包,所以它們當(dāng)然會(huì)一直安裝和下載 作為這些軟件包安裝的一部分。那么,說到前端包,摩擦在哪里?
1. node_modules 沒有按照前端包需要的方式排列
這是一個(gè)非常明顯的問題。 node_modules 文件夾是 npm 默認(rèn)放置包的位置,以利用 Node.js 模塊加載語義。根據(jù)你安裝的軟件包,軟件包最終位于樹中的不同位置。這對 Node 來說很有效,但是 HTML 和 CSS,無論好壞,通常都希望東西在一個(gè)位置,比如 /static/mypackage。可以肯定的是,有一些解決方法,但還沒有一流的解決方案。
2. 前端依賴有不同的沖突解決需求
Node 模塊加載器的樂趣之一是它允許你同時(shí)存在同一個(gè)模塊的多個(gè)不兼容的版本,而 npm 的樂趣之一是它將這些版本放在正確的位置,以便你期望的版本會(huì)加載到你期望的位置。這對消除“依賴地獄”大有幫助,也是 Node 的“許多小模塊”模式如此實(shí)用和受歡迎的原因之一。
但是前端依賴項(xiàng)根本無法以這種方式工作。如果你加載兩個(gè)版本的 jQuery,一個(gè)會(huì)“獲勝”。如果你加載兩個(gè)版本的 Bootstrap CSS 框架,它們將同時(shí)應(yīng)用并破壞你的樣式。未來,Web 組件和 Shadow DOM 等 HTML 的新發(fā)展可能有助于解決這些問題,但目前,前端依賴關(guān)系可能會(huì)發(fā)生沖突,我們?nèi)绾巫R(shí)別和優(yōu)雅地處理它?
3. 維護(hù)多個(gè)包清單很煩人
前面問題的解決方案一直是為前端包創(chuàng)建額外的注冊中心,但這造成了單個(gè)項(xiàng)目必須有一個(gè)package.json、一個(gè)bower.json、一個(gè)component.json等等的情況,并且每次發(fā)生小更新時(shí)都編輯它們,像所有數(shù)據(jù)重復(fù)一樣,這既繁瑣又容易出錯(cuò)。
4. 尋找與瀏覽器兼容的包是件痛苦的事
npm 是 JavaScript 的注冊表,但目前注冊表中的大部分內(nèi)容是 Node.js。其中一些模塊適用于使用諸如 browserify 之類的模塊的客戶端時(shí)可以工作,但其中一些則不能。目前,如果不嘗試它們,就無法輕松找出哪些可以,哪些不可以。 注:尊重原創(chuàng)文章,轉(zhuǎn)載請注明出處和鏈接 http://m.dedgn.cn/news-id-20833.html 違者必究!部分文章來源于網(wǎng)絡(luò)由培訓(xùn)無憂網(wǎng)編輯部人員整理發(fā)布,內(nèi)容真實(shí)性請自行核實(shí)或聯(lián)系我們,了解更多相關(guān)資訊請關(guān)注web前端頻道查看更多,了解相關(guān)專業(yè)課程信息您可在線咨詢也可免費(fèi)申請?jiān)囌n。關(guān)注官方微信了解更多:150 3333 6050