thinkjs入门

pmbdlw 2019-07-12

安装thinkjs

$ npm install -g think-cli

创建项目

$ thinkjs new demo;
$ cd demo;
$ npm install;
$ npm start;

项目结构

默认创建的项目结构如下:

thinkjs入门

配置

系统默认配置(config.js通用的默认配置)

thinkjs入门

Adapter 配置

关系数据库

thinkjs入门

Middleware / 中间件

中间件执行过程

thinkjs入门

中间件配置格式

  • meta: 显示一些 meta 信息,如:发送 ThinkJS 的版本号,接口的处理时间等等
  • resource: 处理静态资源,生产环境建议关闭,直接用 webserver 处理即可。
  • trace: 处理报错,开发环境将详细的报错信息显示处理,也可以自定义显示错误页面。
  • payload: 处理表单提交和文件上传,类似于 koa-bodyparser 等 middleware
  • router: 路由解析,包含自定义路由解析
  • logic: logic 调用,数据校验
  • controller: controller 和 action 调用

thinkjs入门

handle:中间件的处理函数,可以用系统内置的,也可以是引入外部的,也可以是项目里的中间件
enable:是否开启当前的中间件,比如:某个中间件只在开发环境下才生效。thinkjs入门
options:传递给中间件的配置项,格式为一个对象,中间件里获取到这个配置。

常见问题

  • 中间件执行是按照配置的排列顺序执行的,所以需要开发者考虑配置的顺序。
  • 在中间件里可以通过 ctx.param、ctx.post 等方法来获取 query 参数或者表单提交上来的数据,但有些中间件里希望设置一些参数值、表单值以便在后续的 Logic、Controller 中获取,这时候可以通过 ctx.param、ctx.post 设置:

thinkjs入门

Logic / 校验

当在 Action 里处理用户的请求时,经常要先获取用户提交过来的数据,然后对其校验,如果校验没问题后才能进行后续的操作
thinkjs入门

注:若自己手工创建时,Logic 文件名和 Controller 文件名要相同

请求类型校验
thinkjs入门

校验规则格式
thinkjs入门

基本数据类型

支持的数据类型:boolean、string、int、float、array、object,对于一个字段只允许指定为一种基本数据类型,默认为 string 类型。

数据校验方法
thinkjs入门

配置好校验规则后,可以通过 this.validate 方法进行校验

Controller / 控制器

项目中的 controller 需要继承 think.Controller 类,这样能使用一些内置的方法。当然项目中可以创建一些通用的基类,然后实际的 controller 都继承自这个基类。项目创建时会自动创建了一个名为 base.js 的基类,其他 controller 继承该类即可。

thinkjs入门

  • router路由配置

thinkjs入门

Action 执行

Action 执行是通过中间件 think-controller 来完成的,通过 ctx.action 值在 controller 寻找 xxxAction 的方法名并调用,且调用相关的魔术方法。

thinkjs入门

ctx 对象

Controller 实例化时会传入 ctx 对象,在 Controller 里可以通过 this.ctx 来获取 ctx 对象,并且 Controller 上很多方法也是通过调用 ctx 里的方法来实现的。如果子类中需要重写 constructor 方法,那么需要调用父类中的 constructor,并将 ctx 参数传递进去:

thinkjs入门

Modal关系数据库(创建模型文件)

  • 注释:具体内容请参考thinkjs官方文档--关系数据库

thinkjs入门

thinkjs入门

thinkjs--pm2部署

首先先全局安装pm2

命令:sudo npm install -g pm2

创建项目时,会在项目目录下创建名为 pm2.json 的配置文件

thinkjs入门

项目启动

pm2 start pm2.json(需在项目路径下执行)

thinkjs入门

nginx部署

创建项目时,会在项目根目录下创建了一个名为 nginx.conf 的配置文件,将配置文件防止服务器/etc/nginx/conf.d路径下:

thinkjs入门

相关推荐