CommonJS导出的API,使用require()函数进行调用

可以用import的方式引入CommonJS方式导出的API吗?

CommonJS

其实,对于CommonJS导出的API,通常都只使用require()函数进行调用。

写个代码示例:

// myFunc.js
module.exports = () => {
  console.log('My function');
};

//app.js
const myFunc = require('./myFunc');
myFunc(); // 输出 'My function'

不过呢,在Node.js环境中,ES Modules向下兼容CommonJS,因此用import的方式可以引入CommonJS方式导出的API,但是会以default方式引入。

所以以下写法:

// 这是一个 CommonJS 规范的模块
const a = 1;
const b = 2;
const c = () => a + b;
module.exports = {a, b, c}

它可以用ES Modules的import引入:

import abc from './test.js';
console.log(abc.a, abc.b, abc.c()); // 1 2 3

但是你不能这么写:

import {a, b, c} from './test.js';

因为 module.exports = {a,b,c}相当于:

const abc = {a,b,c};
export default abc;