0.3.4 • Published 11 months ago

@zsea/amis-server v0.3.4

Weekly downloads
-
License
ISC
Repository
-
Last release
11 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

11 months ago

0.3.0

1 year ago

0.3.2

12 months ago

0.3.1

1 year ago

0.3.3

12 months ago

0.2.3

1 year ago

0.2.2

1 year ago

0.2.5

1 year ago

0.2.4

1 year ago

0.2.1

1 year ago

0.1.1

1 year ago

0.1.0

1 year ago

0.0.1

1 year ago