puede módulo modulos modules importar from es6 ecmascript convertir clases archivo javascript gruntjs amd ecmascript-6 babeljs

javascript - modulos - El uso de Babel para convertir módulos ES6 a módulos ES5 AMD, no funciona como se esperaba



importar clases en javascript (1)

Después de excavar más, finalmente me di cuenta de dónde me equivoqué.

En mi stack actual, me veo obligado a usar Almond, en lugar de RequireJS. Debido a esto, Almond espera que haya un archivo para inicializar los módulos, de ahí que esperaba que Babel me generara uno. Pero resulta que el código generado por Babel funcionará bien dentro de RequireJS, pero para que funcione con Almond, necesito crear un archivo separado de es5 js, solo para inicializar los archivos generados por Babel.

Algo como esto:

requirejs([''app''], function (app) { app(); } );

Espero que alguien pueda ayudar.

Estoy usando grunt-babel para convertir el código de mi módulo ES6 al código del módulo ES5 AMD. Aquí está mi código ES6:

multiply.js

export default function (x,y) { return x * y; };

square.js

import multiply from ''multiply''; export default function (x) { return multiply(x,x); };

app.js

import square from ''square''; var myValue = square(2); console.log(myValue);

Como puede ver, todo lo que hago es crear un módulo ''multiplicar'', importarlo a otro módulo ''cuadrado'' y finalmente usar ''cuadrado'' en mi archivo js principal. Los 3 archivos anteriores se convierten a lo siguiente:

multiply.js

define("multiply", ["exports", "module"], function (exports, module) { module.exports = function (x, y) { return x * y; }; });

square.js

define("square", ["exports", "module", "multiply"], function (exports, module, _resourcesJsEs6moduleExampleMultiply) { var _interopRequire = function (obj) { return obj && obj.__esModule ? obj["default"] : obj; }; var multiply = _interopRequire(_resourcesJsEs6moduleExampleMultiply); module.exports = function (x) { return multiply(x, x); }; });

app.js

define("app", ["exports", "square"], function (exports, _resourcesJsEs6moduleExampleSquare) { var _interopRequire = function (obj) { return obj && obj.__esModule ? obj["default"] : obj; }; var square = _interopRequire(_resourcesJsEs6moduleExampleSquare); var myValue = square(2); console.log(myValue); });

El problema que tengo es que esperaba que el archivo ''app.js'' se convirtiera a algo más como esto:

requirejs([''square''], function (square) { var myValue = square(2); console.log(myValue); } );

En mi gruntfile.js mi configuración es bastante simple:

options: { moduleIds: true, modules: ''amd'', blacklist: [''strict''] }

¿Estoy haciendo algo mal?