用于构建单页应用程序的JavaScript框架[已关闭]

关闭。这个问题是基于意见的。它目前不接受答案。

<hr class=“my12大纲无baw0 bb bc-POWER-400”/

想改进这个问题吗?编辑这篇文章,更新这个问题,以便用事实和引文来回答。

在7年前关闭

改进这个问题

我的目标是将现有的web应用程序迁移到RESTful单页应用程序(SPA)。
目前,我正在评估几个Javascript web应用程序框架


我的要求如下:

  • RESTful数据层(如余烬数据)
  • MV*-结构
  • 动态路线
  • 测试支持
  • 按惯例编码
  • 搜索引擎优化支持
  • 浏览器历史记录支持
  • 良好的(API-)文档
  • 生产就绪
  • 生活社区

骨干

当前的应用程序使用的是backbone.js。总体而言,backbone.js是一个不错的项目,但我缺少定义良好的结构,这些结构决定了在何处必须发生什么以及必须如何实现。与不断变化的开发人员一起在更大的团队中工作,这会导致一些非结构化代码,难以维护这就是为什么我现在要寻找一个框架,它已经定义了所有这些东西

余烬

在过去的几天里,我研究了ember.js。这种方法对我来说似乎很有希望。但不幸的是,代码几乎每天都在变化。因此,我不会称之为生产就绪。不幸的是,我们不能等待它成为1.0版。但我真的很喜欢这个框架背后的想法

棱角的

Angular.js也是一个广为传播的框架,由谷歌维护。但我对Angular不太熟悉。对我来说,结构似乎有点不清楚,对框架每个部分的总体责任缺乏解释,实现起来很迂回。
直截了当地说:这只是我个人的印象,可能是因为缺少知识

蝙蝠侠与流星

据我所知,这两个框架都需要一个服务器部分。而且,由于我们只需要一个RESTful后端——无论是哪种语言、技术或软件,这都不是我们想要的。此外,后端API已经存在(RoR)

击倒、CanJS和Spine

我没有对这三位候选人进行更深入的探讨。也许这将是我的下一步


所以我现在的问题是:

  • 我错过了什么好的SPA框架吗
  • 你会建议/推荐什么样的框架
  • 您会避免使用上述任何一种框架吗
  • 您在大型SP应用程序方面有何经验

PS:我想推荐Steven Anderson(Knockout.js的核心开发人员)写的一篇关于“js宝座”的博文——2012年的会议和javascript框架

PS:是的,我知道这方面已经有一些问题了。但是由于水疗的发展如此迅速,大多数已经过时了

我最近也不得不在一个项目上决定JavaScript SPA框架

  • 余烬

    我很早就看过Ember,对它有着与您相似的想法-我真的很喜欢它,但感觉使用它还为时过早…我读过的教程中有一半不适用于当前版本,因为最近模板工作方式发生了一些变化

  • 骨干

    主干是我们认真研究的第一个框架。我不确定我是否理解为什么你认为它没有“定义良好的结构””? 主干非常清楚如何划分模型和视图代码。也许你是说没有什么应用程序模板?无论如何,主干似乎真正专注于模型/REST绑定部分,但并没有为视图绑定规定任何内容。如果模型绑定对您很重要,并且您正在使用Rails,那么这样做应该很容易。不幸的是,我的应用程序的web服务并不匹配,我必须为所有内容编写自己的.sync.parse方法。模型和视图代码的分离很好,但是因为我们必须从头开始编写所有绑定,所以不值得这样做

  • 击倒

    击倒就像是阴阳交替。主干关注模型,Knockout是一个MVVM框架,关注视图。它具有JavaScript对象属性的可观察的包装器,并使用数据绑定属性将属性绑定到HTML。最后我们使用了Knockout,因为视图绑定主要是我们应用程序所需要的。(…加上其他,如下文所述…)如果您喜欢Knockout的视图绑定和主干网的模型绑定,还可以使用结合了这两种框架的Knockock

  • 棱角的

    在淘汰赛之后,我们看到了这一点——不幸的是,我们似乎都对淘汰赛的表现非常满意。这似乎比淘汰赛更复杂,更难进入。它使用一堆自定义HTML属性进行绑定,我不确定我是否喜欢。。。稍后我可能会再看Angular,因为我遇到过很多人非常喜欢这个框架——也许我们只是在这个项目中看得太晚了

  • 蝙蝠侠,流星,CanJS,脊柱

    没有仔细看这些东西。虽然我知道Spine是一个类似于主干的框架,带有显式的控制器对象,并且是用CoffeeScript编写的

  • 后记

    正如我提到的,我们最终使用了Knockout,因为对于我们的项目来说,关注视图绑定更为重要。最后,我们还使用RequireJS进行模块化,crossroads和Hasher处理路由和历史,Jasmine进行测试,以及JQuery、Twitter Bootstrap和underline.js(可能还有更多库我现在忘记了)

    Javascript应用程序开发更像Java生态系统,而不是Rails生态系统。Rails为每个应用程序提供了坚实的核心内容(Rails框架),社区还提供了大量定制(gems)。Java提供。。。一种语言。然后您可以选择JavaEE、Spring、Play、Struts或Tapestry。然后选择JDBC、Hibernate、TopLink或Ibatis与数据库对话。然后您可以使用Ant、Maven或Gradle来构建它。并选择Tomcat、Jetty、JBoss或WebLogin来运行它。因此,比起选择要使用的框架,更强调的是选择您需要的东西和一起工作的东西

发表评论