術(shù)語(yǔ)“framework(框架)”,“l(fā)ibrary(庫(kù))”和“tool(工具)”可以根據(jù)情境幻林,在不同時(shí)期,對(duì)不同的人堡僻,意味著不同的東西。這里使用的一般定義如下:
庫(kù)是有用功能的有組織的集合适滓。一個(gè)庫(kù)的典型功能包括處理字符串仆邓、日期暑始、HTML DOM元素廓握、事件搅窿、Cookie、動(dòng)畫隙券、網(wǎng)絡(luò)請(qǐng)求等等男应。每個(gè)函數(shù)都將值返回給調(diào)用應(yīng)用程序,該應(yīng)用程序可以在您選擇的情況下實(shí)現(xiàn)娱仔。你可以把它想象成汽車零件的選擇:你可以自由地使用任何零件來(lái)建造一輛能跑的車殉了,但是你必須自己造一個(gè)引擎。
一個(gè)庫(kù)可以將開發(fā)時(shí)間縮短20%拟枚,因?yàn)槟槐負(fù)?dān)心細(xì)節(jié)問(wèn)題。但是它也不是沒(méi)有缺點(diǎn)的:
框架是一個(gè)應(yīng)用程序的骨架众弓。它要求您以一種特定的方式來(lái)處理軟件設(shè)計(jì)恩溅,,并在某些點(diǎn)插入您自己的邏輯谓娃。通常為您提供諸如事件脚乡、存儲(chǔ)和數(shù)據(jù)綁定之類的功能。使用汽車類比滨达,那么框架提供了一輛車的底盤奶稠,車身和發(fā)動(dòng)機(jī)。為了讓車輛始終保持運(yùn)行狀態(tài)捡遍,你可以添加锌订、刪除或修改某些組件。
框架通常比庫(kù)提供更高的抽象層画株,并且可以幫助您快速構(gòu)建項(xiàng)目的 80%辆飘。但它的缺點(diǎn)是:
工具有助于開發(fā)啦辐,但不是項(xiàng)目的一個(gè)組成部分。工具包括系統(tǒng)構(gòu)建蜈项、編譯器芹关、轉(zhuǎn)譯器、代碼壓縮紧卒、圖像壓縮侥衬、部署機(jī)制等等。
工具應(yīng)該提供一個(gè)更容易的開發(fā)過(guò)程跑芳。例如轴总,許多程序員喜歡用 Sass編譯成CSS,因?yàn)樗峁┝舜a分離聋亡,嵌套肘习,渲染時(shí)變量,循環(huán)和函數(shù)坡倔。瀏覽器不了解 Sass / SCSS語(yǔ)法漂佩,因此在測(cè)試和部署之前,必須使用適當(dāng)?shù)墓ぞ邔⒋a編譯為 CSS罪塔。
庫(kù)投蝉,框架和工具之間的區(qū)別很少≌骺埃框架可以包括一個(gè)庫(kù)瘩缆。庫(kù)可以實(shí)施類似框架的方法。對(duì)于前面二者來(lái)說(shuō)佃蚜,工具又是必不可少的庸娱。我試圖標(biāo)記每個(gè)提到的項(xiàng)目,看看他們屬于庫(kù)谐算,框架還是工具熟尉,但尺度不同,標(biāo)記的類型也可能會(huì)有所不同洲脂。
如果這聽起來(lái)太復(fù)雜斤儿,可以考慮編寫 vanilla JavaScript。沒(méi)關(guān)系恐锦,但是您將不可避免地編寫自己的庫(kù)和/或框架代碼往果。JavaScript本身就是一種瀏覽器和操作系統(tǒng)抽象塔的抽象!