我是完整堆栈javascript应用程序开发的新手,已经阅读了很多帖子和文档到各种各样的事情,但我有点卡在以下问题:
有两个框架似乎提供了非常相似的功能,但在互联网上永远不会相互对比(据我所知)
SailsJS - 基于Express构建的服务器端MVC框架 BreezeJS(+ AngularJS) - 客户端MVC
显然我可以将Sails与Angular结合起来,NPM中有一些尝试但是没有使用Breeze,是因为冗余还是仅仅是一个愚蠢的想法?
我正在考虑开发一个具有计算密集型后端进程的SPA(例如,对大型数据集进行机器学习〜数百万个mongo文档),例如
Mongo - Node : { Express - Sails } - Breeze - Angular
我正在寻找关于这种堆栈(特别是Breeze / Sails部分)是否是个坏主意的反馈。此外,我非常感谢有关javascript全栈架构设计决策的建议/链接。
谢谢!
答案 0 :(得分:8)
基本上,您提到的所有软件都可以在一个产品中使用。尽管理解每个组件的目的/强度是重要的:
<强> 1。 MongoDB的强>
这个很清楚:数据库引擎。
<强> 2。 Node.js的强>
这也是:服务器端的Javascript,它将为您的API提供支持。
第3。 Express.js 强>
现在它变得越来越有趣了。 Express是Node.js的服务器端Web应用程序框架,但它非常简约,这意味着它提供了一些基本功能,没有隐藏的魔法和其他花哨的东西。
<强> 4。 Sails.js 强>
相反,Sails提供了很多魔力,从开箱即用的API开始,以套接字结束。即使它是建立在Express之上,Sails也是一个服务器端的Javascript框架,它遵循一种完全不同的方法,简单易用。如果我们谈论SPA,那么Sails提供的最有用的东西肯定是开箱即用的API:你将能够在不到5分钟的时间内完成并运行。
<强> 5。 Angular.js 强>
我们正在进入客户端。 Angular可以帮助您更好地组织客户端Javascript,并在浏览器中轻松执行一些非常复杂的任务。当然,如果我们谈论富客户端应用程序,Angular(或类似的框架,如Backbone,Ember,Knockout等)是必不可少的。
<强> 6。 Breeze.js 强>
最后,Breeze为您提供了一种从胖客户端Web应用程序组织/访问数据的方法。无论您使用的是Angular,Backbone还是Knockout,Breeze都会以类似于ORM / ActiveRecord概念的方式帮助您管理数据。
因此,所有这些组件都可以轻松地协同工作,毫无疑问(有时候人们会谈论MEAN,MEANS,BMEAN堆栈,其中每个字母都是框架/组件名称中的第一个字母)。但最终,由您决定应在产品中使用多少个。作为方法的一个示例,您可以从Mongo / Node基础开始,然后通过询问每个框架来选择必要的框架,是否简化了您的生活(特别是长期)或使其复杂化。