YUI3依赖管理

发布于 2024-12-19 08:44:46 字数 974 浏览 1 评论 0原文

我正在尝试利用 YUI 3 应用程序框架开发一个 Web 应用程序,但无法弄清楚依赖关系管理实际上是如何工作的。

我希望定义一个模块,我想在不同文件中的另一个位置重用该模块。这是我用来在某个文件dir1/home/home.js中定义模块的代码:

YUI.add('MyModule_Home',function(Y){
    Y.namespace("mysite.home");
    Y.mysite.home.SomeView = Y.base.create("SomeView", Y.View, {
        initializer : function() {
            // some logic goes here ... 
        }
        // more functions go here ....
    }
},'0.1',{ requires : ['base','node','app'] });  // <---- Dependency Specifications

在另一个文件(index.js)中使用此模块我使用:

YUI( {
  groups: {
    grp1: {
      base: "/path/to/dir1/",
      modules: {
        MyModule_Home: {
          path: "home/home.js",
          requires: ['base', 'node', 'app'] // <------ Dependency Specifications
        }
      }
    }
  }
})

上面的代码有效,但我想知道为什么两个地方都需要冗余依赖规范。如果我在加载模块或定义模块时省略依赖项规范,则会出现错误。有没有更简洁的方法来做到这一点?

I am trying to develop a web application leveraging the YUI 3 app framework and am not able to figure out how the dependancy management actually works.

I wish to define a module that I want to reuse for another location in a different file.Here is the code I use to define the module in some file dir1/home/home.js:

YUI.add('MyModule_Home',function(Y){
    Y.namespace("mysite.home");
    Y.mysite.home.SomeView = Y.base.create("SomeView", Y.View, {
        initializer : function() {
            // some logic goes here ... 
        }
        // more functions go here ....
    }
},'0.1',{ requires : ['base','node','app'] });  // <---- Dependency Specifications

In another File (index.js) to use this module I use :

YUI( {
  groups: {
    grp1: {
      base: "/path/to/dir1/",
      modules: {
        MyModule_Home: {
          path: "home/home.js",
          requires: ['base', 'node', 'app'] // <------ Dependency Specifications
        }
      }
    }
  }
})

The above code works, but I would like to know why are the redundant dependency specifications required at both places. If I omit the dependency specification while loading the module or while defining the module I get errors. Is there a more succinct way of doing this ?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

缪败 2024-12-26 08:44:46

如果没有在传递给 YUI() 的配置对象中预先指定依赖项,它就无法知道在加载 MyModule_Home 模块之前需要获取哪些模块。如果您没有在配置对象中指定元数据,它应该加载您的模块,读取需求,然后加载它们。这在性能方面不是最佳的,但在开发过程中可能是一个可行的解决方案。

只要确保返回并返回即可。稍后修复!

YUI 团队使用 builder 将其模块包装在 YUI.add调用&处理这些模块的元数据。我发现这是一个不必要的繁重工作流程,因此我在两个地方维护元数据。根据我的经验,维护成本最终并没有那么大。

Without specifying the dependencies up front in the config object you pass to YUI() it has no way of knowing what modules it needs to get before it can load your MyModule_Home module. If you don't specify the metadata in the config object it should go load your module, read the requirements, and then go load them. This is sub-optimal performance-wise but can be a workable solution while developing.

Just make sure to go back & fix it later!

The YUI team uses the builder to wrap their modules in YUI.add calls & that handles the metadata for those modules. I find that to be an unnecessary heavy workflow so I maintain the metadata in two places. It ends up not being that large a maintenance cost in my experience.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文