将一系列前端及后端的技术集成使其具有更加简单、快捷及畅快的开发体验。前端react/react-router/mobx
等。后端express/typeorm
等,基与typescript
装饰器实现跨平台。前台后台同构(同一结构、同一框架)开发,系统启动时webpack
自动打包,pm2
为系统稳定运行保驾护航。集成一个完整项目所用到的绝大部分技术形成一个企业级、可插拔、颗粒化编程的应用框架,内置应用商店!
支持在线升级和安装模块及模板,拥有良好的开发框架、成熟稳定的技术解决方案、活跃的第三方开发者及开发团队,依托IMS开放的生态系统,提供丰富的扩展功能!
成熟的联盟链应用体系,使用本框架的站点之间可以相互合作共赢!
- 移动端taro,可编译生成微信小程序、百度小程序、native app还有手机网站及微信端。
- pc端antd,企业级后台管理方案。
项目 | 状态 | 介绍 | 文档 |
---|---|---|---|
ims-core | 核心 | cli docs | |
ims-util | 工具 | util docs | |
ims-cli | 命令行 | 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
入口
// 开发者模式
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(){
// 添加会员
}
@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(`频道`)
}
}
@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(`频道`)
}
}
// 用于浏览器与服务器间通信
@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`,`数据`)
}
}
@Controller({
path: '/demo'
})
class ImsDemo{
// get请求
@Get()
getId(@Query('id') id: string){
}
// post 请求
@Post()
post(@Body() msg: any){}
...其他方法
}
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);
}
}
@Role(verify((user) => {
// 校验用户是否有权限
return true;
}))
getUserList(){
return [];
}
再次感谢您对我们的支持,欢迎您对我们的系统提出意见,我们期待您的Pull Request。