4

虽然标题表明我想在问题中塞入尽可能多的流行语,但我实际上是认真的;)

我正在探索构建具有大量网格并且需要像桌面应用程序一样快速的企业应用程序的选项。虽然运营转型将是一个大问题(或者更确切地说是并发编辑,OT 是解决相关问题的一种可能方法),但该应用程序不太可能拥有大量并发用户(从 50 个开始,可能永远不会超过几百)。

虽然 SmartGWT 似乎解决了我们面临的许多问题,但构建应用程序的团队非常小(可能有两个开发人员和一个技术项目经理)。Node.js 似乎很有吸引力,因为两个开发人员都可以在后端和前端工作。

在这种情况下,我有几个问题:

Node.js 适合这种应用吗?听取人们的意见以及他们对 Node.js 和此类应用程序的体验会非常有趣。

有没有人将它与 ExtJS/SmartGWT 一起使用?你对这些如何与 Node 一起工作有什么经验?

我敢肯定,要找到有经验的 Node.js 开发人员是不可能的,而寻找 Java 专家则是一项相对微不足道的工作。有哪些其他语言可以轻松过渡到 Node.js 的经验?

我知道这是一个相当广泛的问题,请多多包涵。

4

3 回答 3

5

通常使用以下方法解决:node.js+socket.io+backbone.js

但你真的应该查一下: http: //meteor.com/http://www.firebase.com/

于 2012-04-16T10:15:12.763 回答
2

你应该选择你已经知道的技术。

(其余的是恕我直言)

我是 Node.js 和 Java 的粉丝。但是,如果您选择 Node.js,您最好拥有一支才华横溢的团队。虽然它更容易上手,但从长远来看,它也更容易真正搞砸自己。

  • 框架没有明确的赢家(Express 是最接近的)
  • 移动目标。图书馆一直在变化。
  • Javascript 中的重构是一个 PITA
  • 处理数据库事务相当困难(如果你需要事务)
  • 很容易意外编写非常危险的代码(错过“var”,您将遇到全局变量问题)。
  • 对于所有回调,通过代码进行跟踪/调试可能相当困难。
  • 阅读其他人的代码(为什么优秀的团队很重要)

仅仅因为客户端代码恰好具有与前端相同的语法并没有像您想象的那样帮助您。事实上,当我使用 node.js 时,我经常会遇到烦人的认知失调,因为我对可用的(库)或我正在查看的客户端或服务器代码感到困惑。

Java 在服务器端有一些巨大的优势。

  • 既定选择:Spring MVC 或 JAX-RS
  • 重构很容易
  • 由于语言、静态类型和交叉引用 IDE 的一致性,阅读 Java 代码很容易。

您对寻找 Java 开发人员而不是 Javascript 开发人员的担忧正变得越来越少。除了有才华的人是/应该是语言不可知论者。

至于 EXTJS 或 GWT,我都不会使用。Backbone + JQuery + Twitter bootstrap 就足够了。

于 2012-04-16T12:55:13.847 回答
2

我目前正在使用与您的问题完全相同的设置。我正在使用 Sencha 的 Ext4 和 nodejs 构建具有大量网格的大型单页应用程序。我们在大部分 UI 工作中使用 sencha 架构师,我们的数据库使用 PostgreSQL。这种设置有许多优点和缺点。

好处:

  • 没有html!这是所有人最大的优势。HTML 很烦人。如果你只使用 ext 组件,你很少需要接触 html。我们要做的最多的就是稍微修改一下css。言语无法恰当地描述这有多棒。我们成功地消除了编写冗长、不一致的 xml 派生的需要。
  • 它使我们中的许多人成为更好的 javascript 程序员。这很重要,原因之一无论您做什么,都无法摆脱 javascript ,如果您正在构建任何类型的 Web 应用程序,您将不得不编写大量的 javascript。你不妨拥抱它,而不是试图掩饰它。通过隐藏或掩饰它,您只会使问题更加复杂。如果您学会编写更好、更高效的 javascript,最终只会让事情变得更好。
  • 数据库库自动输出为json!多么酷啊?无论如何,它都会变成json并通过rest api读取。为什么不让它自动给你你要使用的东西?这来自 Postgres。Postgres 本身几乎不支持 json,这会自动为您完成。
  • 该项目的全部内容仅用两种语言 pl/pgsql 和 javascript 编写。我们目前正在考虑用 pl/v8(v8 到 postgresql 的端口)替换 pl/pgsql,我几乎可以在不阅读文档的情况下进行编程。这有多棒?

缺点:

  • 不过,Nodejs 并不全是有趣的游戏。也许只有我一个人,但是在我能够基本使用它之前,我需要很长时间才能通读一个 npm 模块。
  • 你必须真正掌握 javascript 才能使用 Nodejs。说真的,Nodejs 不适合初学者。我并不是说初学者应该远离它,我只是说当你学会如何在其中做任何有用的事情时,你将不再是初学者。如果您打算编写任何有用的东西,请准备好深入学习 javascript。
  • Sencha 并不是完全免费的。显然这取决于你用它做什么,但它是我们唯一需要付费的软件。
  • 发展并不像看起来那么快。为表格编写完整的 CRUD、显示网格、刷新网格添加按钮等仍然非常耗时。基本上,拥有非常好的 UI 组件实际上让我们放慢了速度。现在我们必须拥有面板和模式窗口以及真正的窗口框架所拥有的所有东西。在使用煎茶之前,事情要简单得多。一切功能有限,因此编程速度更快。显然,这样做会更好看,但谁能说我们真的需要所有这些东西呢?

就性能而言,它已经足够快了。我无法真正给出比较,但目前还没有性能问题。

于 2013-04-07T09:40:23.353 回答