我有一个nodejs项目写在typescript。在一些ts文件中,我一起使用require
和import
,例如当使用debugjs时,因为它只有cjs模块。我知道有@types/debug,但由于debugjs的使用相当直接,我不麻烦使用它。但expressjs是另一回事,因为我觉得@types/express可以帮助我更好地使用express。
我知道cjs和ej模块之间的差异,例如使用Node.js要求与ES6导入/导出讨论,但由于我的ts文件将被翻译成在nodejs内部运行的cjs(我不使用mjs
或在package.json中设置"type": "module"
),问题是什么是混合require
和import
在相同的typescript文件?
到目前为止我还没有发现任何问题。
需要在单个文件中同时使用require
和import
的情况非常罕见,通常不建议这样做,并且认为这不是一个好的实践。然而,有时这是我们解决问题最简单的方法。总会有取舍,决定权在你。但是,如果您使用ES6模块,建议使用import
。
此外,commonJSrequire
和ES6import
之间的差异是
- 使用
require
,不能加载你需要加载的片段,但是使用import
,你可以选择性地只加载你需要的片段,这可以节省内存。 在性能方面,
import
比require
更快/更好,因为它是asynchronous
,但require
是synchronous
。