作者 | 京东云开发者-京东零售 周明亮
原文链接:https://my.oschina.NET/u/4090830/blog/10116557
前言
玩归玩 , 闹归闹 , 别拿 C端 开玩笑!这里不推荐大家把 Node 服务作为 C 端服务 , 毕竟它是单线程多任务 机制 。这一特性是 JAVA 语言设计之初,就决定了它的使命 - Java >>>【】,这里就不多解释了,大家去看看 Java 的历史就知道啦~这也就决定了 , 它不能像后端语言那样 多线程多任务 , 用户访问量小还能承受 , 一旦承受访问量大高并发,就得凉凉~
那为什么我们还要去写 Node 服务?主要是方便快捷,对于小项目可以迅速完成建设 , 开发成本小 。其次 , 主要通过写 Nest 完成下面收获:
- 学习装饰器语法 , 感受其简洁优美;
- 自己学习一门新的开发框架,感受不同框架的优缺点,为以后开发选型打基?。?/li>
- 感受服务端排查问题的复杂性,找找前端设计的灵感 。
养成好习惯,看文章先一键三连~【点赞,关注 , 转发】 , 评论可以看完再吐槽~继续完善填坑~
第一步、项目跑起来
在选择服务端的时候 , 我之前使用过 Egg.js ,所以这次就不选它了 。其次,Egg 也是继承了 Koa 的开发基础,加上 Express 也是基于 Koa 上创新的,两者应该差不多,就不选择 Koa 和 Express。
所以,我想尝试下 Nest.js 看语法跟 Java 是一样的,加上之前也自己开发过 Java + SpringBoot 的项目,当然更古老的 SSH 2.0 也从无到有搭建过,即:Spring2.0 + Struts2+ Hibernate3.2,想想应该会很容易上手,顺便怀旧下写写 。
参考文档:
- https://www.geeksforgeeks.org/best-nodejs-frameworks-for-App-development/?
- ?https://anywhere.epam.com/business/best-node-js-frameworks?
说下我们具体实现步骤:
1.【必须】没有任何数据库,完成接口请求运行,能够跑起来;
2.【必须】创建基础数据库 MySQL ,接入 @nestjs/sequelize 库 完成 增删改查 功能即:CRUD
3.【可选】打算采取 Graphql 处理 API 查询,做到精确数据查询 , 这个已经火了很多了,但是真正使用的很少,我们打算先感受下,后续可以直接用到业务 。
4.【可选】接入 Swagger 自动生成 API 文档,快捷进行前端与后端服务联调测试 。
?Swagger 是一个开源工具,用于设计、构建、记录和使用 RESTful web 服务 。
5.【可选】接口请求,数据库优化处理
?请求分流,数据库写入加锁,处理并发流程
?增加 middleware 中间件统一处理请求及响应 , 进行鉴权处理 , 请求拦截等操作
?数据库分割备份,数据库融灾处理,分为:主、备、灾
?数据库读写分离,数据双写 , 建立数据库缓存机制,使用 redis 处理
也欢迎大家补充更多的优化点,我们一起探讨~有兴趣可以帮忙补充代码哈~
确定了大概方向,我们就开始整 。先不追求一步到位 , 否则越多越乱,锦上添花的东西,我们可以后续增加,基础功能我们要优先保障完成 。Nest.js 官网:https://docs.nestjs.com/ , 话不多说,我们直接开整 。
# 进入文件夹目录
cdfull-stack-demo/packages
# 安装脚手架
npmi -g @nestjs/cli
# 创建基础项目
nestnew node-server-demo
# 进入项目
cdnew node-server-demo
# 运行项目测试
npmrun start:dev
我们移除一些不需要的东西,先简单再复杂,别把自己搞晕了 。接下来写一个简单示例感受下这个框架 , 之后完整的代码,我会公布在后面 。废话不多说,开整!调整后目录结构:
•common- 公用方法类
•config- 配置类文件
•controller- 控制器 , 用于处理前端发起的各类请求
推荐阅读
- MySQL 5.7废止了?我们暂无计划
- AI不缺概念,甚至不缺技术,但实在缺产品
- Java中,对象一定在堆中分配吗?
- 用IntelliJ IDEA进行前端开发
- MPLS静态配置新手必看!
- 永久不过时的3个追女生套路
- 现在的城镇职工养老保险,还能够一次性补缴15年的费用吗?
- 没得选,游戏进入“开挂”时代
- 为什么中国的白酒在国外火不起来?老外说出原因,让国人感同身受
- 白酒度数越高就越容易辣喉吗?