当前位置: 首页 > 后端技术 > Node.js

node中模块导入导出探索

时间:2023-04-03 17:53:44 Node.js

写js的时候经常会遇到requrie和import,也会看到exportdefault和exports。它们可以混合吗?我们来探索一下当前环境:node版本v9.6.1操作系统Macmodule我们打印出模块,结果如下module.id模块的标识,通常是带有绝对路径的模块文件名。module.filename模块的文件名,带有绝对路径。module.loaded返回一个布尔值,指示模块是否已完成加载。module.parent返回一个代表调用该模块的模块的对象。module.children返回一个数组,表示该模块将使用的其他模块。module.exports表示模块导出的值。exports和module.exports,我们可以看出exports和module.exports在模块中是同一个对象,相当于执行语句letexports=module.exports;exportvarfirstName='Michael';varlastName='Jackson';varyear=1958;export{firstName,lastName,year};执行结果我们看到nodev9.6.1版本不支持export了,我们用bable翻译看看其实是用export的,编译后还是用exportsexportdefaultvarfirstName='Michael';varlastName='杰克逊';导出默认名字;导出{姓氏};关于node中模块导出的结论所以node中的导出模块只会使用module.exports,其他语法只是一些包装只需要当module.js是exports的形式时module.jsvarfirstName='Michael';varlastName='Jackson';exports.default=firstName;exports.lastName=lastName;index.jsconsttest4=require('./modle');console.log(test4);Result{default:'Michael',lastName:'Jackson'}当module.js的形式为exportmodule.jsvarfirstName='Michael';varlastName='Jackson';exportdefaultfirstName;exportlastName=lastName;index.jsconsttest4=require('./modle');console.log(test4);Result:{default:'Michael',lastName:'Jackson'}结论要求收到当您使用exportdefaultfirstName时,module.exports对象将转换为exports.default=firstName;所以无论你用什么形式导出模块,当module.js是exportvarfirstName='Michael';varlastName='Jackson';exportdefaultfirstName;export{lastName时,requireimport都是一样的};index.jsimporttest6from'./module';console.log(test6);结果是Michael与require不同,import默认导出为exportdefaultindex.jsimport*astest6from'./module';控制台日志(test6);result:{default:'Michael',lastName:'Jackson'}这时候导出的结果和require一致,当importtest6from'./module'是的时候,会去default查找default,如果有没有导出默认值,然后test6未定义,然后要导出lastName你必须使用import{lastName}from'./module';当module.js以varlastName='Jackson';varfirstName='Michael';exports={lastName,firstName};index.jsimporttest7from'./module';console.log(test7);的形式导出时result{firstName:'Michael',lastName:'Jackson'}结论导出模块可以使用export和exports,导入模块可以使用import和require,但两者可以交替使用。import/export最终编译成require/exports来执行,但是export会有一个默认的不同,不过一般来说export对应import,ex端口对应要求