编程语言
首页 > 编程语言> > 用于构建单页面应用程序的JavaScript框架

用于构建单页面应用程序的JavaScript框架

作者:互联网

我的目标是将现有Web应用程序迁移到RESTful single page application(SPA).
目前,我正在评估几个Javascript Web应用程序框架.

我的要求如下:

> RESTful数据层(如ember-data)
> MV * -structure
>动态路线
>测试支持
>按惯例编码
> SEO支持
>浏览器历史记录支持
>好(API-)文档
>生产就绪
>生活社区

Backbone

当前的应用程序使用backbone.js.总的来说,backbone.js是一个不错的项目,但是我缺少明确定义的结构,这些结构决定了必须发生什么以及必须如何实现.在更大的团队中工作,不断变化的开发人员会导致某种非结构化代码,难以维护和难以理解.这就是为什么我现在正在寻找一个已经定义了所有这些东西的框架.

Ember

我最后几天看了看ember.js.这种方法对我来说似乎很有希望.但不幸的是,代码几乎每天都在变化.所以,我不会称之为生产就绪.而且,不幸的是,我们不能等待它成为1.0版本.但我真的很喜欢这个框架背后的想法.

Angular

Angular.js也是一个广泛传播的框架,由Google维护.但我无法熟悉角度.对我来说,结构似乎有点不清楚,对框架的每个部分的总体职责缺失了解释,并且实现感觉迂回.
只是为了说明这一点:这只是我的个人印象,可能是基于缺少的知识.

BatmanMeteor

据我所知,两个框架也需要一个服务器部分.因为我们只想要一个RESTful后端 – 无论使用什么语言,技术或软件,这都不是我们想要的.此外,后端API已经存在(RoR).

Knockout,CanJSSpine

我没有深入研究这三位候选人.也许这将是我的下一步.

所以现在我的问题是:

>我错过了任何优秀的SPA框架吗?
>您建议/推荐什么框架?
>你会避免任何提到的框架吗?
>您在更大的SP应用程序中有什么经验?

PS:我想推荐Steven Anderson(来自Knockout.js的核心开发人员)关于“Jrone of JS”会议(2012年)和javascript框架的great blogpost.

PS:是的,我知道已经有一些问题了.但是,由于SPA的发展如此迅速和快速,因此大多数已经过时了.

解决方法:

我最近不得不决定一个项目的JavaScript SPA框架.

> Ember

很早就看到了Ember并且和你有类似的想法 – 我真的很喜欢它但感觉现在还为时尚早……我读过的教程中有一半与当前版本无关,因为最近有些东西改变了模板的工作方式.
> Backbone

Backbone是我们认真研究的第一个框架.我不确定我理解为什么你认为它没有“定义明确的结构”? Backbone非常清楚如何划分Model和View代码.也许你的意思是没有某种应用模板?无论如何,Backbone似乎真的专注于模型/ REST绑定部分,但并没有真正为视图绑定规定任何东西.如果模型绑定对您很重要并且您正在使用Rails,那么执行此操作应该是轻而易举的.不幸的是,我的应用程序的Web服务并没有真正匹配,我必须为所有内容编写自己的.sync和.parse方法. Model和View代码的分离很不错,但是由于我们必须从头开始编写所有绑定,所以不值得.
> Knockout

淘汰赛就像尹到骨干的杨. Backbone专注于模型,Knockout是一个MVVM框架,专注于View.它具有JavaScript对象属性的可观察包装器,并使用数据绑定属性将属性绑定到HTML.最后我们选择了Knockout,因为视图绑定主要是我们的应用程序所需要的. (…加上其他人,如后面所讨论的……)如果你喜欢Knockout的视图绑定和Backbone的模型绑定,那么KnockBack也结合了两个框架.
> Angular

在Knockout之后看了这个 – 不幸的是我们都对Knockout如何看待绑定感到非常满意.它似乎比Knockout更复杂,更难进入.并且它使用一堆自定义HTML属性来进行绑定,我不确定我喜欢…我可能会在稍后再看看Angular,因为我遇到了很多真正喜欢这个框架的人 – 也许我们只是为这个项目看了太晚了.
> Batman,Meteor,CanJS,Spine

没有真正仔细看过这些.虽然我知道Spine是一个类似于Backbone的框架,具有显式的Controller对象,并且是用CoffeeScript编写的.
>后记

正如我所提到的,我们最终使用了Knockout,因为对于我们的项目,关注视图绑定更为重要.我们最终使用RequireJS进行模块化,crossroadsHasher用于处理路由和历史,Jasmine用于测试,以及JQuery,Twitter BootstrapUnderscore.js(可能还有更多我暂时忘记的库).

Javascript应用程序开发更像是Java生态系统,而不是Rails生态系统. Rails为每个应用程序(Rails框架)提供了一个可靠的核心,社区提供了很多自定义(gems). Java提供了一种语言.然后您可以选择Java EE或Spring或Play或Struts或Tapestry.并选择JDBC或Hibernate或TopLink或Ibatis与数据库通信.然后你可以使用Ant或Maven或Gradle来构建它.并选择Tomcat或Jetty或JBoss或WebLogin来运行它.因此,与选择要使用的框架相比,更加强调选择所需内容和哪些内容有效.

标签:javascript,singlepage
来源: https://codeday.me/bug/20190926/1820427.html