资讯专栏INFORMATION COLUMN

thinkjs入门

wing324 / 2477人阅读

摘要:常见问题中间件执行是按照配置的排列顺序执行的,所以需要开发者考虑配置的顺序。数据校验方法配置好校验规则后,可以通过方法进行校验控制器项目中的需要继承类,这样能使用一些内置的方法。项目创建时会自动创建了一个名为的基类,其他继承该类即可。

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

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/105585.html

相关文章

  • Thinkjs3入门笔记一:添加一个新的页面

    摘要:本文帮助你往中添加一个新的页面,没有原理描述,只提供一个感性认识。首先需要一个项目我们创建一个叫做的项目所有选项一路确认即可在该目录下通过命令向项目添加模块通过命令行工具,添加模块的控制器文件。感性认识命令行工具可以用来做很多事情。 本文帮助你往Thinkjs3中添加一个新的页面,没有原理描述,只提供一个感性认识。 首先需要一个Thinkjs3项目 我们创建一个叫做fuck的项目 $ ...

    oujie 评论0 收藏0
  • Thinkjs3入门笔记一:添加一个新的页面

    摘要:本文帮助你往中添加一个新的页面,没有原理描述,只提供一个感性认识。首先需要一个项目我们创建一个叫做的项目所有选项一路确认即可在该目录下通过命令向项目添加模块通过命令行工具,添加模块的控制器文件。感性认识命令行工具可以用来做很多事情。 本文帮助你往Thinkjs3中添加一个新的页面,没有原理描述,只提供一个感性认识。 首先需要一个Thinkjs3项目 我们创建一个叫做fuck的项目 $ ...

    or0fun 评论0 收藏0
  • ThinkJS 作者李成银:择善而从之,笃行致远

    摘要:非常有幸邀请到李成银老师,进行一期图灵专访。具体工作中,技术能力可能只占了,软素质方面的能力却高达。大数据处理随着大数据处理越来越热门,很多项目都要在前端进行大数据处理和展现。提案可以大大提升在大数据处理方面的性能。 非商业转载请注明作译者、出处,并保留本文的原始链接:http://www.ituring.com.cn/article/260246 李成银,奇虎360前端技术专家,Th...

    alin 评论0 收藏0
  • 入手thinkjs,学习笔记

    摘要:最近刚刚学习了一个的开发框架,最重要的是可以用开发传送门以下是学习过程中的笔记上面时全局安装完成后用检查是否成功创建了一个名为的项目,然后进入目录,安装依赖,启动项目,浏览器打开就可以看到页面了。 最近刚刚学习了thinkjs--一个node的MVC开发框架,最重要的是可以用es6/es7开发【传送门】 以下是学习过程中的笔记: npm install thinkjs@2 -g --v...

    shuibo 评论0 收藏0

发表评论

0条评论

最新活动
阅读需要支付1元查看
<