使用 Node.js 和 ExtJS 构建基于网格的企业级单页应用程序



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

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

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

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

Node.js适合这种应用吗?听到人们和他们对 Node.js 和这种应用程序的体验会非常有趣。

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

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

我知道这是一个相当广泛的问题,请耐心等待。

通常使用node.js+socket.io+backbone来解决.js

但你真的应该抬头看看:http://meteor.com/和 http://www.firebase.com/

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

(其余的恕我直言)

我是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 就足够了。

我目前正在使用与您的问题完全相同的设置。我正在使用Sencha的Ext4和nodejs来构建一个带有大量网格的大型单页应用程序。我们使用sencha architect进行大部分UI工作,我们的数据库使用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并不全是乐趣和游戏。Maby,只有我一个人,但是在我才能基本使用它之前,通读npm模块需要相当长的时间。
  • 你必须真正掌握javascript才能使用Nodejs。说真的,Nodejs不适合初学者。我并不是说初学者应该远离它,我只是说,当你学会如何在其中做任何有用的事情时,你将不再是初学者。如果你打算写任何有用的东西,准备好深入学习javascript。
  • 煎茶并不完全免费。显然,这取决于你用它做什么,但它是我们必须支付的唯一软件。
  • 发展并不像看起来那么快。为表编写完整的 CRUD、显示网格、刷新网格添加按钮等仍然非常耗时。基本上,拥有非常好的UI组件实际上已经减慢了我们的速度。现在我们必须有面板和模态窗口以及真正的窗口框架所具有的所有东西。在使用煎茶之前,事情要简单得多。Eveything的功能有限,因此编程速度更快。显然,当它以这种方式完成时,这看起来会更好,但谁能说我们真的需要所有这些东西呢?

就性能而言,它足够快。我真的不能进行比较,但还没有性能问题。

最新更新