举个栗子,我想实现做一个npm模块,要像他这样
大家应该都知道axios这个模块 ,
在nodejs中它是这么引入的
const axios = require('axios')
在react中它是这么引入的
import axios from 'axios'
显然nodejs不支持es6的模块语法,那么我编写模块的时候如何暴露模块才能兼容node和react的模块语法呢?
我有一些idea
function Mypackage(){...}
try{
export default Mypackage
}catch(err){
modules.export = Mypackage
}
像这样应该也能行,但try catch毕竟是个耗性能的东西
我想知道大家通用的兼容办法是什么?
就举
axios
这个例子,找到node_modules/axios/index.js
应该能看到一行:此为node方式的导出,但其实在项目中用import方式一样可以导入,这说明了
es6 import
本身已经可以导入module.exports
方式导出的模块。所以其实这个兼容问题与编写的模块无关,即使编写时是
export default
方式导出的模块,可能在项目编译后都是转为module.exports
方式,这取决于项目的模块化配置(webpack/babel)。所以要解决你的问题你可能需要:
module.exports
方式导出