美文网首页
uniapp开发注意事项

uniapp开发注意事项

作者: 一个记事本 | 来源:发表于2021-02-20 17:55 被阅读0次

*** uniapp页面在App端的渲染引擎默认是系统webview(不是手机自带浏览器,是rom的webview [rom:手机存储器,相当于手机内存,但不是手机内存] ),非H5端的js是运行在一个独立的js core(ios)或v8(android)下,并不是运行在浏览器里。uni-app 基于Vue 2.0实现 ***

1、uniapp使用HTML5+注意事项
a、条件编译调用HTML5+
小程序及 H5 等平台是没有 HTML5+ 扩展规范的,因此在 uni-app 调用 HTML5+ 的扩展规范时,需要注意使用条件编译。否则运行到h5、小程序等平台会出现 plus is not defined错误。

// #ifdef APP-PLUS
var appid = plus.runtime.appid;
console.log('应用的 appid 为:' + appid);
// #endif

b、uniapp不需要 plusready
在html中使用plus的api,需要等待plus ready。 而uni-app不需要等,可以直接使用。而且如果你调用plus ready,反而不会触发。

// uniapp不需要plusready方法
document.addEventListener('plusready',function () { 
        // 在这里调用5+ API 
},false); 

2、条件编译(跨端兼容)
为什么要使用条件编译:如果通过大量写 if else,会造成代码执行性能低下和管理混乱,编译到不同的工程后二次修改,会让后续升级变的很麻烦。

写法:以 #ifdef 或 #ifndef 加 %PLATFORM% 开头,以 #endif 结尾

#ifdef:if defined 仅在某平台存在
#ifndef:if not defined 除了某平台均存在
%PLATFORM%:平台名称

1、平台名称有:APP-PLUS(APP端)、APP-PLUS-NVUE或APP-NVUE(App nvue)、H5(H5端)、
           MP-WEIXIN(微信小程序)、MP-ALIPAY(支付宝小程序)、MP-BAIDU(百度小程序)、
           MP-TOUTIAO(字节跳动小程序)、MP-QQ(QQ小程序)、MP-360(360小程序)、MP(以上所有带MP开头的都包括)

2、条件编译APP-PLUS包含APP-NVUE和APP-VUE,APP-PLUS-NVUE和APP-NVUE没什么区别,为了简写后面出了APP-NVUE ;

3、**注意**:
  条件编译是利用注释实现的,在不同语法里注释写法不一样,
  js 使用 // 条件语句
  css 使用 /* 条件语句 */
  vue/nvue 模板里使用 <!-- 条件语句 -->

4、pages.json 使用 // 条件语句  
  不同平台下的特有功能,以及小程序平台的分包,都可以通过 pages.json 的条件编译来更好地实现。这样,就不会在其它平台产生多余的资源,进而减小包体积。

5、static目录也可以条件编译
  在不同平台,引用的静态资源可能也存在差异,通过 static 的的条件编译可以解决此问题,static 目录下新建不同平台的专有目录(目录名称同 %PLATFORM% 值域,但字母均为小写),专有目录下的静态资源只有在特定平台才会编译进去。
  如以下目录结构,a.png 只有在微信小程序平台才会编译进去,b.png 在所有平台都会被编译。
  ┌─static                
  │  ├─mp-weixin  \\ 只会在微信小程序平台才会编译此文件
  │  │  └─a.png     
  │  └─b.png
  ├─main.js        
  ├─App.vue      
  ├─manifest.json 
  └─pages.json

6、整体目录条件编译
  如果想把各平台的页面文件更彻底的分开,也可以在uni-app项目根目录创建platforms目录,然后在下面进一步创建app-plus、mp-weixin等子目录,存放不同平台的文件。
  **注意** `platforms`目录下只支持放置页面文件(即页面vue文件),如果需要对其他资源条件编译建议使用static目录条件编译


相关文章

网友评论

      本文标题:uniapp开发注意事项

      本文链接:https://www.haomeiwen.com/subject/udgtfltx.html