我有一个基于AMD模块的现有应用程序,并在捆绑时使用require.js。我需要将一堆es2015反应代码作为AMD模块带入这个应用程序并使用Babel将它们变成AMD模块。这是我的babel配置
babel:
options:
sourceMap: false
plugins: [ 'transform-class-properties',
'transform-object-rest-spread',
'transform-es2015-modules-amd']
presets: [ 'react','es2015']
dist:
files: [{
expand: true
cwd: "src/foo/jsx"
src: "**/*.js"
dest: "build/foo/js/"
ext: ".js"
}]
结果可以生成AMD模块,如下所示,例如myreact.js模块:
define(["exports", "react", "prop-types"], function (exports, _react, _propTypes) {
"use strict";
Object.defineProperty(exports, "__esModule", {
value: true
});
var _react2 = _interopRequireDefault(_react);
var _propTypes2 = _interopRequireDefault(_propTypes);
function _interopRequireDefault(obj) {
return obj && obj.__esModule ? obj : {
default: obj
};
}
var REQUIRED_FIELD_SYMBOL = "*";
function Blah(props) {
...
}
exports.default = Blah;
});
现在,当我在我的其他AMD模块中使用这个AMD模块时,它是未定义的
define([..., 'foo/js/myreact'], function(..., RM) {
RM.Blah <---- this is undefied
RM.default <---- still undefied
生成的代码不会返回导出。
另外,我注意到在我的require.js生成的bundle.js中,react模型显示如下:
define('foo/js/myreact',["exports", "react", "prop-types"],
function (exports, _react, _propTypes){
..
}
我不是在require.js配置文件中的任何地方定义导出,所以我应该如何设置导出?
基本上,我应该如何在其他AMD模块中使用我的反应AMD模块?