require/exports先出现。 它是在js社区的开发者自己草拟的规范中产生的,得到大家认可或广泛应用
import/export是ES6的。
CommonJS 作为 Node.js 的规范,一直沿用至今。由于 npm 上 CommonJS 的类库众多,以及 CommonJS 和 ES6 之间的差异,Node.js 无法直接兼容 ES6。所以现阶段 require/exports 任然是必要且实必须的
1.require的调用时间为运行时调用,所以require可以出现在文件的任何地方。动态加载
2.import是编译时调用,所以必须放在文件头部。静态加载
require是赋值过程,其实require的结果就是对象、数字、字符串、函数等,再把require的结果赋值给某个变量
import是解构过程,但是目前所有的引擎都还没有实现import,我们在node中使用babel支持ES6,也仅仅是将ES6转码为ES5再执行,import语法会被转码为require
require/exports 是必要且必须的。因为事实是,目前你编写的 import/export 最终都是编译为 require/exports 来执行的
export default导出的东西只能用import导入。
而module.exports和exports的东西可以以任何一种方式导入。`
a.js
var sex="boy";
var echo=function(value){
console.log(value)
}
export {sex,echo}
b.js
import {sex,echo} from "./ex.js"
console.log(sex)
echo(sex)
html文件(type="module")
<script type="module" src="b.js"></script>