`
wbj0110
  • 浏览: 1550838 次
  • 性别: Icon_minigender_1
  • 来自: 上海
文章分类
社区版块
存档分类
最新评论

12 款优秀的 JavaScript MVC 框架评估

阅读更多

在最近的几个月中,作者(Gordon L.Hempton)一直在寻求哪种MVC框架最为完美,他将目前能获取到的所有框架都粗略地试了试,然后在文章中列出了每一种框架的情况概要,在文末分享了作者经过对比之后最终的推荐产品。

首先要特别说明一下,作者认为以下四个功能是十分重要的:

  • UI Bindings(UI绑定):作者想说的不仅仅是模板,而是想谈一种在底层模型出现变化时,视图层能够自动相应地更新的陈述性方法。一旦您用过了支持UI Binding的框架(例如Flex)就很难放手回头了。
  • Composed Views(模块化视图):与所有的软件开发者一样,作者也喜欢编写模块化、可重用的代码。基于这样的原因,当给UI编程的时候,作者喜欢使用视图的方法来创作(个人更偏好在模板层时使用),当然这样也就需要拥有足够丰富的视图组件来支持。关于这一点有一个可重用的页面小工具的范例。
  • Web Presentation Layer(web表示层):我们是在为web编写程序,最不想要的就是Native风格的小工具;但是也没有什么理由来为一个web框架来创建它自己的布局管理器。HTML和CSS是目前解决样式与布局的最好的方法,他们被这样应用着,框架也应该以这一点为核心。
  • Play Nicely With Others(兼容,友好):不得不承认,jQuery是十分犀利的。作者不喜欢那种绑定着一个sub-par jQuery副本的框架,而直接推荐使用jQuery的那种框架才是作者需要的。


候选方案

下面这个表格列出了12个框架对于上述几种特性的支持关系,在后面的部分会详细叙述,您也可以在之后的文章中点击相应的链接来获取更多的信息。



1.  Backbone.js

Backbone.js是web最火的框架,如果不了解它将寸步难行,众多知名品牌均支持该框架,令人印象深刻,自然地成为作者最先进行尝试的框架。作者用它来建造了一个Group Talent内部用行政管理方面功能的feature应用。

优点:强大的社区,还有大量的实力支持。例如它本身就较多地使用了Underscore.js(也是一个强大的框架)。

缺点:抽象功能不够强,以及一些需要的功能还没实现。整个框架十分轻量级,产出的结果是一大堆引用文件和样板:而且应用的规模越大这一点就会越明显。

2.  SproutCore 1.x

SproutCore最开始是苹果公司用于其iCloud上面的。除了名字起得很不好之外,它实际上是一个非常优秀的框架,也是最大的框架之一。

优点:支持绑定,忠实的社区粉丝,优秀的feature很多。

缺点:过于死板,难以去除无用的feature,强制使用一种Native风格的范例,严重的问题在于该框架不允许使用HTML来做布局。

3.  Sammy.js

Sammy是作者偶然发现的一个比较小的框架,因为它太简化了,基本不能占据列表的席位。其核心feature是一个路由系统,让应用与AJAX进行交换。

优点:简单的学习曲线,与服务器端的app集成更加容易。

缺点:太过于简单,对于大型应用就有些捉襟见肘。

4.  Spine.js

器如其名,Spine显然是受到Backbone的强烈影响,像Backbone一样也是一个非常轻量级的框架,遵循相似的模型。

优点:轻量级,文档做得很好。

缺点:从根本上就有缺陷。Spine的一个核心概念是“一个坚果外壳中的一堆异步的UI集,这意味着UI应该是在理想化条件下永远不会阻塞的”。而做了一系列的非阻塞式实时应用之后,作者可以说这简直是不现实的,除非后端是像Operational Transformation之类的。

5.  Cappuccino

Cappuccino是一款更加独特的框架,自带编程语言Objective-J,还能尝试着在浏览器中仿真Cocoa。

优点:大型的构想出的框架,良好的社区环境,强大的继承模型。

缺点:在您所有能用Javascript仿真的语言之外,Objective-C是作者最不想选用的。它起源一位iOS开发人员,作者到现在还没想明白用浏览器编写Objective-J是什么意思。

6.  Knockout.js

K.O.是一个MVVM框架,受到其支持者的大量好评。它强调陈述式UI绑定和自动UI刷新。

优点:支持绑定,文档做得出色,引导系统超级赞。

缺点:绑定语法晦涩,缺乏坚实的视图组件层次结构。作者希望能够轻松地重用组件,也觉得定义成一个MVVM框架是有害的。这些框架中基本没有MVC,但都是(MVP,MVVM之类的)的变种。

7.  Javascript MVC

作者的兴趣是充分地披露各种框架,对Js MVC并没有花太多时间来评估。

优点:坚实的社区基础和积累。

缺点:基于Strings的继承模型很尴尬,控制器太接近视图又缺乏绑定机制。命名方式太不受保护了,相当于这样的情况:如果RoR可以说是“Rudy web Framework”的简写。

8.  Google Web Toolkit

GWT是一系列的客户端工具包,除了框架之外还包含很多其他工具。它可以把java语言编译成Javascript,支持标准Java库的一个子集,最初是Google公司使用在Wave上面的。

优点:综合宽泛的框架,拥有强大的社区支持。基于Java的坚实组件继承模型,在巨型客户端应用上表现出色。

缺点:除了Google说的之外,GWT将经不住时间的检验。就好像最初DART那样,很明显Java不是web的未来。更严重的是,客户端对于Java的抽象有一点不合适。

9.  Google Closure

如果说Google Closure仅仅是一个js框架,倒不如说更像是一个工具包。附带编译器和优化器。

优点:由Google用在其很多主流app上面。良好的基于组件的UI编写系统。

缺点:不支持UI绑定。

10.  Ember.js

Ember(之前是SproutCore 2.0)是竞争者中的新丁。它是一个尝试:从SproutCore2.0中抽取分离其核心feature并转变成为一个更加紧凑的模型框架,更加适合web。

优点:特别丰富的模板系统,拥有可编写的视图和UI绑定。

缺点:由于太新,文档跟不上。

11.  Angular.js

Angular是在作者发布评估结果之后才发现的一个很好的框架,由Googler开发,包含了很多有趣的设计选择。

优点:关于模板的范围和控制器的设计考虑的很周到。具有依赖注入系统(作者本人是一个iOS粉丝)。支持丰富的UI绑定语法,从而使得过滤和转换这样的工作开销很小。

缺点:代码库很不健全,也不够模块化。视图也不够模块化(关于这点在Batman.js的缺陷中讨论的更加细致)

12.  Batman.js

Batman由Shopify创作,是另一款与Knockout和Angular具有相似脉络的框架。Batman拥有良好的UI绑定系统,是基于HTML属性的。Batman是唯一的一款使用惯用语法Coffeescript编写的框架,并且紧密地与NODE.Js集成在一起,甚至可以到拥有其(可选的)Node.js服务器的程度。

优点:代码库十分清晰,绑定方法优良又简单,耐用,流程化。

缺点:作者非常不喜欢这种“独行侠”式的作风,更不用说这种加强单一控制器的主意了。与Knockout和Angular一样,在组件嵌套的时候遭受同样的折磨。作者需要的不仅仅是模板,还更想要陈述式的可重用的模板框架。相比,Ember在框架之上拥有的是一个基于EMBER他们自己的逻辑(可能是在控制器层上的)的整套组件能陈述式重用的方法。

赢家

最终,Ember.js是能满足作者全部需求的唯一一款框架。最近作者将一个小的Backbone应用转换成了Ember来实验,除了一些性能方面的小问题之外,作者对于产生的代码库更为欣慰。由Yehuda Katz支持,整个围绕Ember.js技术讨论社区也十分奇妙:这一定会是一个值得期待的好框架。

当然这个列表还是不够全面。几乎所有这些框架都被发现被人骂得臭名昭著体无完肤,或者被Hacker News点名。

你用的MVC框架是哪一款呢?

原文:The Top 10 Javascript MVC Frameworks Reviewed

分享到:
评论

相关推荐

    test-chat2desk:开发用户注册和登录系统。 系统必须用Node.js开发,接口不会评估,不用担心。 推荐使用MVC框架。 不需要配置数据库来执行测试,只需一个文件,例如包含数据的 JSON,就足以模拟数据库。 要发送给我们,请在 GitHub 或 BitBucket 上创建一个存储库并与我们分享链接! 将被评估

    推荐使用MVC框架。 不需要配置数据库来执行测试,只需一个文件,例如包含数据的 JSON,就足以模拟数据库。 要发送给我们,请在 GitHub 或 BitBucket 上创建一个存储库并与我们分享链接! 将被评估: 代码的结构和...

    ariatemplates:Aria模板客户端框架

    Aria模板-JavaScript框架 (又名AT)是一个用JavaScript编写的应用程序框架,用于构建丰富的大型企业Web应用程序。 自2009年以来,由对其专业产品进行开发,旨在构建大量使用的Web应用程序,这些应用程序需要以最小...

    基于SSM框架疫情居家办公OA系统.zip

    该系统采用Spring、Spring MVC和MyBatis(即SSM)作为后端开发框架,前端可能结合HTML5、CSS3、JavaScript等技术,实现了一套适用于居家办公环境的工作流程管理、通讯联络、任务分配和文档处理等功能。 系统的主要...

    message_board:使用Ember的留言板应用程序(没有Ember CLI)

    这个应用程序是使用 Ember.js 编写的,Ember.js 是一个客户端 JavaScript MVC 框架,作为 Epicodus 评估的一部分。 ##设置 注意:目前仅支持在 Mac 上运行。 下载并解压缩项目后,在终端中导航到其根目录。 ...

    基于SSM框架教学质量评价系统.zip

    该系统采用Spring、Spring MVC和MyBatis(即SSM)作为后端开发框架,前端可能结合了HTML5、CSS3、JavaScript等技术,提供了课程评价、教师评分、反馈收集和结果分析等功能。 系统的主要特点和功能可能包括: 1. ...

    基于SSM+Mysql的计算机网络实验课程教学网站.zip

    MyBatis作为一个优秀的持久层框架,简化了与数据库的交互操作。 数据库部分使用MySQL进行数据存储和管理。通过MySQL,系统可以存储和管理实验指导、实验报告、学生成绩等数据。同时,系统还支持快速的数据查询和...

    vcardins.github.io

    BBYC - MVC 评估纯 Javascript 面向对象的 Bestbuy 演示应用程序 在本文档中,我将详细介绍此应用程序中使用的样式和模式。 现有模块 100% 由作者 (Victor Cardins - ) 开发,除了测试和模板引擎框架以及模态插件。...

    mooveez:使用 ember 进行基本的电影搜索

    目的是评估开发人员学习和实施所需技术的能力,包括: JavaScript EmberJS MVC 框架——创建一个单页 Web 应用程序必需的 HTML 标记(HTML5 很好) SCSS(纯 CSS 也可以接受) 适当的单元测试可以将任何其他技术...

    ssm363基于java web的中小型人力资源管理系统

    系统简介 该人力资源管理系统采用Java Web技术栈开发,具有良好的跨平台性和高度的可扩展性。系统前端使用HTML、CSS和JavaScript等技术构建用户友好的...使用Spring框架进行业务层和持久层的开发,利用Hibernate或My

    springboot班级综合测评管理系统.zip

    SpringBoot班级综合测评管理系统是一款基于SpringBoot框架的应用程序,旨在帮助教师和学校管理人员高效、公正地管理和评估学生的综合表现。该系统采用微服务架构设计,结合了现代的前端技术和优化的后端处理,提供了...

    SpringBoot项目一起来约苗系统.zip

    该系统以SpringBoot作为后端框架,整合了Spring MVC、Spring Data等组件,实现了一个高效、稳定的服务管理平台。前端可能采用了AngularJS、React或Vue.js等现代JavaScript框架,通过RESTful API与后端进行数据交互,...

    SpringBoot项目基于Spring Boot的在线考试系统.zip

    该系统采用典型的MVC架构,前端可能采用Angular、React或Vue.js等现代JavaScript框架,后端使用Spring Boot提供的便捷方式搭建RESTful服务,数据库通常选用MySQL或其他关系型数据库来存储用户信息、试题和考试结果等...

    octane:使用 node.js 制作的问答网络应用程序

    这是一个这样的实验,将 geddy 评估为成熟的 MVC 框架。构建说明在您的机器上安装节点后,通过 npm 获取 geddy 框架$ npm install -g geddy 克隆辛烷存储库$ git clone https://github.com/mstred/octane.git 从...

    SpringBoot项目应急救援物资管理系统.zip

    系统可能采用前后端分离的设计模式,前端使用现代JavaScript框架如AngularJS、React或Vue.js来构建一个动态和响应式的用户界面,后端由SpringBoot搭建,整合了Spring MVC、Spring Data等子项目来简化数据库操作和...

    MiniProyectoWeb:评估项目

    相册 这是一个显示相册集合的网络应用程序。 介绍 这是一个展示照片的网络应用程序。 用户可以查看所有上传的照片,也可以按相册查看它们。 该代码以3层架构组织: ...解决方案的目标框架是.Net 4.6

    sanity-testing-site:健全性测试网站

    该入门工具非常适合演示目的,既可以评估Sanity以供您自己使用,也可以在您希望将其作为项目的一部分提供给客户时使用。 由于此入门程序用于演示目的,因此您会发现并非Studio中的所有字段都已连接到示例前端。 这...

    d3trends:带有RequireJS的d3js用于趋势图

    避免使用外部框架,例如jQuery,AngularJS或React JS。 以最适合您的需求的格式加载数据模型。 避免任何后端开发/依赖性。 如果您认为需要加载外部数据,请对其进行模拟。 圆圈内的趋势图不是您的主要任务,它将...

    mobiquity-challenge

    利用 MVC 框架,例如 Ember、Backbone 或 AngularJS。 使用 CSS 预处理器,例如 LESS 或 SASS。 集成 Google 身份验证以向任何通过 Google 身份验证的用户显示当天的日历分级标准以下内容将按以下顺序进行评估: ...

    ASP.NET4高级程序设计(第4版) 3/3

    另外,还专门介绍了ASP.NET4 新增的功能,如MVC 和动态数据等。  《ASP.NET 4高级程序设计(第4版)》适合各层次的ASP.NET程序员阅读。 作者简介 作者:(美)麦克唐纳 目录 第一部分 核心概念 第1章 ASP.NET简介 ...

    ASP.NET4高级程序设计第4版 带目录PDF 分卷压缩包 part1

    另外,还专门介绍了ASP.NET4 新增的功能,如MVC 和动态数据等。  《ASP.NET 4高级程序设计(第4版)》适合各层次的ASP.NET程序员阅读。 =================== 第一部分 核心概念 第1章 ASP.NET简介 1.1 ASP.NET的...

Global site tag (gtag.js) - Google Analytics