开发博客系统:React + Express + Mongodb

本文涉及的产品
云数据库 MongoDB,独享型 2核8GB
推荐场景:
构建全方位客户视图
简介: 本文介绍了在ECS上开发博客系统的自我体验。博客地址为:http://www.trigold.tech/博客系统采用的技术栈为:Express 后端,前端为 React。博客现在还在不断开发中,但是基本的功能:阅读文章,主题,跟随目录已经可以使用了。读者可以自行体验。在理论性学完 html, css 和 javascript 以及计算机网络之后,想找个项目练习,随后选择了博客系统。为了项目的实践性更强,就需要购买一台服务器,在本地开发虽然也可以,但是上线部署始终是一个完整项目不可缺少的。

博客地址

http://www.trigold.tech/(2022 01 09 已升级为 restful 架构,前端:react v17, styled components, redux等,后端:express,multer等,数据库:mongodb,)

背景

关于我

西安邮电大学,大3的男学生。一名前端学习者。

项目练习

在理论性学完 html,css,javascript 之后,实际上和真实的开发之间还有一些差距。而这些差距的消除正需要我们不断的实践和复盘。

博客系统 是一个经典的开发主题。但是想要开发出一个精致和完善的博客系统对于水平一般的前端开发者来说还是比较有挑战性。

在技术栈的选型上,我选择了典型的 Restful 架构。前端的依赖项有 React(v17), Axios, Styled Components, React Router DOM(v6),后端的依赖项有 Express,Multer, Mongosse 等。数据库选择了 Mongodb。

开发过程

服务器环境部署

在购买阿里云服务器之后,首先要做的事情就是部署服务器的环境。阿里云有官方的帮助文档,不过这里还是说明一下。

使用 ECS 服务器控制台中的 SSH 连接工具连接服务器之后,我们按照阿里云的官方文档键入:

wget https://nodejs.org/dist/v17.3.0/node-v17.3.0-linux-x64.tar.xz

这里采用的是最新的 nodejs 版本:17.3,nodejs 版本更新很快。

最后,键入 node 或 npm 来测试一下是否成功。

至此我们的服务器已经可以全局运行 javascript 程序。

Express 和 Pug

web 服务器的源代码在本地编写,编写完成后使用 xftp 应用上传到服务器,之后在服务器键入 node path/example.js 即可执行。

这里推荐在本地下载 xshell 和 xftp 的免费版本,以方便我们和服务器交互:https://www.xshell.com/zh/xshell/

本地编写 web 服务器的源代码,所使用的框架为 express,这里展示一下整个项目的结构。

其中,views 是用来放置实际的用户能看到的东西:视图模板。routes 则是处理用户不同的导航操作,对于不同的 url 做出反应。public 是用来存放公共资源的地方,这里我们放置了 css,js,以及关键的 markdown 文件,这些 markdown 文件就是我们本地写好的文章或者笔记。

路由,marked 和 highlightjs

在路由处理上,一开始打算处理 3 种路由:/ 首页,/note/xxx 笔记目录页,reading/xxx 文章或笔记阅读页。后面会增加 articles 文章目录页,/about 关于页等等。

这里的关键问题是怎么将 markdown 转换为 html 代码,这就要用到一个必不可少的库:marked。

将 marked 转为 html 代码之后,其中的程序部分,也就是 code 元素的内容如果不语法高亮显示,阅读体验会非常差。这里也要用到一个不可少的库:hightlightjs。

主题和跟随目录

在我们设计完主要的页面之后,对于博客系统来说,我觉得主题和跟随目录这两个功能非常重要。但同时也比较复杂。

对于主题功能来说,基本的亮色和暗色主题是必须要实现的。这里采用的是 body dark class 方案,这也是最基本的一种方案。

跟随目录也是比较关键的一个功能,试想一个页面的内容部分非常的长,用户该怎么在不同的章节导航呢?要做出目录跟随功能,我们首先做的事情就是生成一个目录,然后在用户每次滚动时获取到“current”目录,之后将生成目录中的当前目录凸显出来即可。

上线和 forever

上线

在我们开发好项目的源码之后,或是项目的源码达到“可以测试”的程度就可以上线了。这里我们要用到下载好的 xshell 和 xftp 应用。

forever

一切看起来都不错,直到你关掉连接阿里云服务器的窗口。当我们关掉连接窗口,那么运行的程序就会退出,也就是说 web 服务器被停止了。这当然是不合理的,web 服务器进程应该长期运行来监听用户们的浏览器请求。那么该怎么办呢?这就要用到进程管理器:forever 库。

总结和展望

总结

这个项目从构思到原型,从原型到能跑起来的原型,再从能跑起来的原型到看起来不错的原型,这些阶段都花费了很多的精力和时间。有时候由于一个疏忽,打错了字符,导致怎么也查不出来错误。有时候,在关闭十几个tab页之后,才找到一个报错的解决方案。有时候,你只能自己想办法解决。

坚持和对前端技术的热爱是关键的。其次还要适当地放松。

经过这个博客项目的初始构建,我发觉了一些以前用的少的知识点,比如:css !important 解决样式冲突,target.closest() 解决事件委托的bug 等等。当然主要还是巩固了自己的 html ,css 和 javascript 以及计网的知识。

但是本次的体验和以前的都是不同的,因为本次项目是一个真正线上部署的项目,这种体验促使从服务器和客户端联系上思考问题,而不是以前只关注客户端。还有,也带给了我架构上的宏观思维。

展望

这个基本的博客系统确实有些简陋,接下来的主要任务还是完善博客的功能:文章,评论,点赞。

回想在以前,前端开发者往往只能是前端开发者,但是 nodejs 的出现打破了这个规则。优秀的前端开发者同时也可以是优秀的后端开发者。nodejs 在正在带给前端开发者更大的可能。

阿里云是一个优秀的云服务提供者,物美价廉这个词确实非常适合,阿里云平台对用户和开发者的考虑很多,很多地方也体现出阿里云背后整个团队的努力以及他们的优秀的特质。希望阿里云将来有更多好的发展!

相关实践学习
MongoDB数据库入门
MongoDB数据库入门实验。
快速掌握 MongoDB 数据库
本课程主要讲解MongoDB数据库的基本知识,包括MongoDB数据库的安装、配置、服务的启动、数据的CRUD操作函数使用、MongoDB索引的使用(唯一索引、地理索引、过期索引、全文索引等)、MapReduce操作实现、用户管理、Java对MongoDB的操作支持(基于2.x驱动与3.x驱动的完全讲解)。 通过学习此课程,读者将具备MongoDB数据库的开发能力,并且能够使用MongoDB进行项目开发。   相关的阿里云产品:云数据库 MongoDB版 云数据库MongoDB版支持ReplicaSet和Sharding两种部署架构,具备安全审计,时间点备份等多项企业能力。在互联网、物联网、游戏、金融等领域被广泛采用。 云数据库MongoDB版(ApsaraDB for MongoDB)完全兼容MongoDB协议,基于飞天分布式系统和高可靠存储引擎,提供多节点高可用架构、弹性扩容、容灾、备份回滚、性能优化等解决方案。 产品详情: https://www.aliyun.com/product/mongodb
相关文章
|
5月前
|
开发框架 前端开发 JavaScript
从零开始学习React Native开发
React Native是一种基于React框架的移动端开发框架,使用它可以快速地构建出高性能、原生的移动应用。本文将从零开始,介绍React Native的基础知识和开发流程,帮助读者快速入门React Native开发,并实现一个简单的ToDo应用程序。
|
5月前
|
存储 移动开发 前端开发
【第35期】一文学会React-Router开发权限
【第35期】一文学会React-Router开发权限
102 0
|
21天前
|
前端开发 JavaScript 开发者
Express.js与前端框架的集成:React、Vue和Angular的示例与技巧
本文介绍了如何将简洁灵活的Node.js后端框架Express.js与三大流行前端框架——React、Vue及Angular进行集成,以提升开发效率与代码可维护性。文中提供了详细的示例代码和实用技巧,展示了如何利用Express.js处理路由和静态文件服务,同时在React、Vue和Angular中构建用户界面,帮助开发者快速掌握前后端分离的开发方法,实现高效、灵活的Web应用构建。
36 3
|
2月前
|
开发框架 NoSQL 关系型数据库
基于SqlSugar的开发框架循序渐进介绍(27)-- 基于MongoDB的数据库操作整合
基于SqlSugar的开发框架循序渐进介绍(27)-- 基于MongoDB的数据库操作整合
|
5月前
|
人工智能 NoSQL atlas
Fireworks AI和MongoDB:依托您的数据,借助优质模型,助力您开发高速AI应用
我们欣然宣布MongoDB与 Fireworks AI 正携手合作让客户能够利用生成式人工智能 (AI)更快速、更高效、更安全地开展创新活动
2742 1
|
5月前
|
存储 NoSQL MongoDB
MongoDB 助力移动式汽车保养运营模式优化,将开发请求减少 90%
MongoDB针对初级,中级及熟练的技术开发人员推出系列技术文章与行业案例。深入浅出地剖析MongoDB产品基础原理,使用技巧,典型行业场景及应用,还有Code Demo及线上线下活动推荐!
4886 1
MongoDB 助力移动式汽车保养运营模式优化,将开发请求减少 90%
|
5月前
|
存储 前端开发 JavaScript
从零开始学习React Native开发
【2月更文挑战第1天】React Native是一种跨平台的移动应用程序框架,可以使用JavaScript和React来构建Android和iOS应用程序。本文将带您从零开始学习React Native开发,涵盖了基础知识、组件、样式、布局、API等方面。
|
5月前
|
存储 NoSQL 算法
国泰航空利用MongoDB和Device Sync开发飞机上的移动应用
作为中国香港本土的航空公司,国泰航空提供的客运和货运服务覆盖全球不同目的地。国泰航空清楚这个流程及其他许多关键业务级流程都需要进行数字化转型。国泰航空积极寻找可提高其运营效率、工作效率和可持续性能力的重大机会,优先开发创新性的数字解决方案。
国泰航空利用MongoDB和Device Sync开发飞机上的移动应用
|
5月前
|
前端开发 JavaScript
你可能需要的React开发小技巧!(下)
你可能需要的React开发小技巧!(下)
下一篇
无影云桌面