tuia-egg
tuia-egg framework
QuickStart
- yarn global add tuia-cli
- tuia-cli init <项目名>
- cd <项目名>
- yarn
- yarn dev
OS Support
- windows
- linux
- macOS
vscode插件(建议安装)
申请容器规范
- Node容器部署流程说明书(请查阅容器申请部分)
目录、代码规范
祥见egg目录结构
Use Logger
// 日志级别分为debug info warn error// app对象(常用于middleware, app生命周期内)thisappTuiaLogger;// ctx对象(常用于controller, service)thisctxTuiaLogger;// 全局使用globalTuiaLogger;
Use BiLogger
// 日志不分级别,统一使用info// group: node日志一般固定10,type: 区分不同需求,json: 具体日志数据.// app对象(常用于middleware, app生命周期内)thisappBiLogger;// ctx对象(常用于controller, service)thisctxBiLogger;// 全局使用globalTuiaLogger; ## Use ERRCODE ```js// controller(建议在controller书写响应)// 成功返回this.ctx.success({ desc: 'desc', data: { list: [], count: 0 }})// 失败返回this.ctx.fail({ error: this.ctx.ERRCODE.SYSTEM_ERROR, desc: '重写错误描述'}) // 如何自定义// 只要满足error既定的数据结构即可,结构如下exports.SYSTEM_ERROR = { code: 999999, desc: '系统错误',};
Use Eureka
// How to config// config.default.js configeureka = services: 'TUIA-ADVERT-CENTER' // How to use// service(建议在service中书写具体业务逻辑) thisappEureka OR globalEureka
注意
如果本地启服务注册到开发环境,访问开发环境域名会有流量分流到本地来,请注意!!!
Use Proxy
// config/config.default.js configproxy = { return pathname && reqmethod === 'GET' } options: // 默认target,实际没有用,因为使用router来做动态target target: 'http://www.baidu.com' { return globalEureka } pathRewrite: '^/proxytest': '' changeOrigin: true
Use SSO And JWT/Cookie-Session
验证流程
- npm run dev
- 访问http://localhost:3000
- 走登录->sso登录->登出
使用JWT
- 框架已将jwt的值存储在localStorage中
- 请求头需要增加jwt请求头作用户会话校验。比如jwt: eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiIxMjM0NTY3ODkwIiwibmFtZSI6IkpvaG4gRG9lIiwiaWF0IjoxNTE2MjM5MDIyfQ.SflKxwRJSMeKKF2QT4fwpMeJf36POk6yJV_adQssw5c
使用Cookie
- 服务端直接通过HTTP协议操作Cookie即可
注意
如果使用JWT方案,当用户信息失效(比如修改密码)或提前过期(比如修改用户名、生日等)时,需要前端代码配合清除缓存的jwt从而走重新签发jwt的流程以更新信息。如果使用Cookie-Session方案则清除服务端(或者redis)session即可。
Use Config Center
// https://console.duibadev.com.cn/apollo/#/service/applications/config/tuia-jimu-web-node// 取对应环境(默认为dev)对应工程(一般对应package.json的name值)的所有配置let allConfig = globalgetFromConfigCenter;// 取单个配置。返回明文(无论是否加密)let configValue = globalgetFromConfigCenter'key';
Use IP
// config/config.default.jsconfigproxy = true;configmaxProxyCount = 1; // use ctxthisctxip // 获取用户的 IP 地址thisctxhost // 获取用户请求的域名thisctxprotocol // 获取用户请求的协议
Use CORS
// config/plugin.jsexportscors = enable: true package: 'egg-cors'; // config/config.default.js// 支持跨域域名exportssecurity = // domainWhiteList: [ 'http://localhost:4200' ],;// 支持跨域,若设置origin,则security中的白名单失效exportscors = // {string|Function} origin: '*',// {string|Array} allowMethods: 'GET,HEAD,PUT,POST,DELETE,PATCH';
Use Cat
async { thisctxbody = 'hi, egg'; // 获取初始化好的cat对象 let cat = thisctxappcatClient; threadCat = true; //创建一个transaction实例 const trans = threadCat; //添加数据 trans; trans; const subTrans = a; subTrans; trans; ; // Event cat; cat; cat; // Error cat; } moduleexports = HomeController;
tuia-egg默认已统一监控所有接口请求,自动开启各环境cat,项目中无需配置。