Eva’s Blog

Archive for 二月 2009

八款JS框架介绍及比较

Dojo
Dojo 是目前最为强大的JS框架,它在自己的 Wiki 上给自己下了一个定义,Dojo 是一个用 JavaScript 编写的开源的DHTML工具箱。Dojo 很想做一个“大一统”的工具箱,不仅仅是浏览器层面的,野心还是很大的。Dojo 包括 Ajax、Browser、Event、Widget 等跨浏览器 API,包括了 JS 本身的语言扩展,以及各个方面的工具类库,和比较完善的 UI 组件库,也被广泛应用在很多项目中,他的 UI 组件的特点是通过给 HTML 标签增加 TAG 的方式进行扩展,而不是通过写 JS 来生成,Dojo 的 API 模仿 Java 类库的组织方式。用 Dojo 写 Web OS 可谓非常方便。Dojo 现在已经 4.0 了,Dojo 强大的地方在于界面和特效的封装,可以让开发者快速构建一些兼容标准的界面。
优点:库相当完善,发展时间也比较长,功能强大,据说利用 Dojo 的 io.bind() 可以实现 comet 看见其功能强大非一般,得到 IBM 和 SUN 的支持。
缺点:文件体积比较大,200多KB,初次下载相当慢,此外,Dojo 的类库使用显得不是那么易用,JS语法增强方面不如 Prototype

Prototype
它是一个非常优雅的 JS 库,定义了 JS 的面向对象扩展,DOM 操作API,事件等等,以 Prototype 为核心,形成了一个外围的各种各样的 JS 扩展库,是相当有前途的 JS 底层框架,值得推荐,感觉也是现实中应用最广的库类(RoR 集成的 AJAX JS 库),之上还有 Scriptaculous 实现一些JS组件功能和效果。
优点:基本底层,易学易用,甚至是其他一些js特效开发包的底层,体积算是最小的了。
缺点:如果说缺点,可能就是功能是他的弱项

dScriptaculous
Scriptaculous 是基于prototype.js 框架的 JS 效果。包含了 6 个 js 文件,不同的文件对应不同的 js 效果,所以说,如果底层用 prototype 的话,做js效果用 Scriptaculous 那是再合适不过的了,连大名鼎鼎的 digg 都在用他,可见不一般
优点:基于prototype 是最大的优点,由于使用 prototype 的广泛性,无疑对用户书锦上添花。
缺点:刚刚兴起,需要时间的磨练

Yui-ext
基于 Yahoo UI 的扩展包 yui-ext 是具有 CS 风格的 Web 用户界面组件,能实现复杂的 Layout 布局,界面效果可以和 backbase 媲美,而且使用纯 javascript 代码开发。真正的可编辑的表格 Edit Grid,支持 XML 和 Json 数据类型,直接可以迁入 Grid。许多组件实现了对数据源的支持,例如动态的布局,可编辑的表格控件,动态加载的 Tree 控件、动态拖拽效果等等。从 1.0 beta 版开始同 Jquery 合作,推出基于 jQuery 的 Ext 1.0,提供了更多有趣的功能。
优点:结构化,类似于 java 的结构,清晰明了,底层用到了 Jquery 的一些函数,使整合使用有了选择,最重要的一点是界面太让让人震撼了。
缺点:太过复杂,整个界面的构造过于复杂。

Jquery
JQuery 是一款同 prototype 一样优秀 js 开发库类,特别是对 css 和 XPath 的支持,使我们写 js 变得更加方便!如果你不是个 js 高手又想写出优秀的 js 效果,那么 JQuery 可以帮你达到目的!并且简介的语法和高的效率一直是jQuery追求的目标。
优点:注重简介和高效,js 效果有 yui-ext 的选择,因为 yui-ext 重用了很多 jQuery 的函数
缺点:据说太嫩,历史不悠久。

Mochikit
MochiKit 自称为一个轻量级的 js 框架。MochiKit 主要受到 Python 和 Python 标准库提供的很多便利之处的启发,另外还缓解了浏览器版本之间的不一致性。其中的 MochiKit.DOM 尤其方便,能够以比原始 JavaScript 更友好的方式处理 DOM 对象。MochiKit.DOM 大部分都是针对 XHTML 文档定制的,如果与 MochiKit 和 Ajax 结合在一起,使用 XHTML 包装的微格式尤其方便。Mochikit 可以直接对字符串或者数字格式化输出,比较实用和方便。它还有自己的 js 代码解释器
优点:MochiKit.DOM 这部分很实用,简介也是很突出的
缺点:轻量级的缺点

Mootools
MooTools 是一个简洁,模块化,面向对象的 JavaScript 框架。它能够帮助你更快,更简单地编写可扩展和兼容性强的 JavaScript 代码。Mootools 跟 prototypejs 相类似,语法几乎一样。但它提供的功能要比 prototypejs 多,而且更强大。比如增加了动画特效、拖放操作等等。
优点:可以定制自己所需要的功能,可以说是 prototypejs 的增强版。
缺点:不大不小,具体应用具体分析。

Moo.fx
Moo.fx是 一个超级轻量级的 javascript 特效库(7k),能够与 prototype.js 或mootools 框架一起使用。它非常快、易于使用、跨浏览器、符合标准,提供控制和修改任何 HTML 元素的 CSS 属性,包括颜色。它内置检查器能够防止用户通过多次或疯狂点击来破坏效果。moo.fx整体采用模块化设计,所以可以在它的基础上开发你需要的任何特效。
优点:小块头有大能耐
缺点:这么小了,已经不错了

ps:上面的也不尽完全正确,要看没个人的需求和熟悉程度

昨天去tecent面試,突然問我一個2維數組排序的問題,唉,當時竟然沒有達上來!后來想想還是基本功不到位啊!在這里copy網上一個解決方案!

var   temp   =   [
{   x:X-1,   y:Y-1,   ct:5,   d:0},
{   x:X,       y:Y-1,   ct:2,   d:1},
{   x:X+1,   y:Y-1,   ct:7,   d:2},
{   x:X+1,   y:Y,       ct:3,   d:3},
{   x:X+1,   y:Y+1,   ct:0,   d:4},
{   x:X,       y:Y+1,   ct:1,   d:5},
{   x:X-1,   y:Y+1,   ct:6,   d:6},
{   x:X-1,   y:Y,       ct:4,   d:7}
];

做ct的排序。

<script type=”text/javascript”>
function compareIntegers(vNum1,vNum2)
{
if(vNum1>vNum2)
{
return 1;
}
else if(vNum1<vNum2)
{
return -1;
}
else
{
return 0;
}
}
###這個方法可以簡化成

function   cmp(a,b,c)   {
if(a[c]   ==   b[c])
return   0;
return   a[c]   >   b[c]   ?   1:-1;
}  #####

function mySort(arr)
{
arr.sort(compareIntegers);
return arr;
}

string数组排序可以直接用 String的localCompare()方法
function compareStrings(string1,string2)
{
return string1.localeCompare(string2);
}

csdn:

<script>
function   cmp(a,b,c)   {
if(a[c]   ==   b[c])
return   0;
return   a[c]   >   b[c]   ?   1:-1;
}

for(i=0;i<temp.length-1;i++)
for(j=i;j<temp.length;j++)
if(cmp(temp[i],temp[j],”ct”)   >   0)   {
c   =   temp[i]
temp[i]   =   temp[j]
temp[j]   =   c
}
</script>


2009年二月
« 1月    
 1
2345678
9101112131415
16171819202122
232425262728  

UED Front_end

Blog Stats

  • 146 hits