搭建 Client 项目
项目初始化
先对项目进行初始化,Nextjs 提供了脚手架来帮助初始化项目,执行下面的命令:
npx create-next-app@latest --typescript
next.config.js 是构建配置,底层是基于 Webpack 去打包的,在默认的配置上加上下面的配置来提供别名的能力:
/** @type {import('next').NextConfig} */
const path = require("path");
const nextConfig = {
reactStrictMode: true,
swcMinify: true,
webpack: (config) => {
config.resolve.alias = {
...config.resolve.alias,
'@': path.resolve(__dirname),
};
return config;
},
};
module.exports = nextConfig
tsconfig.json 中需要加一下对应的别名解析识别(baseurl , paths)。
{
"compilerOptions": {
"target": "es5",
"lib": ["dom", "dom.iterable", "esnext"],
"allowJs": true,
"skipLibCheck": true,
"strict": true,
"forceConsistentCasingInFileNames": true,
"noEmit": true,
"esModuleInterop": true,
"module": "esnext",
"moduleResolution": "node",
"resolveJsonModule": true,
"isolatedModules": true,
"jsx": "preserve",
"incremental": true,
"baseUrl": "./",
"paths": {
"@/*": ["./*"]
}
},
"include": ["next-env.d.ts", "**/*.ts", "**/*.tsx"],
"exclude": ["node_modules"]
}
执行
npm run dev
注:如果出现以下错误,请将你的 node 版本升级到 18+。
打开 http://localhost:3000 就可以看到一个默认服务器端渲染页面:
代码 Lint
Nextjs 内置了开箱的 eslint 能力,不需要自己进行相关配置,可以执行下面的脚本来自动生成对应的 lint。
npm run lint
模块化代码提示
使用 sass 等超类来替代 css,相比 css,sass 等超类提供了变量定义和函数的能力,可以避免一些重复的 css 代码,使样式的可维护性和复用性更高。
Nextjs 已经提供了对 css 和 sass 的支持,只需要安装一下 sass 的依赖即可:
npm install sass --save-dev
针对一个大型项目,需要定义多级嵌套的组件来提高页面复用性,组件之间的样式命名很容易重复,针对非组件库的业务代码,通常会使用 css 模块化来进行相关的样式定义。
模块化会在编译的时候将样式的类名加上对应唯一的哈希值来进行区分,从而解决样式类名重复的问题。
Nextjs 已经内置了这部分能力,只需要将类名定义为 [name].module.scss。
import { FC } from 'react';
import styles from "./index.module.scss";
interface IProps {}
export const Demo: FC<IProps> = ({}) => {
return (
<div className={styles.demo}>
<h1 className={styles.title}>demo</h1>
</div>
)
}
服务端调试能力
服务器渲染一个静态页面,请求会在服务端执行,将数据注入到页面中,意味着这部分逻辑并不在客户端执行,所以在服务端执行时,是不能直接用 Chrome 的 network 来调试,它只能调试直接在客户端执行的脚本。
Nextjs 也有内置相关的调试能力来帮助进行调试,只需要为 dev 命令加一个 --inspect 的 node option 就行。
首先来安装 cross-env 的依赖来支持跨平台的环境变量添加:
npm install cross-env --save-dev
然后在 package.json 中,加一条 debugger 的命令:
{
"scripts": {
"dev": "next dev",
"debugger": "cross-env NODE_OPTIONS='--inspect' next dev"
}
}
执行
npm run debugger
重新打开 http://localhost:3000,可以看到一个绿色的 nodejs 的小图标,点开会打开一个新的 network,这个就是服务器端 server 的 network,服务器端执行的相关代码断点可以在上面进行调试。
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论