# 阔老板 **Repository Path**: 13yd-osc/oldkuosoft ## Basic Information - **Project Name**: 阔老板 - **Description**: Node.js JavasSript服务框架是为了简化企业级应用敏捷开发而诞生的,快速实现云函数计算,遵循Apache2开源协议发布。秉承简洁实用的设计原则,在保持出色的性能和至简的代码,也注重易用性 - **Primary Language**: Unknown - **License**: Apache-2.0 - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 17 - **Forks**: 6 - **Created**: 2021-06-17 - **Last Updated**: 2025-07-21 ## Categories & Tags **Categories**: backend **Tags**: None ## README 系统名称:阔老板 核心语言:Javscript Node.js 阔老板 Node.js JavasSript服务框架是为了简化企业级应用敏捷开发而诞生的,快速实现云函数计算,遵循Apache2开源协议发布。 秉承简洁实用的设计原则,在保持出色的性能和至简的代码的同时,也注重易用性。(前后端统一编程) 微信号:kuosoft 证书号:软著登字第7825831号 官方网址:[https://www.kuosoft.com](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内容管理](https://gitee.com/13yd-osc/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) {}