YUI如何包含特定模块?它是如何工作的?

时间:2012-11-28 10:22:17

标签: jquery yui

因为我是YUI的新手并且在几天后使用它。
因此,YUI实例包括特定模块,如“io-base”,“node”或任何其他模块 然后我可以使用像io(),Node(),on()等方法。

问题1:有人能告诉我它是如何运作的吗? yui是否在包含后脱机工作 种子文件如jQuery?

问题2:这个yui对小项目有用吗?

1 个答案:

答案 0 :(得分:10)

YUI的核心是装载机。基本上,Loader下载或附带描述YUI中每个模块的JSON结构。当您请求“node”或“io-base”之类的东西时,Loader会查找您命名的模块的元数据,收集当前未在模块注册表中注册的依赖项(稍后会详细介绍),并以递归的方式工作需要加载的完整模块集的依赖关系链。然后,它会为这些模块发出HTTP请求。如果您没有'组合处理程序'(基本上是服务器上的文件串联服务),Loader将单独请求每个文件,但Combo Handler允许批量请求这些文件。

每个YUI模块都包含在YUI.add()语句中。此方法采用设置模块的设置函数,并公开您希望在传递给函数的“实例对象”上公开的任何代码,按照惯例,此实例对象称为“Y”。 YUI.add实际上做的是将模块放在上面提到的模块注册表中,所以在Loader调用提供给YUI.use()的回调之前,它可以执行每个必需的模块设置功能,以确保您的环境根据什么正确配置你已经要求了。

这个沙箱模型,每个模块都在一个函数内部设置,使用一个实例变量,从每个模块公开所需的功能,并最终传递给你提供给'use'的回调,允许运行多个YUI实例同一页面,与页面上的其他实例完全隔离。 (警告:这通常不是一个好主意,因为每个沙箱都有自己的一组模块,最终会有大量冗余内存使用,它仍然有用,通常不建议或必要)。

如果仅包含种子文件,则YUI将无法在没有Internet连接的情况下工作,因为种子文件不包含任何模块。在这种环境中使用YUI有一些替代方案。

  • SimpleYUI是许多类似jQuery的功能的“汇总”。即,节点模块,IO,转换和一些其他较小的实用程序。如果这是您需要的所有功能,它将加载到一个文件中,您不再需要它。
  • Configurator允许您选择所需的模块,您可以使用它来收集在应用程序离线时注册模块注册表所需的模块,因此Loader永远不需要尝试转到Web以实现缺少的依赖关系。
  • Dav Glass正在开发一个名为'grifter'的工具,它允许您创建自定义YUI模块存储库,其设计部分允许您在Windows 8应用程序中工作,而无需运送整个YUI源。您的应用,currently suggested

YUI可用于任何项目,无论大小。它当然具有在大型项目中最突出的代码组织和模式优势,但是该库能够通过Loader相当简单的界面“扩展”项目复杂性。

如果你想深入了解如何配置加载器,以及一些正在发生的事情,我给了talk at YUIConf 2011 on the subject,虽然我警告说,它针对的是已经熟悉YUI的人谁正在寻找配置自己的模块进行加载。