uni-app多平台融合【入门】(标贝科技)

2023-05-16


标贝科技 https://ai.data-baker.com/#/?source=qwer12

填写邀请码fwwqgs,每日免费调用量还可以翻倍
在这里插入图片描述
在这里插入图片描述


uni-app多平台融合【入门】(标贝科技)
一、uni-app介绍
uni-app 是一个使用 Vue.js 开发所有前端应用的框架,开发者编写一套代码,可发布到iOS、Android、Web(响应式)、以及各种小程序(微信/支付宝/百度/头条/飞书/QQ/快手/钉钉/淘宝)、快应用等多个平台。

二、功能框架
从下面uni-app功能框架图可看出,uni-app在跨平台的过程中,不牺牲平台特色,可优雅的调用平台专有能力,真正做到海纳百川、各取所长。
在这里插入图片描述

三、使用工具【推荐】
HBuilderX 【官网下载地址:https://www.dcloud.io/hbuilderx.html】

四、uni-app 优缺点
1.使用多端开源框架
2. uni-app拓展能力强【有丰富的插件市场】https://ext.dcloud.net.cn/
2.通用前端技术栈,学习成本更低
3.支持通过npm安装第三方包
五、创建项目
1.通过 HBuilderX 可视化界面创建项目
(1)创建uni-app 【点击工具栏的文件 -> 新建 -> 项目】
在这里插入图片描述

(2)创建模板,选择uni-app 创建演示模板
在这里插入图片描述

(3)运行uni-app到【浏览器】
在这里插入图片描述

(4)运行uni-app到【小程序】
在这里插入图片描述

(5)运行到其他程序同理,需下载对应的开发者工具
(6)通过manifest.json 进行发行配置
在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

2.通过命令行进行创建项目

六、目录结构

┌─uniCloud              云空间目录,阿里云为uniCloud-aliyun,腾讯云为uniCloud-tcb(详见uniCloud)
│─components            符合vue组件规范的uni-app组件目录
│  └─comp-a.vue         可复用的a组件
├─hybrid                App端存放本地html文件的目录,详见
├─platforms             存放各平台专用页面的目录,详见
├─pages                 业务页面文件存放的目录
│  ├─index
│  │  └─index.vue       index页面
│  └─list
│     └─list.vue        list页面
├─static                存放应用引用的本地静态资源(如图片、视频等)的目录,注意:静态资源只能存放于此
├─uni_modules           存放[uni_module](/uni_modules)规范的插件。
├─wxcomponents          存放小程序组件的目录,详见
├─unpackage		打包文件
├─main.js               Vue初始化入口文件
├─App.vue               应用配置,用来配置App全局样式以及监听 应用生命周期
├─manifest.json         配置应用名称、appid、logo、版本等打包信息,详见
├─pages.json            配置页面路由、导航条、选项卡等页面类信息,详见
└─uni.scss              这里是uni-app内置的常用样式变量 

七、跨端兼容
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
需条件编译的代码
#endif
仅出现在 App 平台下的代码
#ifndef H5
需条件编译的代码
#endif
除了 H5 平台,其它平台均存在的代码
#ifdef H5 || MP-WEIXIN
需条件编译的代码
#endif
在 H5 平台或微信小程序平台存在的代码(这里只有||,不可能出现&&,因为没有交集)

%PLATFORM% 可取值如下:

生效条件
VUE3HBuilderX 3.2.0+
APP-PLUSApp
APP-PLUS-NVUE或APP-NVUEApp nvue
H5H5
MP-WEIXIN微信小程序
MP-ALIPAY支付宝小程序
MP-BAIDU字节跳动小程序
MP-LARK飞书小程序
MP-QQQQ小程序
MP-KUAISHOU快手小程序
MP-360360小程序
MP微信小程序/支付宝小程序/百度小程序/字节跳动小程序/飞书小程序/QQ小程序/360小程序
QUICKAPP-WEBVIEW快应用通用(包含联盟、华为)
QUICKAPP-WEBVIEW-UNION快应用联盟
QUICKAPP-WEBVIEW-HUAWEI快应用华为

支持的文件

  • .vue
  • .js
  • .css
  • pages.json
  • 各预编译语言文件,如:.scss、.less、.stylus、.ts、.pug

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

  • 条件编译APP-PLUS包含APP-NVUE和APP-VUE,APP-PLUS-NVUE和APP-NVUE没什么区别,为了简写后面出了APP-NVUE
  • 使用条件编译请保证编译前和编译后文件的正确性,比如json文件中不能有多余的逗号;
  • VUE3 需要在项目的 manifest.json 文件根节点配置 “vueVersion” : “3”

API 的条件编译

// #ifdef  %PLATFORM%
平台特有的API实现// #endif

示例,如下代码仅在 App 下出现:
在这里插入图片描述

示例,如下代码不会在 H5 平台上出现:
在这里插入图片描述

除了支持单个平台的条件编译外,还支持多平台同时编译,使用 || 来分隔平台名称。
示例,如下代码会在 App 和 H5 平台上出现:
在这里插入图片描述

组件的条件编译

<!--  #ifdef  %PLATFORM% -->
平台特有的组件<!--  #endif -->

示例,如下公众号关注组件仅会在微信小程序中出现:

<view>
    <view>微信公众号关注组件</view>
    <view>
        <!-- uni-app未封装,但可直接使用微信原生的official-account组件-->
        <!-- #ifdef MP-WEIXIN -->
                <official-account></official-account>
            <!-- #endif -->
    </view></view>

样式的条件编译

/*  #ifdef  %PLATFORM%  */
平台特有样式/*  #endif  */

注意: 样式的条件编译,无论是 css 还是 sass/scss/less/stylus 等预编译语言中,必须使用/*注释*/ 的写法。
正确写法
在这里插入图片描述

错误写法
在这里插入图片描述

pages.json 的条件编译
下面的页面,只有运行至 App 时才会编译进去。
在这里插入图片描述

不同平台下的特有功能,以及小程序平台的分包,都可以通过 pages.json 的条件编译来更好地实现。这样,就不会在其它平台产生多余的资源,进而减小包体积。
json的条件编译,如不同平台的key名称相同,cli项目下开发者自己安装的校验器会报错,需自行关闭这些校验器对json相同key的校验规则。如果使用HBuilderX的校验器,无需在意此问题,HBuilderX的语法校验器为此优化过。
static 目录的条件编译
在不同平台,引用的静态资源可能也存在差异,通过 static 的的条件编译可以解决此问题,static 目录下新建不同平台的专有目录(目录名称同 %PLATFORM% 值域,但字母均为小写),专有目录下的静态资源只有在特定平台才会编译进去。
如以下目录结构,a.png 只有在微信小程序平台才会编译进去,b.png 在所有平台都会被编译。

┌─static                
│  ├─mp-weixin
│  │  └─a.png     
│  └─b.png
├─main.js        
├─App.vue      
├─manifest.json 
└─pages.json     

整体目录条件编译
如果想把各平台的页面文件更彻底的分开,也可以在uni-app项目根目录创建platforms目录,然后在下面进一步创建app-plus、mp-weixin等子目录,存放不同平台的文件。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

uni-app多平台融合【入门】(标贝科技) 的相关文章

  • keil 工程头文件包涵及结构体重定义问题

    最近在写一个太阳能电池控制板的项目 xff0c 这两天真是收获颇丰 xff0c 把指针又从新学了一遍 xff0c 还是项目坑死人啊啊啊啊啊 下面是我在建立工程时遇到的问题 xff1a 1 头文件包涵问题 xff1a 原先写的程序都是小程序
  • Openmediavault 4.1.3 镜像下载地址

    Openmediavault 4 1 3 镜像下载地址 https nchc dl sourceforge net project openmediavault 4 1 3 openmediavault 4 1 3 amd64 iso
  • 【leetcode】【77】Combinations

    一 问题描述 Given two integers n and k return all possible combinations of k numbers out of 1 n For example If n 61 4 and k 6
  • 激光雷达介绍

    全球汽车行业正在进行自动化变革 xff0c 这将彻底改变交通运输的安全和效率水平 戴姆勒在S级豪华车型中引入L3级自动驾驶 xff08 L3 xff0c 在特定条件下自动驾驶 xff0c 人类驾驶员一旦被请求就会随时接管 xff09 是自动
  • get请求 包括username和password

    方法一 xff1a public static String wisdomNetMessagePlat String sn String encoding throws Exception String result 61 34 34 St
  • Arduino控制L298N

    一般做智能小车或者DIY开发的童鞋需要用到Arduino这狂开发板 xff0c 作为一名好奇心很强的软件开发人员 xff0c 我自然也想尝尝鲜特别是利用Arduino做一些人机交互的项目 xff0c 如果结合了Kinect AR增强现实 x
  • gitlab打tag的作用,以及如何基于tag切分支

    在 GitLab 中 xff0c Tag 是将 Git 项目中特定的提交标记为版本的一种方式 Tag 能够用于标记发布的版本 xff0c 以便于对代码的每个版本进行管理和追踪 打 Tag 的作用主要有以下几点 xff1a 标记版本发布 xf
  • 解析包含用户名密码的FTPURL

    include lt stdio h gt include lt string h gt void parse ftpurl char url char user char passwd char ipaddr uint port char
  • nvidia jetson xavier nx Deepstream Yolov3示例模型运行

    最近在玩nvidia jetson xavier nx的板子 xff0c 特在此做一些笔记 1 进入sample目录 cd opt nvidia deepstream deepstream sources objectDetector Yo
  • go-mysql-elasticsearch+mysql 同步 ElasticSearch(标贝科技)

    标贝科技 https ai data baker com source 61 qwer12 填写邀请码fwwqgs xff0c 每日免费调用量还可以翻倍 一 Elasticsearch xff1a https www elastic co
  • Intel Realsense D400系列相机自校准细节,减少踩坑!!

    自校准 xff08 对任意环境非白墙 注意距离0 4 2米之间 xff0c 深度 xff08 相机拍摄内容中物体所占空间 xff09 50 xff09 xff1a 打开Intel realSense viewer xff1a 连接设备 xf
  • QT实现NMea截取指定片段字符串——$GNGGA(小白第一次编,后期有机会完善代码,高勿)

    总体思路 xff1a 1 读取所有数据 xff08 readAll xff08 xff09 xff09 QByteArray readbuf 61 serial gt readAll 2 查找标志位 xff08 QString中使用inde
  • linux c&&c++关于赋值问题(char*传给另一个char*)

    仅列出四种 xff0c 欢迎补充 xff01 方法一 xff1a 直接 char buf1 61 char buf2 xff0c xff08 xff01 xff01 xff01 这里的赋值是将buf2的地址赋给了buf1 xff0c 此后b
  • B6AC使用说明

    1 接线方式 接线如下图所示 xff0c 如果电池是XT60 xff0c 可以用接鳄鱼夹子的T插夹在XT60的接口上 2 设置方法 2 1 锂电池充电 1 xff09 Batt Type gt 切换选择 LiPo BATT gt Enter
  • 整数转换为字符串

    include lt stdio h gt 反转字符串 char reverse char s char temp char p 61 s p指向s的头部 char q 61 s q指向s的尾部 while q 43 43 q q 交换移动
  • 【工具使用】Modbus Poll软件使用详解

    软件介绍 Modbus Poll是一个模拟Modbus协议主机的上位机软件 xff0c 主要用于模拟测试跟其他从机设备通信的过程 与之成套存在的另一个软件 Modbus Slave xff0c 则是模拟Modbus协议从机的上位机软件 该软
  • c++下程序的运行(第3方库的安装及安装gdal)

    C 43 43 安装第三方库 1 概览2 编译 xff0c 首先要熟悉程序编译过程 xff08 预处理 gt 编译 gt 汇编 gt 链接 xff09 2 1 编译流程4步2 1 1 1 预处理2 1 2 2 编译2 1 3 3 汇编2 1
  • 制作IEC101/104报文解析工具

    文章目录 准备 一 IEC101 104协议 二 制作解析工具步骤 1 建立协议族 2 建立协议 3 建立术语 4 建立报文块 5 建立报文解析规则 总结 准备 这里是基于 在线解析二进制报文 文章中介绍的物联网助手来快速搭建IEC101
  • PHP各版本技术特性(标贝科技)

    文章目录 PHP8JIT流程配置测试小结 match表达式 PHP7HugepageHugepage简介Hugepage配置 Opcache file cacheOpcache file cache简介Opcache file cache配
  • vue、springboot集成websocket跨域问题解决

    由于浏览器连接的是服务器上的websocket xff0c 导致出现了如下跨域错误 xff1a The value of the 39 Access Control Allow Origin 39 header in the respons

随机推荐

  • 动态库学习

    总结一 xff1a 动态库 前言 我们知道程序编译链接经常使用动态 xff0c 同时我们可能还知道 xff0c 动态库时程序运行时加载的 但是动态库到底有什么作用 xff0c 如何生成 如何加载等 xff0c 我们却很少关注 接下来 xff
  • Python学习第一次问题笔记:vscode 运行python代码没有输出(Code runner)

    目录 问题 xff1a 解决方案 xff1a 原因一 xff1a 原因二 xff1a 问题 xff1a 新安装Visual Studio Code后 xff0c 在其上进行第一次代码运行时 xff0c 会出现只在终端中显示代码结果 xff0
  • 标准差分进化算法matlab程序实现

    终于开始了研究生阶段的学习生活 xff0c 繁琐的入学相关事宜也处理得差不多了 在9月5号 xff0c 我们实验室召开了第一次小组会议 xff0c 导师也相继给我们指定了各自的研究方向 xff0c 不出意外 xff0c 我接下来将围绕智能优
  • 《图解深度学习》学习笔记(一)

    第一章 绪论 监督学习 xff1a 需要基于输入数据及其期望输出 xff0c 通过训练从数据中提取通用信息或特征信息 特征值 xff0c 以此得到预测模型 这里的特征值是指根据颜色和边缘等认为定义的提取方法从训练样本中提取的信息 xff08
  • 3D点云基础知识(一)-初始入门-知乎整理(一)

    本文基于如下知乎文章 xff0c 调整部分内容整理输出 xff0c 一为梳理基础知识 xff0c 二为致敬原作 作者 xff1a Mr 苍雪 链接 xff1a https zhuanlan zhihu com p 344635951 来源
  • Open3D处理点云数据(一)点云文件读取、写入、显示

    import open3d as o3d import numpy as np pcd 61 o3d geometry PointCloud pcd类型的数据 np points 61 np random rand 100 3 随机生成点云
  • Ubuntu非管理员root安装ninja:解决RuntimeError: Ninja is required to load C++ extensions错误

    服务器是共用的 xff0c 所以无法使用sudo apt get 命令快速安装 只能自己下载git上的源代码然后编译 xff0c 装在自己的私人目录下 否则 sudo apt get 安装很容易 xff0c 55555555 Ninja是一
  • Elasticsearch相似度算分TF-IDF BM25(标贝科技)

    欢迎体验标贝语音开放平台 地址 xff1a https ai data baker com source 61 qaz123 xff08 注 xff1a 填写邀请码hi25d7 xff0c 每日免费调用量还可以翻倍 xff09 控制相关度
  • 【K210】K210学习笔记五——串口通信

    K210 K210学习笔记五 串口通信 前言K210如何进行串口通信K210串口配置K210串口发送相关定义K210串口接收相关定义K210串口发送接收测试 完整源码 前言 本人大四学生 xff0c 电赛生涯已经走到尽头 xff0c 一路上
  • C++类与对象笔记十二:运算符重载三:递增运算符重载

    先看看系统自带的递增运算符 43 43 递增运算符重载 43 43 xff1b a 43 43 43 43 a int a 61 10 cout lt lt 43 43 a lt lt endl 11 先加 xff0c 后输出 cout l
  • C++类与对象笔记十四:多态六:虚析构和纯虚析构

    多态使用时 xff0c 如果子类中有属性开辟到堆区 xff0c 那么父类指针在释放时无法调用子类的析构代码 即 xff1a 父类指针无法调用子类实例对象内的析构函数 造成堆区内存泄漏 解决方案 将父类中的析构函数改为虚析构或者纯虚析构 虚析
  • PCL笔记九:采样一致性

    模型拟合 xff1f 采样一致性的目的 xff1a 用于排除错误的样本 基于采样一致性算法的应用主要是对点云进行分割 xff0c 根据不同设定的几何模型 xff0c 估计对应的几何模型的参数 xff0c 在一定允许误差范围内分割出在模型上的
  • ubuntu下安装gfortran

    找官网 xff1a GFortranBinaries GCC Wiki 找到GNU Linux 找到Download xff0c 点击蓝色链接下载 此外有installtion instructions安装步骤 Gfortran Binar
  • 面试可能会问六:智能指针

    先看一下百度百科的解释 xff1a 指针指针 当类中有指针成员时 xff0c 一般有两种方式来管理指针成员 xff1a 一是采用值型的方式管理 xff0c 每个类对象都保留一份指针指向的对象的拷贝 xff1b 另一种更优雅的方式是使用智能指
  • C++笔记:指针转向(重新赋值)时的问题;重复释放;原地址遗漏释放;赋值运算符重载operator=;

    一个类默认会创建4个函数 xff1a 默认构造 拷贝构造 析构 和operator 61 函数 最后一个就是赋值运算符重载 xff0c 可以进行简单的值传递 注意 xff1a 这个是值传递 问题就在这 xff1b 还有一种传递叫 xff1a
  • C++笔记:虚继承

    虚继承解决的是菱形继承 Animal下派生出Sheep和Tuo类 动物基类下 xff0c 有两个派生类 xff0c 一个是羊类 xff0c 一个是驼类 这两个类都继承了Animal的一个属性 xff0c 比如m age 这样就导致资源的浪费
  • Ubuntu 搭建文件服务器(Nginx)

    1 xff0c 下载Nginx 2 xff0c 安装Nginx 3 xff0c Nginx指令及脚本使用 4 xff0c 配置Nginx 1 xff0c 下载Nginx 去官网下载对应的Nginx版本 nginx download 直接在u
  • WS2812灯珠(四)---实现全彩呼吸灯效果

    WS2812灯珠实现呼吸灯效果主要涉及到呼吸函数及颜色模型两部分的内容 清楚了这两点结合之前的灯珠驱动程序 xff0c 便可以实现任意颜色的呼吸变换效果了 呼吸函数 具体的呼吸函数细节这里就不介绍了 xff0c 感兴趣的可以自行搜索 这里下
  • 浅谈Marlin2.0

    简介 marlin固件发展至今已经形成了三个比较重大的版本 xff1a 1 0版 xff0c 1 1版 xff0c 2 0版 我接触marlin固件已经有一段时间了 xff0c 原来一直对于marlin固件的结构和应用平台一直不是很理解 x
  • uni-app多平台融合【入门】(标贝科技)

    标贝科技 https ai data baker com source 61 qwer12 填写邀请码fwwqgs xff0c 每日免费调用量还可以翻倍 uni app多平台融合 入门 标贝科技 xff09 一 uni app介绍 uni