© 2015 Eyal Vardi. All rights reserved. Tel: 054-5-767-300, Email: evardi@gmail.com
© 2015 Eyal Vardi. All rights reserved. Tel: 054-5-767-300, Email: evardi@gmail.com
© 2015 Eyal Vardi. All rights reserved. Tel: 054-5-767-300, Email: evardi@gmail.com
© 2015 Eyal Vardi. All rights reserved. Tel: 054-5-767-300, Email: evardi@gmail.com
export const sqrt = Math.sqrt;
export function square(x) { return x * x; }
export function diag(x, y) {
return sqrt(square(x) + square(y));
}
import { square, diag } /* or '*' */ from 'lib';
console.log(square(11)); // 121
console.log(diag(4, 3)); // 5
© 2015 Eyal Vardi. All rights reserved. Tel: 054-5-767-300, Email: evardi@gmail.com
//------ myFunc.js ------
export default function () { ... };
//------ main1.js ------
import myFunc from 'myFunc';
myFunc();
© 2015 Eyal Vardi. All rights reserved. Tel: 054-5-767-300, Email: evardi@gmail.com
if (Math.random()) {
exports.baz = ...;
}
© 2015 Eyal Vardi. All rights reserved. Tel: 054-5-767-300, Email: evardi@gmail.com
// Export lib
export * from 'src/lib';
// Export from lib just foo and bar
export { foo, bar } from 'src/lib';
// Export from lib, foo as myFoo
export { foo as myFoo, bar } from 'src/other_module';
© 2015 Eyal Vardi. All rights reserved. Tel: 054-5-767-300, Email: evardi@gmail.com
© 2015 Eyal Vardi. All rights reserved. Tel: 054-5-767-300, Email: evardi@gmail.com
// Default exports and named exports
import theDefault from 'src/mylib';
import { named1, named2 } from 'src/mylib';
import theDefault, { named1, named2 } from 'src/mylib';
// Renaming: import named1 as myNamed1
import { named1 as myNamed1, named2 } from 'src/mylib';
// Importing the module as an object
import * as mylib from 'src/mylib';
// Only load the module
import 'src/mylib';
© 2015 Eyal Vardi. All rights reserved. Tel: 054-5-767-300, Email: evardi@gmail.com
© 2015 Eyal Vardi. All rights reserved. Tel: 054-5-767-300, Email: evardi@gmail.com
import { url } from this module;
console.log(url);
// Option II
import * as metaData from this module;
console.log(metaData.url);
© 2015 Eyal Vardi. All rights reserved. Tel: 054-5-767-300, Email: evardi@gmail.com
Promise.all(
['module1', 'module2', 'module3']
.map(x => System.import(x)))
.then(function ([module1, module2, module3]) { ... });
© 2015 Eyal Vardi. All rights reserved. Tel: 054-5-767-300, Email: evardi@gmail.com
© 2015 Eyal Vardi. All rights reserved. Tel: 054-5-767-300, Email: evardi@gmail.com
http://www.2ality.com/
Understanding ECMAScript 6
http://ecmascript6.org/
A Few New Things Coming To JavaScript
HARMONY OF DREAMS COME TRUE
Harmony specification_drafts
© 2015 Eyal Vardi. All rights reserved. Tel: 054-5-767-300, Email: evardi@gmail.com
eyalvardi.wordpress.com

Modules in ECMAScript 6.0

  • 1.
    © 2015 EyalVardi. All rights reserved. Tel: 054-5-767-300, Email: evardi@gmail.com
  • 2.
    © 2015 EyalVardi. All rights reserved. Tel: 054-5-767-300, Email: evardi@gmail.com
  • 3.
    © 2015 EyalVardi. All rights reserved. Tel: 054-5-767-300, Email: evardi@gmail.com
  • 4.
    © 2015 EyalVardi. All rights reserved. Tel: 054-5-767-300, Email: evardi@gmail.com export const sqrt = Math.sqrt; export function square(x) { return x * x; } export function diag(x, y) { return sqrt(square(x) + square(y)); } import { square, diag } /* or '*' */ from 'lib'; console.log(square(11)); // 121 console.log(diag(4, 3)); // 5
  • 5.
    © 2015 EyalVardi. All rights reserved. Tel: 054-5-767-300, Email: evardi@gmail.com //------ myFunc.js ------ export default function () { ... }; //------ main1.js ------ import myFunc from 'myFunc'; myFunc();
  • 6.
    © 2015 EyalVardi. All rights reserved. Tel: 054-5-767-300, Email: evardi@gmail.com if (Math.random()) { exports.baz = ...; }
  • 7.
    © 2015 EyalVardi. All rights reserved. Tel: 054-5-767-300, Email: evardi@gmail.com // Export lib export * from 'src/lib'; // Export from lib just foo and bar export { foo, bar } from 'src/lib'; // Export from lib, foo as myFoo export { foo as myFoo, bar } from 'src/other_module';
  • 8.
    © 2015 EyalVardi. All rights reserved. Tel: 054-5-767-300, Email: evardi@gmail.com
  • 9.
    © 2015 EyalVardi. All rights reserved. Tel: 054-5-767-300, Email: evardi@gmail.com // Default exports and named exports import theDefault from 'src/mylib'; import { named1, named2 } from 'src/mylib'; import theDefault, { named1, named2 } from 'src/mylib'; // Renaming: import named1 as myNamed1 import { named1 as myNamed1, named2 } from 'src/mylib'; // Importing the module as an object import * as mylib from 'src/mylib'; // Only load the module import 'src/mylib';
  • 10.
    © 2015 EyalVardi. All rights reserved. Tel: 054-5-767-300, Email: evardi@gmail.com
  • 11.
    © 2015 EyalVardi. All rights reserved. Tel: 054-5-767-300, Email: evardi@gmail.com import { url } from this module; console.log(url); // Option II import * as metaData from this module; console.log(metaData.url);
  • 12.
    © 2015 EyalVardi. All rights reserved. Tel: 054-5-767-300, Email: evardi@gmail.com Promise.all( ['module1', 'module2', 'module3'] .map(x => System.import(x))) .then(function ([module1, module2, module3]) { ... });
  • 13.
    © 2015 EyalVardi. All rights reserved. Tel: 054-5-767-300, Email: evardi@gmail.com
  • 14.
    © 2015 EyalVardi. All rights reserved. Tel: 054-5-767-300, Email: evardi@gmail.com http://www.2ality.com/ Understanding ECMAScript 6 http://ecmascript6.org/ A Few New Things Coming To JavaScript HARMONY OF DREAMS COME TRUE Harmony specification_drafts
  • 15.
    © 2015 EyalVardi. All rights reserved. Tel: 054-5-767-300, Email: evardi@gmail.com eyalvardi.wordpress.com