rogerxu / rogerxu.github.io

Roger Xu's Blog
2 stars 2 forks source link

ES6 Module #233

Open rogerxu opened 5 years ago

rogerxu commented 5 years ago

Module 的语法 - ES6 教程 - 网道

Modules • JavaScript for impatient programmers (ES2020 edition)

rogerxu commented 5 years ago

ECMAScript Modules

Using JavaScript modules on the web  |  Web Fundamentals  |  Google Developers

Module 的语法 - ECMAScript 6入门

let foo = 'a';
let bar = 1;

export { foo, bar };

Rename

let foo = 'a';
let bar = 1;

export { foo as f, bar as b };
// file a.js
export function a() {}
export function b() {}
// file b.js
export default function() {}

import {a, b} from './a.js'
import XXX from './b.js'
rogerxu commented 5 years ago

CommonJS

// a.js
module.exports = {
  a: 1
};
// or
exports.a = 1;

// b.js
var module = require('./a.js');
module.a // -> log 1

module.exports vs exports

var module = {
  exports: {} // exports 就是个空对象
};

// 这个是为什么 exports 和 module.exports 用法相似的原因
var exports = module.exports;

var load = function (module) {
    // 导出的东西
    var a = 1;
    module.exports = a;
    return module.exports;
};

不能对 exports 直接赋值,不会有任何效果。

CommonJS vs ES6 Modules

rogerxu commented 5 years ago

AMD

// AMD
define(['./a', './b'], function(a, b) {
  a.do();
  b.do();
});
define(function(require, exports, module) {   
  var a = require('./a');
  a.doSomething();
  var b = require('./b');
  b.doSomething();
});