绝对导入和模块路径别名 3个月前

绝对导入和别名

Next.js 内置支持 tsconfig.jsonjsconfig.json 文件中的 "paths""baseUrl" 选项。

这些选项允许你将项目目录别名化为绝对路径,从而简化模块的导入。例如:

// 之前
import { Button } from '../../../components/button'

// 之后
import { Button } from '@/components/button'

注意create-next-app 将提示你配置这些选项。

绝对导入

baseUrl 配置选项允许你直接从项目根目录导入模块。

此配置的示例:

// `tsconfig.json` 或 `jsconfig.json`
{
  "compilerOptions": {
    "baseUrl": "."
  }
}
// `components/button.tsx`
export default function Button() {
  return <button>Click me</button>
}
// `app/page.tsx`
import Button from 'components/button'

export default function HomePage() {
  return (
    <>
      <h1>Hello World</h1>
      <Button />
    </>
  )
}

模块别名

除了配置 baseUrl 路径外,你还可以使用 "paths" 选项为模块路径设置别名。

例如,以下配置将 @/components/* 映射到 components/*

// `tsconfig.json` 或 `jsconfig.json`
{
  "compilerOptions": {
    "baseUrl": ".",
    "paths": {
      "@/components/*": ["components/*"]
    }
  }
}
// `components/button.tsx`
export default function Button() {
  return <button>Click me</button>
}
// `app/page.tsx`
import Button from '@/components/button'

export default function HomePage() {
  return (
    <>
      <h1>Hello World</h1>
      <Button />
    </>
  )
}

每个 "paths" 都是相对于 baseUrl 位置的。例如:

// `tsconfig.json` 或 `jsconfig.json`
{
  "compilerOptions": {
    "baseUrl": "src/",
    "paths": {
      "@/styles/*": ["styles/*"],
      "@/components/*": ["components/*"]
    }
  }
}
// `app/page.tsx`
import Button from '@/components/button'
import '@/styles/styles.css'
import Helper from 'utils/helper'

export default function HomePage() {
  return (
    <Helper>
      <h1>Hello World</h1>
      <Button />
    </Helper>
  )
}
image
EchoEcho官方
无论前方如何,请不要后悔与我相遇。
1377
发布数
439
关注者
2222618
累计阅读

热门教程文档

Dart
35小节
Gin
17小节
Typescript
31小节
MySQL
34小节
Spring Boot
24小节