加入收藏 | 设为首页 | 会员中心 | 我要投稿 云计算网_泰州站长网 (http://www.0523zz.com/)- 视觉智能、AI应用、CDN、行业物联网、智能数字人!
当前位置: 首页 > 服务器 > 搭建环境 > Linux > 正文

jQuery中的编程范式详解

发布时间:2016-11-24 06:35:35 所属栏目:Linux 来源:网络整理
导读:本文详细分析了jQuery中的编程范式。分享给大家供大家参考。具体如下: 浏览器前端编程的面貌自2005年以来已经发生了深刻的变化,这并不简单的意味着出现了大量功能丰富的基础库,使得我们可以更加方便的编写业务代码,更重要的是我们看待前端技术的观念发

浏览器嗅探(browser sniffer)曾经是很流行的技术, 比如早期的jQuery中
复制代码 代码如下:jQuery.browser = {
nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp; version:(userAgent.match(/.+(#63;:rv|it|ra|ie)[/: ]([d.]+)/) || [0,'0'])[1],
nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp; safari:/webkit/.test(userAgent),
nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp; opera:/opera/.test(userAgent),
nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp; msie:/msie/.test(userAgent) !/opera/.test(userAgent),
nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp; mozilla:/mozilla/.test(userAgent) !/(compatible|webkit)/.test(userAgent)
};

在具体代码中可以针对不同的浏览器作出不同的处理
复制代码 代码如下:if($.browser.msie) {
nbsp;nbsp;nbsp;nbsp;nbsp; // do something
nbsp; } else if($.browser.opera) {
nbsp;nbsp;nbsp;nbsp;nbsp; // ...
nbsp; }nbsp;

但是随着浏览器市场的竞争升级, 竞争对手之间的互相模仿和伪装导致userAgent一片混乱, 加上Chrome的诞生, Safari的崛起, IE也开始加速向标准靠拢, sniffer已经起不到积极的作用. 特性检测(feature detection)作为更细粒度, 更具体的检测手段, 逐渐成为处理浏览器兼容性的主流方式.
复制代码 代码如下:jQuery.support = {
nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp; // IE strips leading whitespace when .innerHTML is used
nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp; leadingWhitespace: ( div.firstChild.nodeType === 3 ),
nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp; ...
nbsp;nbsp;nbsp; }

只基于实际看见的,而不是曾经知道的, 这样更容易做到兼容未来.

14. Prototype vs. jQuery

prototype.js是一个立意高远的库, 它的目标是提供一种新的使用体验,参照Ruby从语言级别对javascript进行改造,并最终真的极大改变了js的面貌。$, extends, each, bind...这些耳熟能详的概念都是prototype.js引入到js领域的. 它肆无忌惮的在window全局名字空间中增加各种概念, 大有谁先占坑谁有理, 舍我其谁的气势. 而jQuery则扣扣索索, 抱着比较实用化的理念, 目标仅仅是write less, do more而已.nbsp;

不过等待激进的理想主义者的命运往往都是壮志未酬身先死. 当prototype.js标志性的bind函数等被吸收到ECMAScript标准中时, 便注定了它的没落. 到处修改原生对象的prototype, 这是prototype.js的独门秘技, 也是它的死穴. 特别是当它试图模仿jQuery, 通过Element.extend(element)返回增强对象的时候, 算是彻底被jQuery给带到沟里去了. prototype.js与jQuery不同, 它总是直接修改原生对象的prototype, 而浏览器却是充满bug, 谎言, 历史包袱并夹杂着商业阴谋的领域, 在原生对象层面解决问题注定是一场悲剧. 性能问题, 名字冲突, 兼容性问题等等都是一个帮助库的能力所无法解决的. Prototype.js的2.0版本据说要做大的变革, 不知是要与历史决裂, 放弃兼容性, 还是继续挣扎, 在夹缝中求生.

希望本文所述对大家的jQuery程序设计有所帮助。

(编辑:云计算网_泰州站长网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

热点阅读