因为我是YUI的新手并且在几天后使用它。
因此,YUI实例包括特定模块,如“io-base”,“node”或任何其他模块
然后我可以使用像io(),Node(),on()等方法。
问题1:有人能告诉我它是如何运作的吗? yui是否在包含后脱机工作 种子文件如jQuery?
问题2:这个yui对小项目有用吗?
答案 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有一些替代方案。
YUI可用于任何项目,无论大小。它当然具有在大型项目中最突出的代码组织和模式优势,但是该库能够通过Loader相当简单的界面“扩展”项目复杂性。
如果你想深入了解如何配置加载器,以及一些正在发生的事情,我给了talk at YUIConf 2011 on the subject,虽然我警告说,它针对的是已经熟悉YUI的人谁正在寻找配置自己的模块进行加载。