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

Cod*_*ode 3 jquery yui

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

问题1:有谁可以告诉我它是如何工作的?并且在包含像jQuery这样的种子文件后,yui是否可以脱机工作?

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

fox*_*rot 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,转换和一些其他较小的实用程序.如果这是您需要的所有功能,它将加载到一个文件中,您不再需要它.
  • 配置允许您选择您所需要的模块,并且你可以用它来收集你需要与模块登记注册的模块,而你的应用程序脱机,所以装载机永远不需要尝试去到Web履行缺少的依赖关系.
  • Dav Glass正在研究一种名为"grifter"的工具,它允许您创建自定义YUI模块存储库,其设计部分允许您在Windows 8应用程序中工作,而无需使用您的应用程序发送整个YUI源,如目前建议.

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

如果你想深入了解如何配置装载机,以及一些正在发生的事情,我在YUIConf 2011就这个主题发表了演讲,虽然我警告说,它针对已经熟悉YUI的人正在寻找配置自己的模块进行加载.