Javascript 选择JS框架(从Mootools切换到Close或Dojo)

Javascript 选择JS框架(从Mootools切换到Close或Dojo),javascript,frameworks,dojo,mootools,google-closure,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缺少一些

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

  • iOS
  • 任何带有Flash 10(甚至IE6)的浏览器
  • PC/Mac上的IE9-Opera12-FF5-Safari(Chrome缺少一些让我惊讶的功能)
  • 故障保护配置(无闪存或JS)
  • Android/WP7/Bada(还没有,但将在两个月内准备好)
所有内容都是使用Mootools编写的。90%的is代码是唯一的,因为我想使用的几乎所有库都无法在iOS或IE6-8上工作

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

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

  • 是否值得尝试根据闭包库重写所有代码,以使闭包编译器正常工作(因此我将进行缩小、某种模糊处理,并最终将脚本合并到一个闭包库中)
  • 继续使用Mootools,并在编译时尝试使用require.js+Rhino,例如ACE(Cloud9)编辑器
  • 选择Dojo,但我对它一无所知,关于条件编译、缩小和模糊处理
  • 你知道的其他工具链
最后我要提到的是,我希望得到一个Abstract数据模型,类似于ExtJs中的数据包。但我只需要“MVC”中的“M”,没有更多

我对我的后端很满意,任何服务器端支持对我来说都不是优势


Thx提前。

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

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

mootools是一个类似于jQuery的库:它扩展了很多浏览器和引擎对象,但没有像ExtJS那样的抽象层。mootools不是一个库!这是一个模块化框架,jQuery是一个库。我不同意。我想指出的是,库是调用工具箱的一种“通用”方式(基本上是一组定义的函数..比如jQ)。相反,框架包含一个“抽象”层(另请参见),可以被使用/扩展,也可以像骨架一样工作,就像MooTools。我经常使用MooTools,但我仍然认为它只是一个库。ExtJs或主干是真正的框架。类为您提供了一些可用于构建结构的基础,但mootools实际上类似于js libs的中间件。Mootools是一个类似jQuery的库:它扩展了很多浏览器和引擎对象,但没有像extjsdo那样的任何操作层。Mootools不是一个库!这是一个模块化框架,jQuery是一个库。我不同意。我想指出的是,库是调用工具箱的一种“通用”方式(基本上是一组定义的函数..比如jQ)。相反,框架包含一个“抽象”层(另请参见),可以被使用/扩展,也可以像骨架一样工作,就像MooTools。我经常使用MooTools,但我仍然认为它只是一个库。ExtJs或主干是真正的框架。类为您提供了一些可用于构建结构的基础,但mootools实际上类似于js libs的中间件。你的问题对我来说不是很清楚:标题是关于框架的选择,但你似乎更关心的是选择迷你们,不是吗?如果你真的有90%的代码是自制的,那么仅仅因为你不能作为一个编译器得到闭包就切换到另一个框架对我来说简直是疯了。闭包本身有什么那么重要?我需要一个可靠的工具链来继续我的工作。Make+GCC工作正常,但GCC不喜欢Mootools类函数。我猜是这样的,李