不知不覺,jQuery離初次發(fā)布已經(jīng)過去了將近八年。經(jīng)年之間,Web開發(fā)的面貌已經(jīng)煥然一新,jQuery的變遷也與時(shí)俱進(jìn)。jQuery團(tuán)隊(duì)無時(shí)無刻不是沿著維護(hù)舊有代碼的兼容性及支持Web開發(fā)當(dāng)下的最佳實(shí)踐之間的道路一往無前。
語義版本控制(semantic versioning,或簡稱semver)就是這些最佳實(shí)踐之一。它讓開發(fā)人員(以及構(gòu)建工具)建立起一種觀念,即在移至軟件的新版本時(shí)存在風(fēng)險(xiǎn)。版本號(hào)形如主版本號(hào).次版本號(hào).補(bǔ)丁版本號(hào),其中三個(gè)組成部分都是整數(shù)。在semver中,如果主版本號(hào)部分發(fā)生了變化,就意味著API部分有著破壞性的變化,所以開發(fā)人員需要提高警惕。
版本控制這個(gè)概念在jQuery中變得更細(xì)化了一些,因?yàn)闉g覽器兼容性和API兼容性幾乎是同等重要的。為了讓jQuery變得瘦身一些,團(tuán)隊(duì)在 2013年交付了兩個(gè)版本。第一個(gè)版本保持著1.x的編號(hào),它目前發(fā)展到了1.11.1,目的在于維護(hù)與最大多數(shù)瀏覽器的兼容性。第二個(gè)版本,從 2.0.0起步,目前發(fā)展到了2.1.1,則放棄了對于諸如IE8以下版本這樣的瀏覽器的支持,目的在于精簡代碼。1.x和2.x版本的jQuery有著 相同的公開API,盡管它們的內(nèi)部實(shí)現(xiàn)有著些許不同之處。
我們的下一個(gè)發(fā)布版本將采用全新的命名法。同此前一樣,會(huì)有兩組不同的發(fā)布文件?,F(xiàn)在的1.11.1版本的繼任者將稱為jQuery Compat 3.0,而jQuery 2.1.1則由jQuery 3.0接棒。在npm和Bower上,它們會(huì)是兩個(gè)不同的包,但它們會(huì)共享同一個(gè)版本號(hào),來說明它們在API層面上的行為是一致的。
從這批發(fā)布開始,我們也將調(diào)整對瀏覽器的支持策略。主jQuery包將維持其短小精悍的特點(diǎn),并且只支持在發(fā)布之時(shí)使用廣泛的常青瀏覽器 (evergreen browsers,意為特定瀏覽器的當(dāng)前和此前的若干版本)。我們會(huì)根據(jù)市占情況,為更多瀏覽器提供支持。而jQuery Compat包則為范圍更加廣泛的瀏覽器提供支持,但代價(jià)就是文件體積將會(huì)更大一些,執(zhí)行效率也會(huì)受到一些潛在影響。
盡管這是一次大版本躍遷,但我們認(rèn)為對于大多數(shù)jQuery代碼來說,并不會(huì)發(fā)生很大的遷移問題。我們在這次版本升級(jí)時(shí),可是很符合semver的好公民標(biāo)準(zhǔn)的。諸如移除已棄用方法這樣的變化,會(huì)被jQuery Migration插件的新版本檢測出來,這么一來查找和修復(fù)工作都很簡單了。在今后的博客文章中,我們會(huì)討論這些變化的更多細(xì)節(jié)。
好啦,下面就是jQuery 3.0版本的提要:
-
如果您需要支持最大多數(shù)的瀏覽器,包括IE8、Opera 12、Safari 5等等,那就請使用jQuery-Compat 3.0.0包。我們建議大多數(shù)網(wǎng)站都應(yīng)該使用這一版本,因?yàn)樗鼮榫W(wǎng)站來訪者提供了最好的兼容性。
-
如果你的網(wǎng)站只為最先進(jìn)的常青瀏覽器而建,或只是作為一個(gè)基于HTML的應(yīng)用以嵌入一個(gè)Web視圖(比如PhoneGap或Cordova),你預(yù)先知道使用Web頁面的是哪些瀏覽器引擎,那就用jQuery 3.0.0包吧。
-
除非我們另有聲明,對應(yīng)的主、次版本號(hào)相同的兩個(gè)包都會(huì)包含相同的公開API。這樣開發(fā)者就能夠很容易地在兩個(gè)包之間切換,同時(shí)在第三方的jQuery插件那里擁有最大的兼容性。
未來發(fā)布時(shí),我們都會(huì)把它們同時(shí)放到npm和Bower上。兩個(gè)包在jQuery CDN上都會(huì)以單個(gè)文件的形式提供出來。在那里使用它們,和根據(jù)你自己的需要包含 jquery-compat-3.0.0.js或jquery-3.0.0.js一樣簡便。我們也和Google CDN的運(yùn)營人員商談過,他們也會(huì)為這兩個(gè)包的分發(fā)提供支持。
隨著我們在3.0版本方面工作的推進(jìn),我們會(huì)向所有人告知代碼變更、瀏覽器支持等一切細(xì)節(jié)的更新。敬請期待!