1. 加载方式不同
require在运行时加载;
import在编译时加载;【由于是编译时加载,所以import命令会提升到整个模块的头部】
2. 规范不同
require是CommonJS规范;
import是ES6规范;
3. 模块本质不同
require:模块就是对象,输入时必须查找对象的属性;
// CommonJS模块
let { exists, readFile } = require('fs');
// 等同于
let fs = require('fs');
let exists = fs.exists;
let readfile = fs.readfile;
上面的CommonJS模块加载了fs对象(模块),然后取该对象上的方法。
// ES6模块
import { exists, readFile } from 'fs';
上面的ES6模块加载了fs模块上的两个方法。