日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪(fǎng)問(wèn) 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) > 编程资源 > 综合教程 >内容正文

综合教程

一个单行代码 npm 包使得 JavaScript 生态系统陷入混乱

發(fā)布時(shí)間:2023/11/22 综合教程 51 生活家
生活随笔 收集整理的這篇文章主要介紹了 一个单行代码 npm 包使得 JavaScript 生态系统陷入混乱 小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

  上周六,一個(gè)很小的 JavaScript 庫(kù)的更新使得大部分 JavaScript 生態(tài)系統(tǒng)陷入了混亂。據(jù) ZDNet指出,大約有數(shù)百萬(wàn)個(gè)項(xiàng)目在這一事件中受到了影響。

  而令人感到震驚地是,引起整個(gè)混亂的僅僅是一個(gè)“單行代碼(one-liner) ”的 JavaScript 庫(kù)。這也是第二次發(fā)生由小型 JavaScript 項(xiàng)目引起廣泛?jiǎn)栴}的情況。第一次是發(fā)生在 2016 年 3 月,當(dāng)時(shí) left-padJavaScript 庫(kù)的作者(一個(gè)總共只有 17 行代碼的項(xiàng)目)突然決定取消發(fā)布該庫(kù),以類(lèi)似的方式破壞了數(shù)千個(gè)項(xiàng)目。

  而上周末導(dǎo)致一系列問(wèn)題的這個(gè)軟件包名為 is-promise,該庫(kù)由兩行原始源代碼組成,開(kāi)發(fā)人員可以通過(guò)單行調(diào)用在自己的項(xiàng)目中使用它。其目的是讓開(kāi)發(fā)人員測(cè)試 JavaScript 對(duì)象是否為“Promise”函數(shù):用于生產(chǎn)環(huán)境中時(shí),該函數(shù)返回 yes 或 no 的布爾值。

  然而,盡管只是兩行執(zhí)行基本檢查的代碼,is-promise 庫(kù)仍是當(dāng)今最受歡迎的 JavaScript npm 軟件包(庫(kù))之一。根據(jù) GitHub 的說(shuō)法,該庫(kù)是超過(guò) 340 萬(wàn)個(gè)項(xiàng)目的一部分,并被 766 個(gè)其他 JavaScript 庫(kù)用作依賴(lài)項(xiàng)。

  上周末,is-promise 庫(kù)進(jìn)行了更新,以獲取作為ES 模塊(JavaScript 語(yǔ)言使用的標(biāo)準(zhǔn)化模塊系統(tǒng))的支持。但是,is-promise v.2.2.0 版本卻未遵循正確的 ES 模塊標(biāo)準(zhǔn)。因此更新發(fā)布后,由于其不正確的 ES 模塊支持[1,2,3,4,5,6,7,8,9,10] ,在各自的構(gòu)建鏈(build chain)中使用 is-promise 的眾多項(xiàng)目紛紛開(kāi)始出現(xiàn)問(wèn)題。

  該錯(cuò)誤迅速地引發(fā)了一連串的影響,范圍涵蓋至封閉源 JavaScript 代碼庫(kù)和 JavaScript 生態(tài)系統(tǒng)中一些最大的項(xiàng)目。其中包括有:Facebook 的 Create React App(用于創(chuàng)建 React 應(yīng)用程序的標(biāo)準(zhǔn)模板)、谷歌的 Angular.js 框架、谷歌的 Firebasse-tools、亞馬遜的 AWS Serverless CLI、Nuxt.js 和 AVA 等。

So this just happened.

Is-Promise just made a little change and it broke multiple packages.

So far as I've read its broken Firebase-tools, angular cli, aws serveless cli, create react app, possibly more.https://t.co/3ZZofevWNR

— Preet™ (@TmPreet)April 25, 2020

  該 bug 并沒(méi)有導(dǎo)致現(xiàn)有項(xiàng)目崩潰,因此沒(méi)有出現(xiàn)實(shí)際的停運(yùn)故障,但其確實(shí)害得廣大開(kāi)發(fā)人員無(wú)法編譯各自項(xiàng)目的新版本。

  之后,is-promise團(tuán)隊(duì)發(fā)布了一個(gè)更新,但并未能解決該問(wèn)題,最終還是在 v2.2.2 版本中撤回了支持 ES 模塊的功能。

  與 2016 年的情況一樣,is-promise 事件引發(fā)了人們的疑問(wèn),大家開(kāi)始討論 JavaScript 生態(tài)系統(tǒng)中是不是真的需要單行代碼庫(kù)。就像 2016 年以及多年前其他編程語(yǔ)言的生態(tài)系統(tǒng)所提出的那樣,同樣的觀(guān)點(diǎn)再次被提了出來(lái)。

  有人認(rèn)為,如果開(kāi)發(fā)人員創(chuàng)建的庫(kù)只有短短幾行代碼,對(duì)于最無(wú)關(guān)緊要的操作而言,模塊化做得過(guò)頭了,毫無(wú)必要。還有人認(rèn)為,需要對(duì)這些項(xiàng)目進(jìn)行模塊化,因?yàn)橐赃@種方式,“任務(wù) A”可以在一個(gè)模塊中進(jìn)行管理,而不是讓成千上萬(wàn)的開(kāi)發(fā)人員在自己的項(xiàng)目中以不同的方式來(lái)處理它。

  事實(shí)上,有關(guān)模塊化的討論已經(jīng)存在了多年,因此在短期時(shí)間內(nèi)可能也得不出什么結(jié)論。

總結(jié)

以上是生活随笔為你收集整理的一个单行代码 npm 包使得 JavaScript 生态系统陷入混乱的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。

如果覺(jué)得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。