编程语言
800
绝对导入和别名
Next.js 内置支持 tsconfig.json
和 jsconfig.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> ) }