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