JQuery的优缺点是什么
- jQuery实现脚本与页面的分离
在HTML代码中,我们还经常看到类似这样的代码:
即使validate()函数可以被放置在一个外部文件中,实际上我们依然是把页面与逻辑和事件混杂在一起。jQuery让你可以将这两部分分离。借助于jQuery,页面代码将如下所示:
接下来,一个单独的JS文件将包含以下事件提交代码:
$(“myform”).submit(function(){
…your code here
)}
这样我们可以实现灵活性非常强的清晰页面代码。jQuery让JavaScript代码从HTML页面代码中分离出来,就像数年前CSS让样式代码与页面代码分离开一样。 - 最少的代码做最多的事情
最少的代码做最多的事情,这是jQuery的口号,而且名副其实。使用它的高级selector,开发者只需编写几行代码就能实现令人惊奇的效果。开发者无需过于担忧浏览器差异,它除了还完全支持Ajax,而且拥有许多提高开发者编程效率的其它抽象概念。jQuery把JavaScript带到了一个更高的层次。以下是一个非常简单的示例:
代码如下:
$(“p.neat”).addClass(“ohmy”).show(“slow”);
通过以上简短的代码,开发者可以遍历“neat”类中所有的元素,然后向其增加“ohmy”类,同时以动画效果缓缓显示每一个段落。开发者无需检查客户端浏览器类型,无需编写循环代码,无需编写复杂的动画函数,仅仅通过一行代码就能实现上述效果。 - 性能
在大型JavaScript框架中,jQuery对性能的理解最好。尽管不同版本拥有众多新功能,其最精简版本只有18KB大小,这个数字已经很难再减少。jQuery的每一个版本都有重大性能提高。本篇文章讲的是jQuery未经过任何优化的原始速度。如果将其与新一代具有更快 JavaScript引擎的浏览器(如火狐3和谷歌Chrome)配合使用,开发者在创建富体验Web应用时将拥有全新速度优势。 - 它是一个“标准”
之所以使用引号,是以为jQuery并非一个官方标准。但是业内对jQuery的支持已经非常广泛。谷歌不但自己使用它,还提供给用户使用。另外戴尔、新闻聚合网站Digg、WordPress、Mozilla和许多其它厂商也在使用它。微软甚至将它整合到Visual Studio中。如此多的重量级厂商支持该框架,用户大可以对其未来放心,大胆的对其投入时间。 - 插件
基于jQuery开发的插件目前已经有大约数千个。开发者可使用插件来进行表单确认、图表种类、字段提示、动画、进度条等任务。jQuery社区已经成长为一个生态系统。这一点进一步证明了上一条理由,它是一个安全的选择。而且,jQuery正在主动与“竞争对手”合作,例如Prototype。它们似乎在推进JavaScript的整体发展,而不仅仅是在图谋一己之私。 - 节省开发者学习时间
当然要想真正学习jQuery,开发者还是需要投入一点时间,尤其是如果你要编写大量代码或自主插件的话,更是如此。但是,开发者可以采取“各个击破”的方式,而且jQuery提供了大量示例代码,入门是一件非常容易的事情。我建议开发者在自己编写某类代码前,首先看一下是否有类似插件,然后看一下实际的插件代码,了解一下其工作原理。简而言之,学习jQuery不需要开发者投入太多,就能够迅速开始开发工作,然后逐渐提高技巧。 - 让JavaScript编程变得有趣
我发现使用jQuery是一件充满乐趣的事情。它简洁而强大,开发者能够迅速得到自己想要的结果。它解决了许多JavaScript问题和难题。我过去曾讨厌JavaScript编程,但现在却非常喜欢它。通过一些基础性的改进,开发者可以真正去思考开发下一代Web应用,不再因为语言或工具的差劲而烦恼。我相信它的“最少的代码做最多的事情”口号。
jQuery的不足之处
- 不能向后兼容。每一个新版本不能兼容早期的版本。举例来说,有些新版本不再支持某些selector,新版jQuery却没有保留对它们的支持,而只是简单的将其移除。这可能会影响到开发者已经编写好的代码或插件。
- 插件兼容性。与上一点类似,当新版jQuery推出后,如果开发者想升级的话,要看插件作者是否支持。通常情况下,在最新版jQuery版本下,现有插件可能无法正常使用。开发者使用的插件越多,这种情况发生的几率也越高
- 在同一页面上使用多个插件时,很容易碰到冲突现象,尤其是这些插件依赖相同事件或selector时最为明显。这虽然不是jQuery自身的问题,但却又确实是一个难于调试和解决的问题。
- jQuery的稳定性。它没有让我的浏览器崩溃,我这儿指的是其版本发布策略。jQuery 1.3版发布后仅过数天,就发布了一个漏洞修正版1.3.1。他们还移除了对某些功能的支持,可能会影响许多代码的正常运行。
- 在大型框架中,jQuery核心代码库对动画和特效的支持相对较差。但是实际上这不是一个问题。目前在这方面有一个单独的jQuery UI项目和众多插件来弥补此点。
如果你还在犹豫是否要学习一个JavaScript框架,并困惑于选择哪一个框架,那么我推荐你选择jQuery。这并非说其它框架不好,只是jQuery可能是最稳妥和最具回报性的选择。
jQuery 库中的 $() 是什么
() 函数用于将任何对象包裹成 jQuery 对象,接着你就被允许调用定义在 jQuery 对象上的多个不同方法。你甚至可以将一个选择器字符串传入 $() 函数,它会返回一个包含所有匹配的 DOM 元素数组的 jQuery 对象。
Zepto 库和JQ 区别
Zepto 相对jQuery 更加轻量,主要用在移动端,jQuery 也有对应的jQuerymobile 移动端框架。
jQuery 的slideUp 动画,如果目标元素是被外部事件驱动, 当鼠标快速地连续触发外部元素事件, 动画会滞后的反复执行,该如何处理呢?
- JQuery 的源码看过吗?能不能简单概况一下它的实现原理?
考察学习知识的态度,是否仅仅是停留在使用层面,要知其然知其所以然 - jQuery.fn 的init 方法返回的this 指的是什么对象?为什么要返回this?
this 执行init 构造函数自身,其实就是jQuery 实例对象,返回this 是为了实现jQuery
的链式操作 - query 中如何将数组转化为json 字符串,然后再转化回来?
$.parseJSON(‘{“name”:”John”}’); - jQuery 的属性拷贝(extend)的实现原理是什么,如何实现深拷贝?
递归赋值 - jquery.extend 与jquery.fn.extend 的区别?
Jquery.extend 用来扩展jQuery 对象本身;jquery.fn.extend 用来扩展jQuery 实例 - 谈一下Jquery 中的bind(),live(),delegate(),on()的区别?
- JQuery 一个对象可以同时绑定多个事件,这是如何实现的?
可以同时绑定多个事件,低层实现原理是使用addEventListner 与attachEvent 兼容处
理做事件注册 - Jquery 与jQuery UI 有啥区别?
jQuery 是操作dom 的框架,jQueryUI 是基于jQuery 做的一个UI 组件库 - jQuery 和Zepto 的区别?各自的使用场景?
jQuery 主要用于pc 端,当然有对应的jQuerymobile 用于移动端,zepto 比jQuery 更
加小巧,主要用于移动端 - 针对jQuery 的优化方法?
优先使用ID 选择器
在class 前使用tag(标签名)
给选择器一个上下文
慎用.live()方法(应该说尽量不要使用)
使用data()方法存储临时变量 - Zepto 的点透问题如何解决?
点透主要是由于两个div 重合,例如:一个div 调用show(),一个div 调用hide();
这个时候当点击上面的div 的时候就会影响到下面的那个div;
解决办法主要有2 种:
1.github 上有一个叫做fastclick 的库,它也能规避移动设备上click 事件的延迟响
应,https://github.com/ftlabs/fastclick
将它用script 标签引入页面(该库支持AMD,于是你也可以按照AMD 规范,用诸如
require.js 的模块加载器引入),并且在dom ready 时初始化在body 上,
2.根据分析,如果不引入其它类库,也不想自己按照上述fastclcik 的思路再开发一套
东西,需要1.一个优先于下面的“divClickUnder”捕获的事件;2.并且通过这个事件
阻止掉默认行为(下面的“divClickUnder”对click 事件的捕获,在ios 的safari,
click 的捕获被认为和滚屏、点击输入框弹起键盘等一样,是一种浏览器默认行为,即
可以被event.preventDefault()阻止的行为)。 - 知道各种JS 框架(Angular, Backbone, Ember, React, Meteor, Knockout…)
么? 能讲出他们各自的优点和缺点么?
知识面的宽度,流行框架要多多熟悉 - Underscore 对哪些JS 原生对象进行了扩展以及提供了哪些好用的函数方
法?
Underscore 的熟悉程度 - 使用过angular 吗?angular 中的过滤器是干什么用的
在表达式中转换数据姓名为{{ lastName | uppercase }}
currency,是什么过滤器——格式化数字为货币格式,单位是$符。 - 移动端最小触控区域是多大?
移动端的点击事件的有延迟,时间是多久,为什么会有? 怎么解决这个延时?(click 有
300ms 延迟,为了实现safari 的双击事件的设计,浏览器要知道你是不是要双击操作。)