export/import和exports/require的区别

135 阅读1分钟
  1. 所属模块不同
  • export/import是属于ES6模块;
  • exports/require是属于CommonJS模块
  1. 用法形式不同
  • 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要放在文件开头;

个人拙见,欢迎批评指正