安装 thinkjs
$ npm install -g think-cli
创建项目
$ thinkjs new demo;
$ cd demo;
$ npm install;
$ npm start;
项目结构
默认创建的项目结构如下:
配置
系统默认配置(config.js 通用的默认配置)
Adapter 配置
关系数据库
Middleware / 中间件
中间件执行过程
中间件配置格式
- meta: 显示一些 meta 信息,如:发送 ThinkJS 的版本号,接口的处理时间等等
- resource: 处理静态资源,生产环境建议关闭,直接用 webserver 处理即可。
- trace: 处理报错,开发环境将详细的报错信息显示处理,也可以自定义显示错误页面。
- payload: 处理表单提交和文件上传,类似于 koa-bodyparser 等 middleware
- router: 路由解析,包含自定义路由解析
- logic: logic 调用,数据校验
- controller: controller 和 action 调用
handle: 中间件的处理函数,可以用系统内置的,也可以是引入外部的,也可以是项目里的中间件
enable: 是否开启当前的中间件,比如:某个中间件只在开发环境下才生效。
options: 传递给中间件的配置项,格式为一个对象,中间件里获取到这个配置。常见问题
- 中间件执行是按照配置的排列顺序执行的,所以需要开发者考虑配置的顺序。
- 在中间件里可以通过 ctx.param、ctx.post 等方法来获取 query 参数或者表单提交上来的数据,但有些中间件里希望设置一些参数值、表单值以便在后续的 Logic、Controller 中获取,这时候可以通过 ctx.param、ctx.post 设置:
Logic / 校验
当在 Action 里处理用户的请求时,经常要先获取用户提交过来的数据,然后对其校验,如果校验没问题后才能进行后续的操作
注:若自己手工创建时,Logic 文件名和 Controller 文件名要相同
请求类型校验
校验规则格式
基本数据类型
支持的数据类型 :boolean、string、int、float、array、object,对于一个字段只允许指定为一种基本数据类型,默认为 string 类型。
数据校验方法
配置好校验规则后,可以通过 this.validate 方法进行校验
Controller / 控制器
项目中的 controller 需要继承 think.Controller 类,这样能使用一些内置的方法。当然项目中可以创建一些通用的基类,然后实际的 controller 都继承自这个基类。项目创建时会自动创建了一个名为 base.js 的基类,其他 controller 继承该类即可。
- router 路由配置
Action 执行
Action 执行是通过中间件 think-controller 来完成的,通过 ctx.action 值在 controller 寻找 xxxAction 的方法名并调用,且调用相关的魔术方法。
ctx 对象
Controller 实例化时会传入 ctx 对象,在 Controller 里可以通过 this.ctx 来获取 ctx 对象,并且 Controller 上很多方法也是通过调用 ctx 里的方法来实现的。如果子类中需要重写 constructor 方法,那么需要调用父类中的 constructor,并将 ctx 参数传递进去:
Modal 关系数据库(创建模型文件)
- 注释:具体内容请参考 thinkjs 官方文档 – 关系数据库
thinkjs–pm2 部署
首先先全局安装 pm2
命令:sudo npm install -g pm2
创建项目时,会在项目目录下创建名为 pm2.json 的配置文件
项目启动
pm2 start pm2.json(需在项目路径下执行)
nginx 部署
创建项目时,会在项目根目录下创建了一个名为 nginx.conf 的配置文件, 将配置文件防止服务器 /etc/nginx/conf.d 路径下: