0
点赞
收藏
分享

微信扫一扫

Typescript中模块解析


模块解析

模块解析指的是当我们在程序中导入模块时,编译器查找并读取导入模块的定义。模块解析的影响条件有模块解析策略以及模块解析编译选项或者相对模块导入和非相对模块导入。在解析相对模块导入的模块名时,会参考当前模块文件所在的目录位置。
相对模块导入可以使用​​./​​和​​/​​或者​​../​​,其中第一个指的是当前目录,第二个指的是系统的根目录,最后一个指的是上一级目录。

import x from './t';
import y from '../pot/r';
import z from '/w';

非相对模块导入使用中,就不是和相对模块一样,引入方式也不一样。

import { Teacher } from '@tea/op';
import { Comple } from 'tet';

模块解析策略有​​Classic​​策略和​​Node​​策略。模块解析策略中我们在​​tsconfig.json​​中配置​​moduleResolution​​属性去设置。如果我们在模块解析策略时没有设置模块,那么默认的模块解析策略和​​module​​编译选项的值有关。如果​​module​​编译选项为​​CommonJS​​那么默认的模块解析策略为​​Node​​。如果编译选项的值不为​​CommonJS​​,那么模块解析策略的是​​Classic​​。其中模块解析策略中​​Classic​​解析时由将导入的模块名视为文件,并在指定目录中查找ts文件的阶段。

tsc --module CommonJS;
tsc --module ES6;

我们需要注意的是​​Classic​​模块解析策略中,相对模块导入解析和非相对模块导入模块解析不同的是解析相对模块导入时只会查找指定的一个目录;解析非相对模块导入时会向上遍历整个目录树。而且解析非相对模块导入会多出一步来。就是为了查找是否安装要导入的声明文件。

​Node​​模块解析策略也有很多阶段。当导入的模块为文件时,可以查找指定目录中的ts和js文件。当导入模块为目录时,会解析​​package.json​​文件中的​​main​​属性或者​​typings​​属性和​​types​​属性。

import * as Y from './x';
举报

相关推荐

0 条评论