Node.js和Backbone.js在应用场景上有什么区别?

Node.js和Backbone.js在应用场景上有什么区别


温温酱
浏览 674回答 2
2回答

富国沪深

NodeJS定义一个Javascript运行环境(runtime),基于Chrome JavaScript运行时建立的平台, 用于方便地搭建响应速度快、易于扩展的网络应用。作用Node.js 使用事件驱动, 非阻塞I/O 模型而得以轻量和高效,非常适合在分布式设备上运行数据密集型的实时应用。特点事件驱动;非阻塞I/O;轻量、可伸缩,适于实时数据交互应用;单进程,单线程;NodeJS的优缺点优点高并发(最重要的优点);适合I/O密集型应用;缺点不适合CPU密集型应用;CPU密集型应用给Node带来的挑战主要是:由于JavaScript单线程的原因,如果有长时间运行的计算(比如大循环),将会导致CPU时间片不能释放,使得后续I/O无法发起;Backbone.js定义为复杂Javascript应用程序提供模型(models)、集合(collections)、视图(views)的结构。作用适合的应用场景是单页面应用,并且页面上有大量数据模型,模型之间需要进行复杂的信息沟通。Backbone 在这种场景下,能很好的实现模块间松耦合和事件驱动。 主要组成model:创建数据,进行数据验证,销毁或者保存到服务器上;collection:可以增加元素,删除元素,获取长度,排序,比较等一系列工具方法,说白了就是一个保存 models的集合类;view:绑定html模板,绑定界面元素的事件,初始的渲染,模型值改变后的重新渲染和界面元素的销毁等;Backbone.js优缺点优点将数据和界面很好的分离开来;将事件的绑定很好的剥离出来,便于管理和迭代;使得Javascript程序的模块化更加清晰、明了;缺点Model 层比较简单,如果要支持 One-To-One 或者 One-To-Many 等复杂数据关系时有些力不从心;Model 只能属于一个 Collection 这个设计,页面复杂的时候会很受局限;View 层没有很强的 Page 管理机制;

肥皂起泡泡

Backbone 最适合的应用场景是单页面应用,并且页面上有大量数据模型,模型之间需要进行复杂的信息沟通。Backbone 在这种场景下,能很好的实现模块间松耦合和事件驱动。 其他适用产品还有微博,网易微博的前端设计也是和 Backbone 类似的一个结构。Backbone 的优点和一些经验 Tip:View 的划分将页面上的视图元素解耦,粒度细化。View 间通过事件和 Model 通讯,避免了 DOM 事件的滥用。Model 和 Restful 的通讯方式对于后端人员非常友好。MVC 架构清晰, 我有个常年写 Java 没写过 JS 的同事看 Backbone 很快就了解了整体设计,虽然这时候他还是不会写 JS。Collection/Model 抽象了以前杂乱的 AJAX 请求,CRUD 请求变得非常非常方便。强烈建议 View -> Model 单向依赖,世界会美好很多。配上一个模块化加载器例如 SeaJS 会很爽。Backbone 的一些缺点,或者说一些尚未实现的 Feature:Model 层比较简单,如果要支持 One-To-One 或者 One-To-Many 等复杂数据关系时有些力不从心。还有 一个 Model 只能属于一个 Collection 这个设计,页面复杂的时候会很受局限。Model 只有基本的 CRUD 操作,不能很好的扩展,Backbone.sync 方法写的不太灵活,要想扩展就得重写 sync 方法。View 层没有很强的 Page 管理机制,比如通过 URL 切换改变整个页面时,页面上尚存的 View 如何处理?直接销毁的话,是否要销毁关联的 Model、Collection?Cache 住?如何管理 Cache?内存管理需要比较小心,缺乏机制避免创建重复 Model。extends override 父类方法的时候得写一串的 SuperClass.prototype.someMethod.apply 什么的,就不能实现个 _super 方法么……对调试非常不友好。作者有代码洁癖(也是加分项),this.$el 大家呼唤了这么久才加上,估计今生也看不到 this._super。更新慢。总体来说 Backbone 还很轻,框架很漂亮但是有些细节还比较粗糙。用之前要做好对 Backbone 进行大量扩展甚至 Hack 的准备。
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Node.js