# 常用命令
### 創建 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 模塊(多模塊項目下有效)
~~~
- 內容介紹
- EcmaScript基礎
- 快速入門
- 常量與變量
- 字符串
- 函數的基本概念
- 條件判斷
- 數組
- 循環
- while循環
- for循環
- 函數基礎
- 對象
- 對象的方法
- 函數
- 變量作用域
- 箭頭函數
- 閉包
- 高階函數
- map/reduce
- filter
- sort
- Promise
- 基本對象
- Arguments 對象
- 剩余參數
- Map和Set
- Json基礎
- RegExp
- Date
- async
- callback
- promise基礎
- promise-api
- promise鏈
- async-await
- 項目實踐
- 標簽系統
- 遠程API請求
- 面向對象編程
- 創建對象
- 原型繼承
- 項目實踐
- Classes
- 構造函數
- extends
- static
- 項目實踐
- 模塊
- import
- export
- 項目實踐
- 第三方擴展庫
- immutable
- Vue快速入門
- 理解MVVM
- Vue中的MVVM模型
- Webpack+Vue快速入門
- 模板語法
- 計算屬性和偵聽器
- Class 與 Style 綁定
- 條件渲染
- 列表渲染
- 事件處理
- 表單輸入綁定
- 組件基礎
- 組件注冊
- Prop
- 自定義事件
- 插槽
- 混入
- 過濾器
- 項目實踐
- 標簽編輯
- 移動客戶端開發
- uni-app基礎
- 快速入門程序
- 單頁程序
- 底部Tab導航
- Vue語法基礎
- 模版語法
- 計算屬性與偵聽器
- Class與Style綁定
- 樣式與布局
- Box模型
- Flex布局
- 內置指令
- 基本指令
- v-model與表單
- 條件渲染指令
- 列表渲染指令v-for
- 事件與自定義屬性
- 生命周期
- 項目實踐
- 學生實驗
- 貝店商品列表
- 加載更多數據
- 詳情頁面
- 自定義組件
- 內置組件
- 表單組件
- 技術專題
- 狀態管理vuex
- Flyio
- Mockjs
- SCSS
- 條件編譯
- 常用功能實現
- 上拉加載更多數據
- 數據加載綜合案例
- Teaset UI組件庫
- Teaset設計
- Teaset使用基礎
- ts-tag
- ts-badge
- ts-button
- ta-banner
- ts-list
- ts-icon
- ts-load-more
- ts-segmented-control
- 代碼模版
- 項目實踐
- 標簽組件
- 失物招領客戶端原型
- 發布頁面
- 檢索頁面
- 詳情頁面
- 服務端開發技術
- 服務端開發環境配置
- Koajs快速入門
- 快速入門
- 常用Koa中間件介紹
- 文件上傳
- RestfulApi
- 一個復雜的RESTful例子
- 使用Mockjs生成模擬數據
- Thinkjs快速入門
- MVC模式
- Thinkjs介紹
- 快速入門
- RESTful服務
- RBAC案例
- 關聯模型
- 應用開發框架
- 服務端開發
- PC端管理界面開發
- 移動端開發
- 項目實踐
- 失物招領項目
- 移動客戶端UI設計
- 服務端設計
- 數據庫設計
- Event(事件)
- 客戶端設計
- 事件列表頁面
- 發布頁面
- 事件詳情頁面
- API設計
- image
- event
- 微信公眾號開發
- ui設計規范