我在一家为我们的产品使用Ext-JS的公司工作。目前,该产品扩展了Ext-JS组件并覆盖了父功能。这至少使升级变得困难。我们保留了Ext-JS,但正在考虑以非混杂的方式使用它。似乎有两个阵营。在一个阵营中,成员们认为我们应该在Ext-JS之上写一个抽象,以便我们决定在几年内改变框架,希望我们不那么被锁定。我个人认为这是一个愚蠢的目标,所以我坐在营地第二。我的推理是Ext-JS团队花时间为网络提供了一个合理的抽象 - 他们在解决这个问题的领域,而我们只是试图实现一个很酷的产品。我认为如果我们写一个抽象的话,它会假设Ext-JS。我看到我们写的低级抽象功能不那么强大,并且不会映射到jQuery世界(或任何其他框架)。关于正确的行动方案的意见?如何在野外使用Ext-JS?摘要走了还是不走?
5
A
回答
3
我同意你的意见;我认为这是一个愚蠢的目标。原因如下:
最后(几年后),您可能不会更改框架。如果你不这样做,那么你花费了额外的时间和资源,增加了一层抽象,不会给你买任何东西。它不仅无法完成您设定的目标(使您的选项多样化),而且会增加您和您的队友需要维护的代码量。
您可以随时使用其他Javascript库对项目进行模块化,以满足ExtJs无法满足的任何需求。例如,如果你不喜欢ExtJs的图表实现,那么你可以包含jQuery并使用像jqPlot这样的插件。
要编写适用于当前和未来库的抽象将很困难。你怎么能保证你的抽象能够抵抗当前库选择(ExtJs等)或未来任何未来JS库的变化。
只是想一想几点。总的来说,我认为这将是一个负担,所以我会选择一个满足大部分需求的多元化图书馆,然后在必要时添加更小的图书馆。
2
我认为选项2是更好的选择。如果你建立了一个伟大的网络应用程序,并且它运行得非常好,那么你实际改变到一个新框架的可能性有多大?
ExtJS旨在进行扩展。我肯定会推荐使用Ext.extend()和Ext.override()来做扩展。当你升级到更新版本的Ext时,使用这种方法来完成你的重写,你真的不应该有那么多困难。
0
在ExtJS之上构建一个额外的抽象层看起来像是一个非选项。这需要公平地分担工作,可能很难做到这一点(因此,切换底层框架非常容易),而且可能不需要它。
扩展现有的ExtJS并不差,但您需要以结构化和可控的方式来实现。不要过分 - 只在需要时扩展 - 并将扩展放置并打包为单独的文件和结构,以便轻松找到X和Y类的扩展。尝试提出可重用的解决方案,以便您每次需要在某处进行一些修改时,不需要编写新的扩展。
相关问题
- 1. 的路要走,如果它是在Xamarin.Android
- 2. 基础表不走了
- 3. 角指令表不走了
- 4. 的Lua不走了“零”表
- 5. 如何设置窗口的位置,并使其在走走不可言状
- 6. 使用数组走在类
- 7. 不可走
- 8. 走走android.os.NetworkOnMainThreadException“同时的AsyncTask
- 9. 走走activeSpreadsheet.getSheetByName()'改变动态
- 10. 如何走在d3.js树
- 11. 如何在SNMP中走OID
- 12. SVG动画走错了路
- 13. 了解走通道死锁
- 14. IOKit头文件assert.h走了?
- 15. MySQL已经走了与pymysql
- 16. 下拉引导走散了
- 17. 谁先走了? IBAction或ViewDidLoad
- 18. bash脚本仍然是要走的路?
- 19. CLLocationManager Singleton - 这是要走的路吗?
- 20. getRelation在行走
- 21. 页脚不走donw
- 22. os.walk迭代不走在Python
- 23. 在开始时声明,还是在你走?
- 24. 如何使用的NodeJS走路目录,直到第一级走模块
- 25. C#MongoDB.Driver GetServer已经走了,现在呢?
- 26. 使Django走绿色
- 27. 使UITextView走全屏
- 28. DIV不走整个高度/不是100%
- 29. 应用内结算,不能使RESULT_DEVELOPER_ERROR走
- 30. 如何走向国际化?
如果你确实在Ext之上构建了一个真正的抽象层,你应该出售它或者开源它。这似乎相当于构建可以在使用NHibernate,EF和iBATIS之间无缝切换的DAL。 – 2011-03-17 13:02:45