基于nodeJS从0到1实现一个CMS全栈项目(上)

本文涉及的产品
云数据库 Tair(兼容Redis),内存型 2GB
Redis 开源版,标准版 2GB
推荐场景:
搭建游戏排行榜
简介: 作为一名前端开发工程师,我们平时除了对javascript,css,html的积累之外,还需要对http,浏览器渲染原理甚至后端的一些知识有所了解,这样对自己职业发展才会更有帮助。

作为一名前端开发工程师,我们平时除了对javascript,css,html的积累之外,还需要对http,浏览器渲染原理甚至后端的一些知识有所了解,这样对自己职业发展才会更有帮助。



项目背景



由于本人对前端领域非常感兴趣,接触到前端的时间也比较早,所以平时会用前端技术做一些有趣的东西,包括H5游戏,一些简单框架的封装,脚手架的设计等等,在我之前的文章中也有比较详细的介绍。最近由于希望对node服务端技术,vue,react hooks这些技术实践做一次总结,也希望自己能做出一些比较实用的项目,把它开源出来可以一起完善,优化,迭代。


所以基于这样的想法,我想到了CMS,我们是不是可以做一个这样的系统,通过一些配置,生成自己的博客网站呢?虽然目前也有很多比较好的博客系统可以使用,比如hexo等,大家也可以参考这些优秀开源的源码,也会收获满满。


技术架构



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


  • 服务端:NodeJs + Koa + redis + Json-Schema
  • 管理后台:Vue-cli3 + vue + vuex + typescript + axios + antd
  • 前台页面:WP(自己基于webpack开发的脚手架) + React + axios + antd
  • 部署上线:pm2 + nginx
  • 代码管理: git

react我们会用到最新的react-hooks基础,也会教一些基本的用法。技术架构图:



(本图使用adobeXD绘制,更多技巧多交流哈)


实现效果和关键技术点介绍



1.node服务端搭建


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

  • ramda 函数式库,提供优雅的调用方式来实现业务逻辑,地址ramda
  • koa-static 提供静态资源访问,具体用途在项目实现细节里面会详细介绍
  • koa-logger 控制台输出请求日志,方便开发中进行调试
  • koa-body 处理请求报文,让koa可以方便的拿到post/put的数据
  • koa-session 处理session相关操作
  • koa2-cors 本地联调时通过cors方式处理跨域问题
  • ioredis 基于nodejs的redis客户端,性能和操作方式都非常优秀
  • jsonschema 校验json数据格式,这里我用来封装redis形式的schema
  • multer 用来处理文件上传
  • koa-router 用来编写服务端路由和api
  • bcrypt 对用户密码进行加密


上面就是我们web服务端主要使用的中间件,对于每一块如何去组织和架构,包括自己实现错误校验中间件,我会在后面一一介绍,由于写服务端的过程中也查阅了很多资料,如有不足或需要优化的地方,欢迎交流。


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



主要分为数据层,服务层和底层框架层等。


2.后台管理系统


后台管理系统主要采用vue相关生态,我会采用typescript和vuex来组织管理代码及项目状态,主要模块有登录模块,权限控制,博客配置页面,文章编写修改页面,数据统计页面等,第三方UI采用antd,效果如下:


登录模块:



主页模块:





预览页面:支持pc端移动端预览




然后关键点在于如何去维护配置的数据和config的数据结构的设计,因为考虑到预览功能和编辑设计到的状态既有同步状态也有异步,所以我们80%的业务是在vuex里做的。 文章编辑这块用的wangeditor,你也可以采用其他更优秀的富文本编辑器实现跟强大的功能。效果图如下:



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


3.CMS前台实现


前台实现我主要采用react相关生态去实现,这块用vue也是可以的,主要是本人想复习和进一步使用react hooks去实现一些有趣的东西。用到的技术主要有:react-router-dom,antd,axios,react-hooks,如果大家想尝试使用redux,也可以使用,后期我也会总结相关的文章和技术技巧。


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


然后项目的脚手架我们有采用create-react-app,而是自己总结开发的基于webpack的脚手架,如果对webpack有兴趣的,可以一起探索一下webpack的奥妙。 因为每个人配置的页面都不一样,这里我展示一个通过我们管理系统配置的一个博客网站:






相关实践学习
基于Redis实现在线游戏积分排行榜
本场景将介绍如何基于Redis数据库实现在线游戏中的游戏玩家积分排行榜功能。
云数据库 Redis 版使用教程
云数据库Redis版是兼容Redis协议标准的、提供持久化的内存数据库服务,基于高可靠双机热备架构及可无缝扩展的集群架构,满足高读写性能场景及容量需弹性变配的业务需求。 产品详情:https://www.aliyun.com/product/kvstore     ------------------------------------------------------------------------- 阿里云数据库体验:数据库上云实战 开发者云会免费提供一台带自建MySQL的源数据库 ECS 实例和一台目标数据库 RDS实例。跟着指引,您可以一步步实现将ECS自建数据库迁移到目标数据库RDS。 点击下方链接,领取免费ECS&RDS资源,30分钟完成数据库上云实战!https://developer.aliyun.com/adc/scenario/51eefbd1894e42f6bb9acacadd3f9121?spm=a2c6h.13788135.J_3257954370.9.4ba85f24utseFl
目录
相关文章
|
2月前
|
SQL JavaScript 关系型数据库
node博客小项目:接口开发、连接mysql数据库
【10月更文挑战第14天】node博客小项目:接口开发、连接mysql数据库
|
2月前
|
消息中间件 JavaScript 前端开发
用于全栈数据流的 JavaScript、Node.js 和 Apache Kafka
用于全栈数据流的 JavaScript、Node.js 和 Apache Kafka
47 1
|
2月前
|
JavaScript Linux 网络安全
VS Code远程调试Nodejs项目
VS Code远程调试Nodejs项目
|
2月前
|
前端开发 JavaScript 程序员
【从前端入门到全栈】Node.js 之核心概念
【从前端入门到全栈】Node.js 之核心概念
|
3月前
|
JavaScript 应用服务中间件 Linux
宝塔面板部署Vue项目、服务端Node___配置域名
本文介绍了如何使用宝塔面板在阿里云服务器上部署Vue项目和Node服务端项目,并配置域名。文章详细解释了安装宝塔面板、上传项目文件、使用pm2启动Node项目、Vue项目打包上传、以及通过Nginx配置域名和反向代理的步骤。
614 0
宝塔面板部署Vue项目、服务端Node___配置域名
|
3月前
|
JavaScript Linux 开发工具
如何将nodejs项目程序部署到阿里云服务器上
该文章详细描述了将Node.js项目部署到阿里云服务器的步骤,包括服务器环境配置、项目上传及使用PM2进行服务管理的过程。
|
4月前
|
JavaScript 前端开发 API
全栈开发革命来临!Vue.js与Node.js联手,打造前后端无缝对接的奇迹之作!
【8月更文挑战第30天】在Web开发领域,前后端分离与协作至关重要。Vue.js以其轻量级和易用性深受前端开发者喜爱,而Node.js则以高性能和事件驱动特性在后端领域崭露头角。二者结合开启了全栈开发新篇章,通过RESTful API或GraphQL实现高效稳定通信。本文以示例说明如何使用Vue.js和Node.js构建全栈应用,从前端Vue组件到后端Express服务器,展示了数据获取与展示的全过程。这种组合提供了一种高效简洁的全栈开发方案,使开发者能更专注于业务逻辑实现。
270 1
|
4月前
|
JavaScript
成功解决node、node-sass和sass-loader版本冲突问题、不需要降低node版本。如何在vue项目中安装node-sass,以及安装node-sass可能遇到的版本冲突问题
这篇文章介绍了在Vue项目中安装node-sass和sass-loader时遇到的版本冲突问题,并提供了解决这些问题的方法,包括在不降低node版本的情况下成功安装node-sass。
成功解决node、node-sass和sass-loader版本冲突问题、不需要降低node版本。如何在vue项目中安装node-sass,以及安装node-sass可能遇到的版本冲突问题
|
4月前
|
JavaScript Java Python
【Azure 应用服务】在Azure App Service for Windows 中部署Java/NodeJS/Python项目时,web.config的配置模板内容
【Azure 应用服务】在Azure App Service for Windows 中部署Java/NodeJS/Python项目时,web.config的配置模板内容
|
3月前
|
JavaScript
NodeJs的安装
文章介绍了Node.js的安装步骤和如何创建第一个Node.js应用。包括从官网下载安装包、安装过程、验证安装是否成功,以及使用Node.js监听端口构建简单服务器的示例代码。
NodeJs的安装