首页 >web前端 >js教程 >YUI 3:更轻,更快,易于使用

YUI 3:更轻,更快,易于使用

Jennifer Aniston
Jennifer Aniston原创
2025-03-06 00:51:10280浏览

YUI 3: Lighter, Faster, Easier to Use

YUI 3:更轻,更快,易于使用

钥匙要点

    YUI的完整重写
  • YUI 3,其目标是比其前任YUI 2更轻,更快,更易于使用。重写地址在内部机制中的不一致和随着YUI 2的API的不一致。
  • YUI 3库引入了一个新的插件体系结构,该插件构建允许用户将自己的功能添加到节点和小部件。该库还引入了一个新的全局对象名称YUI,替换了旧的Yahoo全局对象。这使YUI的较旧版本可以与YUI 3并存。
  • > YUI 3具有更清洁,更简洁的编码样式和类的新层次结构,可以在所有YUI组件中建立一致的内部力学和API。该库还通过将功能分为较小的子模型来解决仅用于一两个功能的库的重量问题。>
  • 库的新版本使用节点实用程序为DOM引入了一个新的抽象层,从而简化了DOM交互。 YUI 3还使用事件外墙的想法将事件管理归一化,该活动会照顾所有浏览器的标准化。
  • > YUI 3为Web开发提供了一个更灵活,更有效的库,其中包括新的事件系统,新的模块系统和新属性系统。它还介绍了新的实用程序和小部件,例如用于DOM操作的节点和Nodelist,io for Ajax请求以及用于创建可重复使用的UI组件的小部件。
  • > 2008年8月,Yahoo用户界面团队发布了YUI 3的第一个预览版本,这是从头开始对YUI的完整重写(第一个Beta版本将在下周某个时候发布!)。 您可能会问,
  • >他们为什么要重写一个已经有用且成熟的库?好吧,随着Yui 2的成熟,建造的方式也进化了。 结果,从一开始就存在的部分YUI与以后添加的部分完全不同。结果是该库在内部力学和API中都包含不一致之处。因此,团队决定将图书馆带回基础知识并从头开始重建。他们的计划是运用过去三年来从事YUI的经验,并建立一个更轻,更快且易于使用的图书馆。最后,为了使库尽可能灵活,YUI 3引入了所有新的插件体系结构,使您可以将自己的功能添加到节点和小部件。稍后,我们会看到一个这样的插件。首先,让我们看看YUI 3中的新功能。
  • 再见yahoo,你好yui
    在查看YUI 3代码示例时,您会注意到的第一个位置是它使用的新全局对象名称。旧的Yahoo全球对象已被新的YUI全球对象替换。它的重命名是有两个原因:用户反馈表明,有些公司不喜欢在其代码中使用Yahoo名称;但更重要的是,它允许YUI的较旧版本通过具有不同的变量名称与YUI 3共存。

    >

    以及被重命名的全球对象,其用法基于与2.x中的根本不同的原则。对于初学者而言,它不再是静态对象,而是执行时返回本身实例的函数。现在,YUI的每个执行都会返回一个独立的环境,在该环境中,库的版本和其所有加载组件的版本都可以运行,而不会干扰页面上的任何其他实例。通过扩展,这也意味着库的多个版本可以通过实例化YUI对象的不同版本在同一页面上共存。下面的示例说明了以下原则:

 <br>
YUI().use('dd-drop', 'anim', function(Y) { <br>
    // Y.DD is available <br>
    // Y.Anim is available <br>
}
>在此执行YUI(),该YUI()返回了执行使用方法的库的实例。至少需要两个参数:库组件,然后在所有操作加载后运行的回调。在上面的示例中,传递的前两个参数是要加载的库组件的名称。最终参数是我们的回调函数,它接收一个对象(示例中命名为y) - 这是包含所有已加载组件的库的实例。因此,就像上面示例中的注释一样,可以在y.dd上找到拖放组件,并且可以在y.anim。

>清洁剂,更简洁的编码样式

该团队所遇到的主要问题之一是确保所有YUI组件的一致内部力学和一致的API。因此,Yui 3现在拥有一个新的类别的层次结构,可以允许这一点。例如,属性类提供GET和设置方法,初始配置支持以及将更改事件属于继承该类的类。还有一个基类从属性继承并提供了一些定型对象的功能,例如所有从其继承的类的初始化器和destructor方法。最后,他们建立了一个从基础继承的小部件类,并提供了通常由小部件使用的通用功能,例如渲染方法 - 一种用于管理小部件渲染的通用模型 - 视频控制器结构,并支持对通用窗口小部件的属性。它还提供插件注册和激活支持。
>

> yui 3克服的另一个问题是,您的脚本需要在其中只包含一个或两个功能的库中加载库的一块库。例如,在YUI 2中,您必须包括整个连接实用程序(重新升级时重量为38kb,12kb)才能进行一些XMLHTTPREQUEST调用。 YUI 3通过将功能分为较小的子模型来解决此问题。这样一来,就无需仅仅以xmlhttprequest的调用来撤回整个实用程序。在YUI 3中,您只需拉下IO实用程序的io-base模块,就可以重量为19kb(4KB缩小)来进行XMLHTTPREQUEST调用。实际上,整个IO实用程序重29KB(7KB缩小),并且比其前身更具功能丰富。例如,现在可以使用IO-XDR子模块进行跨域或XDOMAINREQUEST。

选择和链接
YUI 2引入了选择引擎,但在图书馆的一生中确实有点了。结果,整个库是围绕老式元素获取技术构建的。换句话说,每当需要参考时,您要么通过元素的ID,要么通过元素本身,就这样。但是,使用YUI 3,选择器引擎就会直接构建到库的核心中。它渗透到其中的每个部分,因此您几乎可以在需要元素参考的任何地方传递CSS选择器字符串。除了构造函数外,还包括设置活动处理程序和与公用事业合作。这是一个示例,它使第一个元素与班级作者拖动:

>
var dd = new y.dd.drag({
>    节点:'.author'
}); 每当yui 3没有逻辑值返回时,它都会试图使方法可链。这是一个在行动中的示例:

>在这里,我们引用了第一个元素,其中class name作者并在其上设置了一个光标样式。

 <br>
YUI().use('dd-drop', 'anim', function(Y) { <br>
    // Y.DD is available <br>
    // Y.Anim is available <br>
}
>节点和事件faã§ades

YUI 3带有节点实用程序为DOM引入了一个新的抽象层。 YUI 3没有返回对DOM元素的引用,而是返回节点和节点,这极大地简化了DOM相互作用。这是因为节点包括与它们互动所需的所有功能,而不必去分开功能。此外,在需要的情况下,节点暴露的方法会照顾浏览器归一化,因此与它们一起工作的经验尽可能无痛。这是您必须在YUI 2中写的,才能将类名称添加到一个元素:>
在yui 3中,这变成了:

>

Y.get('.author').setStyle('cursor', 'move');
实际上,如果该节点已经在手中,则在一个名为navproducts的变量中说,那么您只能做到这一点:

>

 <br>
YUI().use('dd-drop', 'anim', function(Y) { <br>
    // Y.DD is available <br>
    // Y.Anim is available <br>
}

YUI 3简化了与DOM的交互,并且还使用事件fa§ade的想法进行了标准化事件管理。每个事件听众都会收到一个事件faã§ade,该事件照顾所有浏览器的归一化。因此,例如,在YUI 2中,您需要以下代码才能“防止默认”:>

Y.get('.author').setStyle('cursor', 'move');
>现在您需要做的就是:

YAHOO.util.Dom.addClass("navProducts", "selected");
更重要的是,这种行为也延伸到纯自定义事件,因此即使这些事件也可以接收事件,从而使它们可以防止默认情况并停止传播。

>

下一步:让我们将其中一些新方法付诸实践。

>

给我看钱!
>
>我已经构建了一个简单的示例页面,演示了要使用的YUI 3多么容易和强大。要在文章中节省空间,我将避免向您展示所有标记和代码,但是您可以在示例页面上查看完整源。

我要做的第一个任务是加载一个YUI的实例,其中包括动画实用程序,slider窗口小部件,Menunav节点插件和拖放&Drop&Drop Utilities。 Yui去并从Yahoo服务器中获取必要的文件及其依赖关系。然后,它返回带有已加载组件的YUI实例为回调函数,该函数将其接收到名为y的变量:

>

Y.get("#navProducts").addClass("selected");
接下来,我创建一个简单的动画,以将页面的内容反弹到视图中。为此,我实例化了一个新的动画对象。我将其传递给具有ID主体的元素的引用,并告诉它将最高值从当前所在的位置为0(现在为-1000px,如示例页面的标记中指定)。我还指定动画应花费三秒钟,并且应该使用Elasticout放松方法。一旦对象实例化,这只是使用运行方法运行它的简单情况:>

接下来,我设置了一个滑块对象,以便用户调整页面的基本字体大小。 YUI的字体CSS(示例页面中包含)将页面的基本字体大小设置为13像素。它通过在体元元素上设置字体大小值来实现此操作,从中计算所有其他字体大小。这是我们要操纵的目的,以更改整个页面的字体尺寸。
navProducts.addClass("selected");
>

我抓住一个节点引用,用于身体元素,该引用将与滑块一起使用。然后,我创建一个滑块小部件。我将最小值设置为13,最大值将最大值设置为28,因为我希望字体大小保持在这些值之内。然后,我确保滑块的导轨尺寸为100像素宽。最后,我设置了滑块的拇指图像(直接从Yahoo的托管服务器上加载):

 <br>
YUI().use('dd-drop', 'anim', function(Y) { <br>
    // Y.DD is available <br>
    // Y.Anim is available <br>
}

>一旦滑块实例化,这只是呈现它的简单问题。我通过调用Slider的渲染方法使用我想要呈现的元素的类名来调用Slider的渲染方法。Slider Widget将在与该类名称匹配的DOM中的第一个元素中呈现

Y.get('.author').setStyle('cursor', 'move');
>现在剩下的唯一要做的任务是将滑块连接起来,以便实际调整页面的字体大小。我是通过挂在事件后来做到的。 YUI 3具有标准的事件后,您可以与先前版本相比,可以使事件处理变得容易得多。现在,每当射击ValueChange事件时,我们的身体元素的FontStyle值就会更改:

YAHOO.util.Dom.addClass("navProducts", "selected");
>我还设置了一个导航菜单。该页面的内容准备就绪后,我将Menunav节点插件插入NAV节点。然后,它会根据发现的标记自动设置导航菜单 - 就像那样简单!这是代码:

Y.get("#navProducts").addClass("selected");
>最后,我通过简单地实例化新的拖放对象并将其引用对我的图片的班级名称来使您的图片真正可拖动。 一旦创建对象,图像就可以拖动。作为额外的触摸,当鼠标悬停在图像上时,我会更改光标,以便显然图像是可拖动的:

navProducts.addClass("selected");
摘要
因此,如您所见,Yui 3与其前身完全不同。除了新的语法外,您还可以获得更快,更轻松,更轻松,更灵活的库 - 准备好进行您最雄心勃勃的网络项目。

>

看到这是一个底漆,我们几乎没有刮过YUI 3的表面。有关更多阅读,请查看YUI 3.x预览版2页,Satyen Desai在YUI 3上的演示和YUI 3 Forum。

经常询问有关YUI 3

的问题

> YUI 3中的新功能是什么?其中包括一个新的事件系统,该系统允许更灵活的事件处理,一个新的模块系统,简化了加载和使用模块的过程,以及一个新属性系统,该系统为使用对象属性提供了一致的API。此外,YUI 3还包括许多新的实用程序和小部件,例如用于DOM操作的节点和节点符,用于AJAX请求的IO和用于创建可重复使用的UI组件的小部件。

>

>如何创建YUI 3模块?模块的依赖项,然后实现模块的功能。模块的依赖项被指定为模块名称的数组,并且将模块的功能实现为接收YUI实例作为参数的函数。此功能是定义模块的方法和属性的地方。

>

> YUI 3中的新事件系统如何工作?

> YUI 3中的新事件系统基于事件目标和事件处理程序的概念。事件目标是一个可以发出事件的对象,事件处理程序是对这些事件做出响应的函数。您可以通过扩展EventTarget类来创建事件目标,并且可以使用ON()方法将事件处理程序附加到事件目标。该系统允许在如何处理事件的方式上具有高度的灵活性。

>

> YUI 3中的属性系统的目的是什么?它允许您定义具有特定特征集的属性,例如它们是仅读取还是仅写入,它们是否具有默认值,以及在修改其值时是否应该触发更改事件。该系统使使用定义明确的接口创建对象变得更加容易。

如何将YUI 3中的io实用程序用于AJAX请求?

>

YUI 3中的IO实用程序提供了一个简单且一致的API来制作AJAX请求。您可以使用io()方法发送请求,指定URL,请求方法(获取或发布)以及随附请求发送的任何数据。 io()方法返回一个事务对象,您可以使用该对象来处理响应。

如何使用YUI 3中的节点和节点级实用程序进行DOM操作?

YUI 3中的节点和节点UTITIS在Yui 3中提供了一个简单且一致的API进行操作。您可以使用y.one()方法获取对单个DOM元素的引用,而y.all()方法可以获取代表元素集合的节点符。这些方法返回节点和结节式实例,这些实例提供了许多方法来操纵它们所代表的元素。

>如何使用YUI 3中的窗口小工具来创建可重复使用的UI组件?

YUI 3中的窗口基准提供了创建可重用UI的框架。小部件本质上是封装特定功能的视觉组件。您可以通过扩展小部件类并实现定义小部件的行为和外观的方法和属性来创建小部件。>>如何加载和使用YUI 3?加载以及使用YUI 3中的模块加载和使用模块。此方法将其作为参数为加载的模块的名称,并在加载模块后执行回调函数。回调函数接收一个YUI实例作为参数,该参数提供对加载模块的访问。>>我如何使用y.Error()方法完成YUI 3中的错误处理中的错误。此方法使用指定的消息抛出错误,并选择记录错误并停止执行当前代码块。您可以使用try/catch块抓住并处理Y.Error()丢弃的错误。>

我如何使用y.extend()方法在yui 3中扩展YUI 3?该方法将要创建的类的构造函数,类的构造函数以及包含用于添加到新类的方法和属性的对象。新类继承了其扩展的类的所有方法和属性,并用第三个参数中指定的方法和属性添加或覆盖它们。>>>>>。

以上是YUI 3:更轻,更快,易于使用的详细内容。更多信息请关注PHP中文网其他相关文章!

声明:
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn