服务端渲染 nextjs 实战总结
基于玩安卓进行代码的 next 重构, 从零开始实现一个 next,从开发到部署一整套流程, 偏实战, 列出坑点, 基础 api 请参照官方文档。
Github: 传送门
演示地址: 传送门
next 官网: Nextjs.cn

next: 升级到最新版本 10
react: 前端三大框架 最新版本 17
mobx and redux : 集成主流两个状态管理, 可以根据自己的技术栈进行取舍, 成年人都要. redux 集成 thunk 和 log
sass: 样式
ant-design: 宇宙第一好用,让你开发速度更快
lodash: 工具类
nginx: 需要用到端口转发
docker: 镜像打包
基于 next 官网搭建, 详细 api 请参照官网,
|--
|-- components // 组件
|-- config // 设置文件
|-- fetchMdw // 中间层接口转发
|-- fetchServe // 服务端接口封装
|-- pages // 页面
|-- api // 中间层
|-- XXX // 页面路径
|-- _app.tsx // 项目入口文件
|-- _error.tsx // 错误页面
|-- index.tsx // 主页
|-- static // 静态文件
|-- store-mobx // 状态管理 mobx
|-- store-redux // 状态管理 redux
|-- styles // 样式文件
|-- util // 工具类
打包成 docker 容器,拷贝项目到创建的文件夹,npm i, 设置环境变量, 打包项目 暴漏端口,坐等启动,这里需要 dockerhub 账号关联 github,监听分支提交,自动打包。github 今年新出的 action 也很好用。小伙伴们可以试一试
// .Dockerfile
# 环境
FROM node:15
# 端口
ENV PORT 3000
# Create app directory 拷贝的意思
RUN mkdir -p /usr/src/app
WORKDIR /usr/src/app
# Installing dependencies
COPY package*.json /usr/src/app/
RUN npm install
# Copying source files
COPY . /usr/src/app
# Building app 打包然后暴露端口
RUN npm run build
EXPOSE 3000
# Running the app // 启动服务
CMD "npm" "start"
这里没镜像 next.config.js 进行个性化配置, 默认配置基本够用
// .next.config.js
window的都需要处理下// util/inde.ts
// 重定向
export const redirect = (Router, { req, res }, path) => {
// 如果包含 req 信息则表示代码运行在服务端
if (req) {
res.writeHead(302, { Location: path });
res.end();
} else {
// 客户端跳转方式
Router.push(path);
}
};
部署请看我上一篇文章, 大同小异, 技术栈就是 Gihub+dockerHub
mobx-react 文档 https://mobx-react.js.org/
redux-persist SSR didn`t see my meta tags https://github.com/vercel/next.js/issues/8240
重定向 路由保护处理 https://stackoverflow.com/questions/58173809/next-js-redirect-from-to-another-page https://github.com/vercel/next.js/discussions/10724
Content type
Image
Digest
Size
134.4 MB
Last updated
about 5 years ago
docker pull caniuse/web:v0.0.3