微信公众号开发

开发工具

踩坑:在开发中使用的是chrome浏览器,结果打包后在微信中显示样式错乱。

建议:使用微信开发者工具进行调试,它和微信都是x5内核,这样保证开发和生产样式一致。

openid

微信开发是绕不开openid这个字段的,可以简单理解成用户的id。

开发前一定要询问清楚,后端如何给前端传递openid。

踩坑:曾经遇到一种方式,是后台通过cookie方式存储到浏览器,然而开发中存在延时问题,页面加载完了,还获取不到cookie,延时大约1s才可以获取的到。

建议:稳妥方式是让后台写一个登录接口,通过该接口获取openid。

jssdk

微信提供了jssdk,其中封装了很多方便的功能。

安装依赖

npm install weixin-js-sdk --save

jssdk需要通过config接口注入权限验证配置,才可以正常使用,其中的参数都是后端返回的,前端只要通过接口获取这些参数,并通过config验证即可。

公众平台绑定域名

使用jssdk是需要绑定域名的。JS接口安全域名:需要是一个公网域名。

先登录微信公众平台进入“公众号设置”的“功能设置”里填写“JS接口安全域名”。

这就导致本地开发无法调试jssdk功能,因为localhost:8080不是JS接口安全域名。

内网穿透/转发

想要调试jssdk,代码需要发布到域名对应的ip服务器上。但是这样上传太频繁了。

把内网映射到公网,这样就可以在本地进行调试了。

常见工具:ngrok、魔法隧道、花生壳等。具体可搜索关键字内网穿透/转发

微信头像跨域

踩坑:如果需要展示微信头像,请求后台返回的url会存在跨域问题。

建议:可以让后台返回头像的二进制文件(blob),在ajax中记得设置响应类型responseType:'blob',然后前端将blob转换成base64格式进行展示。

if (window.FileReader) {
     let fr = new FileReader();
     let img = new Image();
     fr.readAsDataURL(blob);
     fr.onloadend = (e) => {
         img.src = e.target.result;
         // appendChild(img)
     }
  }
生成海报/邀请函

通常会有生成海报、邀请函的需求,这些有两种方案:

  • 后端生成图片
    通过接口上传图片,后端生成图片并返回,前端展示。
  • 前端生成图片
    前端将dom转换成canvas或img。

这里主要讲第二种,前端生成图片:
插件:dom-to-img、html2canvas
实际效果:html2canvas比较模糊,dom-to-img的png、jpeg格式同样模糊,但是svg格式很清晰。

html2canvas模糊方案之一:
将 canvas 的宽高设置成容器宽高的 2 倍,处理生成的 canvas 图片模糊失真
可参考:html2canvas截图失真

注意: 除了模糊以外,html2canvas生成的图片和dom样式有不一致的地方。

长按保存/转发图片

踩坑:在微信网页中,长按普通的图片是可以保存或转发的,但是通过上一步dom转换的图片是svg格式,微信是不支持保存。

建议:

  • 生成图片后上传给后端,后端返回一个url。
  • 前端将svg转换成png
    • 通过window.devicePixelRatio获取设备像素比scale
    • canvas画布的大小是图片的scale倍(相当于提高图片精度)
    • 调用canvas的drawImage()在画布上绘图。
    • 调用toDataUrl()返回png格式的图片展示data URI
    • 设置img.src,并且宽高缩小scale倍(这里是等比缩放,所以不会模糊)
分享参数配置

jssdk分享接口中有一些参数配置项:

  • link
    分享链接,vue-router的hash模式,#后面的部分会被忽略
    建议:使用urlencode加密
    或者在#前面加一个?

  • imgUrl
    分享图标

  • 可以放到图片服务器上

  • 放到项目的assets目录中

参考:

toDataUrl

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 212,816评论 6 492
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 90,729评论 3 385
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 158,300评论 0 348
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 56,780评论 1 285
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 65,890评论 6 385
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 50,084评论 1 291
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 39,151评论 3 410
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 37,912评论 0 268
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 44,355评论 1 303
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 36,666评论 2 327
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 38,809评论 1 341
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 34,504评论 4 334
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 40,150评论 3 317
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 30,882评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,121评论 1 267
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 46,628评论 2 362
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 43,724评论 2 351

推荐阅读更多精彩内容