zxy包帮助文档: ------------------------------------------------------------------------ 方法:runAllServer(conf,[middleware]); 注释:多核运行Express、Redis、Mysql 参数:conf:JSON格式 对于Express、Redis、Mysql的配置参数 参见frame structure deme中的conf.js middleware:可选参数 Express路由中间件 一个Function 可用于Session校验等 function (req, res, callback) 如果session通过 需要callback 否则则直接响应 返回值:无(控制台输出相关信息) ------------------------------------------------------------------------ 方法:runExpress(conf,[middleware]); 注释:单独运行Express 参数:conf:JSON格式 对于Express的配置参数 参见frame structure deme中的conf.js middleware:可选参数 Express路由中间件 一个Function 可用于Session校验等 function (req, res, callback) 如果session通过 需要callback 否则则直接响应 返回值:无(控制台输出相关信息) ------------------------------------------------------------------------ 方法:runMysql(conf,all); 注释:单独运行Mysql 参数:JSON格式 对于Mysql的配置参数 参见frame structure deme中的conf.js 返回值:无(控制台输出相关信息) ------------------------------------------------------------------------ 方法:runRedis(conf); 注释:单独运行Redis 参数:JSON格式 对于Redis的配置参数 参见frame structure deme中的conf.js 返回值:无(控制台输出相关信息) ------------------------------------------------------------------------ 原型函数说明: 1、格式化字符串 返回:格式化之后的字符串 "您的订单{0}已经提交成功,预计{1}送达".Format("20150616001", "06月20日") 2、获取字节长度 返回:字符串的字节长度(中文占用2个字节长度) "中文测试".GetByteLength() 3、去除空格 返回:去除左/右/前后空格后的字符串 " abc ".Ltrim() " abc ".Rtrim() " abc ".Trim() 4、格式化时间 返回:指定格式的时间字符串 new Date().Format('yyyy-MM-dd hh:mm:ss') 5、字符串开头/结尾是否包含指定字符串 返回:true/false 'abc'.StartWith('a') 'abc'.EndWith('c') ------------------------------------------------------------------------ 全局变量说明: 全局变量分3中类型:1、变量 使用“v_”打头 2、模块 使用“m_”打头 3、方法 使用“f_”打头 1、使用方法:require('zxy').app['全局变量别名'] 2、全局变量列表: 1、v_singleCoreProcess:当前环境是否是单核运行 2、m_apparatus:服务器操作相关 a、runCommand(cmd,callback) 运行Linux命令 参数:cmd 需要运行的命令 callback(err,stdout, stderr) 回调函数 返回值:无(使用回调函数) b、mkdirsSync(dirpath, mode):同步递归创建文件夹 参数:dirpath 将创建的目录路径 mode 目录权限(读写权限),默认0777 返回值:true/false 3、m_convert:转换相关 a、objToJson(model) 实体对象转JSON 参数:实体对象 返回值:JSON对象 失败返回undefined b、jsonStrToJson(jsonStr) JSON字符串转实体对象 参数:json格式的字符串 返回值:JSON对象 失败返回undefined c、objToStr(obj) object转string 参数:object对象 返回值:string类型的转换后的字符串 4、m_cryptogram:加解密相关 a、sha1(msg) SHA1加密 参数:要加密的字符串 返回值:SHA1加密后的字符串 b、md5(str) MD5加密 参数:要加密的字符串 返回值:MD5加密后的字符串 c、aesEncrypt(data,e_key) AES加密 参数:data 要加密的字符串 e_key 加密密钥 返回值:AES加密后的字符串 d、aesDecrypt(data,d_key) AES解密 参数:data 要解密的字符串 d_key 解密密钥 返回值:AES解密后的字符串 5、m_encode:编码相关 a、base64Encode(value) Base64编码 参数:要Base64编码的字符串 返回值:编码后的字符串 b、base64Decode(value) Base64解码 参数:要Base64解码的字符串 返回值:解码后的字符串 c、gbkToUtf8(str) GBK转UTF8 参数:要转换成UTF8编码的GBK编码格式字符串 返回值:编码后的字符串 6、m_obj:对象操作相关 a、clone(obj) 克隆对象 参数:需要克隆的对象 返回值:克隆后的对象 无法克隆或异常 返回undefined 7、m_obtain:获取数据相关 a、getRandomNum(Min, Max) 生成随机数 参数:Min 随机数的最小值 Max 随机数的最大值 返回值:指定的范围中的随机值 b、getClientIP(req) 获取客户端IP地址 参数:请求对象 返回值:客户端IP地址 c、getServerIP() 获取服务器IP地址 参数:无 返回值:服务端IP地址 d、GetUrlParams(name, url) 获取地址栏参数 参数:name 地址栏参数名 url 地址栏地址 默认window.location.search 返回值:参数对应的值 e、getRandomStr(len, chars) 生成随机字符串 参数:len 生成的长度 不传则为默认8 只允许int类型 chars 生成指定字符串允许出现的字符 不传则默认大小写字母与数字 返回值:介于chars之间的指定长度的随机字符串 f、guid() 获取Guid 参数:无 返回值:guid g、guid_empty() 获取空guid 参数:无 返回值:00000000-0000-0000-0000-000000000000 h、getStartArguments([splitStr]) 获取启动参数 参数:启动参数分隔符 返回值:JSON格式的参数 8、m_request:请求相关 a、postRequest(requestHead, host, port, path, data, headers, res, callback) POST请求 参数:requestHead 协议方式 http或https 默认http host 请求域名 port 请求端口 默认80 path 请求路由地址 data 请求数据 headers 请求头部 传null 头部默认只有Content-Length res 响应对象 用于请求直接响应 callback 请求结束后的回调 如果传了该参数 则res将失效 返回值:无(使用回调函数或res响应对象 直接响应) b、getRequest(requestHead, host, port, path, data, headers, res, callback) GET请求 参数:同POST请求 返回值:同POST请求 9、m_verify:验证相关 a、checkIdcard(idcard) 校验身份证号码 参数:需要校验的身份证号码字符串 返回值:JSON对象 包含errcode和errmsg errcode为0代表身份证号码格式合法 其余为不合法,并在errmsg中返回原因 b、checkCellphone(tel) 手机号格式校验 参数:需要校验的手机号码字符串 返回值:true/false c、checkEmail(email) 邮箱格式校验 参数:需要校验的邮箱字符串 返回值:true/false d、checkQQ(qq) QQ号验证 参数:需要校验的QQ号码字符串 返回值:true/false e、isArray(rows) 是否是数组 参数:需要校验的值 返回值:true/false f、isJson(obj) 是否JSON 参数:需要校验的值 返回值:true/false g、isObject(rows) 是否是object对象 参数:需要校验的值 返回值:true/false h、isJsonArray(obj) 是否JSON数组 参数:需要校验的值 返回值:true/false 10、m_mysql:mysql操作相关(必须执行过方法runAllServer或runMysql后,才能使用该模块) a、query(sql, [params], [callback]) 执行mysql语句 参数:sql 要执行的sql语句 params JSON格式的参数 防止SQL注入 callback(result) 执行结果回调函数 返回值:无(使用回调函数) 示例代码: ①使用参数化: zxy.app.m_mysql.query("select * from users where userid = @userid and pwd = @pwd",{userid:'admin',pwd:'pwd'},function(r){}) ②不使用参数化 zxy.app.m_mysql.query("select * from users where userid = '"+userid+"' and pwd = '"+pwd+"'",function(r){}) b、run(sql, [params]) 执行mysql语句 同query方法,但是该方法不提供回调,使用promise的then与catch 11、m_redis:redis操作相关(必须执行过方法runAllServer或runRedis后,才能使用该模块) a、set(key, value, [time]) 设置 参数:key 键 value 值 time 过期时间 单位秒 可选参数 如果不传 则永不过期 返回值:无 b、get(key, callback) 获取 参数:key 键 callback(result) 获取回调函数 获取成功 返回键对应的值 失败返回undefined 返回值:无(使用回调函数) c、del(key) 删除 参数:键 返回值:无 d、keys(pattern, callback) 获取所有的键 参数:pattern 匹配方式 类似正则表达式 默认“*” * 匹配数据库中所有 key h?llo 匹配 hello , hallo 和 hxllo 等 h*llo 匹配 hllo 和 heeeeello 等 h[ae]llo 匹配 hello 和 hallo ,但不匹配 hillo callback(keys) 所有匹配的键 返回值:无(使用回调函数) e、ttl(key, callback) 以秒为单位返回 key 的剩余生存时间 如果不存在key或者长期有效 返回-1 参数:key 键 callback(time) 剩余的生存时间 单位秒 返回值:无(使用回调函数) f、exists(key, callback) 是否存在key 参数:key 键 callback(exists) true/false 返回值:无(使用回调函数) g、rpush(key, value) 将一个或多个值 value 插入到列表 key 的表尾(最右边) 可用于队列消息的发布 参数:key 列表键 value 值 返回值:无 h、lpop(key, callback) 移除并返回列表 key 的头元素 可用于队列消息的订阅 参数:key 列表键 callback(value) 列表中的头元素值 返回值:无(使用回调函数) 12、m_ucpaas:ucpaas短信网关操作相关(必须执行过方法runAllServer或runMysql后,才能使用该模块,并需要在zxy/lib/ucpaas-sms/conf.js进行必要配置) a、sendSMSCode(to,content) 发送验证码短信 参数:to 收件人手机号码 content 短信模版中的替换项,多个替换项按照顺序使用英文逗号分割 返回值:无(使用promise的then与catch) b、sendSMSNotify(to,content) 获取 参数:to 收件人手机号码 content 短信模版中的替换项,多个替换项按照顺序使用英文逗号分割 返回值:无(使用promise的then与catch) 13、f_job:schedule定时任务 如果需要执行定时任务,在启动runAllServer之前,将f_job赋值(f_job为JSON格式的数组,每个JSON对应一个定时任务),即可运行定时任务 示例如下: var zxy = require('zxy'); zxy.app.f_job = [{ "conf": { "second": [0] }, "script": path.join(__dirname, './job.js') },{ "conf": { "second": [0] }, "script": function(){ ... } }]; zxy.runAllServer(setting); 示例中的conf为schedule的配置,详情请参考http://www.jb51.net/article/50597.htm 如:second: [0,1,2,3,4,5,6,7,8,9,10,...55,56,57,58,59] //每隔1秒执行一次 second: [0, 5, 10, 15, 20, 25, 30, 35, 40, 45, 50, 55] //每隔5秒执行一次 minute: [0,1,2,3,4,5,6,7,8,9,10,...55,56,57,58,59] //每隔1分钟执行一次 minute: 30 //每小时的30分执行一次(即每1小时一次) script参数,可以是一个function,也可以是一个文件地址,如果是一个文件地址 文件中必须按照“module.exports = function () {...}”这样的格式写。 14、m_wechat:微信公众平台集成 微信公众平台,需要依赖mysql、redis、express 每次接收到微信的推送后,会调用zxy.app.f_processingBusiness(json); 其中json为微信推送的消息内容,详见微信帮助文档。 a、getAccessToken(callback) 获取微信调用凭证 b、getWechatUserInfoBySnsapiBase(code, callback) Oauth2.0 根据Code获取微信信息 snsapi_base方式 c、replyWechat(res, ToUserName, FromUserName, Content, Articles) 被动回复消息 参数:res 响应对象 ToUserName 接收方帐号(收到的OpenID) FromUserName 开发者微信号 Content 回复的消息内容(换行:在content中能够换行,微信客户端就支持换行显示) Articles 多条图文消息信息,默认第一个为大图,注意,如果图文数超过10,则将会无响应 数据格式为json数组 示例:[{Title:"图文消息标题",Description:"图文消息描述",PicUrl:"图片链接,支持JPG、PNG格式,较好的效果为大图360*200,小图200*200",Url:"点击图文消息跳转链接"},...] d、sendTextMessage(openid, message) 发送客服文本消息 e、sendImageMessage(openid, mediaid) 发送客服图片消息 f、sendVoiceMessage(openid, mediaid) 发送客服语音消息 g、sendVideoMessage(openid, media_id, thumb_media_id, title, description) 发送客服视频消息 参数:thumb_media_id 缩略图的媒体ID title 图文消息/视频消息/音乐消息的标题 description 图文消息/视频消息/音乐消息的描述 h、sendMusicMessage(openid, title, description, musicurl, hqmusicurl, thumb_media_id) 发送客服音乐消息 参数:title 图文消息/视频消息/音乐消息的标题 description 图文消息/视频消息/音乐消息的描述 musicurl 音乐链接 hqmusicurl 高品质音乐链接,wifi环境优先使用该链接播放音乐 thumb_media_id 缩略图的媒体ID i、sendNewsMessage(openid, Articles) 发送客服图文消息 参数:Articles 多条图文消息信息,默认第一个为大图,注意,如果图文数超过10,则将会无响应 数据格式为json数组 示例:[{title:"图文消息标题",description:"图文消息描述",picurl:"图片链接,支持JPG、PNG格式,较好的效果为大图360*200,小图200*200",url:"点击图文消息跳转链接"},...] j、getUserInfo(openid, callback) 获取用户信息 k、getopenid(code, callback) 获取openid Oauth2.0网页授权 l、sendTemplateMessage(templateid, openid, url, data) 发送模版消息 参数:templateid 模版ID openid 接收人 url 点击跳转的地址 data 一个JSON格式的替换项 如 {"UserName":"周先生"} ------------------------------------------------------------------------ 默认API说明: 1、文件的上传与下载(UI端实现方式参考zxy/frame structure demo/static/upload.html) 测试地址 http://127.0.0.1:88/express/upload.html 1、上传文件(模拟Form表单提交) a、接口地址 http://host:port/zxy-upload b、请求方式 POST c、参数 Form表单存放待上传的文件 d、返回值 上传的文件对应的GUID,可用于下载,上传多个,则返回GUID数组 2、下载文件 a、接口地址 http://host:port/zxy-download/:guid b、请求方式 GET c、参数 guid:上传时返回的GUID值 d、返回值(浏览器自动提示下载保存) 3、文件属性获取 a、接口地址 http://host:port/zxy-attribute/:guid b、请求方式 GET c、参数 guid:上传时返回的GUID值 d、返回值 JSON格式的文件详细属性 包括:文件名originalname、文件类型mimetype、文件大小size、上传时间、上传批次号(同一批次号代表同一个Form表单上传的多个文件) 4、文件预览 a、接口地址 http://host:port/zxy-preview/:guid b、请求方式 GET c、参数 guid:上传时返回的GUID值 d、如果文件为图片,可直接在img标签的src中写入预览地址,则html会直接显示图片;如果为视频文件,可直接在video的src中写入预览地址,则html会直接显示视频并可进行播放 5、获取微信JsSDKTicket注册票据 a、接口地址 /zxy-wechat/jssdksign?url=encodeURIComponent(window.location.href.split('#')[0]) b、请求方式 GET c、参数 url:当前页面地址 d、返回值 sign