当前JavaScript 在Web 世界中占比非常大,很多网站全由JS 构建

为了JS 更现代、简洁、可维护,ES6 引入了模块化功能

<script type="module" src="filename.js"></script>

export 导出想要分享的代码块

export const add = (x, y) => {//耦合导出
  return x + y;
}

const add = (x, y) => {
  return x + y;
}
export { add };//解耦合导出

export { add, subtract };//解耦合导出多个

import 导入想要使用的代码块

import { add } from './math_functions.js';// ./ 同文件夹下

import { add, subtract } from './math_functions.js';

//导入所有,并放入一个对象中
import * as myMathModule from "./math_functions.js";
myMathModule.add(2,3);
myMathModule.subtract(5,3);

// <script type="module", 这样导入的js 或mjs 中才能使用import (仅测试过chrome)
// 也就是说<script>...</script> 这样的内联JS 是用不了import 的
// 我的做法是全都是 type="module" 导入
		// module 扩展名mjs, 如bubble-sort.mjs
		// 使用module 的文件扩展名为js, 如main.js

export default

export default function crc32() { // 一个文件只能有一个默认导出
  // ...
}

export default function () {//匿名函数
  console.log('foo');
}

function foo() {
  console.log('foo');
}
export default foo;

import varName from 'crc32'; // 所以导入时不需要花括号,varName 随便取

JavaScript Modules in 100 Seconds

nodejs modules 使用总结

https://www.youtube.com/watch?v=qgRUr-YUk1Q