2011-03-17 36 views
5

我在一家为我们的产品使用Ext-JS的公司工作。目前,该产品扩展了Ext-JS组件并覆盖了父功能。这至少使升级变得困难。我们保留了Ext-JS,但正在考虑以非混杂的方式使用它。似乎有两个阵营。在一个阵营中,成员们认为我们应该在Ext-JS之上写一个抽象,以便我们决定在几年内改变框架,希望我们不那么被锁定。我个人认为这是一个愚蠢的目标,所以我坐在营地第二。我的推理是Ext-JS团队花时间为网络提供了一个合理的抽象 - 他们在解决这个问题的领域,而我们只是试图实现一个很酷的产品。我认为如果我们写一个抽象的话,它会假设Ext-JS。我看到我们写的低级抽象功能不那么强大,并且不会映射到jQuery世界(或任何其他框架)。关于正确的行动方案的意见?如何在野外使用Ext-JS?摘要走了还是不走?

+0

如果你确实在Ext之上构建了一个真正的抽象层,你应该出售它或者开源它。这似乎相当于构建可以在使用NHibernate,EF和iBATIS之间无缝切换的DAL。 – 2011-03-17 13:02:45

回答

3

我同意你的意见;我认为这是一个愚蠢的目标。原因如下:

  1. 最后(几年后),您可能不会更改框架。如果你不这样做,那么你花费了额外的时间和资源,增加了一层抽象,不会给你买任何东西。它不仅无法完成您设定的目标(使您的选项多样化),而且会增加您和您的队友需要维护的代码量。

  2. 您可以随时使用其他Javascript库对项目进行模块化,以满足ExtJs无法满足的任何需求。例如,如果你不喜欢ExtJs的图表实现,那么你可以包含jQuery并使用像jqPlot这样的插件。

  3. 要编写适用于当前和未来库的抽象将很困难。你怎么能保证你的抽象能够抵抗当前库选择(ExtJs等)或未来任何未来JS库的变化。

只是想一想几点。总的来说,我认为这将是一个负担,所以我会选择一个满足大部分需求的多元化图书馆,然后在必要时添加更小的图书馆。

2

我认为选项2是更好的选择。如果你建立了一个伟大的网络应用程序,并且它运行得非常好,那么你实际改变到一个新框架的可能性有多大?

ExtJS旨在进行扩展。我肯定会推荐使用Ext.extend()和Ext.override()来做扩展。当你升级到更新版本的Ext时,使用这种方法来完成你的重写,你真的不应该有那么多困难。

0

在ExtJS之上构建一个额外的抽象层看起来像是一个非选项。这需要公平地分担工作,可能很难做到这一点(因此,切换底层框架非常容易),而且可能不需要它。

扩展现有的ExtJS并不差,但您需要以结构化和可控的方式来实现。不要过分 - 只在需要时扩展 - 并将扩展放置并打包为单独的文件和结构,以便轻松找到X和Y类的扩展。尝试提出可重用的解决方案,以便您每次需要在某处进行一些修改时,不需要编写新的扩展。