详谈 import 路径

转自:https://blog.csdn.net/sinat_36422236/article/details/85051297

import路径

import {test} from './test';

花括号

import {test} from './test';
import test from './test';

如果有默认导出export default则可以省略花括号,且import的模块名是随意的,如:

// a.js
export default 'test';

// b.js
import a from './a';
import A from './a';
import myA from './a';

export default导出的模板名,在引用时须加花括号,且引用模块名与导出时的命名必须相同,如:

// a.js
export const a = 'test';

// b.js
import {a} from './a';
import {A} from './a'; // error
import {myA} from './a'; // error

一个模块中只允许一个默认导出export default,但允许多个命名导出export;

路径

import test from 'test';
import test from './test';

babel默认会把ES6的模块转化为commonjs规范

import test from 'X';
// 等价于
var test = require('X');

查找规则:

  1. 如果X是内置模块,则直接返回该模块。如require('http')。
  2. 如果X以./、/、../开头:
    1. 根据X所在的父模块,确定X的绝对路径。
    2. 将X当做文件,依次查找下面的文件,如果找到,则直接返回。
      1. X
      2. X.js
      3. X.json
      4. X.node
    3. 将X当做目录,依次查找下面的文件,如果找到,则直接返回。
      1. X/package.json(查找main字段中的文件,规则同上)
      2. X/index.js
      3. X/index.json
      4. X/index.node
  3. 如果X不带路径:
    1. 根据X所在的父模块,确定X可能的安装目录。
    2. 依次在每个目录中,将X当成文件名或目录名加载。
       
       
posted @   夏秋初  阅读(1814)  评论(0编辑  收藏  举报
编辑推荐:
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
阅读排行:
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· 阿里巴巴 QwQ-32B真的超越了 DeepSeek R-1吗?
· 【译】Visual Studio 中新的强大生产力特性
· 【设计模式】告别冗长if-else语句:使用策略模式优化代码结构
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义
点击右上角即可分享
微信分享提示