3 Star 16 Fork 5

13yd / 阔老板

加入 Gitee
与超过 800 万 开发者一起发现、参与优秀开源项目,私有仓库也完全免费 :)
免费加入
克隆/下载
取消
提示: 由于 Git 不支持空文件夾,创建文件夹后会生成空的 .keep 文件
Loading...
README.md

系统名称:阔老板
核心语言:Javscript Node.js
阔老板 Node.js JavasSript服务框架是为了简化企业级应用敏捷开发而诞生的,快速实现云函数计算,遵循Apache2开源协议发布。
秉承简洁实用的设计原则,在保持出色的性能和至简的代码的同时,也注重易用性。(前后端统一编程)
微信号:kuosoft
证书号:软著登字第7825831号
官方网址:https://www.kuosoft.com
开源代码协议 Apache License 2.0 详见 http://www.apache.org/licenses/
因业务调整,后续将转JavaScript工作 阔老板顺势而生

系统介绍

自带后台管理系统
最大特色:云JavaScript CMS框架,支持阿里云(函数计算),腾讯(函数计算), 本地运行
前端以 layui , jquery 为基础
原创前端快速表单函数,jsfrom 快速生成表单修改新增数据!
极简路由模式,根据url访问对应的类调用对应的函数!
每个功能以插件形式集成,使得每个插件都是相互独立,又能相互关联,强大又灵活!
特有的插件函数 Construct 没有找到的类函数,直接会调用这里,方便开发多功能系统!
特有的url只能以小写函数名访问 , 大写函数名只能通过内部调用!
总结:小巧,灵活,强大,方便,支持云的Javascript框架
新增websocket 和 udp 本地通信

系统安装 NODE 12 +

npm install 安装依赖
/config/kuo.sql 倒入数据库
config/KuoSoft.com.js MYSQLconfig 配置数据库
WZHOST CDNHOST 运行网址
Http 运行环境
开发执行 node build.js br 运行和生成组合代码
运营执行 node kuoServerLess.js
访问后台 /@/admin/ 管理账号 admin 密码 qqqqaa

视频教程

链接: https://pan.baidu.com/s/1fAy93oYvbniKvYwJfV6pTg
密码: l5ad

插件安装

导入插件文件 执行 node build.js br
到 管理后台 插件管理 输入插件名字 本地安装 即可

插件列表

CMS内容管理

后续计划

登陆账户系统
支付订单系统
免签系统
WebSocket 支持 学习模版一套

系统文件目录介绍

kuo.js 核心代码路由拆分
build.js 打包工具 node build.js br Controller 所有代码打包在一起
生成 kuo.bin 字节码CMS主程序,保护系统源码
生成 kuoServerLess.js CMS主程序 README.md 说明文档
package.json 支持依赖 npm install 进行初始安装
LICENSE Apache License 2.0
/config/系统配置文件和风格模版
/Controller/ 系统核心类函数
/temp/ 缓存文件夹 本地运行需要
/www/ 网站静态资源目录

开机或者守护运行

node guard.js 守护主进程
kuosoft.txt 守护启动一行一个

Nginx 反向代理或者直接CDN

location ~ ^/(Tpl|attachment|favicon.ico) {
root 程序目录/www;
}

location ~ ^/(Tpl|attachment|favicon.ico)(.*) {
alias 程序目录/www/$1$2;
}

location / {
proxy_pass http://127.0.0.1:801/;
proxy_set_header Host $host:$server_port;
}

config 文件夹

KuoSoft.com.js 系统配置文件详细看注视
1.ttf 图形验证码字体
kuo.sql 数据库 初始运行需要倒入系统
/admin/index.html 管理后台模版
key.key key.pem 本地https 证书演示

Controller 基础操作类函数

Kuo_admin.js 管理后台
/admin/* 管理后台操作方法
Kuo_Cache_Cache.js 系统基础类:本地 kv缓存临时
Kuo_Cache_CacheFile.js 系统基础类:本地 kv缓存单文件
Kuo_Cache_FileCache.js 系统基础类:本地 kv缓存多文件
Kuo_Cache_Memcached.js 系统基础类:Memcached kv缓存
Kuo_Cache_MongoDB.js 系统基础类:MongoDB kv缓存
Kuo_Cache_Mysql.js 系统基础类:Mysql kv缓存云函数使用居多
Kuo_Cache_Redis.js 系统基础类:Redis kv缓存
Kuo_TPL.js 系统基础类:模版引擎 采用layui 中的 laytpl
Kuo_Tools.js 系统基础类:常用工具类函数
Kuo_Mysql.js 系统基础类:mysql 操作类
Kuo_UP_Aliyun.js 系统基础类:阿里云对象储存
Kuo_UP_Tencent.js 系统基础类:腾讯云对象储存
Kuo_UP_Qiniup.js 系统基础类:七牛对象储存
Kuo_UP_KuoFile.js 系统基础类:本地上传文件处理类

系统常用函数类 php 函数名居多

XmlJx("xml解析"); xml解析
strtolower("字符串"); 转换为小写
json_encode({}); JSON压缩
json_decode({}); JSON还原
is_array([]); 判断是不是数组对象 不是字符串即是真
implode(",",[]); 根据字符数组相连
explode(",",""); 根据,拆分为数组
str_replace([],[],""); 字符替换
strpos("kuosoft.com","kuo"); 字符包含判断
await jiaqian($uid , $type , $money , $integral , $currency , $data , $ip , $plugin , $sql )
调整用户货币 $uid=用户id $type=日志分类 $money=余额 $integral=积分 $currency=货币
$data=详细记录 $ip=用户ip $plugin=插件名字 $sql=sql事务可以链接上面sql一起执行
strtotime("2020-01-01"); 时间转时间戳 pichttp("图片地址"); 图片地址转换 自动增加前缀
Md5(""); md5 签名
Kuomm(""); 密码算法
POST(post,k,v); 云函数用于拆分post
MODE(类实例,是否只克隆一次); 克隆类实例
Mode("类名字",{}); 调用类和传递参数
MkDirs(""); 创建目录
DelDirs(""); 删除目录全部文件
LTrim("kuo","k"); 字符左删除
RTrim("kuo","o"); 字符右删除
Trim("okuo","o"); 两边删除
await db("表名字"); 申明开始处理哪个表
await GET("url",{}); get 请求和参数 request
await POST("url",{}); post 请求和参数 request
await Kuolog($baio, $id , $type , $data , $mode , $plugin , $ip ) 日志记录
$baio=[ adminlog || userlog 可选] $id=用户id $type=日志类型
$data=日志详情 $mode=函数名字 $plugin=插件名字 $ip=ip
KuoLink([],1); 自动组合生成链接 第二参数 1 默认带后缀 2 不带
KuoSecurity(); url 安全过滤
reset([]); 取数组第一个值
count([]); 统计个数包括对象
await Kuoconfig("名字", 0 ); 读取通用配置名字, 缓存规则 0 默认读取 1 更新 2 删除 await Kuoplus("插件名字", 0 ); 读取插件数据里信息, 缓存规则 0 默认读取 1 更新 2 删除
await Uid("用户id", 0 ); 读取用户数据, 缓存规则 0 默认读取 1 更新 2 删除
await Adminid("管理员id", 0 ); 读取管理员用户数据, 缓存规则 0 默认读取 1 更新 2 删除
SJ(小,大); 生成随机数字
VCODE(sessionid); 生成图形验证码
Upload(biao,files); 处理上传文件 biao 接收name files 接收列表
callback(request,context); 核心 路由分配

KV缓存系统

详细配置 config/KuoSoft.com.js
MemClass = Mysql 单个可选 [Cache CacheFile FileCache Mysql Memcached Redis MongoDB] MemClassConfig = 配置详情
Cache 可以不需要
Mysql {dbname:"memcached"} 数据库名字
CacheFile {dbname:"CacheFile"} 独立数据文件 带保存 temp 下
FileCache {dbname:"File"} 分散数据文件 后缀 保存 temp 下
Memcached {dbname:"memcached",Server:["127.0.0.1:11211"],options:{timeout:1000,poolSize:50}}
Redis {dbname:"Redis",Server:6379,options:{}}
MongoDB {dbname:"memcached",Server:"mongodb://127.0.0.1:27017"}

统一操作 await Mem.Get("key"); //获取值
await Mem.Put("key","值支持对象更新部分","时间"); //更新值 可以只更新时间 时间0不过期
await Mem.Set(key,value,"时间");//设置或者新增值
await Mem.Add(key,"默认值1",time);//增加值 支持时间过期
await Mem.Cut(key,"默认值1",time);//减少值 支持时间过期
await Mem.Del(key);//删除
await Mem.Flush(key);// key 为空清理全部 不为空删除包含关键词

Mode("Tools") 系统常用处理类

.Time() 返回时间戳
.Mulu(""); 返回目录
.Fenye:( $MEYE , $TOTAL ,$GESHU, $PAGE,$URLQ,$URLH ) 前端html分页
$MEYE=每页个数 $TOTAL=总数 $GESHU=分页按钮个数 -1 只有上下页
$PAGE = 当前页码 $URLQ=组合链接page前 $URLH=组合链接page后
.TIQUimg("html内容图片",下标); 默认返回所有图片数组 带下标提取第几个
.Int(""); 强行转int
.Xss("");Xss 过滤
.GUoLV("");过滤..文件路径处理
.Uuid(); uuid 生成
.Date(fmt,shijia) 根据 Y-m-d H:i:s ,时间戳 格式化
.UTC() UTC 时间用于浏览器返回处理
.SetCookieTiem() 生成cookie 过期时间

数据库操作 需要在 async 里操作

支持连续操作 let $DB = await db("admin"); 需要操作的表
let data = await $DB.Where({}).Order("").Limit(数量,页码).Find();单个查询
let data = await $DB.Where({}).Order("").Limit(数量,页码).Select();多个查询
let data = await $DB.Where({}).Order("").Limit(数量,页码).Update({});更新
let data = await $DB.Insert({}); 插入
let data = await $DB.Where({}).Total();//获取总总数
let data = await $DB.Qurey("sql 语句 ??表 ?字段 ",[]);原声执行操作
事务操作 $DB.SetShiwu(true);后面 修改删除插入 都会返回sql 语句
$DB.ShiWu("事务sql"); 执行事务
辅助类
$DB.ZhiCha("只查询的字段").Select(); 只查询需要的字段
$DB.PaiChu("不需要的字段").Select(); 不需要的字段
$DB. Wherezuhe({}); 返回组合后的 where 语句
$DB = await $DB.SetTable("更改选择的表"); 同一个db 执行
每次 db("")都会是一个新的链接 连续操作的直接进行SetTable 切换表

  • 新增表名占位符号 @
  • 新增表OR连续符号 ~

游戏服务器

新增后台管理网关和统计
多网关 websocket + 后端多业务 udp 通信
数据打包采用 msgpack-lite
/config/KuoSoft.com.js 配置参数
global.WSS = true;//网关开启
global.WSPingTime = 70000;//ping 间隔时间
global.GATEID = 1; //后台 网关管理 网关id
global.Debug = true;//调试模式会看到通信数据运营模式注意关闭

服务器启动

node build.js br Bat_login 网关id 启动一个测试后端
Bat_login 列子后端
7456 udp端口
其他后端建议复制 Bat_login 后重命名

运营模式
global.Debug = false; //调试模式关闭
node build.js br
node kuoServerLess.js @@game Bat_login 网关id

后端接收的参数
DATA_["EE"] = 来自那个fid;
DATA_["EB"] = 来自哪个网关;
DATA_["EU"] = 用户id ;
DATA_["ER"] = 角色id;
DATA_["ip"] = 用户Ip
DATA_["E"] = 动作 「Online 上线通知 Dropped 掉线通知 其他自定义」
DATA_["L"] = 内容

发送给网关
E = SETUP //设置用户的信息
L = {U:-1,R:-1,Q:-1}
U 用户id -1初始化 0 不变 其他对应值
R 角色id -1初始化 0 不变 其他对应值
Q 游戏区 -1初始化 0 不变 其他对应值
例入: THIS.FASONG_(DATA.token,"SETUP",{U:0,R:0,Q:THIS.ServerId});

其他消息发送
发送目标 可选值「
DATA.token
0 全服
-1 本服
[角色的id,角色的id,角色的id] 数组多人通信

内容小数据发送 THIS.FASONG_(发送目标 ,动作,内容 );
例入: THIS.FASONG_(DATA.token,"MSG","欢迎使用阔老板");
内容大数据发送系统会自动分包 THIS.FASONG(发送目标 ,动作,[内容,内容] );
例入: THIS.FASONG(DATA.token,"map",["内容",{aa:""}]);

游戏客户端

通信地址:ws://服务网关/KuoSoft.com
例入: ws://127.0.0.1/KuoSoft.com
断线重新链接部分
onopen 后 发送 {Kuo:本地储存通信uuid }
会立马收到当前的通信uuid注意更新
客服端注意传输打包数据使用下面即可兼容小程序
try {
let buf = msgpack.encode(wenzi);
if (buf.byteOffset === 0 && buf.byteLength === buf.buffer.byteLength) {
ws.send(buf.buffer);
} else {
ws.send(buf.buffer.slice(buf.byteOffset, buf.byteOffset + buf.byteLength));
}
}catch (err) {}

简介

Node.js JavasSript服务框架是为了简化企业级应用敏捷开发而诞生的,快速实现云函数计算,遵循Apache2开源协议发布。秉承简洁实用的设计原则,在保持出色的性能和至简的代码,也注重易用性 展开 收起
JavaScript 等 3 种语言
Apache-2.0
取消

发行版 (1)

全部

阔老板

贡献者

全部

近期动态

加载更多
不能加载更多了
1
https://gitee.com/13yd-osc/kuosoft.git
git@gitee.com:13yd-osc/kuosoft.git
13yd-osc
kuosoft
阔老板
master

搜索帮助