乐趣区

thinkjs入门

安装 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 路径下:

退出移动版