🔥码云GVP开源项目 12k star Uniapp+ElementUI 功能强大 支持多语言、二开方便! 广告
# 常用命令 ### 创建 Controller 项目中的 controller 需要继承`think.Controller`类,这样能使用一些内置的方法。当然项目中可以创建一些通用的基类,然后实际的 controller 都继承自这个基类。 项目创建时会自动创建了一个名为`base.js`的基类,其他 controller 继承该类即可。 你可以通过执行命令`thinkjs controller xxx [module]`来添加controller,其中`xxx`为controller名称,而`[module]`为多模块项目中的项目名称,这时系统将自动完成controller与对应logic文件的创建,并且初始化其内容。 ~~~ thinkjs controller user //新建user控制器 thinkjs controller auth api //在api模块下创建auth控制器 ~~~ 你也可以直接在对应目录中新建文件,如新建`//src/controller/user.js`来达到创建controller的目的 ~~~js //src/controller/user.js const Base = require('./base.js'); module.exports = class extends Base { indexAction(){ this.body = 'hello world!'; } } ~~~ 创建完成后,框架会监听文件变化然后重启服务。这时访问`http://127.0.0.1:8360/user/index`就可以看到输出的`hello word!` ### 创建模型文件 模型文件放在`src/model/`目录下(多模块项目为`src/common/model`以及`src/[module]/model`),继承模型基类`think.Model`,文件格式为: ~~~js // src/model/user.js module.exports = class extends think.Model { getList() { return this.field('name').select(); } } ~~~ 也可以在项目根目录下通过`thinkjs model modelName`快速创建模型文件。 ``` $thinkjs model modelName ``` --- 如果项目比较复杂,希望对模型文件分目录管理,那么可以在模型目录下建立子目录,如:`src/model/front/user.js`,`src/model/admin/user.js`,这样在模型目录下建立`front`和`admin`目录,分别管理前台和后台的模型文件。 含有子目录的模型实例化需要带上子目录,如:`think.model('front/user')`,具体见[这里](https://thinkjs.org/doc/3.0/relation_model.html#toc-9d9)。 ### 实例化模型 项目启动时,会扫描项目下的所有模型文件(目录为`src/model/`,多模块项目下目录为`src/common/model`以及各种`src/[module]/model`),扫描后会将所有的模型类存放在`think.app.models`对象上,实例化时会从这个对象上查找,如果找不到则实例化模型基类`think.Model`。 #### think.model 实例化模型类。 ~~~ think.model('user'); // 获取模型的实例 think.model('user', 'sqlite'); // 获取模型的实例,修改数据库的类型 think.model('user', { // 获取模型的实例,修改类型并添加其他的参数 type: 'sqlite', aaa: 'bbb' }); think.model('user', {}, 'admin'); // 获取模型的实例,指定为 admin 模块(多模块项目下有效) ~~~