vyan-shop-node
微燕商城微信端 - vyan-shop-weixin
微燕商城admin管理 - vyan-shop-admin
vyan-shop-admin 0.1.0
版本成型之后,可以腾出点时间来继续下一步了,现在还处在mock数据阶段,各业务场景并不完善,数据也不能正常流转,从产品角度来看也是不可用的,这样看来服务端提供接口数据的项目也呼之欲出。初衷还是一样的,整个介绍语言通俗易懂,项目简单易跑,不求多复杂,至少要完整。有阶段性的结果,版本控制的意识,前期的需求收集做加法,后期的开发做减法。
能力有限,不足之外还有很多,正在努力完善中,路过的大佬多多指点。
纯服务端接口项目,暂无预览入口,代码地址 vyan-shop-node - Github,前端 vyan-shop-admin。
参考自:
1. 相关介绍
1.1 基本介绍
1.2 技术栈
技术 | 说明 | 官网 |
---|---|---|
Node | 基于 V8 开发平台 | https://nodejs.org/zh-cn/ |
Express | Web 应用框架 | https://expressjs.com/zh-cn/ |
MongoDB | 面向文档的数据库 | https://www.mongodb.com/ |
Mongoose | 对象模型工具 | https://mongoosejs.com/ |
Morgan | 日志中间件 | https://github.com/expressjs/morgan |
CORS | 跨域模块 | https://www.npmjs.com/package/cors |
Dayjs | 类似Moment日期库 | https://github.com/iamkun/dayjs |
Utility | 工具集合 | https://github.com/node-modules/utility |
Nodemon | 自启动工具 | https://github.com/remy/nodemon |
- MongoDB MongoDB对象数据库,没有固定的模式和结构,数据以对象形式存储,对象内部为JSON。比如:
{"_id":{"$oid":"58817f9c7c3b811cf88e463c"},"cat_name":"联通手机充值卡"}
{"_id":{"$oid":"58817fa97c3b811cf88e463d"},"cat_phone":"123232434324","cat_type:"1"}
由此可看出上一行与下一行字段可以完全不一致。
-
Mongoose Mongoose封装了对MongoDB对文档的日常操作,包括增删改查等常用方法。
Schema
只是一种结构约定,并不具备操作数据库的方法,比如:
const UserSchema = new mongoose.Schema({ username: { type: String, required: true }, password: { type: String, required: true } })
Model
除了具备Schema的结构约定之外还有操作数据库的API,比如
UserModel.save() UserModel.find() UserModel.update() UserModel.remove()
-
Utility md5,sha1,sha256, hmac, decode,encode
1.3 开发工具
系统 | 工具 | 官网 |
---|---|---|
VScode | 主开发工具 | https://code.visualstudio.com/ |
Webstorm | 开发工具(兼Git提交) | https://www.jetbrains.com/webstorm/ |
Atom | 源码阅读工具 | https://atom.io/ |
Cmder | Cmd替代工具[windows] | https://cmder.net/ |
Notepad2 | 临时单文件编辑[windows] | http://www.flos-freeware.ch/notepad2.html |
Postman | Http请求工具 | https://www.getpostman.com/ |
Robo 3T | MongoDB可视化工具 | https://robomongo.org/ |
1.4 文件结构
tree 命令输出结构 tree -L 3 -I "node_modules"
.
├── app // 所有相关代码
│ ├── controller // 控制器
│ │ ├── adv.controller.js // 常用操作/广告管理
│ │ ├── index.js // 所有相关代码
│ │ ├── order.controller.js // 订单管理
│ │ └── user.controller.js // 登录用户相关
│ └── models // 所有Model
│ ├── adv.model.js // 常用操作/广告管理
│ ├── connect.js // 数据库连接
│ ├── order.model.js // 订单管理
│ └── user.model.js // 登录用户相关
├── app.js // 逻辑入口
├── config // 配置目录
│ └── index.js // 配置文件
├── nodemon.json // nodemon配置文件
├── package-lock.json
├── package.json
├── routes // 路由控制
│ └── index.js
└── uploads // 上传目录
└── test.txt
PS:
user.controller.js,user.model.js
取名的目的为多次打开相同文件容易区分- 纯接口项目无
public,views
目录
2. 开发约定
nodeman
2.1项目采用nodeman来启动整个服务,关于他的介绍,可以在命令行直接输入rs
快速启动,在script中增加方便启动项目。
"scripts": {
"dev": "nodemon app.js",
"start": "nodemon app.js"
},
mlab
2.2数据库使用在线免费mlab服务,参考自N-blog教程,本地客户端robo 3T连接教程,备选方案。
2.3 代码风格
遵守eslint,并且文件vyan-shop-node/.eslintrc.json
可被修改
3. 开发说明
3.1 用户登录
天蝎完成
3.2 商品管理 此模块由商品管理包含五个数据接口,四个数据操作方法,采用模块式开发的方式进行路由的编写,使其便于项目后期的拓展与修改。
商品管理的所有接口都可以通过 GET 方式访问来获取这个接口需要前端发送数据的名称与格式,这点是为了可以让前后端更好进行数据的传输。
为了避免回调地狱以及提升代码可读性从而采用 then 的方式来处理 model 方法返回的数据。这里需要注意的是:model 方法支持的回调函数 默认第一个返回参数是错误信息。
- '/admin/product' 全部可使用接口的描述信息
- '/admin/product/addItem' 用于添加商品信息
- '/admin/product/removeItem' 用于删除商品信息
- '/admin/product/updatedItem' 用于更新商品信息
- '/admin/product/list' 用于查询商品信息列表 接口具体内容详见文件
3.3 订单管理
4. 待开发的
- 系统设置
- 友情链接