# 快速入门
# 前言
thinkjs (opens new window) 是一款面向未来开发的 Node.js 框架,整合了大量的项目最佳实践,让企业级开发变得更简单、高效。从 3.0 开始,框架底层基于 Koa 2.x 实现,兼容 Koa 的所有功能。
本文将着重介绍原生文档之外的东西,以便你更好的进行项目开发,你可以先查看项目结构 了解项目的基本结构。
# 基础配置
一、config配置信息
const workers =1;
module.exports = {
workers:workers, //服务器workers
port:(6000+workers), //端口号
errnoField: 'code', //状态标识
errmsgField: 'message', //提示标识
defaultErrno: 401, //默认错误号
validateDefaultErrno: 406, //验证默认错误号
stickyCluster: true,
// 微信配置
wechat: {
appid: '***********',
secret: '***********',
url: "https://api.weixin.qq.com/sns/jscode2session",
tokenUrl: "https://api.weixin.qq.com/cgi-bin/token",
phoneUrl: "https://api.weixin.qq.com/wxa/business/getuserphonenumber",
qrUrl: "https://api.weixin.qq.com/wxa/getwxacodeunlimit"
},
// token配置
jwt:{
secret:'***********', //token加密标识
expiresIn:3600*24*30, //有效期
},
// 数据库配置
database:{
id: 0,
host: '127.0.0.1', //地址
port: '5432', //端口号
user: 'postgres', //账号
password: '***********', //密码
database: '***', //数据库名称
prefix: 'zee_', //前缀
},
// 第三方对接
bridge: {
aliyun: { //密钥
accessKeyId: '***********',
accessKeySecret: '***********',
},
aliyun_oss: { //阿里云对象存储
endpoint: 'https://file.hblg.vip/', //图片地址
bucket: 'hblg-file', //桶
folder: 'biz_school/',
},
},
};
二、使用配置
- 在 ctx 中,可以通过
ctx.config(key)来获取配置 - 在 controller 中,可以通过
controller.config(key)来获取配置 - 其他情况下,可以通过
think.config(key)或直接引用文件来获取配置
const redis = think.config('bridge');
三、动态设置配置
think.config('bridge', {name:'1111'})
# 创建接口
我们通过路由将用户的请求分发到了对应的 Controller 上,Controller 负责解析用户的输入,处理后返回相应的结果 。 所有的 Controller 文件都必须放在 src/controller 目录下,可以支持多级目录,访问的时候可以通过目录名级联访问。
module.exports = class extends think.Controller {
async indexAction() {
return this.success('你好世界');
}
};
# 路由配置
Router 主要用来描述请求 URL 和具体承担执行动作的 Controller 的对应关系, 框架约定了 src/config/router.js 文件用于统一所有路由规则。
module.exports = [
['/usersettings', '/user/setting']
['/common/socket/:action','/common/socket/:action','get,websocket'],
['/:module/:controller/:action', '/:module/:controller/teacher/:action', 'get'],
['/:module/:controller/:action', '/:module/:controller/:action', 'post'],
['/:module/:controller/:subItem/:post', '/:module/:controller/:subItem/:post', 'post'],
];
/**
* 可传入值
* @param {String | RegExp} 用户传过来的地址,匹配规则,可以是字符串或者正则
* @param {String} 匹配后映射后的地址,后续会根据这个映射出对应的 controller、action
* @param {String} 请求类型默认为所有。多个请求类型中间用逗号隔开,如:get,post
* @param {Boolean} 额外的选项,如:跳转时指定 statusCode
*/
# 数据库操作
一、创建模型
module.exports = class extends think.Model {
async getselect() {
return this.select()
}
};
二、使用模型
注:默认模型名字为数据库表名,tableName或者table重新设置表名
module.exports = class extends think.Controller {
async indexAction() {
const data = await this.model('user').getselect();
return this.success(data);
}
};
进阶功能 →