请问是否是在typescript项目编写的时候使用了nodejs的fs模块,那么打包dist为esm模块之后,就实际不能在前端使用(比如:react/vue使用这个打包后的库)?

作者站长头像
站长
· 阅读数 10

在使用TypeScript 开发一个项目的时候:1、我们是可以既使用import 引入三方库,也可以使用require引入三方库是吗?

1)这个是否是叫做esm和cjs的模块化引入?2)import和require是否可以一起在项目中使用?3)是需要在哪里配置什么才能使用吗?

2、然后在build的时候,打包到dist内,可以打包esm,也可以打包cjs是吗?1)请问是否是在typescript项目编写的时候使用了nodejs的fs模块,那么打包dist为esm模块之后,就实际不能在前端使用(比如:react/vue使用这个打包后的库)?

回复
1个回答
avatar
test
2024-09-07

Javascript 中第三方库有两种类型,分别是 ES Module 和 CommonJS Module。

  1. ESM 需要通过 import 导入,而 CJS 需要通过 require 导入。使用那种方式导入取决于库打包后产物的类型,一般第三方库两种类型的产物都提供。
  2. import 和 require 可以一起使用,但是需要打包工具的额外处理,而且不推荐这样做。一般统一使用 import。
  3. 这取决于你使用的打包工具(Webpack、Vite 等)。一般情况下,这些打包工具是开箱即用的,你无需考虑这些问题。

  1. 是的,你可以选择打包为 ESM 或是 CJS,一般情况下,如果你在开发第三方库的话,会选择同时提供两种类型的产物。
  2. 是的,在前端(浏览器)中你无法使用 NodeJS 的模块,例如 fs
回复
likes
适合作为回答的
  • 经过验证的有效解决办法
  • 自己的经验指引,对解决问题有帮助
  • 遵循 Markdown 语法排版,代码语义正确
不该作为回答的
  • 询问内容细节或回复楼层
  • 与题目无关的内容
  • “赞”“顶”“同问”“看手册”“解决了没”等毫无意义的内容