手机版

github特色:微信小程序常见问题

时间:2021-12-16 来源:互联网 编辑:宝哥软件园 浏览:

1. 微信小程序JS为什么无法使用 document,window 等。

由于小程序开发框架的逻辑层不是在浏览器环境中运行,而是在App Service Thread中运行,所以View层视图是在View Thread中运行,渲染是通过Webview实现的,它们之间的通信是通过JSBridge实现的。

github精选:微信小程序常见问题(图1)

下图说明了页面实例的生命周期。

github精选:微信小程序常见问题(图2)

2. 为什么在微信开发者工具中正常,但是在真机中调试却异常,如样式异常,es6语法报错?

首先需要明确的是,小程序目前可以在三种不同的终端上运行:

在iOS上,小程序的JavaScript代码在javascriptCore中运行,视图层由WKWebView渲染,环境为安卓上的iOS8、iOS9、iOS10,小程序的Javascript代码由X5 JSCore解析。视图层由基于Mobile Chrome 37内核的X5渲染。在开发工具上,小程序的javascript代码在nwjs中运行(U将nwjs升级到19.4版本,并更新到Chrome55内核),视图层由Chrome Webview呈现。尽管三个终端的环境非常相似,但仍有一些差异:

ES6的语法支持不一致,开发者可以通过打开ES6到ES5的功能来避免。6.EsAPI支持不一致性考虑到代码包大小的限制,目前开发人员需要引入相关类库自行处理API。我们可以通过caniuse或者X5兼容性查询相关API的支持情况。虽然我们可以打开样式完成来避免大多数问题,但我们建议开发人员应该检查iOS和安卓上小程序的真实性能。不同的运行时环境会导致各种奇怪的问题,所以所有的调试都应该基于真实的机器。

3. 微信小程序的组件是否都是原生实现的,类似React Native?

没有,小程序视图层还是依赖Webview,只有部分组件是原生组件,用来解决Mobile Web体验的问题。目前,原生组件包括:输入、文本区、视频、地图、画布。

:输入组件是原生组件,字体是系统字体,所以字体系列;无法设置。Tip: textarea组件是客户端创建的原生组件,级别最高。Tip:视频组件是客户端创建的原生组件,级别最高。map组件是客户端创建的原生组件,级别最高。Tip:画布组件是客户端创建的原生组件,级别最高。

其他组件是基于Web Component规范实现的Custom Element,而picker弹出选择器行为和navigator跳转行为都是基于微信原生提供的功能,理解为调用wx.xxxApi。

4. 其他

小程序的背景图片暂时不支持本地图片小程序。如果没有设置showToast中的持续时间,将会有一个默认的秒数,所以最好在加载动画时设置更长的时间。否则,如果加载时间过长,动画将在默认秒数后停止。为了防止用户再次提交,需要将变量设置为onShow中的可操作,而不是Onhide 010-。

版权声明:github特色:微信小程序常见问题是由宝哥软件园云端程序自动收集整理而来。如果本文侵犯了你的权益,请联系本站底部QQ或者邮箱删除。