uniapp小程序速查手册(微信支付宝H5)默认环境为微信小程序,很多问题应该是通用的,针对支付宝和H5的问

这篇文档是近期笔者uni-app小程序开发踩坑所遇到的一些问题,并不是入门文档,更多的是一些

开发技巧和踩坑问题,在这里持续更新一篇文档,方便后续碰到问题查阅,另外很多基础的api或

问题我就不放进来了,直接去看官方文档比看这些文档简单直接的多,这里附上链接:

如果文档用的话,麻烦点个赞再走哈~

持续更新中。。。

优点:

同类的还有Tarojs等,个人体验Taro好用一点

只要组件安装在项目的components目录下,并符合components/组件名称/组件名称.vue目录结构。就可以不用引用、注册,直接在页面中使用

好处:

Vue-cli项目

平时怎么用,现在就怎么用,es6model方式引用就行npmixxxxx-->importxxxfrom"xxxx"

HbuilderX项目

不能直接使用,需要额外npmixxxx至某文件夹之后,拖进项目根目录才可在文件中通过commonjs或Es6module方式引入

应用生命周期

1.onLaunch:当uni-app初始化完成时触发(全局只触发一次)

2.onShow:当uni-app启动,或从后台进入前台显示//监听用户进入小程序

3.onHide:当uni-app从前台进入后台//监听用户离开小程序

4.onError:当uni-app报错时触发

5.onUniNViewMessage:对nvue页面发送的数据进行监听

组件生命周期

1、在app.vue文件中配置

2、main.js文件,将变量或函数挂载在全局(与Vue配置全局函数方法一样)

如:

js复制代码importVuefrom'vue';importcloneDeepform'@/public/utils/lodash/cloneDeep.js';Vue.prototype.$clone=cloneDeep;9、分包因小程序有体积和资源加载限制,各家小程序平台提供了分包方式,优化小程序的下载和启动速度。

demo

js复制代码"pages":[], //分包配置 "subPackages":[ { "root":"pages_tickets", "pages":[ { "path":"subpage1/index", "style":{ "navigationBarTitleText":"哈哈哈哈哈哈", "enablePullDownRefresh":false, } }, { "path":"subpage2/index", "style":{ "navigationBarTitleText":"嘻嘻嘻嘻嘻", "enablePullDownRefresh":false, } }, ] } ]10、uni-popup滚动穿透||小程序任意弹窗滚动穿透处理方案核心原理是弹窗出现,设置最外层页面高度为可视窗口高度,超出隐藏,弹窗隐藏,高度恢复

解决方案:

ps:关于图片存放问题,用之前尽量用Tinypng压缩一下,超过1k的尽量用网络图,不要放本地,此处有坑。。。。

lazy-load属性

注意:图片懒加载只针对page与scroll-view下的image有效。

为了能更清楚的确认懒加载是否生效,我们通过将lazy-load-margin设置为0,再看效果,代码如下:

支付宝小程序

修改背景色即可,background-color="#fff"

修改背景色会导致pop内部元素圆角失效,需要修改uni-popupy源码两项内容,必须两个地方都改,否则不会生效

bottom函数,修改translatestyle属性

改为YYYY/MM/DDhh:mm:ss即可

css复制代码scroll-view::-webkit-scrollbar{width:0;height:0;display:none;background-color:transparent;}20、小程序对应多个环境AppID怎么配置背景:小程序区分一下开发环境和生产环境,故分别做了两个appid区分,每次开发需要改manifest.json中的appid和其他配置文件的数据

新建static/utils/setManifest.js脚本

通过读取自定义config文件下的配置动态修改manifest.json

Demo:

"navigationStyle":"custom"

条件编译没写对,查看一下报错对应文件的ifdef条件编译配置是不是有单词拼错的情况,修改一下即可

//#ifdefH5

//#endif

在package.json中配置UNI_OUTPUT_DIR

如:UNI_OUTPUT_DIR=dist/dev/dev-mp-weixin,注意这个字段一定要配置在uni-build之前

栗子:

page.json中配置condition

DEMO:

json复制代码"condition":{ //模式配置,仅开发期间生效 "current":0,//当前激活的模式(list的索引项) "list":[ { "name":"",//模式名称 "path":"",//启动页面,必选 "query":""//启动参数 }, ] }29、uni-app使用iconfont照着文档配置即可

代码

css复制代码 @keyframesshine{ 0%{ background-position:-468px0; } 100%{ background-position:468px0; } } .skeleton{ width:100%; background-color:#f1f0f5!important; background-image:linear-gradient(toright,#f1f0f58%,#fff18%,#f1f0f533%)!important; background-size:800px100%!important; animation:1.5slinear0sinfiniteshine; }使用

1、将代码贴到App.vue的style中或放进自己项目的全局样式表中

2、在需要做骨架屏的代码上配置skeleton类名(这个类名只是加了背景色和动画,其他的布局还是要自己写的哈)

DEMO

图片作用:这个是导航栏下方的阴影线,在pages.json的文档里有描述。目前只能在编译后的源码里删除引用。

我的方案:通过js脚本正则替换shadow-grey.png为base64格式图片

这个插件是vue-count-up的移植版,可以直接导进项目包中使用

uview组件库,但是需要将整个库引入,按自己项目评估使用哪一个

解决方案:rgba(0,0,0,0)代替即可

修改manifest.json或者vue.config.js文件,两者配置冲突改一个即可;

详细参考webpackdevserver参数配置即可

本地图片地址为:static/images/cover.min.png

H5的router配置如下

js复制代码"router":{"mode":"hash","base":"/h5"},期望:

编译为H5之后,页面引用资源地址为:

h5/static/images/cover.min.png

结果:

依然为原来链接,静态资源前没有自动拼上base,static/images/cover.min.png

引用静态资源的时候加入~@如:

最终build打包之后,通过这种方式引入的静态图片会自动转化为base64的方式引入,如下图DEMO:

所以放本地的图片体积尽量不要太大,一定要压缩,有条件尽量使用网络图

文档:注意使用这个api需要去支付宝申请,通过了服务端才能解析出手机号码

问题:

调用uni.getPhoneNumber的返回值和my.getPhoneNumber参数格式不同,期望得到my.getPhoneNumber格式的返回值

期望返回:

js复制代码{response:"{"response":"","sign":""}"}实际返回:

js复制代码{encryptedData:"xxxxxxxxx",errMsg:"getPhoneNumber:ok",sign:"xxxxxxxxxx"}解决方案:重新调用支付宝的my.getPhoneNumberApi

找到原因时的心情:

解决方案:可使用正则替换

解决方案:无,支付宝说的算,按自己需求找折中方案

问题:button设置open-type="contact"支付宝环境下无效

配置条件编译,支付宝环境下直接使用支付宝提供的contact-button标签

tntInstId和scene需要自己去支付宝智能客服配置页获取

page.json中配置全局样式或针对mp-alipay设置allowsBounceVertical属性即可

这里要注意,是allowsBounceVertical:'YES'或allowsBounceVertical:'NO',

不要顺手写true、false了,因为我做过这种蠢事

坑:

链接打开支付宝小程序目前只支持页面后携带一个参数,多个参数的情况下会参数丢失

DMEO:

如上链接其实有两个参数:userId和source,但最终页面onload能接收到的query只有userid一个参数

DEMO:

1、input添加always-system属性

缺点:

2、针对支付宝单独兼容

步骤一:若已在input中设置了enableNative属性,删除enableNative属性的全部设置。步骤二:在app.json文件window对象内,设置"enableInPageRenderInput":"YES"。

THE END
1.微信小程序其他组件webview内嵌微信小程序中的web-view组件是一个非常有用的工具,它允许开发者在小程序中嵌入外部网页。这对于希望在小程序中展示已有H5页面内容的开发者来说特别有用,不仅能够减少重复开发的工作量,还能利用现有的H5资源,实现快速迭代和更新。下面将详细介绍web-view组件的主要特性和使用方法。 https://blog.csdn.net/2401_88677290/article/details/143644231
2.微信小程序实现“转发给朋友”“分享到朋友圈”简介:微信小程序实现“转发给朋友”、“分享到朋友圈” Tips 1.低版本微信客户端打开时,会进入-一个升级提示页面 2.不支持在小程序页面内直接发起分享 3.自定义分享内容时不支持自定义页面路径 4.存在web-view组件的页面不支持发起分享 5.支持打开开发版、体验版,无权限人员进入时页面会提示无权限 https://developer.aliyun.com/article/1396467
3.微信小程序webview组件加载的页面,如何分享到朋友圈现在的问题是公司已经有一个资讯类的手机网站了,主要都是内容的展示,没有复杂的交互。老板想配套有个同款的小程序,于是用了小程序的webview一把梭套了进去,效果一切完美。https://segmentfault.com/q/1010000039363294/a-1020000039363829
4.小程序webview转发分享朋友圈AvaDong转战小程序 webview H5页面 的转发分享朋友圈功能 先说 小程序分享朋友圈的 功能实现 在小程序内部做分享,尚且需要用画布画出带有二维码的图片,在H5页面上更不用说了,根本就碰不着小程序的自己的api。老老实实画画布吧。 做的过程中发现以下几个问题: 1. IOS白屏打不开whttps://www.cnblogs.com/dongjingya/p/10291296.html
5.微信小程序配置了onShareTimeline分享到朋友圈,但是在开发者工具微信小程序配置了onShareTimeline分享到朋友圈,但是在开发者工具中这里始终是灰色的,在真机调试的时候也没有发现有分享到朋友圈的相关信息。 有说:使用web-view组件的页面支持分享发送给朋友不支持分享到朋友圈 折腾半天不如看官方文档。 换了一个项目看也是一样的,有分享给好友,但是分享到朋友圈的按钮在开发者工具https://blog.yyzq.team/post/336577.html
6.将慧表Web服务整体嵌入微信小程序附代码包点滴技术摘要:利用微信小程序web-view组件,1行代码将慧表NxCellsH5Web页面嵌入微信小程序,加几行代码再实现群发 微信小程序用户不需要下载软件,随用随取,用过自留痕迹,比需要下载的软件更利于推广。 不要被框架图吓到,其实关键的只有一行代码,画图只是为更多人理解。 https://weitue.com/index.php/article/70.html
7.taro框架打包ios的APP壳子taro框架的弊端2.5 分享好友/朋友圈 2.6 页面转发分享/长按图片识别 2.7 自定义顶部导航栏 2.8 弹出授权框 2.9 订阅消息 2.10 登录流程 三、总结 前言:微信小程序相信大家都不陌生,目前小程序开发主流的框架有微信原生开发,uni-app,以及今天的重点Taro。编者自身小程序开发经验也不多,仅针对自身在小程序开发中的问题做一次汇总,https://blog.51cto.com/u_16213574/9315442
8.微信公众号分享,微信小程序webview内嵌公众号网页分享功能实现需求:有一个做好的微信公众号项目(vue框架搭建的),还要做一个小程序版的,为了减少开发工作,全部使用web-view嵌入网页。 但要能分享,有二种分享情况 1、小程序分享出当前打开的页面 2、部分页面要求,分享指定页面,而不是当前的页面 以下是代码部分 一、web-view内嵌公众号网页中添加代码 http://www.jisuapp.cn/news/687.html
9.微信小程序webview源码(内嵌网页分享功能).zip微信小程序web-view源码(含内嵌网页分享功能)亲自测试ok,将app.js下域名换成自己的域名即可 微信web-view源码 web-view源码 分享源码 小程序分享2019-08-29 上传大小:11KB 所需:46积分/C币 微信小程序开发-企业版商城案例源码.zip 微信小程序开发-企业版商城案例源码.zip https://www.iteye.com/resource/qq_19668427-11638201
10.微信小程序分享到朋友圈按钮无效根据微信小程序开发文档,定义了 onShareTimeline 事件处理函数,点击右上角菜单,就会出现“分享到朋友圈”的按钮。 一般情况下,都是没有问题的。 不过,最近开发中发现一个页面,即使定义了 onShareTimeline ,分享到朋友圈也是无效的。害得我一个字母一个字母的检查,还以为是复制黏贴的时候,哪里搞错了…… https://www.zhuige.com/index/news/detail/id/931.html
11.百度/微信小程序自动化测试总结51Testing软件测试网小程序融合了Native app和web-app的特性,属于混合型应用(Hybrid App)。以爱奇艺视频微信小程序为例,上面的TopActionBar和下边的Bottom Action Bar是属于原生的组件,而中间是由webview渲染的,属于web应用。 对于安卓原生的UI组件,我们可以直接用UIAutomator查看元素属性,如下图所示 http://www.51testing.com/mobile/view.php?itemid=4458837
12.第三方服务分享《uniappAPI文档》值说明 WXSceneSession 分享到聊天界面 WXSenceTimeline 分享到朋友圈 WXSceneFavorite 分享到微信收藏miniProgram 值说明值类型说明 id String 微信小程序原始id path String 点击链接进入的页面 type Number 微信小程序版本类型,可取值: 0-正式版; 1-测试版; 2-体验版。 默认值为0。 webUrl String 兼容低版本的https://www.bookstack.cn/read/uniapp-api/149862
13.如何实现微信小程序中webview与小程序之间的数据传递与状态同步?火山引擎是字节跳动旗下的云服务平台,将字节跳动快速发展过程中积累的增长方法、技术能力和应用工具开放给外部企业,提供云基础、视频与内容分发、数智平台VeDI、人工智能、开发与运维等服务,帮助企业在数字化升级中实现持续增长。本页核心内容:如何实现微信小程序中webvhttps://www.volcengine.com/theme/3904628-R-7-1
14.微信小程序新组件web编辑推荐:关注微信小程序、微信小游戏、Node.js 和 Java 实时 Bug 监控,真的是一款非常好用的 Bug 监控服务,很多大公司都在用。 前言 微信小程序是可以直接运行网页的,web-view这个新组件的出现,可能直接导致小程序数量的一个高峰。本篇博文将从业务选型、微信小程序后端配置、使用web-view完成登录业务、实战中如https://m.bjhwtx.com/h-nd-193270.html
15.微信小程序开发文档这份微信小程序开发者文档是微信公众平台官方团队发布,由W3Cschool编辑整理完成,方便开发者查阅学习,并添加拓展了《微信小程序设计规范》等相关知识,使该文档内容更加丰富。_来自微信小程序开发文档,w3cschool编程狮。https://www.w3cschool.cn/weixinapp
16.GitHubmrabit/wxapp在微信小程序里,webviewH5向miniProgram通讯只能通过postMessage函数然而这个函数却很鸡肋,小程序官方文档是这样描述的:向小程序发送消息,会在特定时机(小程序后退、组件销毁、分享)触发组件的message事件而且小程序官方文档里没有提到miniProgram如何向webviewH5通讯在这个demo中, 展示了我是如何让webviewH5和miniProgram互相https://github.com/mrabit/wx_app_webview
17.微信小程序分享设置–蓝鲸分享小程序页面默认不可被分享到朋友圈,开发者需主动设置“分享到朋友圈”。 return返回值: onShareTimeline(){ return { title:'', query:'', } } 2.1.页面需设置允许“发送给朋友” 2.2.页面需设置允许“分享到朋友圈”,同时可自定义标题、分享图等。 https://www.49855.net/%E5%BE%AE%E4%BF%A1%E5%B0%8F%E7%A8%8B%E5%BA%8F%E5%88%86%E4%BA%AB%E8%AE%BE%E7%BD%AE/
18.uniapp:微信小程序内嵌h5页面分享给好友一、 小程序内嵌 h5 用 web-view <template><view@tap="tap"><web-view:src="web_url"></web-view></view></template> 二、实现 h5 页面分享, 首页要 进入的页面和 h5 页面要在主包里, 如下 image.png 三、h5 页面分享操作如下 onShareAppMessage(options){return{title:this.title,path:`/pages/https://www.jianshu.com/p/7989c5268020
19.微信小程序内嵌网页的一些(最佳)实践3 个月前,微信小程序推出了web-view组件引发了一波小高潮,笔者所在的大前端团队写过一篇浅析,详情可见:浅谈微信小程序前端生态。 我们曾大胆猜想,这一功能,可能直接导致小程序数量增长迎来一波高峰。 毕竟磨刀霍霍却一直资源不足的团队应该不少,现在可以把已有 H5 应用嵌入到小程序 web-view 容器中,以最低的开发成https://maimai.cn/article/detail?fid=283719933&efid=KQeQYPrgRDRwO0YD_H5Nkg