ts学习——moduleResolution

298 阅读2分钟

前言

最近在学习ts搭建项目,碰到了一些问题,其中有一个涉及到模块解析的,tsconfig.json中的属性noduleResolution就是设置相关策略的,本节来了解一下该属性。

moduleResolution

模块解析策略顾名思义就是找到然后加载模块的方法,在ts中用moduleResolution来设置模块解析策略,它可以规定如何去定位加载模块文件,它有两个有效值:

  • classic:经典模式,经典模式首先会将模块名解析为对当前文件的相对路径,根据相对路径去定位然后加载文件。当我们设置为经典模式时,引入模块文件,文件的路径就需要使用相对路径。假设文件目录如下:

I3QBX_OWS5V(L@~0I179%DB.png

我们在main.ts引入utils中某个方法就要用相对路径。

   import { parseTime } from './utils/index';
  • node:node模式,node会用模块解析器去查找加载路径,这时候我们只需要写出模块名就可以,模块解析器会根据文件查找规则去解析模块名,然后引入我们想要的文件:
   // 直接写模块路径
   import { parseTime } from 'utils/index';

注意node模式下需要指定baseUrl的值。

QQ图片20230609233853.png

除了classic与node两个值还有特殊值,跟有效值相对应:

  • node-never:如果不使用node模式加载文件就会抛出一个编译错误。
  • classic-never:同理如果不使用classic也会抛出错误。 ts1.8版本之前moduleResolution的默认值是classic,在此之后的版本都是node,根据项目需要我们可以去更改属性值。

总结

moduleResolution用来设定模块解析策略,两个有效值classic与node,classic适用于小项目,不需要特别的配置;node适用于复杂项目,但是需要设置baseUrl的值。