1:ES6

import方式
import MyModule from './my-module.js';
import { NamedExport } from './other-module.js';

export方式
// 具名导出
export var Count = 5;
export function Multiply(a, b) {
  return a * b;
}

// 默认导出
export default {
  // Some data...
}

//
export 和 export default的区别
1.1:export与export default均可用于导出常量、函数、文件、模块等
1.2:在一个文件或模块中,export、import可以有多个,export default仅有一个
1.3:通过export方式导出,在导入时要加{ }(import * 的时候不需要加 {} ),export default则不需要
1.4:export能直接导出变量表达式,export default不行。
//


动态加载模块import()
import('path/to/module') -> Promise
2:CommonJS

require方式(同步)
var $ = require("jquery");
var myModule = require("my-module");

require.resolve通过模块的id(同步)

exports导出方式
exports === module.exports === {}
用白话讲就是,exports只辅助module.exports操作内存中的数据,辛辛苦苦各种操作数据完,
累得要死,结果到最后真正被require出去的内容还是module.exports的,真是好苦逼啊
3:AMD

define引入
define(['jquery', 'my-module'], function($, myModule) {
  // 使用 $ 和 myModule 做一些操作……

  // 导出一个函数
  return function doSomething() {
    // ...
  };
});
4:@import
@import statement inside of a css/sass/less file.
5:样式(url(...))或 HTML 文件(<img src=...>)中的图片链接(image url)
image url in a stylesheet (url(...)) or html (<img src=...>) file
6:总结
require: node 和 es6 都支持的引入
export / import / export default : 只有es6 支持的导出引入
module.exports / exports: 只有 node 支持的导出
01-05 05:31