11

我们使用 Dojo (1.9.3) 作为构建单页应用程序的 JS 框架。然而,我们在 Dojo 的怪癖上花费了太多时间,因此即使是简单的任务也需要很长时间才能实现。而且由于缺乏适当的文档,我们经常不得不求助于阅读源代码,然后实施解决方法。

我觉得如果我们转移到其他框架,我们会加快开发速度,并且更容易维护代码。我们的代码库相当大,因为它是一个复杂的应用程序,所以我们没有时间一次重新编写整个东西。因此,我希望可以将 Dojo 与其他一些框架结合起来,这样我们就可以逐步远离 Dojo。我只是在业余时间涉足了这些其他框架,并且只写了一些小的示例应用程序,所以我觉得我真的不能说它们是否可以与其他框架很好地配合,所以我希望一些你在那里可以。

我一直在研究的框架——根据我的简短调查,按照我喜欢的顺序排列,但请随意说服我。

  1. 余烬
  2. 反应
  3. 聚合物
  4. Angular(最后是因为我害怕 2.0 大修)

虽然主要问题是它是否可能,但如果您认为这样做是一个坏主意,请提供建议。

4

2 回答 2

10

从 Dojo 方面我能说的最多的是,Dojo 本身是一个工具包,而不是框架本身,因此通常不应干扰其他脚本或框架。另一方面,不能总是说反过来。因此,虽然我不能代表您列表中的所有选择,但我认为 Dojo 本身不会妨碍您。

我能想到的一个可能的例外是,如果任何有问题的框架增加了原生原型,特别ObjecthasOwnProperty.

我能想到的唯一另一个例外是,是否有任何框架由于某种原因不能与 AMD 模块加载器很好地共存。

话虽如此,我还建议您对框架的“承诺”持保留态度 - 您说现在您发现使用 Dojo 实现事物需要付出努力,而您列出的框架自然很有吸引力,因为它们使通过提供模式和约定,应用程序开发的某些部分变得容易——但是您应该问的问题是,当您需要在这些约定之外或违反这些约定做某事时,您的框架使您的工作有多难?Dojo 可能有一个学习曲线,但它通常不会阻止您做任何事情。

于 2014-12-19T01:12:18.950 回答
6

你可以一起使用它们,但这也取决于你想要做什么。某些操作可能需要比其他操作更多的时间来进行集成。

迪吉特

我只使用过 Ember.js 和 AngularJS,但这些框架中的一个常见概念是数据绑定。数据绑定允许您简单地更新模型,视图将反映模型中的更改。
但是,这些通常不能很好地与小部件一起使用。小部件(如 Dijit 库)创建自己的 DOM,因此,Ember.js 或 AngularJS 等框架无法“意识到”这些更改,并且在这种情况下无法更新视图。

为了让它工作,你必须将你的小部件包装成组件(Ember.js)或指令(AngularJS)。这种包装的一个例子可以在这个答案中找到。

依赖加载

依赖加载可能会令人困惑。AngularJS 带有它们自己的依赖注入系统,这意味着您将不得不为 Dojo 模块使用 Dojo AMD 加载器,为 AngularJS 使用 AngularJS 依赖注入。据我所知,这两者可以很好地协同工作(我已经看到了 RequireJS AMD 加载程序的示例,所以它应该是可能的)。

使用 Ember.js,我在与 AMD 加载程序集成时遇到了更多麻烦。Ember.js 的创建者 (Tom Dale) 不相信 AMD,我已经看到尝试使用 AMD 加载程序加载 Ember.js 组件的几个问题。

这完全取决于您希望如何使用这些框架以及您想要做出哪些额外的努力。在我看来,您甚至不确定这些框架的用途,因为 React.js 或 Polymer 的用途与 AngularJS 或 Ember.js 完全不同。

于 2014-12-19T08:09:42.517 回答