RequireJS-填充程序中的&Q;EXPORTS&Q;属性的用途是什么 [英] RequireJS - What is the purpose of the "exports" property in shim

查看:17
本文介绍了RequireJS-填充程序中的&Q;EXPORTS&Q;属性的用途是什么的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

下面填充程序中的"Exports"属性的用途是什么?确实需要吗?

requirejs.config({
    shim: {
        'backbone': {
            deps: ['underscore', 'jquery'],
            exports: 'Backbone'
        }
    }
});

我这样问是因为它似乎是多余的-当模块包含在依赖项列表中时,我们将再次将导出的名称指定为函数参数:

define(['backbone'], function (Backbone) {
  return Backbone.Model.extend({});
});

AMD

如果您的示例中没有使用shim,那么您作为参数传递的Backbone对象将是未定义的,因为Backbone不符合推荐答案,并且不会返回供RequireJS使用的对象。

define(['backbone'], function (Backbone) {
  // No shim? Then Backbone here is undefined as it may
  // load out of order and you'll get an error when
  // trying to use Model
  return Backbone.Model.extend({});
});

为了给出一些上下文信息,我将使用r.js优化器输出的代码,但我将在本例中简化它。通过阅读优化器产生的结果,它帮助我理解了它的意义。

填隙后的主干有点像这样:

// Create self invoked function with the global 'this'
// passed in. Here it would be window
define("backbone", (function (global) {
    // When user requires the 'backbone' module
    // as a dependency, simply return them window.Backbone
    // so that properites can be accessed
    return function () {
        return global.Backbone;
    };
}(this)));

重点是当您请求模块时,给RequireJS一些返回给您的东西,并且它将确保在执行此操作之前先加载该模块。对于优化器,它只需事先嵌入库。

这篇关于RequireJS-填充程序中的&Q;EXPORTS&Q;属性的用途是什么的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
相关文章
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆