術(shù)語“framework(框架)”,“l(fā)ibrary(庫)”和“tool(工具)”可以根據(jù)情境,在不同時期,對不同的人,意味著不同的東西。這里使用的一般定義如下:
庫是有用功能的有組織的集合。一個庫的典型功能包括處理字符串、日期、HTML DOM元素、事件、Cookie、動畫、網(wǎng)絡(luò)請求等等。每個函數(shù)都將值返回給調(diào)用應(yīng)用程序,該應(yīng)用程序可以在您選擇的情況下實(shí)現(xiàn)。你可以把它想象成汽車零件的選擇:你可以自由地使用任何零件來建造一輛能跑的車,但是你必須自己造一個引擎。
一個庫可以將開發(fā)時間縮短20%,因為您不必?fù)?dān)心細(xì)節(jié)問題。但是它也不是沒有缺點(diǎn)的:
框架是一個應(yīng)用程序的骨架。它要求您以一種特定的方式來處理軟件設(shè)計,,并在某些點(diǎn)插入您自己的邏輯。通常為您提供諸如事件、存儲和數(shù)據(jù)綁定之類的功能。使用汽車類比,那么框架提供了一輛車的底盤,車身和發(fā)動機(jī)。為了讓車輛始終保持運(yùn)行狀態(tài),你可以添加、刪除或修改某些組件。
框架通常比庫提供更高的抽象層,并且可以幫助您快速構(gòu)建項目的 80%。但它的缺點(diǎn)是:
工具有助于開發(fā),但不是項目的一個組成部分。工具包括系統(tǒng)構(gòu)建、編譯器、轉(zhuǎn)譯器、代碼壓縮、圖像壓縮、部署機(jī)制等等。
工具應(yīng)該提供一個更容易的開發(fā)過程。例如,許多程序員喜歡用 Sass編譯成CSS,因為它提供了代碼分離,嵌套,渲染時變量,循環(huán)和函數(shù)。瀏覽器不了解 Sass / SCSS語法,因此在測試和部署之前,必須使用適當(dāng)?shù)墓ぞ邔⒋a編譯為 CSS。
庫,框架和工具之間的區(qū)別很少??蚣芸梢园ㄒ粋€庫。庫可以實(shí)施類似框架的方法。對于前面二者來說,工具又是必不可少的。我試圖標(biāo)記每個提到的項目,看看他們屬于庫,框架還是工具,但尺度不同,標(biāo)記的類型也可能會有所不同。
如果這聽起來太復(fù)雜,可以考慮編寫 vanilla JavaScript。沒關(guān)系,但是您將不可避免地編寫自己的庫和/或框架代碼。JavaScript本身就是一種瀏覽器和操作系統(tǒng)抽象塔的抽象!