CMS全栈开发之路总结

企业级CMS全栈开发之路总结

本项目是学习B站Up主“你单排吧”、前端讲师赵文贤的,如果想学习的朋友,可以去b站看看。

通过这个项目,我掌握前端全栈技能。由于自己由后端从node.js开始接触前端不多,希望通过这次总结,对自己本来node服务端技术进行巩固,再深入了解前端技术,增长自身能力,最好可以逐渐将项目完善,优化。

技术架构

我采用前后端分离的方式开发,具体技术栈有:

  • 服务端:Node、Koa2、MySQL (v5.7)、Git、Linux、Nginx、云服务器购买与部署
  • 管理后台:React (17)、react-router-dom (v6)、React Redux、React Hook、TypeScript、Ant Design、Git
  • 前台页面:Nuxt、SEO、ElementUI、Git
  • 部署上线:pm2 + nginx
  • 代码管理: git

技术架构图:

在这里插入图片描述

1.CMS后台管理系统创建

本项目采用React+Ant Design+TypeScript开发,React主要使用Function Component的形式做开发,结合路由与请求实现。

主要模块有登录模块,注册模块,文章编写修改模块,修改资料模块,管理员权限模块等,第三方UI采用antd,效果如下:

登录模块:

在这里插入图片描述

注册模块:

在这里插入图片描述

主页模块:

在这里插入图片描述

文章编写修改模块:

在这里插入图片描述

修改资料模块:

在这里插入图片描述

管理员权限模块:

在这里插入图片描述

文章编辑这块用的wangeditor,你也可以采用其他更优秀的富文本编辑器实现跟强大的功能。效果图如下:

img

总体来说,react做的后台管理系统主要用到了react-dom,react-router-dom,react-redux,typescript,antd,redux,axios,wangeditor这几个核心库,类型检验主要用的typescript,主要涉及到接口类型的定义,第一版不会涉及更多诸如泛型的知识,不过会涉及到一点接口的继承。页面中的组件的使用,自定义组件的封装也会在后期详细介绍,如果有更好的思考,经验,可以多多交流。

2.node服务端搭建

这里我们采用node社区比较轻量的服务端框架Koa,然后服务端中间件有:

  • “jsonwebtoken”: Json web token (JWT),是为了在网络应用环境间传递声明而执行的一种基于JSON的开放标准。注册必然要产生token,这是用户的登录凭证。

  • “koa-bodyparser”:Koa获取请求体的方式处理请求报文,让koa可以方便的拿到post/put的数据

  • “koa-router”:用来编写服务端路由和api

  • “koa-static”: 提供静态资源访问

  • “koa2-cors”: 本地联调时通过cors方式处理跨域问题

  • “moment”: 格式化时间

  • “mysql”: 连接数据库

服务端大致分为如下几层:

在这里插入图片描述

在这里插入图片描述

3.CMS前台实现

前台实现我主要采用vue相关生态去实现,Nuxt.js 是一个基于 Vue.js 的通用应用框架。

通过对客户端/服务端基础架构的抽象组织,Nuxt.js 主要关注的是应用的 UI 渲染

我们的目标是创建一个灵活的应用框架,你可以基于它初始化新项目的基础结构代码,或者在已有 Node.js 项目中使用 Nuxt.js。

Nuxt.js 预设了利用 Vue.js 开发**服务端渲染(SSR)**的应用所需要的各种配置。

流程图

image-20211214163049587

SSR的优点

SSR也就是服务端渲染,也就是将Vue在客户端把标签渲染成HTML的工作放在服务端完成,然后再把html直接返回给客户端

SSR有着更好的SEO、并且首屏加载速度更快等优点。

用到的技术主要有:vue,nuxt,element-ui,antd,axios,moment,vue-server-renderer,vue-template-compiler。

理论上这块是要涉及到服务端渲染的,因为C端产品一个重要的点就是seo,所以后面也会增加ssr相关的技术实现。

Nuxt可以在asyncData和created中做axios请求。但在created中做请求,渲染出来的数据不会出现在html中,导致无法实现SEO优化,而使用asyncData做请求,则html会被渲染出来,从而实现SSR。

页面

首页:

在这里插入图片描述

文章列表页:

在这里插入图片描述

文章内容页

在这里插入图片描述

4.服务器选配、Linux与Nginx

1.服务器选配

直接上 aliyun.com (opens new window)购买一台服务器

2.SSH 上传/下载文件

SSH 可以通过 scp 命令来上传文件,是 Linux 系统下基于 SSH 登陆进行安全的远程文件拷贝命令,scp 是 secure copy 的简写,可以使用它上传本地文件夹到远程服务器,也可以从远程服务器上下载文件夹到本地:

3.FTP上传

你也可以使用ftp工具上传,如 File Zilla (opens new window)。点击即可下载。

4.ssh长连接

ssh连接服务器每隔一小段时间没响应就会自动断开,这是因为sshd_config的配置影响了。

5.Nginx

Nginx 是开源、高性能、高可靠的 Web 和反向代理服务器,而且支持热部署,几乎可以做到 7 * 24 小时不间断运行,即使运行几个月也不需要重新启动,还能在不间断服务的情况下对软件版本进行热更新。

6.反向代理解决跨域

反向代理是工作中最常用的服务器功能,经常被用来解决跨域问题

5.SSR渲染与线上部署

1、上传与安装依赖

上传项目并安装项目依赖

先将你的项目(除了 node_modules)放到服务器指定的位置

2、pm2部署

先解释一下什么是pm2:

简单点说就是让你不需要像执行 node app.js 一样,必须一直保持终端开启,而是可以在你退出命令行界面时,依然将你的项目运行着。

3、MySQL线上配置

目前我们只能访问根路径,因为其他路径基本都需要请求并访问数据库读取数据。因此我们需要把电脑本机的数据库搬运到服务器上。

最后

本文只作大概的介绍与开发流程的介绍,具体技术后续在补充。

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值