1 回答
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框架,则是让我们站在一个项目的角度来讲,让整个项目架构更合理,代码质量更高,逻辑更清晰,更易于维护。*
擦,打了这么多。我也是醉了!
添加回答
举报