requirejs的exports问题

require.config配置项中的shim,我把引入的hello.js的exports设置为h,为什么在下面调用的时候不写h也可以调用?

图片描述
图片描述

下划线照样可以调用的:
图片描述

阅读 6.3k
1 个回答

图片描述

你确定看懂文档了么?

exports的意思是,针对那些老旧的,没有按照AMD规范声明的代码,把他们暴露在window下的对象名,映射到key上去。

打个比方,假设你的hello.js是老旧的,没按AMD规范的,如下:

(function() {
    window.h = {
        hello: function() {
            alert('hello');
        }
    };
}());

然后这样配置shim

shim: {
    'hello': {
        exports: 'h'
    }
}

意思是,当hello.js加载完毕后,从window.h里取出hello.js定义的内容,赋值给requirejshello这个module name。这样的话,当你其他地方需要用到hello.js的时候,就可以:

define(['hello'], function(hhh){
    //使用hhh
    //至于这里变量名到底是用hhh,还是h,还是hello,无所谓的
});
撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题