0.3.4 • Published 10 months ago

@zsea/amis-server v0.3.4

Weekly downloads
-
License
ISC
Repository
-
Last release
10 months ago

英文

基于百度AMIS实现的简单后台管理系统。

功能

  • 登录
  • 账号管理
  • 角色管理
  • 密码修改
  • 页面设计
  • API管理

安装

npm install --save @zsea/amis-server  --only=production

使用

const { htmlPath,extendRouter,AmisServer,useAmisServer,useAuthenticate } = require("./amis-server")

包中没有包含Koa-Router,你需要在你的项目中手动引入。

  1. Router对象添加权限设置方法,方便自己开发模块时可以直接设置模块的权限。
extendRouter(Router,useAuthenticate(db),useUser(SECRET,tokenName));
  • db为基于linq2mysqlLinq实例。
  • Routerkoa-router类。
  • useAuthenticate为实现的权限验证模块,你也可以实现自己的权限验证模块。
  • useUser转换cookie中token内容为user对象的方法。你也可以实现自己的转换函数,函数签名为:parseUser(ctx)
    • SECRET - JWT的密钥
    • tokenName - cookie存储token的名称。默认值:amis_token
  1. 创建一个AmisServer对象,AmisServer中实现了基本的权限管理功能。
const server=useAmisServer(router,db,JWT_SECRET,tokenName,watcher);
// 或者
const server=new AmisServer(router,db,JWT_SECRET,tokenName,watcher);
  • routerkoa-router实例。
  • dbLinq实例。
  • JWT_SECRETJWT的密钥。
  • tokenName为登录成功后存储tokencookie名称。
  • watcher为监控事件,目前主要用于处理API变化时让服务端重新加载API数据。

此处的访问路径前缀必须是/api/amis,即useAmisServer中传入的routerprefix值为/api/amis

  1. 创建一个KOA服务,并添加路由。
var app = new Koa();
app.use(router.routes());
  1. 添加静态资源
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的值会在运行时生成。querybody分别是GETPOST传入的对象。user为当前登录对象。

上面说的POST实际指:POST/PATCH等可以传入body的方法。

API管理

系统提供简单的API管理功能,可以完成数据库的CRUD操作。

示例

const cloud = new Cloud();
await cloud.use({db,dbs}, authorize, parseUser,watcher);

其它

amis.sqlmysql的数据表创建语句。

0.3.4

10 months ago

0.3.0

11 months ago

0.3.2

11 months ago

0.3.1

11 months ago

0.3.3

11 months ago

0.2.3

11 months ago

0.2.2

11 months ago

0.2.5

11 months ago

0.2.4

11 months ago

0.2.1

12 months ago

0.1.1

1 year ago

0.1.0

1 year ago

0.0.1

1 year ago