可以用import的方式引入CommonJS方式导出的API吗?
其实,对于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;