├── App.vue ├── README.MD ├── lib └── goeasy-1.0.5.js ├── main.js ├── manifest.json ├── pages.json ├── pages └── index │ └── index.vue ├── static └── logo.png └── uni.scss /App.vue: -------------------------------------------------------------------------------- 1 | 14 | 15 | 18 | -------------------------------------------------------------------------------- /README.MD: -------------------------------------------------------------------------------- 1 | # 支持App,H5,微信小程序 2 | 3 | ## 替换您的appkey 4 | 打开main.js,找到初始化GoEasy的地方,将appkey替换成您自己的appkey。 5 | 6 | ## 小程序注意事项 7 | 如果开发微信小程序,需要登录到微信官方后台,将wx-hangzhou.goeasy.io加入到socket合法域名列表 8 | 9 | ## 还没有appkey? 10 | 1. 请先去[GoEasy官网](https://www.goeasy.io)进行注册 11 | 2. 创建一个应用 12 | 3. 在应用详情页面即可查看到appkey 13 | 14 | ## 体验 15 | 建议在不同的客户端同时运行,体验多个客户端之间互动 -------------------------------------------------------------------------------- /lib/goeasy-1.0.5.js: -------------------------------------------------------------------------------- 1 | // [AIV_SHORT] Build version: 1.0.5 - Tuesday, March 24th, 2020, 6:15:44 PM 2 | !function(t,e){"object"==typeof exports&&"object"==typeof module?module.exports=e():"function"==typeof define&&define.amd?define([],e):"object"==typeof exports?exports.GoEasy=e():t.GoEasy=e()}(this,function(){return function(t){function e(o){if(n[o])return n[o].exports;var i=n[o]={exports:{},id:o,loaded:!1};return t[o].call(i.exports,i,i.exports,e),i.loaded=!0,i.exports}var n={};return e.m=t,e.c=n,e.p="",e(0)}([function(t,e,n){"use strict";var o="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t},i=n(1),r=n(35),s=[],c=!1,a=function(t){if(c){var e=(new Date).formatDate("yy-MM-dd hh:mm:ss.S");s.push(e+" "+t+"\n")}},u=function(){this.currentNumber=this.initialCurrentNumber()};u.prototype={maxNumber:parseInt("10"),number:function(){return this.currentNumber},initialCurrentNumber:function(){var t=this;return g()||m()?t.currentNumber||(t.currentNumber=y(1,parseInt("10"))):t.currentNumber=parseInt(h("goeasyNode")),t.currentNumber>0&&t.currentNumber-1&&(e=!0,this.splice(n,1)),this.unshift(t);this.length>300;)this.pop();return e},k.prototype={debug:!1,socket:null,authorizeResult:null,channels:[],networkStatus:"initial",subscribeBuffer:[],maxRetries:3,_manualConnect:!1,_manualDisconnectStatus:"initial",authorizeStatus:"initial",receivedGuids:new d,_copyConfig:function(t){this._appkey=t.appkey,this._otp=t.otp,this._isEmpty(t.userId)?(this._userId="anonymous-"+Math.floor(1e5*Math.random()+1),t.userId=this._userId):this._userId=this._trim(t.userId),this._isEmpty(t.userData)?this._userData="":this._userData=this._trim(t.userData),1==t.debug&&(this.debug=!0)},subscribe:function(t){if(a("subscribe() subscribe:"+JSON.stringify(t)),"number"==typeof t.channel&&(t.channel=t.channel.toString()),this._isEmpty(t.channel))return a("subscribe() 'channel' is required."),void("undefined"!=typeof t.onFailed&&t.onFailed({code:400,content:"channel is required"}));this.subscribeBuffer[t.channel]=t,a("subscribe() add subscription into subscribeBuffer:"+JSON.stringify(this.subscribeBuffer[t.channel]));var e=this;null!=e.authorizeResult&&"connected"==e.networkStatus&&(t.checking=!0,e.doSubscribeAndCheckAck(t))},doSubscribe:function(t){a("doSubscribe() with subscription:"+JSON.stringify(t));var e=this;if(200==e.authorizeResult.code)if(this._isEmpty(t.channel))a("doSubscribe() subscribe failed with empty channel"),e.sendlogs(),t.finish=!0;else{var n={channel:t.channel,sid:e.authorizeResult.sid};a("doSubscribe() emit subscribe params:"+JSON.stringify(n)),e.socket.emit("subscribe",n,function(n){a("doSubscribe() receive subscribe ack:"+JSON.stringify(n)),1!=t.finish&&(t.finish=!0,delete e.subscribeBuffer[t.channel],a("doSubscribe() delete subscription from subscribeBuffer:"+JSON.stringify(t)),200==n.resultCode?(e.channels[t.channel]=t,"undefined"!=typeof t.onSuccess&&t.onSuccess()):"undefined"!=typeof t.onFailed&&t.onFailed({code:n.resultCode,content:n.content}))})}else a("doSubscribe() return with authorize code:"+e.authorizeResult.code)},doSubscribeAndCheckAck:function(t){a("doSubscribeAndCheckAck():"+JSON.stringify(t)),t.finish=!1;var e=this;e.doSubscribe(t);var n=setInterval(function(){t.finish||"connected"!=e.networkStatus?(a("doSubscribeAndCheckAck() clean doSubscribeAndCheckAck:"+JSON.stringify(t)),t.checking=!1,clearInterval(n)):(a("doSubscribeAndCheckAck() retry doSubscribe:"+JSON.stringify(t)),e.doSubscribe(t))},1300)},subscribePresence:function(t){return"number"==typeof t.channel&&(t.channel=t.channel.toString()),this._isEmpty(t.channel)?void("undefined"!=typeof t.onFailed&&t.onFailed({code:400,content:"channel is required"})):(t.channel=t.channel+"_presence",void this.subscribe(t))},unsubscribe:function(t){function e(){200==o.authorizeResult.code?o.socket.emit("unsubscribe",{sid:o.authorizeResult.sid,channel:t.channel},function(e){i=!0,200==e.resultCode?(delete o.channels[t.channel],a("doUnsubscribe() delete from channels:"+JSON.stringify(t)),"undefined"!=typeof t.onSuccess&&t.onSuccess()):"undefined"!=typeof t.onFailed&&t.onFailed({code:e.resultCode,content:e.content})}):(i=!0,"undefined"!=typeof t.onFailed&&t.onFailed({code:o.authorizeResult.code,content:o.authorizeResult.content}))}function n(){e();var n=setInterval(function(){!i&&"connected"==o.networkStatus&&r<0?(r++,e()):r==o.maxRetries?(clearInterval(n),"undefined"!=typeof t.onFailed&&t.onFailed({code:408,content:"Server unreachable or timeout"})):clearInterval(n)},1e3)}if("number"==typeof t.channel&&(t.channel=t.channel.toString()),this._isEmpty(t.channel))return this.log("'channel' is required."),void("undefined"!=typeof t.onFailed&&t.onFailed({code:400,content:"channel is required"}));if("undefined"==typeof this.channels[t.channel])return this.log("'channel' is not subscribed."),void("undefined"!=typeof t.onFailed&&t.onFailed({code:400,content:"channel["+t.channel+"] is not subscribed"}));var o=this,i=!1,r=0;if(null!=this.authorizeResult&&"connected"==o.networkStatus)n();else var s=setInterval(function(){null!=o.authorizeResult&&"connected"==o.networkStatus?(clearInterval(s),n()):(r++,r==o.maxRetries&&(clearInterval(s),"undefined"!=typeof t.onFailed&&t.onFailed({code:408,content:"Server unreachable or timeout"})))},1e3)},unsubscribePresence:function(t){return"number"==typeof t.channel&&(t.channel=t.channel.toString()),this._isEmpty(t.channel)?void("undefined"!=typeof t.onFailed&&t.onFailed({code:400,content:"channel is required"})):(t.channel=t.channel+"_presence",void this.unsubscribe(t))},publish:function(t){function e(e){200==o.authorizeResult.code?o.socket.emit("publish",{sid:o.authorizeResult.sid,channel:t.channel,content:t.message,guid:e,retried:r},function(e){i=!0,200==e.resultCode?"undefined"!=typeof t.onSuccess&&t.onSuccess():"undefined"!=typeof t.onFailed&&t.onFailed({code:e.resultCode,content:e.content})}):(i=!0,"undefined"!=typeof t.onFailed&&t.onFailed({code:o.authorizeResult.code,content:o.authorizeResult.content}))}function n(){var n=o.uuid_goeasy();e(n);var s=setInterval(function(){!i&&r500?e({code:400,content:"userIds is over max length 500"}):this.socket.emit("hereNowByUserIds",n,function(t){e(t)}))},history:function(t,e){return"number"==typeof t.channel&&(t.channel=t.channel.toString()),this._isEmpty(t.channel)?void("undefined"!=typeof e&&e({code:400,content:"channel is required"})):void this.socket.emit("historyMessages",t,function(t){"undefined"!=typeof e&&e(t)})},disconnect:function(){var t=this;if(this._manualDisconnectStatus="disconnecting","connected"===this.networkStatus&&"authorized"===this.authorizeStatus&&200===this.authorizeResult.code){var e=function(){t.socket.disconnect()},n=function(){t._manualDisconnectStatus="disconnected"};t.tryEmit("manualDisconnect",null,e,n)}else this.socket.disconnect()},reconnect:function(){this._manualConnect=!0,this.socket.connect()},tryEmit:function(t,e,n,o){function i(){r.socket.emit(t,e,function(t){s=!0,"undefined"!=typeof o&&o(t)})}var r=this,s=!1,c=0;i();var a=setInterval(function(){var t=c===r.maxRetries;s||t?(clearInterval(a),t&&"undefined"!=typeof n&&n()):(c++,i())},1e3)},_callbackEvents:function(t){var e=this;this.socket.on("message",function(t,n){var o=JSON.parse(t);e.receivedGuids.unshiftGuid(o.i)||(o.a&&e.socket.emit("ack",{publishGuid:o.i}),e._endWith(o.n,"presence")?"undefined"!=typeof e.channels[o.n].onPresence&&e.channels[o.n].onPresence(JSON.parse(o.c)):"undefined"!=typeof e.channels[o.n].onMessage&&e.channels[o.n].onMessage({time:o.t,channel:o.n,content:o.c}))}),this.socket.on("connect",function(){function n(){a("doAuthorize() emit authorize params:"+JSON.stringify(o)),e._isEmpty(o.artifactVersion)&&e.sendlogs(),e.socket.emit("authorize",o,function(n){if(a("doAuthorize() received authorize ack:"+JSON.stringify(n)),!i)if(i=!0,e.authorizeStatus="authorized",e._manualDisconnectStatus="initial",null==e.authorizeResult&&(e.authorizeResult={}),e.authorizeResult.code=n.resultCode,e.authorizeResult.content=n.content,200==n.resultCode){if(null==e.authorizeResult.sid)e.authorizeResult.sid=n.sid;else if(e.authorizeResult.sid!=n.sid){e.authorizeResult.sid=n.sid;for(var o in e.channels)e.channels.hasOwnProperty(o)&&(a("doAuthorize() sid expired and will call doSubscribeAndCheckAck from channels:"+JSON.stringify(e.channels[o])),e.doSubscribeAndCheckAck(e.channels[o]))}for(var r in e.subscribeBuffer)e.subscribeBuffer.hasOwnProperty(r)&&(a("doAuthorize() will doSubscribeAndCheckAck from subscribeBuffer:"+JSON.stringify(e.subscribeBuffer[r])),e.doSubscribeAndCheckAck(e.subscribeBuffer[r]));"undefined"!=typeof t.onConnected&&t.onConnected()}else"undefined"!=typeof t.onConnectFailed&&t.onConnectFailed({code:n.resultCode,content:n.content})})}if("disconnecting"!==e._manualDisconnectStatus&&"disconnected"!==e._manualDisconnectStatus||e._manualConnect){e.authorizeStatus="authorizing",e.networkStatus="connected";var o={appkey:e._appkey,userId:e._userId,userData:e._userData,otp:e._otp,artifactVersion:"1.0.5",manual:e._manualConnect};null!=e.authorizeResult&&(o.sid=e.authorizeResult.sid);var i=!1;n();var r=setInterval(function(){i||"connected"!=e.networkStatus?clearInterval(r):n()},1300)}}),this.socket.on("connect_error",function(e){"undefined"!=typeof t.onConnectFailed&&t.onConnectFailed({code:408,content:e})}),this.socket.on("disconnect",function(){e.networkStatus="disconnected",e.authorizeStatus="initial",e._manualConnect=!1,null==e.authorizeResult&&(e.authorizeResult={}),e.authorizeResult.code=408,e.authorizeResult.content="Server unreachable or timeout","undefined"!=typeof t.onDisconnected&&t.onDisconnected()})},_isEmpty:function(t){return"undefined"==typeof t||null==t||0==this._trim(t).length},_trim:function(t){return t.replace(/(^\s*)|(\s*$)/g,"")},_endWith:function(t,e){var n=new RegExp(e+"$");return n.test(t)},log:function(t){"undefined"!=typeof window&&window.console&&this.debug&&console.log(t)},uuid_goeasy:function(){return r()},sendlogs:function(){c&&this.socket.emit("log",{logs:s})}};var S=function(){var t;return function(e){return t||(t=new k(e)),t}}();t.exports=S},function(t,e,n){"use strict";function o(t,e){"object"===("undefined"==typeof t?"undefined":i(t))&&(e=t,t=void 0),e=e||{};var n,o=r(t),s=o.source,u=o.id,p=o.path,h=a[u]&&p in a[u].nsps,f=e.forceNew||e["force new connection"]||!1===e.multiplex||h;return f?n=c(s,e):(a[u]||(a[u]=c(s,e)),n=a[u]),o.query&&!e.query&&(e.query=o.query),n.socket(o.path,e)}var i="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t},r=n(2),s=n(5),c=n(8);n(4)("socket.io-client");t.exports=e=o;var a=e.managers={};e.protocol=s.protocol,e.connect=o,e.Manager=n(8),e.Socket=n(30)},function(t,e,n){"use strict";function o(t,e){var n=t;e=e||"undefined"!=typeof location&&location,null==t&&(t=e.protocol+"//"+e.host),"string"==typeof t&&("/"===t.charAt(0)&&(t="/"===t.charAt(1)?e.protocol+t:e.host+t),/^(https?|wss?):\/\//.test(t)||(t="undefined"!=typeof e?e.protocol+"//"+t:"https://"+t),n=i(t)),n.port||(/^(http|ws)$/.test(n.protocol)?n.port="80":/^(http|ws)s$/.test(n.protocol)&&(n.port="443")),n.path=n.path||"/";var o=n.host.indexOf(":")!==-1,r=o?"["+n.host+"]":n.host;return n.id=n.protocol+"://"+r+":"+n.port,n.href=n.protocol+"://"+r+(e&&e.port===n.port?"":":"+n.port),n}var i=n(3);n(4)("socket.io-client:url");t.exports=o},function(t,e){var n=/^(?:(?![^:@]+:[^:@\/]*@)(http|https|ws|wss):\/\/)?((?:(([^:@]*)(?::([^:@]*))?)?@)?((?:[a-f0-9]{0,4}:){2,7}[a-f0-9]{0,4}|[^:\/?#]*)(?::(\d*))?)(((\/(?:[^?#](?![^?#\/]*\.[^?#\/.]+(?:[?#]|$)))*\/?)?([^?#\/]*))(?:\?([^#]*))?(?:#(.*))?)/,o=["source","protocol","authority","userInfo","user","password","host","port","relative","path","directory","file","query","anchor"];t.exports=function(t){var e=t,i=t.indexOf("["),r=t.indexOf("]");i!=-1&&r!=-1&&(t=t.substring(0,i)+t.substring(i,r).replace(/:/g,";")+t.substring(r,t.length));for(var s=n.exec(t||""),c={},a=14;a--;)c[o[a]]=s[a]||"";return i!=-1&&r!=-1&&(c.source=e,c.host=c.host.substring(1,c.host.length-1).replace(/;/g,":"),c.authority=c.authority.replace("[","").replace("]","").replace(/;/g,":"),c.ipv6uri=!0),c}},function(t,e){"use strict";t.exports=function(){return function(){}}},function(t,e,n){"use strict";function o(){}function i(t){var n=""+t.type;if(e.BINARY_EVENT!==t.type&&e.BINARY_ACK!==t.type||(n+=t.attachments+"-"),t.nsp&&"/"!==t.nsp&&(n+=t.nsp+","),null!=t.id&&(n+=t.id),null!=t.data){var o=r(t.data);if(o===!1)return l;n+=o}return n}function r(t){try{return JSON.stringify(t)}catch(t){return!1}}function s(){this.reconstructor=null}function c(t){var n=0,o={type:Number(t.charAt(0))};if(null==e.types[o.type])return p("unknown packet type "+o.type);if(e.BINARY_EVENT===o.type||e.BINARY_ACK===o.type){for(var i="";"-"!==t.charAt(++n)&&(i+=t.charAt(n),n!=t.length););if(i!=Number(i)||"-"!==t.charAt(n))throw new Error("Illegal attachments");o.attachments=Number(i)}if("/"===t.charAt(n+1))for(o.nsp="";++n;){var r=t.charAt(n);if(","===r)break;if(o.nsp+=r,n===t.length)break}else o.nsp="/";var s=t.charAt(n+1);if(""!==s&&Number(s)==s){for(o.id="";++n;){var r=t.charAt(n);if(null==r||Number(r)!=r){--n;break}if(o.id+=t.charAt(n),n===t.length)break}o.id=Number(o.id)}if(t.charAt(++n)){var c=a(t.substr(n)),u=c!==!1&&(o.type===e.ERROR||f(c));if(!u)return p("invalid payload");o.data=c}return o}function a(t){try{return JSON.parse(t)}catch(t){return!1}}function u(t){this.reconPack=t,this.buffers=[]}function p(t){return{type:e.ERROR,data:"parser error: "+t}}var h=(n(4)("socket.io-parser"),n(6)),f=n(7);e.protocol=4,e.types=["CONNECT","DISCONNECT","EVENT","ACK","ERROR","BINARY_EVENT","BINARY_ACK"],e.CONNECT=0,e.DISCONNECT=1,e.EVENT=2,e.ACK=3,e.ERROR=4,e.BINARY_EVENT=5,e.BINARY_ACK=6,e.Encoder=o,e.Decoder=s;var l=e.ERROR+'"encode error"';o.prototype.encode=function(t,e){var n=i(t);e([n])},h(s.prototype),s.prototype.add=function(t){var e;if("string"!=typeof t)throw new Error("Unknown type: "+t);e=c(t),this.emit("decoded",e)},s.prototype.destroy=function(){this.reconstructor&&this.reconstructor.finishedReconstruction()},u.prototype.takeBinaryData=function(t){if(this.buffers.push(t),this.buffers.length===this.reconPack.attachments){var e=binary.reconstructPacket(this.reconPack,this.buffers);return this.finishedReconstruction(),e}return null},u.prototype.finishedReconstruction=function(){this.reconPack=null,this.buffers=[]}},function(t,e,n){function o(t){if(t)return i(t)}function i(t){for(var e in o.prototype)t[e]=o.prototype[e];return t}t.exports=o,o.prototype.on=o.prototype.addEventListener=function(t,e){return this._callbacks=this._callbacks||{},(this._callbacks["$"+t]=this._callbacks["$"+t]||[]).push(e),this},o.prototype.once=function(t,e){function n(){this.off(t,n),e.apply(this,arguments)}return n.fn=e,this.on(t,n),this},o.prototype.off=o.prototype.removeListener=o.prototype.removeAllListeners=o.prototype.removeEventListener=function(t,e){if(this._callbacks=this._callbacks||{},0==arguments.length)return this._callbacks={},this;var n=this._callbacks["$"+t];if(!n)return this;if(1==arguments.length)return delete this._callbacks["$"+t],this;for(var o,i=0;i0&&!this.encoding){var t=this.packetBuffer.shift();this.packet(t)}},o.prototype.cleanup=function(){for(var t=this.subs.length,e=0;e=this._reconnectionAttempts)this.backoff.reset(),this.emitAll("reconnect_failed"),this.reconnecting=!1;else{var e=this.backoff.duration();this.reconnecting=!0;var n=setTimeout(function(){t.skipReconnect||(t.emitAll("reconnect_attempt",t.backoff.attempts),t.emitAll("reconnecting",t.backoff.attempts),t.skipReconnect||t.open(function(e){e?(t.reconnecting=!1,t.reconnect(),t.emitAll("reconnect_error",e.data)):t.onreconnect()}))},e);this.subs.push({destroy:function(){clearTimeout(n)}})}},o.prototype.onreconnect=function(){var t=this.backoff.attempts;this.reconnecting=!1,this.backoff.reset(),this.updateSocketIds(),this.emitAll("reconnect",t)}},function(t,e,n){"use strict";t.exports=n(10),t.exports.parser=n(15)},function(t,e,n){"use strict";function o(t,e){return this instanceof o?(e=e||{},t&&"object"===("undefined"==typeof t?"undefined":r(t))&&(e=t,t=null),t?(t=p(t),e.hostname=t.host,e.secure="https"===t.protocol||"wss"===t.protocol,e.port=t.port,t.query&&(e.query=t.query)):e.host&&(e.hostname=p(e.host).host),this.secure=null!=e.secure?e.secure:"undefined"!=typeof location&&"https:"===location.protocol,e.hostname&&!e.port&&(e.port=this.secure?"443":"80"),this.agent=e.agent||!1,this.hostname=e.hostname||("undefined"!=typeof location?location.hostname:"localhost"),this.port=e.port||("undefined"!=typeof location&&location.port?location.port:this.secure?443:80),this.query=e.query||{},"string"==typeof this.query&&(this.query=h.decode(this.query)),this.upgrade=!1!==e.upgrade,this.path=(e.path||"/engine.io").replace(/\/$/,"")+"/",this.forceJSONP=!!e.forceJSONP,this.jsonp=!1!==e.jsonp,this.forceBase64=!!e.forceBase64,this.enablesXDR=!!e.enablesXDR,this.timestampParam=e.timestampParam||"t",this.timestampRequests=e.timestampRequests,this.transports=e.transports||["polling","websocket"],this.transportOptions=e.transportOptions||{},this.readyState="",this.writeBuffer=[],this.prevBufferLen=0,this.policyPort=e.policyPort||843,this.rememberUpgrade=e.rememberUpgrade||!1,this.binaryType=null,this.onlyBinaryUpgrades=e.onlyBinaryUpgrades,this.perMessageDeflate=!1!==e.perMessageDeflate&&(e.perMessageDeflate||{}),!0===this.perMessageDeflate&&(this.perMessageDeflate={}),this.perMessageDeflate&&null==this.perMessageDeflate.threshold&&(this.perMessageDeflate.threshold=1024),this.pfx=e.pfx||null,this.key=e.key||null,this.passphrase=e.passphrase||null,this.cert=e.cert||null,this.ca=e.ca||null,this.ciphers=e.ciphers||null,this.rejectUnauthorized=void 0===e.rejectUnauthorized||e.rejectUnauthorized,this.forceNode=!!e.forceNode,this.isReactNative="undefined"!=typeof navigator&&"string"==typeof navigator.product&&"reactnative"===navigator.product.toLowerCase(),("undefined"==typeof self||this.isReactNative)&&(e.extraHeaders&&Object.keys(e.extraHeaders).length>0&&(this.extraHeaders=e.extraHeaders),e.localAddress&&(this.localAddress=e.localAddress)),this.id=null,this.upgrades=null,this.pingInterval=null,this.pingTimeout=null,this.pingIntervalTimer=null,this.pingTimeoutTimer=null,void this.open()):new o(t,e)}function i(t){var e={};for(var n in t)t.hasOwnProperty(n)&&(e[n]=t[n]);return e}var r="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t},s=n(11),c=n(6),a=(n(4)("engine.io-client:socket"),n(29)),u=n(15),p=n(3),h=n(22);t.exports=o,o.priorWebsocketSuccess=!1,c(o.prototype),o.protocol=u.protocol,o.Socket=o,o.Transport=n(14),o.transports=n(11),o.parser=n(15),o.prototype.createTransport=function(t){var e=i(this.query);e.EIO=u.protocol,e.transport=t;var n=this.transportOptions[t]||{};this.id&&(e.sid=this.id);var o=new s[t]({query:e,socket:this,agent:n.agent||this.agent,hostname:n.hostname||this.hostname,port:n.port||this.port,secure:n.secure||this.secure,path:n.path||this.path,forceJSONP:n.forceJSONP||this.forceJSONP,jsonp:n.jsonp||this.jsonp,forceBase64:n.forceBase64||this.forceBase64,enablesXDR:n.enablesXDR||this.enablesXDR,timestampRequests:n.timestampRequests||this.timestampRequests,timestampParam:n.timestampParam||this.timestampParam,policyPort:n.policyPort||this.policyPort,pfx:n.pfx||this.pfx,key:n.key||this.key,passphrase:n.passphrase||this.passphrase,cert:n.cert||this.cert,ca:n.ca||this.ca,ciphers:n.ciphers||this.ciphers,rejectUnauthorized:n.rejectUnauthorized||this.rejectUnauthorized,perMessageDeflate:n.perMessageDeflate||this.perMessageDeflate,extraHeaders:n.extraHeaders||this.extraHeaders,forceNode:n.forceNode||this.forceNode,localAddress:n.localAddress||this.localAddress,requestTimeout:n.requestTimeout||this.requestTimeout,protocols:n.protocols||void 0,isReactNative:this.isReactNative});return o},o.prototype.open=function(){var t;if(this.rememberUpgrade&&o.priorWebsocketSuccess&&this.transports.indexOf("websocket")!==-1)t="websocket";else{if(0===this.transports.length){var e=this;return void setTimeout(function(){e.emit("error","No transports available")},0)}t=this.transports[0]}this.readyState="opening";try{t=this.createTransport(t)}catch(t){return this.transports.shift(),void this.open()}t.open(),this.setTransport(t)},o.prototype.setTransport=function(t){var e=this;this.transport&&this.transport.removeAllListeners(),this.transport=t,t.on("drain",function(){e.onDrain()}).on("packet",function(t){e.onPacket(t)}).on("error",function(t){e.onError(t)}).on("close",function(){e.onClose("transport close")})},o.prototype.probe=function(t){function e(){if(h.onlyBinaryUpgrades){var t=!this.supportsBinary&&h.transport.supportsBinary;p=p||t}p||(u.send([{type:"ping",data:"probe"}]),u.once("packet",function(t){if(!p)if("pong"===t.type&&"probe"===t.data){if(h.upgrading=!0,h.emit("upgrading",u),!u)return;o.priorWebsocketSuccess="websocket"===u.name,h.transport.pause(function(){p||"closed"!==h.readyState&&(a(),h.setTransport(u),u.send([{type:"upgrade"}]),h.emit("upgrade",u),u=null,h.upgrading=!1,h.flush())})}else{var e=new Error("probe error");e.transport=u.name,h.emit("upgradeError",e)}}))}function n(){p||(p=!0,a(),u.close(),u=null)}function i(t){var e=new Error("probe error: "+t);e.transport=u.name,n(),h.emit("upgradeError",e)}function r(){i("transport closed")}function s(){i("socket closed")}function c(t){u&&t.name!==u.name&&n()}function a(){u.removeListener("open",e),u.removeListener("error",i),u.removeListener("close",r),h.removeListener("close",s),h.removeListener("upgrading",c)}var u=this.createTransport(t,{probe:1}),p=!1,h=this;o.priorWebsocketSuccess=!1,u.once("open",e),u.once("error",i),u.once("close",r),this.once("close",s),this.once("upgrading",c),u.open()},o.prototype.onOpen=function(){ 3 | if(this.readyState="open",o.priorWebsocketSuccess="websocket"===this.transport.name,this.emit("open"),this.flush(),"open"===this.readyState&&this.upgrade&&this.transport.pause)for(var t=0,e=this.upgrades.length;t';r=document.createElement(t)}catch(t){r=document.createElement("iframe"),r.name=i.iframeId,r.src="javascript:0"}r.id=i.iframeId,i.form.appendChild(r),i.iframe=r}var i=this;if(!this.form){var r,s=document.createElement("form"),c=document.createElement("textarea"),a=this.iframeId="eio_iframe_"+this.index;s.className="socketio",s.style.position="absolute",s.style.top="-1000px",s.style.left="-1000px",s.target=a,s.method="POST",s.setAttribute("accept-charset","utf-8"),c.name="d",s.appendChild(c),document.body.appendChild(s),this.form=s,this.area=c}this.form.action=this.uri(),o(),t=t.replace(p,"\\\n"),this.area.value=t.replace(u,"\\n");try{this.form.submit()}catch(t){}this.iframe.attachEvent?this.iframe.onreadystatechange=function(){"complete"===i.iframe.readyState&&n()}:this.iframe.onload=n}}).call(e,function(){return this}())},function(t,e,n){"use strict";function o(t){var e=t&&t.forceBase64;u&&!e||(this.supportsBinary=!1),i.call(this,t)}var i=n(14),r=n(22),s=n(15),c=n(23),a=n(24);n(4)("engine.io-client:polling");t.exports=o;var u=function(){var t=n(25),e=new t({xdomain:!1});return null!=e.responseType}();c(o,i),o.prototype.name="polling",o.prototype.doOpen=function(){this.poll()},o.prototype.pause=function(t){function e(){n.readyState="paused",t()}var n=this;if(this.readyState="pausing",this.polling||!this.writable){var o=0;this.polling&&(o++,this.once("pollComplete",function(){--o||e()})),this.writable||(o++,this.once("drain",function(){--o||e()}))}else e()},o.prototype.poll=function(){this.polling=!0,this.doPoll(),this.emit("poll")},o.prototype.onData=function(t){var e=this,n=function(t,n,o){return"opening"===e.readyState&&e.onOpen(),"close"===t.type?(e.onClose(),!1):void e.onPacket(t)};s.decodePayload(t,this.socket.binaryType,n),"closed"!==this.readyState&&(this.polling=!1,this.emit("pollComplete"),"open"===this.readyState&&this.poll())},o.prototype.doClose=function(){function t(){e.write([{type:"close"}])}var e=this;"open"===this.readyState?t():this.once("open",t)},o.prototype.write=function(t){var e=this;this.writable=!1;var n=function(){e.writable=!0,e.emit("drain")};s.encodePayload(t,this.supportsBinary,function(t){e.doWrite(t,n)})},o.prototype.uri=function(){var t=this.query||{},e=this.secure?"https":"http",n="";!1!==this.timestampRequests&&(t[this.timestampParam]=a()),this.supportsBinary||t.sid||(t.b64=1),t=r.encode(t),this.port&&("https"===e&&443!==Number(this.port)||"http"===e&&80!==Number(this.port))&&(n=":"+this.port),t.length&&(t="?"+t);var o=this.hostname.indexOf(":")!==-1;return e+"://"+(o?"["+this.hostname+"]":this.hostname)+n+this.path+t}},function(t,e,n){"use strict";function o(t){this.path=t.path,this.hostname=t.hostname,this.port=t.port,this.secure=t.secure,this.query=t.query,this.timestampParam=t.timestampParam,this.timestampRequests=t.timestampRequests,this.readyState="",this.agent=t.agent||!1,this.socket=t.socket,this.enablesXDR=t.enablesXDR,this.pfx=t.pfx,this.key=t.key,this.passphrase=t.passphrase,this.cert=t.cert,this.ca=t.ca,this.ciphers=t.ciphers,this.rejectUnauthorized=t.rejectUnauthorized,this.forceNode=t.forceNode,this.isReactNative=t.isReactNative,this.extraHeaders=t.extraHeaders,this.localAddress=t.localAddress}var i=n(15),r=n(6);t.exports=o,r(o.prototype),o.prototype.onError=function(t,e){var n=new Error(t);return n.type="TransportError",n.description=e,this.emit("error",n),this},o.prototype.open=function(){return"closed"!==this.readyState&&""!==this.readyState||(this.readyState="opening",this.doOpen()),this},o.prototype.close=function(){return"opening"!==this.readyState&&"open"!==this.readyState||(this.doClose(),this.onClose()),this},o.prototype.send=function(t){if("open"!==this.readyState)throw new Error("Transport not open");this.write(t)},o.prototype.onOpen=function(){this.readyState="open",this.writable=!0,this.emit("open")},o.prototype.onData=function(t){var e=i.decodePacket(t,this.socket.binaryType);this.onPacket(e)},o.prototype.onPacket=function(t){this.emit("packet",t)},o.prototype.onClose=function(){this.readyState="closed",this.emit("close")}},function(t,e,n){"use strict";function o(t){try{t=a.decode(t,{strict:!1})}catch(t){return!1}return t}function i(t,e,n){for(var o=new Array(t.length),i=c(t.length,n),r=function(t,n,i){e(n,function(e,n){o[t]=n,i(e,o)})},s=0;s1?{type:p[i],data:t.substring(1)}:{type:p[i]}:h}var r=new Uint8Array(t),i=r[0],s=sliceBuffer(t,1);return f&&"blob"===e&&(s=new f([s])),{type:p[i],data:s}},e.encodePayload=function(t,n,o){function r(t){return t.length+":"+t}function c(t,o){e.encodePacket(t,!!a&&n,!0,function(t){o(null,r(t))})}"function"==typeof n&&(o=n,n=null);var a=s(t);return t.length?void i(t,c,function(t,e){return o(e.join(""))}):o("0:")},e.decodePayload=function(t,n,o){"function"==typeof n&&(o=n,n=null);var i;if(""===t)return o(h,0,1);for(var r,s,c="",a=0,u=t.length;a=55296&&e<=56319&&i65535&&(e-=65536,i+=d(e>>>10&1023|55296),e=56320|1023&e),i+=d(e);return i}function i(t,e){if(t>=55296&&t<=57343){if(e)throw Error("Lone surrogate U+"+t.toString(16).toUpperCase()+" is not a scalar value");return!1}return!0}function r(t,e){return d(t>>e&63|128)}function s(t,e){if(0==(4294967168&t))return d(t);var n="";return 0==(4294965248&t)?n=d(t>>6&31|192):0==(4294901760&t)?(i(t,e)||(t=65533),n=d(t>>12&15|224),n+=r(t,6)):0==(4292870144&t)&&(n=d(t>>18&7|240),n+=r(t,12),n+=r(t,6)),n+=d(63&t|128)}function c(t,e){e=e||{};for(var o,i=!1!==e.strict,r=n(t),c=r.length,a=-1,u="";++a=f)throw Error("Invalid byte index");var t=255&h[l];if(l++,128==(192&t))return 63&t;throw Error("Invalid continuation byte")}function u(t){var e,n,o,r,s;if(l>f)throw Error("Invalid byte index");if(l==f)return!1;if(e=255&h[l],l++,0==(128&e))return e;if(192==(224&e)){if(n=a(),s=(31&e)<<6|n,s>=128)return s;throw Error("Invalid continuation byte")}if(224==(240&e)){if(n=a(),o=a(),s=(15&e)<<12|n<<6|o,s>=2048)return i(s,t)?s:65533;throw Error("Invalid continuation byte")}if(240==(248&e)&&(n=a(),o=a(),r=a(),s=(7&e)<<18|n<<12|o<<6|r,s>=65536&&s<=1114111))return s;throw Error("Invalid UTF-8 detected")}function p(t,e){e=e||{};var i=!1!==e.strict;h=n(t),f=h.length,l=0;for(var r,s=[];(r=u(i))!==!1;)s.push(r);return o(s)}/*! https://mths.be/utf8js v2.1.2 by @mathias */ 4 | var h,f,l,d=String.fromCharCode;t.exports={version:"2.1.2",encode:c,decode:p}},function(t,e){function n(t){return t.map(function(t){if(t.buffer instanceof ArrayBuffer){var e=t.buffer;if(t.byteLength!==e.byteLength){var n=new Uint8Array(t.byteLength);n.set(new Uint8Array(e,t.byteOffset,t.byteLength)),e=n.buffer}return e}return t})}function o(t,e){e=e||{};var o=new r;return n(t).forEach(function(t){o.append(t)}),e.type?o.getBlob(e.type):o.getBlob()}function i(t,e){return new Blob(n(t),e||{})}var r="undefined"!=typeof r?r:"undefined"!=typeof WebKitBlobBuilder?WebKitBlobBuilder:"undefined"!=typeof MSBlobBuilder?MSBlobBuilder:"undefined"!=typeof MozBlobBuilder&&MozBlobBuilder,s=function(){try{var t=new Blob(["hi"]);return 2===t.size}catch(t){return!1}}(),c=s&&function(){try{var t=new Blob([new Uint8Array([1,2])]);return 2===t.size}catch(t){return!1}}(),a=r&&r.prototype.append&&r.prototype.getBlob;"undefined"!=typeof Blob&&(o.prototype=Blob.prototype,i.prototype=Blob.prototype),t.exports=function(){return s?c?Blob:i:a?o:void 0}()},function(t,e){e.encode=function(t){var e="";for(var n in t)t.hasOwnProperty(n)&&(e.length&&(e+="&"),e+=encodeURIComponent(n)+"="+encodeURIComponent(t[n]));return e},e.decode=function(t){for(var e={},n=t.split("&"),o=0,i=n.length;o0);return e}function o(t){var e=0;for(p=0;p0&&t.jitter<=1?t.jitter:0,this.attempts=0}t.exports=n,n.prototype.duration=function(){var t=this.ms*Math.pow(this.factor,this.attempts++);if(this.jitter){var e=Math.random(),n=Math.floor(e*this.jitter*t);t=0==(1&Math.floor(10*e))?t-n:t+n}return 0|Math.min(t,this.max)},n.prototype.reset=function(){this.attempts=0},n.prototype.setMin=function(t){this.ms=t},n.prototype.setMax=function(t){this.max=t},n.prototype.setJitter=function(t){this.jitter=t}},function(t,e,n){function o(t,e,n){var o=e&&n||0,p=e||[];t=t||{};var h=t.node||i,f=void 0!==t.clockseq?t.clockseq:r;if(null==h||null==f){var l=s();null==h&&(h=i=[1|l[0],l[1],l[2],l[3],l[4],l[5]]),null==f&&(f=r=16383&(l[6]<<8|l[7]))}var d=void 0!==t.msecs?t.msecs:(new Date).getTime(),y=void 0!==t.nsecs?t.nsecs:u+1,m=d-a+(y-u)/1e4;if(m<0&&void 0===t.clockseq&&(f=f+1&16383),(m<0||d>a)&&void 0===t.nsecs&&(y=0),y>=1e4)throw new Error("uuid.v1(): Can't create more than 10M uuids/sec");a=d,u=y,r=f,d+=122192928e5;var b=(1e4*(268435455&d)+y)%4294967296;p[o++]=b>>>24&255,p[o++]=b>>>16&255,p[o++]=b>>>8&255,p[o++]=255&b;var g=d/4294967296*1e4&268435455;p[o++]=g>>>8&255,p[o++]=255&g,p[o++]=g>>>24&15|16,p[o++]=g>>>16&255,p[o++]=f>>>8|128,p[o++]=255&f;for(var v=0;v<6;++v)p[o+v]=h[v];return e?e:c(p)}var i,r,s=n(36),c=n(37),a=0,u=0;t.exports=o},function(t,e){var n="undefined"!=typeof crypto&&crypto.getRandomValues&&crypto.getRandomValues.bind(crypto)||"undefined"!=typeof smsCrypto&&"function"==typeof window.msCrypto.getRandomValues&&msCrypto.getRandomValues.bind(msCrypto);if(n){var o=new Uint8Array(16);t.exports=function(){return n(o),o}}else{var i=new Array(16);t.exports=function(){for(var t,e=0;e<16;e++)0===(3&e)&&(t=4294967296*Math.random()),i[e]=t>>>((3&e)<<3)&255;return i}}},function(t,e){function n(t,e){var n=e||0,i=o;return[i[t[n++]],i[t[n++]],i[t[n++]],i[t[n++]],"-",i[t[n++]],i[t[n++]],"-",i[t[n++]],i[t[n++]],"-",i[t[n++]],i[t[n++]],"-",i[t[n++]],i[t[n++]],i[t[n++]],i[t[n++]],i[t[n++]],i[t[n++]]].join("")}for(var o=[],i=0;i<256;++i)o[i]=(i+256).toString(16).substr(1);t.exports=n}])}); -------------------------------------------------------------------------------- /main.js: -------------------------------------------------------------------------------- 1 | import Vue from 'vue' 2 | import App from './App' 3 | import GoEasy from 'lib/goeasy-1.0.5.js' 4 | 5 | Vue.config.productionTip = false 6 | 7 | App.mpType = 'app' 8 | 9 | const app = new Vue({ 10 | ...App 11 | }) 12 | 13 | //初始化GoEasy 14 | Vue.prototype.$goEasy = new GoEasy({ 15 | host: 'hangzhou.goeasy.io', 16 | appkey: '您的appkey', 17 | onConnected: function () { console.log("GoEasy connect successfully.") }, onDisconnected: function () { console.log("GoEasy disconnected.") }, onConnectFailed: function (error) { 18 | uni.showToast({ 19 | icon:"none", 20 | title:"GoEasy连接失败,请确认main.js文件15行appkey和host配置正确.", 21 | duration:2000 22 | }) } 23 | }); 24 | 25 | //格式化时间 26 | Date.prototype.formatDate = function (fmt) { 27 | var o = { 28 | "M+": this.getMonth() + 1, 29 | "d+": this.getDate(), 30 | "h+": this.getHours(), 31 | "m+": this.getMinutes(), 32 | "s+": this.getSeconds(), 33 | "q+": Math.floor((this.getMonth() + 3) / 3), 34 | "S": this.getMilliseconds() 35 | }; 36 | if (/(y+)/.test(fmt)) 37 | fmt = fmt.replace(RegExp.$1, (this.getFullYear() + "").substr(4 - RegExp.$1.length)); 38 | for (var k in o) 39 | if(o.hasOwnProperty(k)){ 40 | if (new RegExp("(" + k + ")").test(fmt)) 41 | fmt = fmt.replace(RegExp.$1, (RegExp.$1.length == 1) ? (o[k]) : (("00" + o[k]).substr(("" + o[k]).length))); 42 | } 43 | return fmt; 44 | }; 45 | app.$mount() 46 | -------------------------------------------------------------------------------- /manifest.json: -------------------------------------------------------------------------------- 1 | { 2 | "name" : "goeasy-uniapp-helloworld", 3 | "appid" : "", 4 | "description" : "", 5 | "versionName" : "1.0.0", 6 | "versionCode" : "100", 7 | "transformPx" : false, 8 | /* 5+App特有相关 */ 9 | "app-plus" : { 10 | "usingComponents" : true, 11 | "nvueCompiler" : "uni-app", 12 | "compilerVersion" : 3, 13 | "splashscreen" : { 14 | "alwaysShowBeforeRender" : true, 15 | "waiting" : true, 16 | "autoclose" : true, 17 | "delay" : 0 18 | }, 19 | /* 模块配置 */ 20 | "modules" : {}, 21 | /* 应用发布信息 */ 22 | "distribute" : { 23 | /* android打包配置 */ 24 | "android" : { 25 | "permissions" : [ 26 | "", 27 | "", 28 | "", 29 | "", 30 | "", 31 | "", 32 | "", 33 | "", 34 | "", 35 | "", 36 | "", 37 | "", 38 | "", 39 | "", 40 | "", 41 | "", 42 | "", 43 | "", 44 | "", 45 | "", 46 | "", 47 | "" 48 | ] 49 | }, 50 | /* ios打包配置 */ 51 | "ios" : {}, 52 | /* SDK配置 */ 53 | "sdkConfigs" : { 54 | "ad" : {} 55 | }, 56 | "icons" : { 57 | "android" : { 58 | "hdpi" : "static/logo.png", 59 | "xhdpi" : "static/logo.png", 60 | "xxhdpi" : "static/logo.png", 61 | "xxxhdpi" : "static/logo.png" 62 | }, 63 | "ios" : { 64 | "iphone" : { 65 | "app@2x" : "" 66 | } 67 | } 68 | } 69 | } 70 | }, 71 | /* 快应用特有相关 */ 72 | "quickapp" : {}, 73 | /* 小程序特有相关 */ 74 | "mp-weixin" : { 75 | "appid" : "", 76 | "setting" : { 77 | "urlCheck" : false 78 | }, 79 | "usingComponents" : true 80 | }, 81 | "mp-alipay" : { 82 | "usingComponents" : true 83 | }, 84 | "mp-baidu" : { 85 | "usingComponents" : true 86 | }, 87 | "mp-toutiao" : { 88 | "usingComponents" : true 89 | } 90 | } 91 | -------------------------------------------------------------------------------- /pages.json: -------------------------------------------------------------------------------- 1 | { 2 | "pages": [ //pages数组中第一项表示应用启动页,参考:https://uniapp.dcloud.io/collocation/pages 3 | { 4 | "path": "pages/index/index", 5 | "style": { 6 | "app-plus": { 7 | "titleNView": false //禁用原生导航栏 8 | } 9 | } 10 | } 11 | ], 12 | "globalStyle": { 13 | "navigationBarTextStyle": "black", 14 | "navigationBarTitleText": "", 15 | "navigationBarBackgroundColor": "#F8F8F8", 16 | "backgroundColor": "#F8F8F8" 17 | } 18 | } 19 | -------------------------------------------------------------------------------- /pages/index/index.vue: -------------------------------------------------------------------------------- 1 | 17 | 18 | 61 | 62 | 119 | -------------------------------------------------------------------------------- /static/logo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/goeasy-git/goeasy-uniapp-helloworld/22528564b8ae6642fe27e1a652d0e282c46e704b/static/logo.png -------------------------------------------------------------------------------- /uni.scss: -------------------------------------------------------------------------------- 1 | /** 2 | * 这里是uni-app内置的常用样式变量 3 | * 4 | * uni-app 官方扩展插件及插件市场(https://ext.dcloud.net.cn)上很多三方插件均使用了这些样式变量 5 | * 如果你是插件开发者,建议你使用scss预处理,并在插件代码中直接使用这些变量(无需 import 这个文件),方便用户通过搭积木的方式开发整体风格一致的App 6 | * 7 | */ 8 | 9 | /** 10 | * 如果你是App开发者(插件使用者),你可以通过修改这些变量来定制自己的插件主题,实现自定义主题功能 11 | * 12 | * 如果你的项目同样使用了scss预处理,你也可以直接在你的 scss 代码中使用如下变量,同时无需 import 这个文件 13 | */ 14 | 15 | /* 颜色变量 */ 16 | 17 | /* 行为相关颜色 */ 18 | $uni-color-primary: #007aff; 19 | $uni-color-success: #4cd964; 20 | $uni-color-warning: #f0ad4e; 21 | $uni-color-error: #dd524d; 22 | 23 | /* 文字基本颜色 */ 24 | $uni-text-color:#333;//基本色 25 | $uni-text-color-inverse:#fff;//反色 26 | $uni-text-color-grey:#999;//辅助灰色,如加载更多的提示信息 27 | $uni-text-color-placeholder: #808080; 28 | $uni-text-color-disable:#c0c0c0; 29 | 30 | /* 背景颜色 */ 31 | $uni-bg-color:#ffffff; 32 | $uni-bg-color-grey:#f8f8f8; 33 | $uni-bg-color-hover:#f1f1f1;//点击状态颜色 34 | $uni-bg-color-mask:rgba(0, 0, 0, 0.4);//遮罩颜色 35 | 36 | /* 边框颜色 */ 37 | $uni-border-color:#c8c7cc; 38 | 39 | /* 尺寸变量 */ 40 | 41 | /* 文字尺寸 */ 42 | $uni-font-size-sm:24rpx; 43 | $uni-font-size-base:28rpx; 44 | $uni-font-size-lg:32rpx; 45 | 46 | /* 图片尺寸 */ 47 | $uni-img-size-sm:40rpx; 48 | $uni-img-size-base:52rpx; 49 | $uni-img-size-lg:80rpx; 50 | 51 | /* Border Radius */ 52 | $uni-border-radius-sm: 4rpx; 53 | $uni-border-radius-base: 6rpx; 54 | $uni-border-radius-lg: 12rpx; 55 | $uni-border-radius-circle: 50%; 56 | 57 | /* 水平间距 */ 58 | $uni-spacing-row-sm: 10px; 59 | $uni-spacing-row-base: 20rpx; 60 | $uni-spacing-row-lg: 30rpx; 61 | 62 | /* 垂直间距 */ 63 | $uni-spacing-col-sm: 8rpx; 64 | $uni-spacing-col-base: 16rpx; 65 | $uni-spacing-col-lg: 24rpx; 66 | 67 | /* 透明度 */ 68 | $uni-opacity-disabled: 0.3; // 组件禁用态的透明度 69 | 70 | /* 文章场景相关 */ 71 | $uni-color-title: #2C405A; // 文章标题颜色 72 | $uni-font-size-title:40rpx; 73 | $uni-color-subtitle: #555555; // 二级标题颜色 74 | $uni-font-size-subtitle:36rpx; 75 | $uni-color-paragraph: #3F536E; // 文章段落颜色 76 | $uni-font-size-paragraph:30rpx; --------------------------------------------------------------------------------