为应用和网站选择框架

时间:2016-11-21 20:29:39

标签: rest reactjs meteor web-applications react-native

有一个旧的php基础网站提供单一服务,并且工作了很多年。现在我们决定改变网站本身,使其更加现代化,更快速,同时为其提供应用程序,我们将为此聘请一些人。由于我自己是一名开发人员(c ++ / go粉丝,主要是在机器学习领域),我想知道在需要这些东西时最好的选择是什么。我个人认为整个后端应该作为一个RESTful API工作,然后可能就像网络和移动设备上的反应和反应本地一样,但我不确定这是否是我们能做出的最佳决定。

我想知道其他有相同要求的人做了什么?有人推荐我们流星,但似乎变化很快,我们确实需要一些稳定而成熟的解决方案,而不需要太多的维护。

期待听到您的建议

4 个答案:

答案 0 :(得分:1)

我是REST API +前端JS框架架构的忠实粉丝。

一种选择是使用Ruby on Rails构建API。 “rails generate new”命令包括--api选项,用于生成缺少视图并提供JSON的Rails应用程序。您可以在rails-api gem GitHub页面上了解有关使用Rails构建API的更多信息。 (请记住,rails-api gem已经适当地转换为Rails。)

总的来说,Rails是一种快速启动和运行服务层的方法。它非常简单,对您的应用程序来说可能是一个不错的选择,正如您所说,它只提供一项服务。但是,Rails也足以支持更实用的API。

如果您想要一个非常简单的基于Ruby的服务层,您应该查看Sinatra。您也可以使用Express获取完整的Javascript。它和Sinatra一样简单。

如果您有C ++和Go的背景知识,那么您可能不想一头扎进这些网络繁重的技术。考虑将Java Spring用于服务层。 (我会链接,但我没有足够的代表。哈哈)

就前端而言,你在React和Meteor的正确轨道上。我个人是Angular的粉丝(特别是Angular 2)。它是一个非常流行的JS Web应用程序框架 - 非常适合异步Javascript和单页面应用程序。当然,Angular开始有一个陡峭的学习曲线,但如果你愿意攀登,它会得到回报。

如果您有任何具体问题,请告诉我!祝你好运。

答案 1 :(得分:0)

如果你想要的只是一个网站,流星有点沉重。这取决于你想要多少交互性 - 如果它更像是一个应用程序,那么它值得做,如果你想做ios和Android应用程序,那么Meteor的启动和运行速度非常快。

我建议你选择一种你渴望学习的技术,或者你已经掌握了一些技巧。学习曲线意味着更长的项目。

答案 2 :(得分:0)

如果您需要原生移动应用程序和交互式网站而不是reactreact-native纯API服务器是一个非常好的解决方案。我开发了几种类似的服务,对这种组合非常满意。

首先,您可以在两个客户端之间共享API访问层和部分业务逻辑 其次,您在移动和网络上使用相同的技术。但是,移动应用程序具有真正的本机UI,因为React Native不使用浏览器 第三,服务器变得更加简单,可维护和可扩展。

我个人更喜欢WebSockets作为网络协议(看看惊人的Go gorilla websocket实现)。但是如果你需要支持旧的浏览器或者更喜欢更经典的REST API,那也可以。

答案 3 :(得分:0)

根据我上面的评论回答,这一切都是自以为是,但我发现Node / JavaScript往往是最好的降价,如果您要做的就是通过概念验证阶段,并且可能从那里缩放。根据您的后端需求,您可能希望将部件或整个部件迁移到Go或Python。

在前端,使用网络工具(主要以node和npm为中心),我将使用React和material-ui组件构建主UI ...定位Web /浏览器界面...然后你可以扩展这,为了支持更多原生的功能。您可以使用Cordova for Android和iOS构建“原生”版本。您可以使用电子作为桌面版本的基础。

对于后端,node是一个不错的起点,我觉得RethinkDB是许多用例的绝佳数据库(尽管现在发生了从商业到开放平台的变化)。 Mongo是另一种选择,通过一些提供商提供托管/托管选项。或者,我可能会通过亚马逊倾向于PostgreSQL。

API服务器,我肯定是第一次使用Node,然后根据需要重写整个部分,或者部分使用Go或Python ... Go将具有更好的性能和规模而不会影响某些易用性发展方面。如果你需要比某些领域的性能更多的灵活性,Python有非常丰富的工具。还有其他选择,C#正在成为一个非常好的跨平台选项,我碰巧真的很喜欢它作为一种语言。虽然你可能会发现一些约束不如JS或Python那么吸引人。

YMMV以及任何这些选择。

相关问题