选择一个JS框架(从Mootools切换到Closure或Dojo)

时间:2012-01-19 18:54:10

标签: javascript frameworks dojo mootools google-closure

我正在开发的项目是针对特定类型的b2b网站的“框架”。目前,几乎所有浏览器都可以在iOS和PC上运行。它为不同的平台提供不同的布局和代码,一切都运行正常,但我坚持的是一个维护问题:我有用于UI对象,布局的JS模块(所以在iPhone和PC上运行都没有问题全高清分辨率),ajax数据等。有些模块是通用的,有些是依赖于平台的,我想在几个包中“编译”它们,例如:

  • iOS,
  • 任何带有Flash 10(甚至是IE6)的浏览器
  • PC / Mac上的IE9-Opera12-FF5-Safari(Chrome缺少一些功能让我惊讶)
  • 故障安全配置(无Flash或JS)
  • Android / WP7 / Bada(尚未,但将在两个月内准备好)

所有东西都是用Mootools编写的。 90%的代码都是独一无二的,因为几乎所有我想使用的库都无法在iOS或IE 6-8上运行。

问题是Mootools与Closue Compiler无法正常工作。我现在正在使用gnu-make + google-closure-compiler + doxygen,然后它在服务器上获得rpm并部署。它可以工作,但我仍然无法让闭包编译器在高级工作(因为mootools的Class模块,我定义的需要)。另一个问题是我必须自己合并js和css文件(顺序在makefile中硬编码)。

问题是,我应该选择什么:

  • 是否值得尝试重写Closure Library的所有代码,以使Closure Compiler正常工作(所以我会缩小,某种混淆,最后将我的脚本合并为一个)
  • 继续使用Mootools并在编译时尝试使用require.js + Rhino,例如ACE(Cloud9)编辑器
  • 选择Dojo,但我对此一无所知,关于条件编译,缩小和混淆
  • 您了解的其他工具链

我想提到的最后一件事是,我希望得到一个抽象的数据模型,比如ExtJs中的数据包。但我只需要“MVC”中的“M”,仅此而已。

我对我的后端感到满意,任何服务器端的支持对我来说都不是一个优势。

提前谢谢。

1 个答案:

答案 0 :(得分:4)

另一个选择:你可以在没有高级模式的情况下使用Closure,并且仍然可以获得很多好处。这就是Dojo做的OOTB。让Closure在高级模式下工作对任何库以及您自己的代码来说都很棘手。 Dojo有一个工具链,可以处理大量的缩小/混淆/连接/等。 - 我不知道工具链如何与mootools相比,但我想也可以在Mootools中优化代码,即使你必须编写脚本或使用其他工具来实现这一点。改变工具包只是为了实现这一目标是没有意义的。你可能不得不重写很多代码。由于您需要新功能而更改/利用工具包是一个不同的故事,尽管您应该能够组合工具包。许多工具包,包括Dojo都有MVC抽象 - 也许mootools也有。