选择MVC框架(Javascript-前端)-主干、角度、余烬

选择MVC框架(Javascript-前端)-主干、角度、余烬,javascript,angularjs,backbone.js,ember.js,Javascript,Angularjs,Backbone.js,Ember.js,在过去的几天里,我一直在研究支持和反对不同MVC框架的不同论据,但显而易见的是,这个问题绝对没有正确的答案,因为它严重依赖于许多特定于底层项目的不同因素 我反复遇到的建议是,从以下几点选择一个框架:易用性、生产力、可测试性、社区、文档 虽然这都是很好的建议,但我仍然认为有更多的事情要考虑具体的代码基础,你将继续工作。< /P> 这就是说,假设有一天你上班时被要求为你的代码库选择“最好的”Javascript MVC框架来处理现有产品的整个前端(请记住,有一个当前的代码库,你希望框架能够处理“转换

在过去的几天里,我一直在研究支持和反对不同MVC框架的不同论据,但显而易见的是,这个问题绝对没有正确的答案,因为它严重依赖于许多特定于底层项目的不同因素

我反复遇到的建议是,从以下几点选择一个框架:易用性、生产力、可测试性、社区、文档

虽然这都是很好的建议,但我仍然认为有更多的事情要考虑具体的代码基础,你将继续工作。< /P> 这就是说,假设有一天你上班时被要求为你的代码库选择“最好的”Javascript MVC框架来处理现有产品的整个前端(请记住,有一个当前的代码库,你希望框架能够处理“转换”当你随着时间的推移转向新的框架时,你认为有必要考虑哪些因素/问题来做出明智的决定?这些可能是有关MVC框架本身和/或当前使用的代码库/技术(即Ruby后端、当前使用的其他库、产品功能等)的因素/注意事项/问题

可扩展性和性能非常重要,因为此产品将拥有相当大的用户量


仅仅是由于某些框架的稳定性和成熟度,我已经将现实的选择分解为角度、主干+木偶和余烬(尽管这个仍然悬而未决)。每一个都是不同的野兽,其本身的权利和功能非常不同,因此我需要提出我最初的问题,即你会问哪些因素和问题,以确定哪一个是“理想”(我使用这个词非常松散)的选择?

你的问题可能会结束,因为它既“过于宽泛”,又“主要基于观点”,使其不适合此站点

但由于不久前我面临着完全相同的决策,我将分享我对这三个框架的印象。(来自比我更有经验的人)如果你还没有

  • 安格拉斯

    • 优点:“神奇地”将视图和逻辑之间的功能连接起来,并允许用最少的代码完成大量工作。使您无需进行大量DOM操作。简单的开始和构建(大多数情况下)都很容易
    • 缺点:AngularJS的优点也可以看作是它的弱点——许多人说它的“魔力”太大了,这使得在出现问题时很难排除故障。此外,“不受DOM操纵的自由”可能会变成“不受DOM操纵的障碍”。强制您查找插件和库,或者为一些原本微不足道的任务制作自己的组件,这些组件“以角度的方式完成任务”。通过强制您在HTML中放置大量代码,也违反了关注点分离
  • Backbone.JS

    • 优点:提供了一个框架,可以在不接管整个网站设计的情况下对代码和数据结构进行排序。正如@dandavis在上面的评论部分所说,“与他人相处得很好”
    • 缺点:没有提供太多的UI支持。需要在上面栓接一个UI框架(比如木偶),或者自己完成大部分手工劳动
  • Ember.JS:

    • 优点:在不违反关注点分离的情况下提供大量UI帮助(借助于Ember内置的把手)。事件在代码中连接(以一种相当干净的方式)。与主干网一样,它提供了一个框架,用于向应用程序添加刚性结构
    • 缺点:需要掌握许多不同的概念并设置许多活动部件。要完成相对简单的事情,可能需要大量代码和单独的部分。假设使用把手模板而不是普通HTML(根据个人喜好,HTML可以是加号或减号)
最后,我选择了AngularJS,因为我碰巧喜欢它提供的所有“魔力”和易用性。以下内容也帮助我排除了另外两种选择:

  • 主干网中最小的UI功能意味着我必须自己连接它(我本来就想摆脱它),或者去比较/对比一大堆其他框架来放在主干网之上。在当时,这将是一项过多的时间投资

  • 我排除了Ember,因为HTML标记的大部分工作都委托给了另一个人,而强迫这个人学习如何使用Handlebar模板是不合理的。对于我的特殊案件来说,这是一场针对余烬的大罢工


如果在枪口下被迫选择,我会选择脊梁,因为它与其他人配合得很好,而其他人(我不知道的木偶)需要“全力以赴”,我希望在90%还不够的情况下选择……我可能错过了一些东西,但是用户数量不应该对前端库的可伸缩性和性能有太大的影响-前端处理被卸载到用户自己的机器上。我是一个的粉丝,因为你不必像Angular那样学习新的编码范式,而且比Ember IMO更容易掌握。我喜欢编写HTML、JS和CSS。。。not ng click=“哪里是我的点击处理程序”。