阅读更多

0顶
0踩

Web前端

jQuery 3.0在日前发布了最终的全新版本。从2014年10月,jQuery团队对这个主要大版本进行维护开始,web开发者社区便一直在期待着这一刻的到来,终于在2016年6月他们迎来了这一个最终版。

通过jQuery 3.0的版本更新说明,我们看到了一个保持着向后兼容的更轻便,更快速的jQuery。在本文中,我们将介绍一些令人眼前一亮的jQuery 3.0全新特性。

开始前的说明

如果你想要下载jQuery 3.0进行亲自实验,可以通过该页面进行下载。另外,升级指南源代码也值得你一看。

如果你想要测试一下你的项目如何在jQuery 3.0中工作的,你可以尝试通过jQuery迁移插件来识别代码的兼容性问题,你也可以查看jQuery未来发展的时间表

1. 移除旧的IE工作区

新的最终版最主要的目标是更加快速,更加时尚,因此,那些支持早于IE9版本的相关技术与工作区都被移除了。这意味着如果你想要或者需要支持IE6-8,你必须用回1.12版本,因为甚至是2.X版本都无法完整支持早于IE9的浏览器。查看完整的浏览器支持方案>>

jQuery 3.0

注意:在jQuery 3中还弃用了一些其它的功能。截止到2016年6月,升级指南还没有提供一个对于弃用功能的分组整理。因此,你如果想要了解弃用功能,可以通过ctrl+f键来进行搜索。

jQuery 3.0

2. jQuery 3.0运行在Strict Mode下

大多数支持jQuery 3的浏览器都支持strict mode,而在本次更新中对此进行了规定。

虽然jQuery 3是写在strict mode中的,但是你需要了解的是你的代码并不需要运行在strict mode中,因此如果你想要把以前的代码迁移到jQuery 3,你不需要对已存在的jQuery代码进行重写。Strict和non-strict mode的JavaScript代码可以和谐共存。

这里有一些例外:某些版本的ASP.NET,因为strict mode的缘故,无法与jQuery 3兼容,如果你的代码涉及到了ASP.NET,你可以查看关于strict mode的细节

3. 引进for...of循环

jQuery 3支持for...of语句,这是由ECMAScript 6中新引进的一种for循环语句。这提供了对ArraysMapsSets这样的可迭代对象一种更直接的遍历方法。

在jQuery中,for...of循环可以取代以前的$.each(...)语法,并且更容易通过jQuery的元素集合进行循环。

jQuery 3.0

注意:for...of只能在支持ECMAScript 6的环境下或者使用Babel这样的JavaScript编译器下工作。

4. 动画方面采用新的API

jQuery 3使用requestAnimationFrame() API来执行动画,使动画运行得更加顺畅、快速。新的API只用于支持它的浏览器,对于那些更老的浏览器(如IE9)jQuery使用先前的API来作为显示动画的后备方案。

RequestAnimationFrame已经推出一段时间了,如果你对如何使用它以及什么时候使用它感兴趣,CSS Tricks上有一篇很好的文章可供你阅读。

jQuery 3.0

5. 对包含特殊含义的字符串提供转义的新方法

新的jQuery.escapeSelector()提供了对在CSS中存在特殊含义的字符串或字符进行转义的方法,该方法可使这些字符串或字符能够继续用于jQuery选择器中,而无需对那些无法进行正确理解的JavaScript解释器进行转义。

这个示例可以让你更好的了解这个全新的方法:

举个例子,页面中某个ID为“abc.def”的元素由于选择器将其解析为ID为“abc”且包含一个名为“def”的类的对象,而无法被$( "#abc.def" )选定。但是它可以由 $( "#" + $.escapeSelector( "abc.def" ) )来进行选定。

我无法确定发生中情况的频率,但是假如你碰到过这种类似的情况,这无疑给了你一个解决该问题的简单方法。

6. 类操作方法支持SVG

不幸的是,jQuery 3现在还无法完整的支持SVG,但是对于操作CSS类名称的jQuery方法,如.addClass().hasClass()现在可以将SVG文档作为目标。这意味着你可以修改(添加、删除、切换)或者查找SVG(可缩放矢量图形)下的jQuery类,然后使用CSS的类样式。(相关阅读:Styling Scalable Vector Graphic (SVG) with CSS

7. 延迟对象现在与JS Promises兼容

JavaScript Promises,用于异步计算的对象,现在在ECMAScript 6中已经被标准化;它们的运行状况和特性的详细说明参见Promises/A+标准。

jQuery 3.0

在jQuery 3中,延迟对象已经与新的Promises/A+标准相兼容,延迟对象已经成为让创建回调队列成为可能的可链对象(chainable objects)。

新的特性改变了异步回调函数执行过程,Promises允许开发者编写在逻辑上与同步代码更接近的异步代码。

查看升级指南的代码示例,或者查看关于JavaScript Promises基础的Scotch.io教程可以让你了解更多的信息。

8. jQuery.when()对于多种参数的不同解读

$.when()提供了执行回调函数的一种方法,它成为了jQuery 1.5之后的一部分。这个方法非常灵活,它适用于零参数,也适用于一个或者多个作为参数的对象。

jQuery 3改变了当包含$.then()方法时对$.when()中参数的解读方法,你可以对$.when()进行额外的参数回调。

在jQuery 3中,如果你在$.when()中的then()方法内增加一个输入参数,该参数将会被解释成一个可与Promise兼容的"thenable"

这意味着 $.when方法能够接收更加宽广的输入范围,比如原生的ES6 PromisesBluebird Promises,这也使得编写更复杂的异步回调成为了可能。

9. 新的显示/隐藏逻辑

为了增加响应式设计的兼容性,与元素显示和隐藏的代码在jQuery 3中进行了更新。

从现在开始,.show().hide().toggle()方法将会以内联样式为重点取代以前的计算样式,这种方式能够更尊重样式列表的改变。

新的代码尽可能的尊重样式列表中所呈现的数值,这意味着CSS规则可根据事件(如设备重新定位和窗口尺寸调整)进行动态改变。

这个说明文件申明了最重要的结果就是:

“作为结果,断开连接的元素除非指定了内联display: none,否则将不再认定为是隐藏的。因此,在jQuery 3.0中,.toggle()不再对断开连接元素与已连接元素进行区分。”

如果你想要更好的了解关于全新的显示/隐藏逻辑,这个Github discussion会对你有帮助。jQuery开发者还发布了Google文档表来展示在不同用例下新规则的运转。

10. 对于防止XSS攻击的额外保护

jQuery 3增加一个额外的安全层用户用于防备跨站点脚本(XSS)攻击,它需要开发者指定$.ajax()$.get()方法中的选项为dataType: "script"。

换言之,如果你想要执行跨站点的脚本请求,你必须在这些方法中作出这样的声明。

jQuery 3.0

新的改变对于当“远程站点传递非脚本内容之后又提供有恶意脚本的服务内容”的情况是非常有效的。这个变化不会影响$.getScript()方法,因为它明确地设置了dataType: "script"选项。

 

本文翻译自hongkiat.com,译者:慧都控件网-回忆和感动

来自: 慧都控件网
0
0
评论 共 0 条 请登录后发表评论

发表评论

您还没有登录,请您登录后再发表评论

相关推荐

  • OBEX协议内容详解

    本文档详细介绍OBEX协议的内容,及怎样通过OBEX协议进行数据交换

  • OBEX(一)

    一、概述 1、OBEX v2.0(v2.0版本开始OBEX直接在L2CAP上传输,v2.0版本以前OBEX在RFCOMM上传输) 2、OBEX即Object Exchange Protocol,对象交换协议 3、OBEX协议是典型的client/server request-response模型 4、OBEX v2.0蓝牙协议层次结构图: 5、OBEX可以用来传输vCard(电话本),vCalendar(电子日历),vMessage(短信和email)和vNotes(电子笔记)。 二、OBE

  • 蓝牙信息交换服务器,蓝牙--对象交换协议(OBEX)

    1.OBEX协议概述OBEX是IrOBEX的简称,IrOBEX协议是红外数据协会IrDA开发的用于红外数据链路上数据对象交换的会话层协议.OBEX是一种紧凑高效的二进制协议,功能类似于HTTP协议。为了支持不同的平台,OBEX不指定特定的传输数据类型,只定义传输对象(Object).OBEX在蓝牙系统中被映射到RFCOMM和TCP/IP层之上,其中OBEX overTCP/IP是作为可选项出现的....

  • Android BluetoothObex

    OBEX全称为Object Exchange,中文对象交换,所以称之为对象交换协议。它在此软件当中有着核心地位,文件传输和IrMC同步都会使用到它。OBEX v2.0蓝牙协议层次结构图:OBEX可以用来传输vCard(电话本),vCalendar(电子日历),vMessage(短信和email)和vNotes(电子笔记)。

  • OBEX(二)

    三、Session Protocol OBEX操作由request-response对组成。Request由client发出的,response由server发出的。Client发送一个request后,需要在收到来自server的response之后才能发送新的request。但是当启动OBEX Single Response Mode (SRM)时执行Put或者Get操作的时候也有例外的情况,在这种情况下,为了提高OBEX的吞吐量会忽略标准的request-response序列。 1、Req...

  • 蓝牙开发经验小结——自动文件传输(OBEX)

    场景:控制端——普通手机;被控制端——XX设备(无屏幕、无法用户操作、有系统权限) 网上关于文件传输实现的文章较少,没有发现满足我需求的资料,于是我索性深入到系统源码里头,研究了系统蓝牙(com.android.bluetooth不同的平台包名可能有差异)是如何实现文件收发的,然后再设计出自己的实现方案。 对于已经实现了蓝牙socket通讯(BluetoothChatService和Bluetoo...

  • 蓝牙的OBEX协议

    1.概述     OBEX为Object Exchange,用于在蓝牙设备间传数据对象,来源于红外定义的协议,后被蓝牙采用。OBEX在蓝牙协议层中的位置如下图(在之前的OBEX版本中,OBEX是通过RFCOMM挂在L2CAP上的): 2.Object Model     OBEX定义了Object model来进行数据的交换,形式为Request-Respon

  • 蓝牙OBEX剖析(一)

    一.概述 二.架构 三.对象模型 1.可选头 Headers的构成 Headers简单的由和组成,简称为和。 HI由一个字节组成,指出了Header包含的内容以及它的格式。HV包含了一个或者多个字节,其结构由HI所决定。 所有的Header都是可选的,取决于设备的类型和事务的种类。你可以使用所有的Header,或者一些,或者没有。ID可以使Header可解析以及与传输顺序

  • 蓝牙对象交换协议(OBEX) - 常见的opcode介绍

    OBEX全称为Object Exchange,是对象交换协议,蓝牙的OBEX是IrOBEX的子集,其中对象是一个柔性概念,可以包括文件,诊断信息,电子商务卡片(Vcard),银行的存款,短信消息等等。Objects在这里没有高级的技术含义,而是视你的应用而定

  • 蓝牙对象交换协议(OBEX) - 概念介绍

    OBEX全称为Object Exchange,是对象交换协议,蓝牙的OBEX是IrOBEX的子集,其中对象是一个柔性概念,可以包括文件,诊断信息,电子商务卡片(Vcard),银行的存款,短信消息等等。Objects在这里没有高级的技术含义,而是视你的应用而定

  • OpenOBEX代码阅读笔记

    OpenOBEX代码阅读笔记 转载时请注明出处和作者联系方式:http://blog.csdn.net/absurd作者联系方式:Li XianJing 更新时间:2007-1-20 OBEX是Object Exchang的简称,本来是IrDA™为红外传输制定的协议,但它并不限于特定的底层传输方式,可以运行于blueteeth、usb和tcp/ip其它多种协议之上。OBEX

  • 蓝牙协议栈

    蓝牙支持点对点和点对多点的通信。蓝牙最基本的网络结构是匹克网(Picnet)。匹克网实际上是一种个人网络,它以个人区域(即办公室区域)为应用环境。需要指出的是,匹克网并不能够代替局域网,它只是用来代替或简化个人区域中的电缆连接。 匹克网主要由主设备和从设备构成。主设备负责提供时钟同步信号和跳频序列,而从设备一般是受控同步的设备,并接收主设备的控制。在同一匹克网中,所有设备均采用同一跳频序列。

  • OpenIMS Core安装

    具体OpenIMSCore的安装步骤已经有很多人写了 参考http://www.vpsee.com/2009/07/install-configure-openimscore/ 原文如下(有剪切): [xhtml] view plaincopy 下面是安装在 Ubuntu 9.04 Desktop 版本上的过程,Ubuntu 的其他版

  • Open IMS Core 安装

    昨天安装第3个和第4个操作系统,成功将文件系统搞挂...只有重新安装Ubuntu-desktop 10.04具体OpenIMSCore的安装步骤已经有很多人写了参考http://www.vpsee.com/2009/07/install-configure-openimscore/原文如下(有剪切):下面是安装在 Ubuntu 9.04 Desktop 版本上的过程,Ubunt

  • 蓝牙测试必备工具openobex-1.5

    蓝牙测试必备工具openobex-1.5.tar.gz 测试蓝牙发送和接受数据. 解压并进入源码包所在目录,依次执行以下命令: #./configure --prefix=/root/bluez/openobex --host=arm-linux CC="arm-linux-gcc -I/root/bluez/bluez-libs/include -L/root/bluez/bluez-libs/lib" --enable-bluetooth --disable-usb --enable-apps #make #make install

  • Ubuntu8.10安装Open IMSCore

     为了学习ims,在电脑上装了双系统,xp+ubuntu8.10。下列是open ims core安装过程。第一步: 解决上网问题和设置软件源      1、动态ipDHCP方法配置如下(假设通过eth0上网)# The primary network interface - use DHCP to find our addressauto eth0iface eth0

  • OpenIMSCore安装

    Normal 0 7.8 磅 0 2 false false false MicrosoftInternetExplorer4 <object class

  • OpenIMSCore的搭建过程

    openIMSCore是一个IMS架构的开源实现,由德国一个教授进行主管,在Ubuntu下搭建很方便。IMS架构作为多媒体业务核心网的一种发展方向,在越来越多的通信系统中,起到了重要作用。         最近考虑在做的服务器中,原本协议提到了一种实体:SIP-CORE,由P-CSCF、I-CSCF、S-CSCF和HSS四个大组件组成,在整个通信协议栈中处于中间的位置,从底层来看像接入网,从

  • OpenIMSCore安装和配置

    参考 安装和配置OpenIMSCoreOpenIMS客户端傻瓜安装指南 操作系统 Ubuntu11.10 下载源码 mkdir/opt/OpenIMSCorecd/opt/OpenIMSCoremkdirser_imssvncheckouthttp://svn.berlios.de/svnroot/repos/openimsco...

Global site tag (gtag.js) - Google Analytics