Ste*_*ini 14 javascript jquery yui
我对jQuery和Yahoo UI API之间的设计差异感到困惑.免责声明:我非常不喜欢jQuery api,但我对网络编程和javascript一般都是一个无知的人,所以我可能会出错,并回到这里乞求兑换.太长...
我的问题如下.这两种设计是不同的.jQuery将DOM置于中心,并通过在其上执行"触发器"增强器方法来装饰DOM.例
$("#flexigrid").flexigrid()
Run Code Online (Sandbox Code Playgroud)
jQuery的一个要求是,在某些情况下,你必须事先遵循一个非常具体的传统结构.例:
<div id="accordion">
<h3><a href="#">First header</a></h3>
<div>First content</div>
<h3><a href="#">Second header</a></h3>
<div>Second content</div>
</div>
Run Code Online (Sandbox Code Playgroud)
然后
$("#accordion").accordion();
Run Code Online (Sandbox Code Playgroud)
此外,返回的实体通常不提供任何通过方便的编程方法隐藏DOM的机制.要操纵您的jQuery实体,您必须通过选择器访问DOM,在某些情况下访问不能保证很容易知道,就像内部生成的ID一样.假设你想以编程方式交换手风琴,你所做的就是
$('#accordion').accordion('option', 'active', 2);
Run Code Online (Sandbox Code Playgroud)
而不是更直观
myAccordion.setActiveTab(2);
Run Code Online (Sandbox Code Playgroud)
另一方面,雅虎ui专注于javascript对象,你创建它们传递DOM节点选择器(例如myDataTable = new YAHOO.widget.DataTable("container_id")),然后通过对象方法执行所有操作.想要添加新行吗?打电话myDataTable.addRow().DOM是隐藏的.你并不关心幕后发生的事情.
现在,我对Trolltech QT的体验很好地映射到了Yahoo UI.窗口小部件对象的清晰,定义的API,通过继承重新实现其中一部分的最终自由,不透明渲染,除非您想打开盒子并弄脏手.QT是一个成功的API,运行良好,易于使用,Yahoo UI在设计风格上有点类似.另一方面,jQuery以违反直觉(对我来说)的方式工作,非常开放的方式,在其对象上减少了API.
足够的咆哮.关键是我认为我可能在这方面做错了,但我想知道为什么.拥有类似jQuery的界面有哪些设计优势(DOM显然暴露在外,你可能不得不寻找jQuery插件自动创建的东西,所以你最终可以$(选择)它们并附加事件或修改它们的内容)而不是像YUI那样隐藏物品和商品方法背后的一切?
我不是在谈论速度,代码大小或打字数量.我在谈论封装,专注于接口和易于访问等设计概念.什么设计更好,在什么情况下,为什么?
Jam*_*mes 12
我不认为你的论点是针对jQuery的,而是更多的插件作者提供的API.
不幸的是,没有两个插件作者会使用相同的API创建一个插件.程序访问的级别不受jQuery本身的限制,而是受插件的作者的限制.
另外,正如你所说,jQuery是关于DOM的 - 我认为这是一个好处,因为它意味着jQuery不会在应用程序的"逻辑"(呃,"业务逻辑")中混淆...它在自己的抽象级别上非常好 - 它处理DOM,就是这样!
您可以为应用程序创建无限量的数据结构和其他API.jQuery不会在这方面阻碍你.
您已在问题中添加了更多详细信息 - 此"编辑"是对这些详细信息的回应.
我认为当你使用jQuery达到某个阶段时,你遇到的情况很常见...... API变得不足.你不需要DOM ......你想为你的模块提供一个漂亮的干净API,无论是手风琴还是数据网格.
就个人而言,我不认为有些事情应该被捆绑成"jQuery插件" -这样做通常意味着牺牲的API -或者不必诉诸jQuery的机制,如伪事件通过"触发"触发:
var someModule = $('#contain').someCoolModule();
someModule.trigger('initiate');
Run Code Online (Sandbox Code Playgroud)
我得到了你所说的,我认为我同意,但我也认为将jQuery放在一个完全独立的层面上是很重要的 - 忘掉它 - 只在你需要攻击DOM时才使用它.
Lil*_*ver 10
jQuery不需要任何特殊标记 - 您可以为任何对象编写选择器.您还可以使用现有的DOM引用,并将其转换为jQuery对象,如下所示:$(domObject).实际上比Yahoo UI更简单,更强大.
如果您已经有DOM参考,则不需要知道您的dom选择器......这可能是您误解的根源.
在使用Yahoo UI和jQuery之后,让我告诉你它们都是很棒的库.他们担任不同的角色,但两者都有很好的方法.
jQuery是一种包装器,简化了与DOM,Ajax,选择对象,执行图形有关的所有事情.它有一个非常简洁和出色的简单API,可以抽象出所有浏览器兼容的废话.
jQuery使用了与大多数新手程序员习惯完全不同的设计概念.这实在是海报孩子为Javascript如何应该被使用.几年前,对Javascript的强大功能有很多无知.大多数情况下,因为互联网上的大多数JavaScript都很糟糕.现在,我想大多数人已经意识到Javascript是最强大的语言之一.它支持几种范例:功能,命令,面向对象(原型,不是基于类),数据文字....
jQuery使用Javascript来充分发挥其能力,利用其设计的每个方面以最有效的方式解决每个问题.
我告诉所有人学习javascript一遍又一遍地阅读jQuery源代码直到他们理解它......这将很难,但是他们将通过成为更好的程序员来完成,他们的工具箱中有更多种类的工具.
它与Java/.NET洗脑有些相似,即为每个开发人员提供一把螺丝刀(OOP),告诉他们这是编程和生活中每个问题的完美解决方案.
哪个,不是.每个问题都需要不同的工具.OOP很好,但对于某些问题通常是一个坏主意.
jQuery的mixin风格的插件架构真的很棒.不同,但高效,快速,易于使用.
jQuery是第一个原因 - 它使用简单,功能强大.
对于不同的问题,Yahoo UI是一种不同的方法.它是一个UI工具包,具有非常重的DOM抽象(与jQuery的轻量级方法相比).如果你想要超出常规的东西,你会发现自己花了很多时间修改它.(这是重量级方法的缺点).
它不是开发应用程序的框架.这是一堆GUI小部件.
我和他们在一起使用过.没有理由不能在同一页面上同时使用jQuery和Yahoo UI,它们是针对不同问题的两种不同工具.
我建议包括jQuery站点/应用程序范围,然后根据需要包括jQuery UI插件.如果您需要重量级的东西,请添加Yahoo UI.但坚持使用jQuery为您的管道代码...
从jQuery学习.理解数组编程,回调,数据文字,将代码视为数据以及保持简洁的能力.并且为每个问题使用正确的工具意味着更短,更简单的代码.
| 归档时间: |
|
| 查看次数: |
4308 次 |
| 最近记录: |