# koa2-weibo-code **Repository Path**: pam_/koa2-weibo-code ## Basic Information - **Project Name**: koa2-weibo-code - **Description**: koa2仿写微博 - **Primary Language**: Unknown - **License**: Not specified - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2021-01-21 - **Last Updated**: 2022-01-04 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # koa2 weibo author oyzx ## 页面和路由 1、注册 /register 2、登陆 /login 3、首页 / 4、个人主页 /profile/:userName 5、at页 /atMe 6、广场 /square 7、设置 /setting 8、错误页 /error 9、404 /* ## API 接口 ### 用户 #### 登陆 1、登陆 /api/user/login #### 注册 1、注册 /api/user/register 2、用户名是否存在 /api/user/isExist #### 设置 1、修改个人信息 /api/user/changeInfo 2、图片上传 /api/utils/upload 3、修改密码 /api/user/changePassword 4、退出登陆 /api/user/logout ### 微博 #### 首页 1、创建微博 /api/blog/create 2、图片上传 /api/utils/upload 3、加载更多 /api/blog/loadMore/:pageIndex #### 个人主页 1、加载更多 /api/profile/loadMore/:userName/:pageIndex 2、关注 /api/profile/follow 3、取消关注 /api/profile/unFollow #### 广场也 1、加载更多 /api/square/loadMore/:pageIndex #### at 页 1、创建微博 /api/blog/create 2、图片上传 /api/utils/upload 3、加载更多 /api/atMe/loadMore/:pageIndex ## ejs 组件 1、发布博客输入框 2、博客列表 3、加载更多 4、个人信息 5、粉丝列表 6、关注人列表 7、同意的 header 和 footer ## 创建微博(feature-create-blog) ### 流程 #### 创建数据模型 #### 模板和路由 #### 开发接口 #### 单元测试 ### 数据模型 #### 回顾数据模型设计 #### 创建数据模型 #### 同步到数据库 ### 页面和模板 #### 创建模板技术方案 #### 查看模板代码 #### 访问页面的路由:/ #### 后端相关的 API 接口 ##### 发布微博的输入框: ###### 创建微博:/api/blog/create ###### 图片上传:/api/utils/upload ##### 加载更多:/api/blog/loadMore/:pageIndex ## 个人主页(feature-profile) ### 流程 #### 模板和路由(后端渲染数据 SSR) #### 加载更多 #### 单元测试 ### 页面和模板 #### 创建模板技术方案 #### 查看模板代码 #### 开发路由 & 加载更多 #### 访问页面的路由:/profile/zhangsan #### 后端相关的 API 接口 ##### 加载更多:/api/profile/loadMore/:userName/:pageIndex ##### 个人信息(他人信息) ###### 关注:/api/profile/follow ###### 取消关注:/api/profile/unFollow ## 微博广场(feature-square) ### 流程 #### 页面和模板(后端渲染,用到了缓存) #### 加载更多 #### 单元测试 ### 页面和模板 #### 回顾技术方案设计 #### 查看模板代码 #### 开发路由 & 渲染数据 #### 访问页面的路由:/square #### 后端相关的 API 接口 ##### 加载更多:/api/square/loadMore/:pageIndex ## 关注 & 取消关注(feature-fans) ### 流程 #### 创建数据模型:用户关系 #### 查看模板代码 #### 路由和接口开发(粉丝列表、关注/取消关注、关注人列表) ### 页面和模板 #### 回顾技术方案设计 #### 查看模板代码 #### 开发路由:粉丝列表 #### 关注 & 取消关注 #### 关注人列表 #### 访问页面的路由:/profile/zhangsan #### 后端相关的 API 接口 ##### 粉丝列表:/api/square/loadMore/:pageIndex ## 首页(feature-home) ### 流程 #### 修改数据模型:Blog 关联 UserRelation #### 查看模板代码 #### 开发路由(渲染页面)& 加载更多 #### 单元测试 ### 数据模型 #### 回顾技术方案设计 #### 修改数据模型 #### “自己关注自己” #### 访问页面的路由:/ #### 后端相关的 API 接口 ##### 创建微博:/api/blog/create ##### 图片上传:/api/utils/update ##### 加载更多:/api/blog/loadMore/:pageIndex #### 总结 ##### 1、修改数据模型:Blog 关联 UserRelation(没有外键) ##### 2、查看模板代码 ##### 3、开发路由(渲染页面) & 加载更多 ## @ & 回复(feature-at) ### 流程 #### @ 功能(输入 @ & 显示 @) ##### 使用 at.js,查看代码 ##### 开发接口 ##### 显示 @ 用户的链接 #### 回复功能 #### 单元测试 ## @ 提到了我(feature-at) ### 流程 #### 修改数据模型:创建 AtRelation #### 收集分析 @ 的用户,建立 AtRelation 关系 #### 获取 at 的数量,并显示到页面 #### 开发页面和路由 #### 单元测试 ### 数据模型 #### 回顾数据模型设计 #### 修改数据模型 #### 同步到数据库 ### 页面开发 #### 查看模板代码 #### 开发路由(渲染数据),加载更多 #### 标记为已读 #### 后端相关的 API 接口 ##### 加载更多:/api/atMe/loadMore/:pageIndex ## 数据库 ### users(用户表) | 名称 | 属性 | 长度 | 备注 | | id | INT | 11 | 用户id | | userName | VARCHAR | 255 | 用户名(账号) | | password | VARCHAR | 255 | 用户密码 | | nickName | VARCHAR | 255 | 用户昵称 | | gender | DECIMAL | (10, 0) | 用户性别 | | city | VARCHAR | 255 | 城市 | | createdAt | DETETIME | detetime | 创建时间 | | updatedAt | DETETIME | detetime | 修改时间 | ### blogs(微博表) | 名称 | 属性 | 长度 | 备注 | | id | INT | 11 | 微博id | | userId | INT | 11 | 用户id | | content | TEXT | | 内容 | | image | VARCHAR | 255 | 内容图片 | | createdAt | DETETIME | detetime | 创建时间 | | updatedAt | DETETIME | detetime | 修改时间 | ### userRelations(用户关系表) | 名称 | 属性 | 长度 | 备注 | | id | INT | 11 | 用户关系id | | userId | INT | 11 | 当前用户id | | followerId | INT | 11 | 粉丝用户id | | createdAt | DETETIME | detetime | 创建时间 | | updatedAt | DETETIME | detetime | 修改时间 | ### atRelations(微博回复表) | 名称 | 属性 | 长度 | 备注 | | id | INT | 11 | 微博回复id | | userId | INT | 11 | 用户id | | blogId | INT | 11 | 微博id | | isRead | TINYINT | 1 | 是否已读 | | createdAt | DETETIME | detetime | 创建时间 | | updatedAt | DETETIME | detetime | 修改时间 | ## PM2 配置和使用 ### PM2 介绍 #### PM2 nodejs 进程管理工具(npm install pm2 -g,本地一般用 nodemon) #### 守护进程:服务挂掉之后自动重启 #### 多进程:更好的利用 CPU 和内存 ### PM2 的使用 #### 启动服务 启动:pm2 start bin/www,在项目中直接启动 npm run prd #### 常用命令 1、pm2 list 查看所有 pm2 的进程列表 2、pm2 start (id或者name) 启动 pm2 的某进程 3、pm2 restart (id或者name) 重启 pm2 的某进程,pm2 restart all 重启所有进程 4、pm2 stop (id或者name) 终止 pm2 的某进程,但是这个进程还是挂在在服务器上的,pm2 stop all 停止所有进程 5、pm2 delete (id或者name) 删除 pm2 的某进程,如果正在运行,则终止 6、pm2 info (id或者name) 查看 pm2 的某进程在系统中的运行信息 7、pm2 log (id或者name) 查看 pm2 的某进程的打印日志(在项目中使用 console 的打印命令),不加 id或者name 就是打印全部 8、pm2 monit (id或者name) pm2 的监控 #### 进程守护 项目进程出错后不会影响项目的正常运行,pm2 会自动重启 ### PM2 的配置 #### 配置服务信息 #### 配置进程数量 #### 配置日志目录 例如: { "apps": { "name": "weibo", // 启动后的名字 "script": "bin/www", // 启动文件的路径 "watch": true, // 是否监听更新 "ignore_watch": [ // 忽略监听文件 "node_modules", "logs", "uploadFiles" ], "instances": 4, // 设置进程数量 "error_file": "./logs/err.log", // 错误日志文件 "out_file": "./logs/out.log", // 普通日志文件 "log_date_format": "YYYY-MM-DD HH:mm:ss" // 设置日志保留的日期格式 } } ### 多进程模型 ## nginx 代理 ### 基本命令 nginx -h 查看帮助信息 nginx -v 查看Nginx的版本号 nginx -V 显示Nginx的版本号和编译信息 start nginx 启动Nginx nginx -s stop 快速停止和关闭Nginx nginx -s quit 正常停止或关闭Nginx nginx -s reload 配置文件修改重新加载 nginx -t 测试Nginx配置文件的正确性及配置文件的详细信息 ### 静态文件服务器 ### 负载均衡 ### 反向代理 server { listen 80; server_name localhost; # location / { # root html; # index index.html index.htm; # } location / { proxy_pass http://localhost:3000; } }