模块加载策略

相对模块路径

模块路径以 ./ 或者 ../ 开头
例:

  • 如果文件 bar.ts 中含有 import foo from ‘./foo’,那么 foo 文件必须与 bar.ts 文件存在于相同的文件夹下
  • 如果文件 bar.ts 中含有 import foo from ‘../foo’,那么 foo 文件所存在的地方必须是 bar.ts 的上一级目录;

    模块路径

    当导入路径不为相对模块路径时,模块解析则会模仿node模块解析策略进行模块查找
    例:

  • 当你使用 import foo from ‘foo’,将会按如下顺序查找模块

    • 当前目录下的node_modules(./node_modules)
    • 上级目录下的node_modules(../node_modules)
    • 上上级目录下的node_modules (../../node_modules)
    • 直到系统根目录

      文件加载策略:

      例:如何加载foo(foo可能是文件夹,也有可能是文件)
      1. import foo from './foo'
  • 查找当前目录下是否存在foo.ts文件,有则直接使用

  • 查找当前目录下是否存在foo文件夹,有则继续以下
    • 查找foo文件夹中是否存在index.ts文件,有则直接使用
    • 查看foo文件夹中的package.json文件中指定的types是否存在,有则直接使用
    • 查看foo文件夹中的package.json文件中指定的main文件是否存在,有则直接使用