论坛首页 Web前端技术论坛

prototype,jquery,mootools的使用感受

浏览 5391 次
精华帖 (0) :: 良好帖 (0) :: 新手帖 (0) :: 隐藏帖 (0)
作者 正文
   发表时间:2009-04-03  
Prototype:
特色:prototype的特色用俗一点的话表示就是:“prototype函数库增强了各个厂家的浏览器对js的支持”,它添加了一系列的非常有用的函数。
缺点:
1、能够直接用的插件很少;
2、效果库使用script.aculo.us;
3、文件比较大,效果库script.aculo.us也比较大;
4、不支持js压缩(比如yui),script.aculo.us支持压缩,虽然我们可以在http连接端使用gzip压缩,但是考虑多种浏览器对gzip压缩的支持,另外我们在考虑浏览器兼容gzip时,需要同时考虑gzip与http(cache,304)问题,关于cache的问题请参考RFC2616规范,这里就不多说了。

Jquery:

特色:“Write less, do more”、“插件非常的丰富”,世界是由懒人推动的,所以jquery才这么流行,甚至一个刚对js入门的人利用它的插件都可以做出令人炫目的效果。
缺点:目前没有发现,非要找出来一个的话就是“源代码和prototype一样很难读”。

Mootools:
特色:代码写的比较容易读懂,代码模块化可以随意定制你想要的部分,不过我试了一下,各个模块直接的依赖仍然不少。
缺点:兼容性做的不太好。

目前状态:
原有项目使用的是prototype和script.aculo.us,要求完全兼容IE6、IE7、IE8、FF2、FF3;要求基本兼容safari、iphone上的safari、opera、charome;
prototype和script.aculo.us加起来实在太大了,而且不能压缩,有些特殊的业务逻辑要求必须要修改script.aculo.us才能实现,同时有些业务又需要自己来实现一些特殊效果;
是在是郁闷了,于是开始着手研究prototype源码,不得不说是高手写的框架,那么多的依赖,改一个地方会涉及N个地方,放弃hack它的想法了;
然后是jquery,看代码发现和prototype一样是蜘蛛网,jquery选择器是如此强大,建议各个浏览器厂家用原生代码来实现,不过怎么看它也就是一个选择器,做复杂点的应用肯定不能用;
然后是Mootools,现在正在进行中,正在用mootools来实现prototype中常用的函数,这样目前的代码就不用变化了,小组的人也不用学习新的东西。
但问题也逐步显现:1.兼容性不太好;2.细节处的实现效果也不好;3.有些源代码写的不够严谨;
现在又有点打算放弃mootools了,可能还剩下最后一条路:修改prototype的源代码,精简代码使体积变小;修改代码中不支持压缩的部分。

也希望论坛的朋友们给提点一下,thanks。
   发表时间:2009-04-03   最后修改:2009-04-03
mlw2000 写道
prototype和script.aculo.us加起来实在太大了,而且不能压缩


please google protoaculous.1.8.2.min.js

mlw2000 写道
有些特殊的业务逻辑要求必须要修改script.aculo.us才能实现,同时有些业务又需要自己来实现一些特殊效果;


可以自定义自己的类,也可以继承原有的类实现扩展,不明白为什么要修改script.aculo.us。JavaScript的Mixed-in的特性不就是让你自由扩展的嘛?

JQuery的组件多的数不胜数,没有一款能满足你的要求而要自己写?
0 请登录后投票
   发表时间:2009-04-03  
downpour 写道
mlw2000 写道
prototype和script.aculo.us加起来实在太大了,而且不能压缩


please google protoaculous.1.8.2.min.js

mlw2000 写道
有些特殊的业务逻辑要求必须要修改script.aculo.us才能实现,同时有些业务又需要自己来实现一些特殊效果;


可以自定义自己的类,也可以继承原有的类实现扩展,不明白为什么要修改script.aculo.us。JavaScript的Mixed-in的特性不就是让你自由扩展的嘛?

JQuery的组件多的数不胜数,没有一款能满足你的要求而要自己写?

难道是:
只看到自己造的轮子--
看不到满大街的车子~~
0 请登录后投票
   发表时间:2009-04-03  
downpour 写道
please google protoaculous.1.8.2.min.js

看到过这个压缩版,不过这个压缩后的大小有140K多,140K你不觉得过分了吗?

downpour 写道
可以自定义自己的类,也可以继承原有的类实现扩展,不明白为什么要修改script.aculo.us。JavaScript的Mixed-in的特性不就是让你自由扩展的嘛?

可以继承,也可以覆盖,例如我们看一下prototype的String的escapeHTML代码,你就不会这么说了。
我用1.5.1版,这一版它的Hash实现在特殊情况下会有问题的,同样现在的Mootools1.2.1的Hash实现和prototype一样。

downpour 写道
JQuery的组件多的数不胜数,没有一款能满足你的要求而要自己写?

绝大多数都是95%满足怎么办,肯定要修改?再者插件是满足要求了,整个框架你不会也要用Jquery来实现吧,个人认为如果用Jquery来做做小工具还比较有优势,如果拿他来写大批的代码,肯定会被后人骂有病滴呵呵?
0 请登录后投票
   发表时间:2009-04-04  
prototype.js也是可以根据需要定制大小的。

prototype.js也就是extend方法和一些函数集合(大体上是这样),你可以根据选择来build.(实际上它也是单独开发然后从好几个js文件构建成为一个的)

http://www.prototypejs.org/download

这个地方介绍了如何用rake去构建,希望有所帮助。

script.aculo.us也可以根据需要来定制大小。

通过混淆器可以大幅度减小js的规模:
http://www.dojotoolkit.org/docs/shrinksafe

还有一些在线混淆器也可以使用。

另外还有个方法是使用第三方host的js,如你所说
0 请登录后投票
   发表时间:2009-04-04  
mlw2000 写道
downpour 写道
please google protoaculous.1.8.2.min.js

看到过这个压缩版,不过这个压缩后的大小有140K多,140K你不觉得过分了吗?

downpour 写道
可以自定义自己的类,也可以继承原有的类实现扩展,不明白为什么要修改script.aculo.us。JavaScript的Mixed-in的特性不就是让你自由扩展的嘛?

可以继承,也可以覆盖,例如我们看一下prototype的String的escapeHTML代码,你就不会这么说了。
我用1.5.1版,这一版它的Hash实现在特殊情况下会有问题的,同样现在的Mootools1.2.1的Hash实现和prototype一样。

downpour 写道
JQuery的组件多的数不胜数,没有一款能满足你的要求而要自己写?

绝大多数都是95%满足怎么办,肯定要修改?再者插件是满足要求了,整个框架你不会也要用Jquery来实现吧,个人认为如果用Jquery来做做小工具还比较有优势,如果拿他来写大批的代码,肯定会被后人骂有病滴呵呵?


我是一个不懂理论的人,站在我的角度,你的所有论断我没有看出实践上的支持。

一个148k的js,通常情况下只要下载一次,不知道你所说的过分在哪里。

escapeHTML的源码和继承覆盖的关系到底在哪里,你给我解释一下,看看我能不能帮你。Hash实现在什么样的特殊情况下会有什么问题,也请仔细描述一下,大家一起出谋划策来解决一下。

我还是不能理解,现在许多的网站都把JQuery作为一个基本的依赖库,所以不清楚你所说的“拿他来写大批的代码,肯定会被后人骂有病滴”是从哪里推断出来的?
0 请登录后投票
论坛首页 Web前端技术版

跳转论坛:
Global site tag (gtag.js) - Google Analytics