眼下小游戏特别火,很多团队也陆续启动了微信小游戏的项目,并于立项前期进行技术预研究。但从微信官方文档看 , 却能发现很多坑。jquery
1、运行环境的坑web
首先微信小游戏是一个不一样于浏览器的 JavaScript 运行环境,没有 BOM 和 DOM API,因此咱们第一个遇到的就是API兼容性问题。小程序
一、API兼容性windows
1.一、网络API微信小程序
BOM的核心是windows,表示的是一个浏览器的实例,在网页中自定义的任何一个对象、变量和函数,都以windows做为其全局对象;缺少Dom意味着http、websocket及本地存储等通讯用的API使用就会遇到问题,好在微信提供了这两个API的私有实现,咱们要作的就是适配。浏览器
适配的基本思路是检测是不是运行再微信平台,而后利用JS动态语言特性, 对BOM的API进行动态重写 , 优缺点以下:服务器
1.优势是API调用者无需作任何改动,适配成本几乎为0。对微信小游戏和浏览器之间的运行 环境差别无感知,很是友好。 2.缺点是会增长代码体积,但代码体积的增长带来的损失几乎能够忽略不计。微信
这种适配方案的性价比很高, 适配HTTP代码示例以下:websocket
微信小游戏提供了 CommonJS 风格的模块 API,能够经过 module.exports 和 exports 导出模块,经过 require 引入模块 . 这与浏览器引入JS文件的方式大相径庭 , 中间有一个隔离层。网络
让咱们举个例子来讲明模块化带来的问题。
一般咱们在浏览器上使用某个js文件里面自定义的类,经过
针对这种状况 , 解决的思路是将全部外部须要用到的方法和对象动态挂靠到window对象上去,将上面的代码稍作修改示例以下:
二、工做流变化
因为微信小游戏没有Dom和Bom,因此不少依赖Dom和Bom的库都不能直接用,好比 jquery。
微信的这套环境会或多或少会引发咱们的工做流变化,使用第三方游戏开发引擎(好比Cocos Createor/Egret/Laya)能够弥补这些问题带来的损失。
2、资源限制
一、每一个小游戏容许上传的代码包总大小为 4MB。
解决方法1:压缩js文件,图片资源放在服务器上作预加载。 解决方法2:使用第三方引擎的资源管理功能。
二、微信小程序要求开发者的服务器 支持https,wss协议。
解决方案:服务器启用HTTPS。实现的方式有不少,推荐Nginx反向代理。
3、发布审核
小游戏开发完成后发布上线须要具有以下的资格:
1: 服务器域名备案
2: https wss支持
3: 软件著做权证书 复印件+盖章签名
4: 微信公众平台账号及AppID
5: 开发者工具wechat_devtools_1.02.1803210_x64
6: 游戏自审报告复印件+签名
7: iOS开发中账号(可选,没有则填空)
8: 游戏版号(开通微信支付须要)
9:企业开发者身份+对公账号(开通微信支付须要)