解决单一域名问题
通常微信小程序只能添加一个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的变量即可实现显示与隐藏
网友评论