配置
typescript
Statically Typed Links
- 使用 next/link 时避免打字错误;
/** @type {import('next').NextConfig} */
const nextConfig = {
experimental: {
typedRoutes: true,
},
};
module.exports = nextConfig;
End-to-End Type Safety
- 服务端和客户端实现类型共享,实现类型安全;
async function getData() {
const res = await fetch("https://api.example.com/...");
// The return value is *not* serialized
// You can return Date, Map, Set, etc.
return res.json();
}
export default async function Page() {
const name = await getData();
return "...";
}
eslint
{
"extends": "next/core-web-vitals"
}
环境变量
本地环境变量
- .env.local 文件;
- 从 process.env 获取;
- 仅服务端使用;
DB_HOST = localhost;
DB_USER = myuser;
DB_PASS = mypassword;
export async function GET() {
const db = await myDB.connect({
host: process.env.DB_HOST,
username: process.env.DB_USER,
password: process.env.DB_PASS,
});
// ...
}
浏览器环境变量
- 使用 NEXT_PUBLIC_前缀;
NEXT_PUBLIC_ANALYTICS_ID = abcdefghijk;
环境变量文件
- .env.local:最高优先级;
- .env:所有环境;
- .env.development:dev 环境;
- .env.production:prod 环境;
- .env.test:test 环境;
环境变量加载顺序
- process.env;
- .env。$(NODE_ENV).local;
- .env.local (Not checked when NODE_ENV is test。);
- .env。$(NODE_ENV);
- .env;
别名
// tsconfig.json or jsconfig.json
{
"compilerOptions": {
"baseUrl": "src/",
"paths": {
"@/styles/*": ["styles/*"],
"@/components/*": ["components/*"]
}
}
}