之前用thinkjs帮朋友写了个毕业设计
第一次用中国的nodejs后端框架来写服务端
一开始上手thinkjs
打开thinkjs的文档
thinkjs
感觉对刚刚上手的开发者很友好
有着非常详细的文档
而且thinkjs是基于koa2的
所以一些koa2可以用的API在thinkjs的框架上也一样可以使用
但是我们在网上搜索一下thinkjs相关的博客
会发现使用的人确实还不多
所以预先准备好会踩坑的准备
1.安装
安装这一块可以参照一下文档,基本上不会遇到什么坑
作为一个前端工程师,用npm安装thinkjs可以说是像喝水一样很平常的事情
2.项目目录
|--- development.js //开发环境下的入口文件
|--- nginx.conf //nginx 配置文件
|--- package.json
|--- pm2.json //pm2 配置文件
|--- production.js //生产环境下的入口文件
|--- README.md
|--- src
| |--- bootstrap //启动自动执行目录
| | |--- master.js //Master 进程下自动执行
| | |--- worker.js //Worker 进程下自动执行
| |--- config //配置文件目录
| | |--- adapter.js // adapter 配置文件
| | |--- config.js // 默认配置文件
| | |--- config.production.js //生产环境下的默认配置文件,和 config.js 合并
| | |--- extend.js //extend 配置文件
| | |--- middleware.js //middleware 配置文件
| | |--- router.js //自定义路由配置文件
| |--- controller //控制器目录
| | |--- base.js
| | |--- index.js
| |--- logic //logic 目录
| | |--- index.js
| |--- model //模型目录
| | |--- index.js
|--- view //模板目录
| |--- index_index.html
我认为初初认识一个框架,项目目录是非常重要的
可以初步认识和了解到框架设计者的设计思想
我们可以看到整个项目的层次非常清晰
由于朋友的毕业设计是前后端分离的项目,前端采用的vue,后端采用的是thinkjs,通过接口请求的方式建立连接
所以这个view文件夹里我们就不放任何的前端文件了
按照我的个人习惯
我会再建一个service层文件夹,与model文件夹同级,担当业务层,而controller 就做为简简单单的表示层
(可能有的人会说有点多余,controller 处理业务逻辑也完全没问题,但是我还是喜欢把处理业务逻辑的部分划分得清楚一下)
再thinkjs中,没有数据访问层的文件夹(类比springboot),是因为thinkjs已经把对数据库进行操作都封装成了API
只要在service层实例化数据表对应的model
const order = this.model('order')
const data = await order.where({id:id}).select();
便可以进行对数据进行你们想要的CRUD
在thinkjs中,有两个比较值得注意的特点
Middleware / 中间件
在文档中是这样去解释Middleware的
中间件
这个洋葱模型就非常经典的解释了整个中间件的处理过程
从接收到request到返回Response
可以在中间件中处理整个请求的生命周期
可以在请求生命周期中做任何想要的操作
“万物皆可中间件”
这是我的师兄在给我介绍koa的中间件概念时说的
放到thinkjs里也同样适用
Logic
官方概念
Logic
这是官方提供的一个概念
为了不让controller 里的action的逻辑代码过于复杂且冗长
我们可以把对数据的检验和权限的判断放在Logic层,在处理请求前
需要经过Logic层的处理,通过后便到达controller层
这也是thinkjs为了避免开发者在action里写入过多逻辑代码所精心设计的
好了,入门的理解暂时介绍到这里
这个博客还会继续更新
把个人开发中的一些理解写在这里
谢谢