3

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

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

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

4

1 回答 1

10

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

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

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

如果只包含种子文件,YUI 将无法在没有互联网连接的情况下工作,因为种子文件不包含任何模块。在此环境中使用 YUI 有几种替代方法。

  • SimpleYUI是许多类似 jQuery 的功能的“汇总”。即,Node 模块、IO、transitions 和其他一些较小的实用程序。如果这是您需要的所有功能,它会加载到一个文件中,而您不再需要。
  • Configurator允许您选择您需要的模块,并且您可以使用它来收集您在应用程序离线时注册到模块注册表所需的模块,因此 Loader 永远不需要尝试访问 Web 来满足缺失的依赖项。
  • Dav Glass 正在开发一个名为“grifter”的工具,该工具将允许您创建自定义 YUI 模块存储库,其部分设计目的是允许您在 Windows 8 应用程序中工作,而无需将整个 YUI 源代码与您的应用程序一起提供,正如目前建议的那样。

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

如果你想更深入地了解如何配置加载器,以及一些幕后发生的事情,我在 YUIConf 2011 上就这个主题做了一次演讲,尽管我警告说,它是针对那些已经熟悉 YUI 的人正在寻找配置自己的加载模块。

于 2012-11-28T15:01:15.337 回答