logo
  • 指南
  • 配置
  • 插件
  • API
  • 示例
  • 社区
  • Modern.js 2.x 文档
  • 简体中文
    • 简体中文
    • English
    • 开始
      介绍
      快速上手
      版本升级
      名词解释
      技术栈
      核心概念
      页面入口
      构建工具
      Web 服务器
      基础功能
      路由
      路由基础
      配置式路由
      数据管理
      数据获取
      数据写入
      数据缓存
      渲染
      服务端渲染(SSR)
      服务端流式渲染(Streaming SSR)
      渲染缓存
      静态站点生成(SSG)
      渲染预处理 (Render Preprocessing)
      样式开发
      引入 CSS
      使用 CSS Modules
      使用 CSS-in-JS
      使用 Tailwind CSS
      HTML 模板
      引用静态资源
      引用 JSON 文件
      引用 SVG 资源
      引用 Wasm 资源
      调试
      数据模拟(Mock)
      网络代理
      使用 Rsdoctor
      使用 Storybook
      测试
      Playwright
      Vitest
      Jest
      Cypress
      路径别名
      环境变量
      构建产物目录
      部署应用
      进阶功能
      使用 Rspack
      使用 BFF
      基础用法
      运行时框架
      扩展 BFF Server
      扩展一体化调用 SDK
      文件上传
      跨项目调用
      优化页面性能
      代码分割
      静态资源内联
      产物体积优化
      React Compiler
      提升构建性能
      浏览器兼容性
      配置底层工具
      源码构建模式
      服务端监控
      Monitors
      日志事件
      指标事件
      国际化
      基础概念
      快速开始
      配置说明
      语言检测
      资源加载
      路由集成
      API 参考
      高级用法
      最佳实践
      自定义 Web Server
      专题详解
      模块联邦
      简介
      开始使用
      应用级别模块
      服务端渲染
      部署
      集成国际化能力
      常见问题
      依赖安装问题
      命令行问题
      构建相关问题
      热更新问题
      已下线功能
      📝 编辑此页面
      上一页Cypress下一页环境变量

      #路径别名

      路径别名(alias)允许开发者为模块定义别名,以便于在代码中更方便的引用它们。当你想要使用一个简短、易于记忆的名称来代替冗长复杂的路径时,这将非常有用。

      例如,假如你在项目中经常引用 src/common/request.ts 模块,你可以为它定义一个别名 @request,然后在代码中通过 import request from '@request' 来引用它,而不需要每次都写出完整的相对路径。同时,这也允许你将模块移动到不同的位置,而不需要更新代码中的所有 import 语法。

      在 Modern.js 中,你有两种方式可以设置路径别名:

      • 通过 tsconfig.json 中的 paths 配置。
      • 通过 source.alias 配置。

      #通过 tsconfig.json 的 paths 配置

      你可以通过 tsconfig.json 中的 paths 来配置别名,这是我们在 TypeScript 项目中推荐使用的方式,因为它可以解决路径别名的 TS 类型问题。比如:

      tsconfig.json
      {
        "compilerOptions": {
          "paths": {
            "@common/*": ["./src/common/*"]
          }
        }
      }

      以上配置完成后,如果你在代码中引用 @common/Foo.tsx,则会映射到 <project>/src/common/Foo.tsx 路径上。

      Tip

      你可以阅读 TypeScript - paths 文档来了解更多用法。

      #通过 source.alias 配置

      Modern.js 提供了 source.alias 配置项,对应 webpack / Rspack 原生的 resolve.alias 配置,你可以通过对象或者函数的方式来配置这个选项。

      #使用场景

      由于 tsconfig.json 的 paths 配置是写在静态 JSON 文件里的,因此它不具备动态性。

      而 source.alias 则可以弥补这一不足,你可以通过 JavaScript 代码来动态设置 source.alias(比如基于环境变量来设置)。

      #对象用法

      你可以通过对象的方式来配置 source.alias,其中的相对路径会被自动补全为绝对路径。比如:

      export default {
        source: {
          alias: {
            '@common': './src/common',
          },
        },
      };

      以上配置完成后,如果你在代码中引用 @common/Foo.tsx,则会映射到 <project>/src/common/Foo.tsx 路径上。

      #函数用法

      你也可以将 source.alias 配置为一个函数,拿到内置的 alias 对象,对其进行修改。比如:

      export default {
        source: {
          alias: alias => {
            alias['@common'] = './src/common';
            return alias;
          },
        },
      };

      #优先级

      tsconfig.json 的 paths 配置的优先级高于 source.alias,当一个路径同时匹配到这两者定义的规则时,会优先使用 tsconfig.json 的 paths 定义的值。

      你可以通过 source.aliasStrategy 来调整这两个选项的优先级。

      #默认别名

      Modern.js 框架内置了以下别名:

      {
        "@": "./src",
        "@shared": "./shared"
      }

      此外,在启用框架的 BFF 插件时,默认会添加 @api 别名。

      {
        "@api": "./api"
      }