微信小程序开发日记

2020-01-16  本文已影响0人  灰斗儿

解决单一域名问题

通常微信小程序只能添加一个https的域名(只能是https),但是如果想要转发一些其他网站的图片之类的东西就需要增加nginx location 规则用于转发流量,突破微信小程序限制

  location /proxy {
    resolver 8.8.8.8; 
    if ($args ~* url=(.*)$){
        proxy_pass $1;
    }
    proxy_set_header Host $proxy_host;
  }

resolver: Nginx0.6.18之后在使用变量(例如上面的$1)来构造某个server地址的时候,需指定dns服务器地址。否则追踪error_log 配置的文件可以发现报错“no resolver defined to resolve”
似错误,而在proxy_pass 中直接设置地址却不会

当访问: www.abc.com/ccc/ddd?usernmae=123&pwd=2&gender=3
$request_uri = /ccc/ddd?usernmae=123&pwd=2&gender=3
$uri = /ccc/ddd
$is_args = url中有?就是问号,没有就是空字符
$args = usernmae=123&pwd=2&gender=3

目前转发https链接多数情况会报错403 forbidden,少量链接可正常访问,后端服务可以把其他网站资源https链接处理成http以暂时解决该问题

nginx 正则location和proxy_pass 无法并存,可通过location块内正则解决问题,如上面的代码

动态添加删除组件

微信小程序不支持类似web dom 的insertHTML操作,可以通过wxml 内for循环组件,js内控制数组数量已实现。

伪代码

file: xxx.wxml
<view wx:for={{array}}>{{item}}</view>  //item为默认数组子项变量名(该名可修改,查文档)

file:xxx.js
this.data.array.push(1)
this.data.array.pop(1)

wx.showmodal 自定义

默认功能有限,例如想要在modal内显示图片就需要自定义

<modal title="生成的二维码" hidden="{{modalHidden}}" bindconfirm="modalConfirm" bindcancel="modalCandel" confirm-text="保存到相册" cancel-text="关闭">
    <image src="{{imagePath}}" mode='aspectFill'></image>
  </modal>

控制modalHidden的变量即可实现显示与隐藏

上一篇下一篇

猜你喜欢

热点阅读