0.3.4 • Published 1 year ago
@zsea/amis-server v0.3.4
基于百度AMIS实现的简单后台管理系统。
功能
- 登录
- 账号管理
- 角色管理
- 密码修改
- 页面设计
- API管理
安装
npm install --save @zsea/amis-server --only=production使用
const { htmlPath,extendRouter,AmisServer,useAmisServer,useAuthenticate } = require("./amis-server")包中没有包含
Koa-Router,你需要在你的项目中手动引入。
- 为
Router对象添加权限设置方法,方便自己开发模块时可以直接设置模块的权限。
extendRouter(Router,useAuthenticate(db),useUser(SECRET,tokenName));- db为基于linq2mysql的
Linq实例。 Router为koa-router类。useAuthenticate为实现的权限验证模块,你也可以实现自己的权限验证模块。useUser转换cookie中token内容为user对象的方法。你也可以实现自己的转换函数,函数签名为:parseUser(ctx)。- SECRET - JWT的密钥
- tokenName - cookie存储token的名称。默认值:amis_token
- 创建一个
AmisServer对象,AmisServer中实现了基本的权限管理功能。
const server=useAmisServer(router,db,JWT_SECRET,tokenName,watcher);
// 或者
const server=new AmisServer(router,db,JWT_SECRET,tokenName,watcher);router为koa-router实例。db为Linq实例。JWT_SECRET为JWT的密钥。tokenName为登录成功后存储token的cookie名称。watcher为监控事件,目前主要用于处理API变化时让服务端重新加载API数据。
此处的访问路径前缀必须是
/api/amis,即useAmisServer中传入的router的prefix值为/api/amis。
- 创建一个KOA服务,并添加路由。
var app = new Koa();
app.use(router.routes());- 添加静态资源
app.use(Asar(htmlPath, { "root": "/html", index: "index.html",default:"master.html" }));此处依赖了包
koa-asar。
注册自定义模块
在extendRouter中为Router扩展了setPermission方法,原型如下:
setPermission(text,anonymous);- text - 模块名称
- anonymous - 模块是否允许匿名访问,默认:false
该方法为最后添加的路由设置模块名称和访问权限。
router.get('test','/api/texxt',(ctx)=>{ctx.body="OK"}).setPermission('测试');此处的get可以换成其它任何有效的http方法,模块的主子关系使用:分隔。
为了能在权限管理中查看到对应的模块,需要将此路由添加到AmisServer中。
server.appendRouter(router);使用封装的数据库操作方法
库中封装了常用的数据库操作方法。
- usePager - 从数据库中分页查询数据
- useUpdater - 更新数据库中的数据
- useDeleter - 从数据为中删除记录
- useInsertOrUpdate - 向数据库中写入记录,如果存在,则更新。
- useInsert - 向数据库中写入记录。
参数说明
- useTable - 回调函数,返回一个
Linq对象。 - useQuery - 根据配置生成一个操作的
object的值。
示例
useTable
useTable(()=>db.table("users"));useQuery
{
id:({query,body,user})=>query.id
}在上面的对象中,id的值会在运行时生成。query和body分别是GET和POST传入的对象。user为当前登录对象。
上面说的
POST实际指:POST/PATCH等可以传入body的方法。
API管理
系统提供简单的API管理功能,可以完成数据库的CRUD操作。
示例
const cloud = new Cloud();
await cloud.use({db,dbs}, authorize, parseUser,watcher);其它
amis.sql为mysql的数据表创建语句。