近日,jQuery Core團隊發布了jQuery 1.8 Beta 1。其代碼位于jQuery CDN上,地址是http://code.jquery.com/jquery-1.8b1.js。GA版預計于這個月發布。jQuery Core團隊還談到了他們對于jQuery下一個版本1.9與2.0的規劃,并且提到將要移除對IE6/7/8的支持。
jQuery 1.8
下面是1.8版值得關注的一些變化。
定制化
jQuery 1.8有一個基于grunt的全新構建系統,你可以通過它輕松構建自定義的jQuery版本。你現在可以將不需要的模塊排除在外以使得jQuery盡可能地小。要想構建自己的自定義版本,請克隆jQuery repo并使用grunt將不需要的模塊排除掉?蛇x的模塊有ajax、css、dimensions、effects與offset。比如說,要想移除所有可選的模塊,使用的命令將會如下所示:
git clone git://github.com/jquery/jquery.git cd jquery && npm install grunt custom:-ajax,-css,-deprecated,-dimensions,-effects,-offset
這樣會生成一個只有約21KB大小的定制化jQuery(最小化且經過gzip壓縮)。注意到該功能是面向高級用戶的,因為你必須得清楚項目的依賴關系,特別是所用的第三方插件之間的依賴關系。感興趣的讀者可以閱讀jQuery README文件以了解完整信息。
自動化的廠商CSS前綴
$.css()會自動接收不帶前綴的屬性名,然后生成適合于當前瀏覽器的前綴。Web開發者將不必關心所有特定于廠商的屬性名了。比如說在Chrome中,jQuery調用$("#myscroll").css("marquee-direction", "backwards")會將該CSS設為-webkit-marquee-direction: backwards。
$.Animation
jQuery動畫代碼得到了清理和增強,這是通過使用幾個擴展點來實現的,這些擴展點能夠簡化動畫的添加與修改。如果需要支持沒有內建動畫的老式瀏覽器,那么新的$.Animation則提供了堅實的基礎。如果你只需要支持現代瀏覽器并且使用原生支持的動畫,那么你可以完全忽略掉動畫模塊。注意,$.Animation相關的文檔還在編寫當中。
Sizzle選擇器引擎更新
Sizzle是jQuery的CSS選擇器引擎,在1.8版中它進行了一次較大規模的重寫。重寫的結果是對選擇器匹配帶來了性能上的提升,同時改進了大多數常見選擇器的快捷方式。
XSS防護
jQuery 1.8引入了新的方法$.parseHTML,你可以通過它將輸入指定為HTML,并且知道他們將會被解析為HTML。這是$()無法做到的,因為它還會將輸入字符串解析為選擇器。$.parseHTML還提供了一種方式將HTML解析為DOM塊并控制腳本的執行。我們強烈建議大家使用$.parseHTML,特別是輸入來自于不受信任的源如URL或是用戶輸入的情況下。jQuery 1.9做出了很多變化以實現更好的XSS防護,下文將會對其進行詳述。
全局Ajax事件的附加
全局Ajax事件,如由$.ajax觸發的ajaxStart,目前可以附加到任何元素上了——甚至是不在文檔中的元素。這會導致效率的低下,因此jQuery 1.8將不建議使用該行為。
jQuery 1.9
下面是1.9版的規劃,該版本將于2013年初發布。
XSS防護
根據設計,$()方法可以創建HTML元素并運行腳本(如果傳遞進來的是<script>標簽)。但開發者有時會忘記這一點,將來自不受信任源的字符串傳遞給jQuery,這會導致跨站腳本(XSS)攻擊。在jQuery 1.9中,對$()方法來說“看起來像是HTML”的規則將會得到更加嚴格的處理。一個字符串只有第一個字母是小于號才會被當作是HTML,否則就會被當作是CSS選擇器。由于根據這些更加嚴格的規則,某些HTML字符串將無法被$()識別出來,因此請確保在使用該功能時仔細檢查你的代碼,也可以使用$.parseHTML作為替代函數。
移除$.browser與$.sub
從jQuery 1.3開始,$.browser就不建議被使用了,并且將于jQuery 1.9被移除。還在使用$.browser的開發者應該看看$.support或Modernizr以進行特性檢測。其他選擇有使用jQuery 1.9 compatibility插件、或是直接讀取navigator.userAgent字符串。
從jQuery 1.7開始,$.sub就不建議被使用了,并且將于jQuery 1.9被移除。該函數會創建jQuery的一個新副本,其屬性與方法可以被修改,同時又不會影響到原來的jQuery對象。事實證明,該函數并不是那么有用,因此將會被移到1.9 compatibility插件中。我們期望在移除掉這么多不建議使用的條目后,jQuery 1.9的文件尺寸能夠變得更小一些。
jQuery 2.0
下面是2.0版的規劃,該版本將于2013年初發布,就在jQuery 1.9發布之后不久。
移除對IE6/IE7/IE8的支持
jQuery 2.0所支持的APIs與jQuery 1.9一樣。它并不會增加什么主要的特性,但卻會移除對IE 6/7/8怪癖的支持,比如說臭名昭著的事件模型、IE7的“attroperties”、HTML5 shims等等。1.9與2.0的目標是對于他們所支持的API來說能夠實現互換。jQuery 2.0將會更小、更快,同時不再有為了支持IE6/7/8所引入的那些問題。如果需要支持IE6/7/8,那么請選擇1.9;否則,你既可以使用1.9也可以使用2.0。你還可以通過條件注釋在使用IE6/7/8時只包含進1.9。
<!--[if lt IE 9]> <script src="jquery-1.9.0.js"> <![endif]--> <!--[if gte IE 9]><!--> <script src="jquery-2.0.0.js">< <!--
即便在jQuery 2.0發布后,jQuery團隊也將會繼續支持和維護1.9,只要IE6/7/8的影響還在就不會停止對其的支持。jQuery團隊并未計劃未來添加大量的新APIs,新的功能將會以兼容于1.9與2.0的插件的形式添加進來。
要想了解更多信息,請閱讀jQuery 1.8 Beta 1: See What's Coming (And Going!)與jQuery Core: Version 1.9 And Beyond。