pmbdlw 2019-07-12
$ npm install -g think-cli
$ thinkjs new demo;
$ cd demo;
$ npm install;
$ npm start;
默认创建的项目结构如下:
系统默认配置(config.js通用的默认配置)
Adapter 配置
关系数据库
中间件执行过程
中间件配置格式
- 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 设置:
当在 Action 里处理用户的请求时,经常要先获取用户提交过来的数据,然后对其校验,如果校验没问题后才能进行后续的操作
注:若自己手工创建时,Logic 文件名和 Controller 文件名要相同请求类型校验
校验规则格式
基本数据类型
支持的数据类型:boolean、string、int、float、array、object,对于一个字段只允许指定为一种基本数据类型,默认为 string 类型。数据校验方法
配置好校验规则后,可以通过 this.validate 方法进行校验
项目中的 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 参数传递进去:
首先先全局安装pm2
命令:sudo npm install -g pm2创建项目时,会在项目目录下创建名为 pm2.json 的配置文件
项目启动
pm2 start pm2.json(需在项目路径下执行)
创建项目时,会在项目根目录下创建了一个名为 nginx.conf 的配置文件,将配置文件防止服务器/etc/nginx/conf.d路径下: