为了账号安全,请及时绑定邮箱和手机立即绑定

Angular和jQuery的对比?

Angular和jQuery的对比?

天涯尽头无女友 2018-09-14 18:09:10
最近在参加校招面试的过程中,会一直问些angular相对jQuery有哪些优势,问了好几次。但是网上关于他们的区别很少,主要是:angular是mvc框架,而jQuery是类库,他们是完全两个不同的内容;没法将两者进行联系。求指点下?
查看完整描述

1 回答

?
慕码人8056858

TA贡献1803条经验 获得超6个赞

首先他们都是用javascript写的,只不过是对javascript原生API更高一层的”封装“,为我们开发应用过程中提供不同方面的“帮助”!别着急,往下看!

首先,你要搞清楚,最初javascript的出现就是为了操作HTML文档和表单验证,比如说:文档对象模型(Document Object Model),这个DOM其实就是javascript给我们提供的一系列的API,让我们通过直接调用相应的API来进行对文档的操作。(当然,你要明白API的含义,其实计算机编程就是一层层的向上“抽象”出更高阶的API)

举个例子:
如果使用javascript DOM中的原生API,我们要获取页面中的一个id='cat'的元素,我们要这样做:
document.getElementById('cat')

其实这样看起来也还好,但是,如果再加上操作,创建,甚至于javascript 提供了其他API比如发送http请求,使用javascript原生API就显得太繁琐,太臃肿了,科技的发展,社会的进步,不就是要不断解放劳动力,生产力嘛。。哈哈哈,说到底就是懒!所以就有人想了个办法,把这些原生api进行封装,然后创造出更优雅更简洁的api,比如使用jquery进行选择id='cat'就是
$('#cat')

你完全可以在这些API基础上创造你自己的api,其实$('#cat')就是在调用一个名为'$'的函数数,同时传递了一个字符串'#cat'进去而已。你也同样可以把javascript的原生api进行“封装”成为你自己的api比如:

function sb(id){    return document.getElementById(id);
}

这样当你调用sb('cat')的时候,其实就相当于选择了一个id='cat'的元素,当然这只是举个例子,你可能注意到这里的参数没有#号而jquery则有,这是因为,jquery内部使用一个叫sizzle的选择器引擎进行解析等等,不过目标就是为了更好的为开发者提供友好的API!

OK,你看到这里或许可能明白,哦,jQuery就是对javascript提供的原生API更进一步的封装,为用户提供更友好的API!同时,jQuery还提供了很多浏览器兼容的解决方案,如果你使用原生javascript的话,你还需要处理很多浏览器兼容的问题。是不是听听就觉得麻烦!总之吧,在开发一个应用过程中,jQuery只扮演了一个角色,那就是让你写少量的代码,解决同样甚至更多的问题!

但是!!jQuery没有告诉你,你的代码要怎么写,你的项目要怎么架构!或者说,你的项目,代码要怎么组织才更合理!jQuery只是在当你想实现某个功能或者做某个应用的时候,让你写更少的代码,但是没有在乎你的项目!

正所谓条条大路通罗马,解决问题是有好多种方法的,最终可能都是解决问题,但是方法有好有坏!当然好坏是你自己需要权衡的。

所以,站在项目架构的角度来看,人们通过多年的实践积累,总结出一些所谓的“最佳实践”模式,你提到的MVC就是其中的一种,而像angularjs,backbone, knockout, vue这些“框架”(注意这里用的是框架而不是库)就是用javascript这门语言来实现MVC或者MVVM等等这些架构模式的。

那么目的是为了什么呢?目的就是为了让你的项目“架构”更加合理,代码质量更高,更便于维护。

当然,是否选用框架去做一个应用,也有很多争论,其实这里有个权衡,比如,你做一个网站,这个网站可能就几个页面,然后做完之后基本上也不会怎么修改和添加新功能等等,在这种情况下我们就不用管 网站代码以后是不是便于维护啊?代码是不是可靠啊?等等吧。

但是,很多庞大的网站应用,需要持续的维护,更新等等,这时候他们就需要考虑到“合理架构”的问题了,所以angular这类框架的出现就是为了解决这一类问题的,因为这些框架的设计过程中都浓缩着好多他们独特的思想在里面,还有一些他们自己给定义的一些专有名词,比如scope, directive,filter等等, 但是他们的确就是为了做一件事情,让你的架构更合理,代码更易维护。

**所以,总结一下,jquery,或者underscore或者lodash这类的都可以看成对原生javascript API更进一步的封装,同时给我们提供更友好,优雅的API的工具库,让我们写更少的代码做更多的事情。
而angular这类MV框架,则是让我们站在一个项目的角度来讲,让整个项目架构更合理,代码质量更高,逻辑更清晰,更易于维护。*

擦,打了这么多。我也是醉了!


查看完整回答
反对 回复 2018-10-08
  • 1 回答
  • 0 关注
  • 517 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信