- 所属模块不同
- export/import是属于ES6模块;
- exports/require是属于CommonJS模块
- 用法形式不同
- export/import
export default demo;
export const demo;
export function demo;
export {demo1,demo2};
export * from demo;
// 在上述export语句中,除了有default关键字的外,import时的变量名要与export后边的变量名一致
import demo from "demo";
import {default as demo} from "demo";
import * as demo from "demo";
import {demo} from "demo";
import demo1,{demo2} from "demo";
注意:
在nodeJS中执行前,需要在根目录中执行npm init -y,生成package.js文件,然后配置type:
{
...
"type":"module",
}
然后执行node --experimental-modules demo.js
- exports/require
exports.demo = demo;
// 或
module.exports = demo;
var fs = require("demo");
3.加载时机不同
- CommonJS是模块运行时加载,所以理论上require可以放在文件的任何位置;
- ES6是编译是加载,所以import要放在文件开头;
个人拙见,欢迎批评指正