requirejs如何加载commonjs包?

时间:2014-02-19 05:54:18

标签: javascript requirejs single-page-application

我按照http://requirejs.org/docs/api.html#packages来了解RequireJs如何加载CommonJS模块,但我无法得到它。

我有以下文件。

富/ foo.js main.js require.js

foo / foo.js,内容为:

exports.bar = '1234';
exports.xyz = function noop() {};

main.js:

requirejs.config({
    packages: [{name:'foo', main: 'foo'}]
});

require(['foo'], function(foo) {
   console.log(foo.bar);
});

它说不能读取未定义的栏

1 个答案:

答案 0 :(得分:0)

您错过了在问题中链接到的文档的重要部分:

  

虽然软件包可以具有CommonJS目录布局,但模块本身应该是RequireJS可以理解的模块格式。规则的例外情况:如果您使用的是r.js节点适配器,则模块可以采用传统的CommonJS模块格式。如果需要将传统的CommonJS模块转换为RequireJS使用的异步模块格式,则可以使用CommonJS转换器工具。

(强调补充。)

这不是RequireJS理解的内容:

exports.bar = '1234';
exports.xyz = function noop() {};

必须是:

define(function(require, exports, module) {
    exports.bar = '1234';
    exports.xyz = function noop() {};
});

您可以手动执行此转换,也可以使用r.js -convert为您执行转换。