唠嗑

参考的是慕课网七月老师的课程,七月的课质量真的挺高的,推荐一波。这次的小书架项目源码不会全部公开,因为用了七月老师课程的绝大部分代码。虽然代码不全,但是只要思路看得懂,代码实现就很简单了。

小书架项目不是我个人完整的项目,UI 使用的是【9小时搞定微信小程序开发】,这位老师的界面效果,当时(去年吧)由于已经学了一段时间小程序,正好看到极客时间有这个课程,看着目录讲的挺详细的就买了,后来没啥时间看,就搁置了。今年看到七月老师的课【Node.js+KOA2 从0到1打造超好用Web框架

一步到位 掌握KOA2服务端开发
】,果断学了。最近正好也在弄小程序,捡起了当时的极客时间课程,课程的最后是实现一个前后端的项目利用【小书架】,于是想着二者结合再加以改动就可以把小书架项目做得更完善一些。所以就开始干吧!

技术包

假设 npm ,NodeJS ,koa ,mysql 已经安装好了

  • 服务器开发:NodeJS + KOA2+MySQL
  • 开发工具:vscode

NodeJS项目只要新建一个文件夹,然后使用命令npm init即可创建成功,然后把常用的包名创建好即可,可参考下方的项目分包。

项目分包

上图可以看得不是很清楚,那么重新整理一份吧

app
api:接口
v1:第一版本的接口
lib:辅助
models:实体类
services:微信相关
validators:校验器
config:配置项
core:核心
middlewares:中间件
public:资源

api

api里面存放的是各个版本的接口,一般只维护三个版本,当然我们也可以只维护一个版本,但是这违背设计原则的对修改关闭的思想。

为什么需要有维护三个版本的情况呢?这就得表扬产品经理们的天马行空想法了。第一版设计的接口已经实现功能了,后续发现第一版接口满足不了欲望,想要在原有接口上增加一些酷炫的想法,那么程序员肯定是的加的啊。

在原有代码上加?自己都看不懂自己以前写的代码了,再往里加那就是犯罪啊。只能另起炉灶,开个新的V2出来了。把原有代码中需要的内容复制过来再改吧改吧完成需求下班,美滋滋~

lib

里面就是放一些工具类,辅助类,没啥可以说的

models

这里面存放各个实体类,比如图示实体book.js就是放这里面,这个文件主要处理数据相关的。为了实体和接口对应,在接口中api-v1下也得有一个book.js,这个文件主要处理逻辑相关的。

services

微信相关的实体类,也可以放到models包下

validators

主要存放验证器,啥是验证器呢?就是相关接口的判断逻辑,统一放在这个类中。这么做可以减少api-v1包下接口逻辑处理比较繁琐的问题。

config

主要存放数据库配置等信息

core

存放网络异常、项目初始化、一些工具类等文件

middlewares

存放中间件,如权限验证全局异常

public

存放用户上传的资源文件,或者是图片文件,也可以取名static


咨询请加微信:轻撩即可。

全栈项目|小书架|服务器开发-NodeJS 项目分包的更多相关文章

  1. 全栈项目|小书架|服务器开发-NodeJS 使用 JWT 实现登录认证

    通过这篇 全栈项目|小书架|服务器开发-JWT 详解 文章我们对JWT有了深入的了解,那么接下来介绍JWT如何在项目中使用. 安装 $ npm install jsonwebtoken 生成 Toke ...

  2. 全栈项目|小书架|服务器开发-NodeJS 中使用 Sequelize 操作 MySQL数据库

    安装 官网:https://sequelize.org/v5/manual/getting-started.html 安装sequelize及数据库连接驱动 npm install --save se ...

  3. 全栈项目|小书架|服务器开发-Koa2 全局异常处理

    什么是异常 做开发的基本都知道异常,像Android开发中常见的ANR异常.空指针异常,服务器开发中经常遇到的异常404,500异常,还有一些其他常见的异常,具体可见HTTP状态码. 基本上这些异常可 ...

  4. 全栈项目|小书架|服务器开发-Koa2中间件机制洋葱模型了解一下

    KOA2 是什么? Koa是一个新的 web 框架,由 Express 幕后的原班人马打造, 致力于成为 web 应用和 API 开发领域中的一个更小.更富有表现力.更健壮的基石. 通过利用 asyn ...

  5. 全栈项目|小书架|服务器开发-JWT 详解

    JWT 官方简介:Introduction to JSON Web Tokens 文章基本是官网内容的翻译,英文不错的同学可点击上面的链接直接看英文文档. 什么是 JWT JWT全称是JSON Web ...

  6. 全栈项目|小书架|服务器开发-Koa2 连接MySQL数据库(Navicat+XAMPP)

    为什么使用数据库 为什么需要数据库?-知乎 相比与文件系统,数据库具有以下优势: 高效率:查找效率高 高可用:可数据库共享 安全性强:数据不能随意修改 选择哪个数据库 数据库可以分为关系型数据库和非关 ...

  7. 全栈项目|小书架|服务器开发-Koa2 参数校验处理

    为什么需要做参数校验 在开发中,无论是App开发还是服务器接口开发, 我们无法去预测用户传入的数据,因此参数(数据)校验是开发中不可或缺的一环. 例如像App的注册登录表单提交页面,就要做好多层的判断 ...

  8. 全栈项目|小书架|服务器开发-Koa全局路由实现

    什么是路由 路由就是具体的访问路径,指向特定的功能模块.一个api接口是由ip(域名)+端口号+路径组成,例如 :https://www.npmjs.com/package/koa-router就是一 ...

  9. 全栈项目|小书架|服务器端-NodeJS+Koa2实现首页图书列表接口

    通过上篇文章 全栈项目|小书架|微信小程序-首页水平轮播实现 我们实现了前端(小程序)效果图的展示,这篇文章来介绍服务器端的实现. 首页书籍信息 先来回顾一下首页书籍都有哪些信息: 从下面的图片可以看 ...

随机推荐

  1. PathVariable传过来的中文乱码是怎么回事

    今天在写一个spring mvc程序,由于客户原来设计的原因,不能传id过来,只能传名称,结果发现收到的数据是乱码. 百度之后,找到别人的解决方案,试了下没问题,转载一下.使用的web服务器是Tomc ...

  2. Qt 中的对象模型(Object Model)

    原标题:Qt 中的对象模型(Object Model)90不太后,余生皆折腾 本节内容主要讲了 Qt 对象模型比标准 C++ 对象模型多了什么内容,并介绍了组成 Qt 对象模型基础的相关的类.最后说明 ...

  3. git之删除untrack files

    退回版本 git reset --hard commit_id //不保留未提交的修改 git reset --soft commit_id //默认方式,保留未提交的修改 撤除本地没有提交的修改 g ...

  4. 【转载】 Bill Gates和Elon Musk推荐,人工智能必读的三本书 -《终极算法》,《超级智能》和《终极发明》

    原文地址: https://blog.csdn.net/ztf312/article/details/80761917 ---------------------------------------- ...

  5. windows下安装anaconda和tensorflow

    anaconda确实很好用,省去了很多麻烦,现在我个人推荐直接使用anaconda. anaconda的特点:可以存在多个python环境,要使用某一个环境的话,就需要切换到这个环境,安装.卸载包都是 ...

  6. 【Tomcat】Tomcat 基本使用(二)

    上一章介绍了Tomcat原理[Tomcat]Tomcat 原理架构(一),本章介绍Tomcat的基本使用 Tomcat端口设置 tomcat端口设置,在tomcat的配置文件目录下的server.xm ...

  7. Spring Cloud Eureka 服务发现 4.2

      在微服务架构中,服务发现可以说是最为核心和基础的模块,该模块主要用于实现各个微服务实例的自动化注册与发现.在Spring Cloud的子项目中,Spring Cloud Netflix提供了Eur ...

  8. Python - Django - ORM 双下划线

    id 字段: id__lt:id 小于,id__gt:id 大于 import os if __name__ == '__main__': # 加载 Django 项目的配置信息 os.environ ...

  9. LeetCode_202. Happy Number

    202. Happy Number Easy Write an algorithm to determine if a number is "happy". A happy num ...

  10. pickle.load EOFError: Ran out of input

    错误原因:pickle.loads()的次数超过了pickle.dumps()的次数 https://www.cnblogs.com/cmnz/p/6986667.html