uniapp中plus的使⽤
什么是plus?
以plus开头的⽅法都是属于HTML5+环境调⽤的⽅法。
plus不能在浏览器环境下使⽤,它必须在⼿机APP上才能使⽤,因为以安卓为例,他是操纵webview的API。在5+中,我们在使⽤plus之前要监听HTML5+环境是否已经加载完毕,⽽在uniapp中,则可以直接调⽤,可以参看uni-app使⽤plus注意事项。
什么是webview?
WebView是android中⼀个⾮常重要的控件,它的作⽤是⽤来展⽰⼀个web页⾯。它使⽤的内核是webkit引擎,4.4版本之后,直接使⽤chrome作为内置⽹页浏览器。它的作⽤是显⽰和渲染页⾯,可与页⾯JavaScript加护,实现混合开发。
什么是HTML5+?
HTML5+是中国HTML5产业联盟的扩展规范,基于HTML5扩展了⼤量调⽤设备的能⼒,使得web语⾔可以像原⽣语⾔⼀样强⼤。
uni-app App 端内置引擎,让 js 可以直接调⽤丰富的原⽣能⼒。
⼩程序及 H5 等平台是没有 HTML5+ 扩展规范的,因此在uni-app调⽤ HTML5+ 的扩展规范时,需要注意使⽤条件编译。否则运⾏到h5、⼩程序等平台会出现plus is not defined错误。
// #ifdef APP-PLUS
var appid = plus.runtime.appid;
console.log('应⽤的 appid 为:' + appid);
// #endif
在html中使⽤plus的api,需要等待plus ready。⽽uni-app不需要等,可以直接使⽤。⽽且如果你调⽤plus ready,反⽽不会触发。
在普通的 H5+ 项⽬中,需要使⽤document.addEventListener监听原⽣扩展的事件。
uni-app中,没有 document。可以使⽤plus.globalEvent.addEventListener来实现(注意manifest中需开启新编译器,即⾃定义组件模式"usingComponents":true)。
/
/ #ifdef APP-PLUS
// 监听设备⽹络状态变化事件
plus.globalEvent.addEventListener('netchange', function(){});
// #endif
同理,在uni-app中使⽤ Native.js 时,⼀些 Native.js 中对于原⽣事件的监听同样需要按照上⾯的⽅法去实现。
注意:旧编译器(⾮⾃定义组件模式)不⽀持plus.globalEvent这个对象。
uni-app 已将常⽤的组件、JS API 封装到框架中,开发者按照 uni-app 规范开发即可保证多平台兼容,⼤部分业务均可直接满⾜。
但每个平台有⾃⼰的⼀些特性,因此会存在⼀些⽆法跨平台的情况。
⼤量写 if else,会造成代码执⾏性能低下和管理混乱。
编译到不同的⼯程后⼆次修改,会让后续升级变的很⿇烦。
在 C 语⾔中,通过 #ifdef、#ifndef 的⽅式,为 windows、mac 等不同 os 编译不同的代码。uni-app参考这个思路,为uni-app提供了条件编译⼿段,在⼀个⼯程⾥优雅的完成了平台个性化实现。
条件编译是⽤特殊的注释作为标记,在编译时根据这些特殊的注释,将注释⾥⾯的代码编译到不同平台。
写法:以 #ifdef 或 #ifndef 加 %PLATFORM% 开头,以 #endif 结尾。
#ifdef:if defined 仅在某平台存在
#ifndef:if not defined 除了某平台均存在
%PLATFORM%:平台名称
条件编译写法说明
#ifdef APP-PLUS
需条件编译的代码
仅出现在 App 平台下的代码
#endif
#ifndef H5
需条件编译的代码除了 H5 平台,其它平台均存在的代码
需条件编译的代码
#endif
除了 H5 平台,其它平台均存在的代码#ifdef H5 || MP-WEIXIN
需条件编译的代码#endif 在 H5 平台或⼩程序平台存在的代码(这⾥只有||,不可能出现&&,因为没有交集)
条件编译写法说明
%PLATFORM% 可取值如下:
值平台
APP-PLUS App
APP-PLUS-NVUE或APP-NVUE App nvue
H5H5
MP-WEIXIN⼩程序
安卓app开发用什么框架MP-ALIPAY⽀付宝⼩程序
MP-BAIDU百度⼩程序
MP-TOUTIAO字节跳动⼩程序
MP-QQ QQ⼩程序
MP-360360⼩程序
MP⼩程序/⽀付宝⼩程序/百度⼩程序/字节跳动⼩程序/QQ⼩程序/360⼩程序
QUICKAPP-WEBVIEW快应⽤通⽤(包含联盟、华为)
QUICKAPP-WEBVIEW-UNION快应⽤联盟
QUICKAPP-WEBVIEW-HUAWEI快应⽤华为
Android 和 iOS 平台不⽀持通过条件编译来区分,如果需要区分 Android、iOS 平台,请通过调⽤ SystemInfo 来获取平台信息。⽀持ifios、ifAndroid代码块,可⽅便编写判断。

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。