创建YUI模块与普通旧javascript对象的好处?

时间:2014-04-04 15:12:55

标签: javascript yui

我试图从头开始创建一个简单的JavaScript对象用于学习目的。我出于商业原因(现有代码库)必须使用YUI。

使用YUI3(最新版)创建JavaScript对象有什么好处吗?

目前,我注意到我需要使用YUI实例包装它的每个公共方法,它似乎非常重复:

MYNAMESPACE.myobject = (function (Y) {

   return {
        create: function () {
           Y.use('node', 'attribute','event', function () {
            // Do my magic
           }
       },
       update: function () {
          Y.use('node', 'attribute', function () {
            // Do my magic
         });
       } 
    }
//...

})(YUInstance);

更新

我打算以这种方式编写它,因为我更喜欢编写这个特殊的增强模块模式来实例化我的模块单例容器:

MYNAMESPACE.myobject.create(configuration);
MYNAMESPACE.myobject.update();
MYNAMESPACE.myobject.init();

1 个答案:

答案 0 :(得分:1)

我不会将普通JavaScript objectsYUI Modules进行比较。 YUI模块提供了许多特定的目的,而普通的JS对象则没有。简单的JS对象是JS的构建块,这意味着你所做的比较几乎就像问什么更好,原子或蛋白质。两者都不是更好!没有没有原子的蛋白质,因为没有没有普通JS对象的YUI模块。

YUI模块允许开发人员构建模块化,复杂的系统,这在JS中很难做到。这是因为JS缺乏对模块的支持。附注:support is planned and on the way

这在JS中是不可能的,就像在其他语言中可能的那样(例如Python,Java):

import 'mymodule';

YUI增加了对类似内容的支持:

YUI().use('mymodule');

这是您在业务环境中使用YUI的原因之一。 YUI允许您添加模块,使用模块,依赖模块,构建大型模块组等。

此外,您的代码示例让我感到非常规。 Normally可以将模块包装在单个use回调中,而不是两个不同的回调,如下所示:

YUInstance.use('node', 'attribute','event', function (Y) {

    Y.namespace('MYNAMESPACE').myobject = …

});