nextjs作为koa中间件的使用
react客户端渲染的缺点:首屏速度慢,对SEO不友好
浏览器请求步骤 客户端跳转
1. 浏览器发起请求 /index 1. 点击按钮
2. koa接受请求,并且调用nextjs 2. 异步加载组件的js
3. nextjs开始渲染 3. 调用页面的getInitialProps
4. 调用app的getInitialProps 4. 数据返回,页面跳转
5. 调用页面的 getInitialProps 5. 渲染新页面
6. 渲染出最终的 html
7. 返回给浏览器
^ 表示升级小版本,不会升级大的版本
大版本一般只有大改动,才会更新
小版本一般是修复bug, 次版本是一些细微修改
创建next项目的方式
一. 手动创建
npm init yarn add react react-dom next
"dev": "next" "start": "next start" 启动正式的服务 "build": "next build"
二. 使用 create-next-app
npm i -g create-next-app
npx create-next-app app-project
yarn create app-project
create-next-app app-project
在pages里面没有引入 React, 是因为在全局中已经引入了
React.createElement('div', {} , 'hello')
nextjs 自身带有服务器,但是只处理 ssr渲染
处理HTTP请求,并且根据请求返回响应的内容
无法处理服务器 数据接口 数据库连接 session状态
koa是一个非常流行的轻量nodejs服务端框架,本身不封装什么功能
非常易于扩展,变成范式非常符合js特性
next作为koa的一个中间价
const Koa = require('koa') const next = require('next') const dev = process.env.NODE_ENV !== 'production' // 名字必须是这一个名字 const app = next({ dev}) const handler = app.getRequestHandler() // app.prepare().then(()=>{ // 等待页面编译完成 const server = new Koa() server.use(async (ctx,next)=>{ await handler(ctx.req,ctx.res) // 等待nextjs执行完成 ctx.respond = false }) server.listen(3000,()=>{ console.log('listen on 3000') }) })
返回 render2
koa-router是 koa的一个中间件
server.use(router,routes())
ctx.param.id
ctx.res ctx.req 原生的
ctx.response ctx.request 封装后的Koa对象
ctx.body = { success: true } ctx.set('content-type', 'application/json')
requirepass 密码 配置文件配置项
redis-cli -p 6379
> auth 12345 就可以正确操作了
> setenx c 10 1 设置过期时间 del c 删除
ioredis 连接Redis
nextjs默认不支持 css文件引入 为什么? 建议 css in js
yarn add @zeit/next-css
next.config.js 配置文件
如何分模块加载组件 不包括css文件
_app.js
const withCss = require("@zeit/next-css") if (require !== 'undefined'){ require.extensions['.css'] = file=>{} } module.exports = withCss({})
hoc的使用
export default (Comp) => { function hoc({Component, pageProps, ...test}){ if(pageProps){ // 并不是每个页面都有 pageProps pageProps.teid=123456; } return <Comp Component={Component} pageProps={pageProps} {...test} /> } hoc.getInitialProps = Comp.getInitialProps; // 这一个非常关键 return hoc; }
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 记一次.NET内存居高不下排查解决与启示
· 探究高空视频全景AR技术的实现原理
· 理解Rust引用及其生命周期标识(上)
· 浏览器原生「磁吸」效果!Anchor Positioning 锚点定位神器解析
· 没有源码,如何修改代码逻辑?
· 全程不用写代码,我用AI程序员写了一个飞机大战
· DeepSeek 开源周回顾「GitHub 热点速览」
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· 记一次.NET内存居高不下排查解决与启示
· 白话解读 Dapr 1.15:你的「微服务管家」又秀新绝活了