OO JQuery和类
我正在一个网站上工作,基本上第一次使用JQuery。 我以前的项目主要使用MooTools,并且我使用MooTools Class结构编写了一些小部件类。 我想将它们移植到JQuery上,但在我看来,对于对象类来说,MooTools没有什么功能。
我搜索了一下,并没有发现太多。 Digg似乎已经推出了自己的,但我不知道这是我应该使用的东西。 有没有更好的办法? 人们通常使用JQuery获得面向对象的方法吗? 封装UI小部件(或任何功能类结构)的常用方法是什么?
我会发布一个可能的MooTools构件类的假示例:
var ZombatWidget = new Class({
Extends: BaseWidget,
widgetPropertyX = 'prop1',
widgetPropertyY = 'prop2',
attach = function(el) {
var f = function() {
//do something widgety
};
el.addEvent('dblclick',f);
el.addClass('widgetized');
}
});
var z = new ZombatWidget();
z.attach($('widgetDiv'));
我得到的是比这更大的,但你明白了。 我是否需要将其转换为类/继承构造的prototype
方法? 你将如何使用JQuery编写这种对象类?
您可能会发现这种方法对于处理任务有用:构建一个面向对象的jquery插件。
而这篇关于Ajaxian的文章“一个真正的使用jQuery的OO类系统”。
嗯......有趣。 我们有jQuery,这是一个与DOM交互的好工具。 这是一个选择工具,您可以编写自己的代码(插件)来修改选定的项目。 你可以在这里与你自己的(面向对象的)代码在一个插件中进行交互,以做一些非常酷的事情。
那么为什么你需要在jQuery中额外的OO功能,除非你想能够从其他jQuery插件继承?
因为你可能有一个插件可以让你做到以下几点:
$(".spiffyness").yourSpiffyficationPlugin1();
而且,虽然已经做了一些非常酷的事情,但你需要更多的细微之处。
因此,您希望从您的第一个插件继承,这会导致:
$(".spiffyness").yourSpiffyficationPlugin2(); //plugin inherited from 1
但是......你不会这样做:
$(".spiffyness").yourSpiffyficationPlugin1().yourSpiffyficationPlugin2();
第二个插件只是在第一个插件的顶部添加这么小(但很棒)的东西?
换句话说:你想要什么,值得为OO纯粹主义而努力? 或者是jQuery管道机制足够好,也许你需要的一切?
我会说责任和/或你的mootools心态的分离可能是真正的问题。 让jQuery做它擅长的事情,使用它强大的管道机制,管理你自己的插件(它可能包含大量的OO内容)......并且当代码仍然干净时,你可以获得很好的结果。
如果你认为我在这里想得太简单,那么欢迎你提出一个关于你的观点本质的好例子! :-)
而要做到这一点,如果你正在做一些真正先进的事情,并且你不会轻易在其他事情上做些事情,那么你也可以将插件委托给你的一个OO类。 例如:
$.fn.totalAwesomeness = function(options) {
var defaults = {
mode: 1,
title: 'Awesome'
};
var opts = $.extend(defaults, options);
return this.each(function() {
var $this = $(this);
var handler = null;
if(defaults.mode == 1)
handler = new com.myStuff.class1($this);
else if(defaults.mode == 2)
handler = new com.myStuff.class2($this); //class2 inherits from class1
handler.doMagic();
});
};
您始终可以使用moo4q - http://moo4q.com/。 它增加了对jQuery的MooTools类支持。
链接地址: http://www.djcxy.com/p/94013.html下一篇: Why is jQuery so widely adopted versus other Javascript frameworks?