Skip to content

Latest commit

 

History

History
267 lines (216 loc) · 7.58 KB

readme.md

File metadata and controls

267 lines (216 loc) · 7.58 KB

Ims logo

将一系列前端及后端的技术集成使其具有更加简单、快捷及畅快的开发体验。前端react/react-router/mobx等。后端express/typeorm等,基与typescript装饰器实现跨平台。前台后台同构(同一结构、同一框架)开发,系统启动时webpack自动打包,pm2为系统稳定运行保驾护航。集成一个完整项目所用到的绝大部分技术形成一个企业级、可插拔、颗粒化编程的应用框架,内置应用商店!

支持在线升级和安装模块及模板,拥有良好的开发框架、成熟稳定的技术解决方案、活跃的第三方开发者及开发团队,依托IMS开放的生态系统,提供丰富的扩展功能!

成熟的联盟链应用体系,使用本框架的站点之间可以相互合作共赢!

UI

  • 移动端taro,可编译生成微信小程序、百度小程序、native app还有手机网站及微信端。
  • pc端antd,企业级后台管理方案。

生态系统

项目 状态 介绍 文档
ims-core ims-core-status 核心 cli docs
ims-util ims-util-status 工具 util docs
ims-cli ims-cli-status 命令行 cli docs

系统特性

  • 模块化。提供模块的安装、卸载、更新、购买等基础功能,可以从应用市场轻松挑选自己需要的模块!

  • 去中心化。所有服务无中心服务器依赖,确保您的数据安全!

  • 全平台前端后端typescript,节省维护学习成本。

  • 多个服务器间安全通信。如果在A平台中有提供卖餐服务、B平台提供送货服务,那么A平台可以和B平台签署合作,当A平台有新的订餐订单是,在B平台生成一个配送任务,假如还有一个C平台专门提供配送人员,那么B和C平台可以签署合作,自动在C平台派送送货人员。

目录结构

系统目录结构

  • addons 应用目录
  • attachment 附近目录
  • config 配置目录
  • data 数据目录
  • template 模板目录
    • default admin mobile

应用目录结构

  • inc api接口
  • typeorm 数据库
  • template 模板源码
  • index.ts 入口

文档及社区

cli命令行工具

// 开发者模式
ims start -d
// 运营模式
ims start
// 浏览器打开 http://localhost:4201
// 按照指示安装

// 开发编译
ims build --name ims-core-adminer --output node_modules --watch
// 系统安装成功后,会在config目录生成一个server.json,请妥善保管。

权限篇

角色定义

admin 网站站长
manager 网站用户
develementor 开发者

模板权限

@Template({
    admins: [{
        path: '/addUser',
        role: ['manager'],
        component: 'admin/addUser'
    }]
})
class ImsDemoTemplate{}

接口权限

// 使用权限 网站管理员和网站编辑可以添加会员
@Role([ImsManager,managerEditor])
addUser(){
    // 添加会员
}

通信篇

Protocol 服务器与服务器间通信 单聊

@Controller({
    path: '/demo'
})
class ImsDemo{
    @Protocol()
    protocol: ProtocolProperty;
    // 方法装饰器可以接受消息
    // 注册一个名称为/ims-demo/demo的1对1频道
    @Protocol()
    receiveMessage(
        @Body() msg: any, 
        @Protocol() protocol: ProtocolParameter
    ){
        console.log(`接受来自${msg.from}的消息`,msg)
        // 回复消息
        protocol('频道',`回复消息`)
        // 注册频道
        this.protocol.handle(`频道`,()=>{})
        // 发送消息
        this.protocol.send(msg.from,`频道`,`消息`)
        // 取消
        this.protocol.unhandle(`频道`)
    }
}

Pubsub 服务器与服务器间通信 群发

@Controller({
    path: '/demo'
})
class ImsDemo{
    @Pubsub()
    pubsub: PubsubProperty;

    // 方法注册消息
    @Pubsub()
    listenPost(
        @Body() msg:any,
        @Pubsub() pubsub: PubsubParameter
    ){
        // 接受广播消息
        console.log(`来自${msg.from}的广播消息`,msg);
        // 处理消息后广播
        pubsub('频道',Buffer.from(`一些消息`))

        // 注册频道
        this.pubsub.subscribe(`频道`,()=>{})
        // 发布数据
        this.pubsub.publish(`频道`,`数据`)
        // 取消
        this.pubsub.unsubscribe(`频道`)
    }
}

Socket 用户与服务器间通信

// 用于浏览器与服务器间通信
@Controller({
    path: '/demo'
})
class ImsDemo{

    @Socket() socket: SocketProperty;

    @Socket()
    onReceive(
        @Body() msg: any,
        @Socket() socket: SocketParameter
    ){
        console.log(`接受来自客户端的数据`,msg)
        socket(msg.from,`回复数据`)
        // 群发
        this.socket(`roomid`,`数据`)
    }
}

http 客户与服务器间交互

@Controller({
    path: '/demo'
})
class ImsDemo{

    // get请求
    @Get()
    getId(@Query('id') id: string){

    }

    // post 请求
    @Post()
    post(@Body() msg: any){}

    ...其他方法
}

Cookie 服务端

import {Cookie,Controller} from 'ims-core';
@Controller({
    path: '/demo'
})
class ImsDemo {
    @Post()
    post(@Cookie() cookie: Cookie){
        cookie.get(name);
        cookie.getAll()
        cookie.set(name, value);
        cookie.remove(name);
    }
}

Guard 权限

@Role(verify((user) => {
    // 校验用户是否有权限
    return true;
}))
getUserList(){
    return [];
}

后续

支持在线升级和安装模块及模板,拥有良好的开发框架、成熟稳定的技术解决方案、活跃的第三方开发者及开发团队,依托IMS开放的生态系统,提供丰富的扩展功能!

再次感谢您对我们的支持,欢迎您对我们的系统提出意见,我们期待您的Pull Request。

相关连接

QQ交流群

Ims logo