uniapp项目的经验

article/2025/11/11 5:40:04

map组件的使用

uniapp内置的高德地图的SDK,所以需要在高德开放平台申请app端应用的key,包括Android Key 和 IOS Key。

在uni-app的编译模式下,map组件接受的经纬度坐标系是国测局坐标,即 gcj02

空字符和数值0全等比较的问题

将空字符串和 0 全等比较的情况,你会发现在浏览器内完全可行,但是在 Android 应用内运行出现问题,可能不支持这种全等的比较。解决办法就是将空字符串替换为一个和 0 不想关,而且也不会被隐式转换为 0 的一个值,我这里设置的是 NaN。NaN 无法转换为 0,问题解决。

简单转盘的实现思路

转盘有 360deg , 分为 8 个区块,一个区块有 360/8 = 45deg

来划分一下每个区块的角度区间 degList

[0 , 22.5] && [337.5 , 360] >>> 概率为 0

[22.5, 67.5] >>> 概率为 0

[67.5, 112.5] >>> 概率为 5

[112.5, 157.5] >>> 概率为 5

[157.5, 202.5] >>> 概率为 80

[202.5, 247.5] >>> 概率为 5

[247.5, 292.5] >>> 概率为 5

[292.5, 337.5] >>> 概率为 0

rotate(X deg) ,X 的取值范围 0-360

触发一次转动,有[0,1]生成一个随机数,然后 随机数 x 360 ,拿到得到的角度值

如果拿到的角度值刚好是角度区间的一个边缘,如何处理?一概将其向上取整

大佬们怎么写的,不清楚,这里写的方式很简单

degList[0]degList[1]degList[2]degList[3]degList[4]degList[5]degList[6]degList[7]

取 degList 的索引 0 到 7 这几个数字就可以了。可以写一个数组,0:不存在,1:不存在,2:一个,3:一个,4:十六个,5:一个,6:一个,7:不存在。

索引号定义的不存在表示该区间不可被选中,定义的一个或十六个表示该区间出现的次数。有次数则就有概率了。

定义一个奖池 pool = [2,3,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,5,6] 使用 Math.random() x 20 得到的数值一概向下取整,然后 pool[随机值] 得到 pool 里面的 value 值

如果得到的 value 值是 2 ,让箭头转到 [67.5, 112.5]

如果得到的 value 值是 3 ,让箭头转到 [112.5, 157.5]

如果得到的 value 值是 4 ,让箭头转到 [157.5, 202.5]

如果得到的 value 值是 5 ,让箭头转到 [202.5, 247.5]

如果得到的 value 值是 6 ,让箭头转到 [247.5, 292.5]

如何让箭头转到对应的区间?这样子,触发转动必须先行转动 5 圈,即 1800deg,然后加上这个区间的中间值就可以了。

箭头的转动效果不能是匀速的,必须是由快到慢。如何让箭头的速度由快到慢?

transition-timing-function 应该是由这个设置的,ease-out

transition-duration 设置 2s

transition-property 设置 transform

一次转动之后,如果角度不清零,就要将上次转动的角度需要作为初始值。我发现但是这样子会违背规则,因为 0,1,7 是不可以被随机到的。所以完成一次转动将角度清零。

最后需要随机值取到的区块,使用区块上写的角度范围。然后使用区块上的角度值,完成逻辑与 UI 交互的同步。

subNVue 自定义TabBar 

如果是使用 dock 布局的话,似乎有一个默认的高度。推荐使用 absolute 布局,然后定义 tabbar 高度即可。 (tabbar 的高度推荐定义为 50px)

HBuilderX 2.3.4 之前为 56px,2.3.4 起和 H5 调为一致,统一为 50px。但可以自主更改高度)

onBackPress 的适用

onBackPress 是页面返回调用方法,方法内部需要 return 一个布尔值,如果 return true 则会成功阻止页面返回;如果 return false 则不能阻止页面返回。

跨组件设置样式

使用scss定义组件样式时,通常会加上scope,限制样式的作用域。开发中会遇到跨作用域设置样式,这时就需要用到深度选择器了。

/deep/ 或者 >>> 或者 ::v-deep  ,推荐使用 /deep/。通常sass的处理程序不能解析 >>> ,就需要用 /deep/ 了。

 

仿抖音视频播放的设计思路

请求一个队列视频列表很简单,难点在加载下一队列合适触发,需要使用到 loadmore 和 scroll 事件,以及 loadmoreoffset (可以理解为元素竖向离屏高度),将离屏高度设置为2被的屏高,就会在倒数第三个视频出现的时机触发 loadmore 事件,用以加载下一队列视频。

 热更新

这里是添加的热更新 wgt,并非是差量的热更新 wgtu。差量热更新被官方移除了,虽然还有文档在,但是 HX 已经没有这个打包功能了。

所以这里采用热更新 wgt。每次App启动后下载更新包文件,然后进行安装。

plus.runtime.install(downloadResult.tempFilePath,{force: true,//true表示强制安装,不进行版本号的校验;false则需要版本号校验,如果将要安装应用的版本号不高于现有应用的版本号则终止安装,并返回安装失败。 仅安装wgt和wgtu时生效,默认值 false。// 即便是资源热更新都需要版本号来控制。如果将要安装的版本号高于或等于应用的版本号就会安装失败。这里就强制安装好了},function () {console.log("install success...");// plus.runtime.restart();// 如果强制重新启动的话,可能会审核不过去。等下一次应用启动就会加载下载的wgt文件内容,也可以了。},function (e) {console.error("install fail...");});

打开其他APP

开发中的需求,需要打开外部的地图软件,高德地图,百度地图。

可以参考5+给出的文档 http://www.html5plus.org/doc/zh_cn/runtime.html#plus.runtime.isApplicationExist

说明:如果第三方程序已安装则返回true,未安装则返回false。

参数:

appInf: ( ApplicationInf ) 必选 要判断第三方程序的描述信息

Android平台需要通过设置appInf的pname属性(包名)进行查询。 iOS平台需要通过设置appInf的action属性(Scheme)进行查询,在iOS9以后需要添加白名单才可查询,在manifest.json文件plus->distribute->apple->urlschemewhitelist节点下添加(如urlschemewhitelist:"baidumap;iosamap;weixin").

返回值:

Boolean : 第三方程序已安装则返回true,否则返回false。

拍摄视频的格式问题

问题存在于IOS设备,IOS设备拍摄的视频是.mov 格式,需要做转码处理。因为<video>标签不支持这个格式的视频。<video> 标签在APP平台的表现:支持本地视频(mp4、flv)、网络视频(mp4、flv、m3u8)、流媒体(rtmp、hls、rtsp)

Android 设备不存在问题,其拍摄的视频格式是.mp4

多设备推送

unipush 其实是个推的变身,多设备推送需要使用别名。

同一个账号(比如手机号)分别在 A、B、C 三台设备上登录, 产生了 3 个不同的 cid, 想让这三台设备同时接收到推送,就可以考虑使用该接口,让三台设备的三个 cid 都绑定同一个别名也就是你的账号(比如手机号),最多支持 10 台设备,也就是最多绑定 10 个 cid

打包环境和编译环境不一致

本地的HBuilderX编译环境低于云端的打包环境,就会出现报错。解决办法是在 mainfest.json 里添加 {'app-plus': {'compatible': {'ignoreVersion': true}}


http://chatgpt.dhexx.cn/article/SS4Nps7e.shtml

相关文章

前端项目网易云音乐移动端经验总结

HTML&#xff1a; audio标签控制音乐播放&#xff0c;有个原生play&#xff08;&#xff09;方法控制播放marquee这个标签可以实现滑动&#xff0c;类似于动画一样marquee(文字滚动)标签_别The Crossing的博客-CSDN博客_marquee标签【HTML】中的marquee标签属性详解_人间奶糖哇…

React项目经验总结

目录 1、报错 xxx.map is not a function 2、如何将后端返回的二进制流转换为base64格式的展示&#xff1f; 3、下载 4、父组件如何把值传给子组件&#xff1f;子组件又如何接收&#xff1f; 5、父组件如何获取子组件所有的state里面定义的值&#xff1f; 6、antdreact 之layou…

前端程序员应该了解的项目经验分享

1&#xff1a;HTML 尽量使用语义化标签 header aside main footer 等给a标签加上href&#xff1a;“javascript&#xff1a;&#xff1b;”就能禁止跳转块级元素独占一行除了div等那些&#xff0c;基本上都是行内元素行内元素设置宽高边距无效img、input属于行内替换元素:heig…

html项目经验,web前端没有项目经验怎么面试

web前端没有项目经验面试的方法&#xff1a;1、要熟练掌握前端的基本知识&#xff1b;2、了解目前基础框架的使用&#xff1b;3、熟练掌握基础知识的使用技巧&#xff1b;4、要表现出良好的学习方法和心态。 近年来&#xff0c;随着前端的火热&#xff0c;很多人都纷纷加入到前…

Orientdb基本操作

一、建模 1、 模型定义-销售数据库&#xff08;saledb&#xff09; 顶点继承自属性人&#xff08;Person&#xff09; 姓名&#xff08;name&#xff09;性别&#xff08;sex&#xff09;出生日期&#xff08;birthday&#xff09;员工&#xff08;Employee&#xff09;V、Per…

redis切换db方法

//最近发现redis 数据都是默认存在db0的 看着就崩溃了。这么做无非就是想让不同类型的数据属于不同的应用程序而彼此分开 后面自己总结了三种方法给大家分享下 有什么不足的地方大家也可以指出来哦 提供了三种方式 切换db的方法 1- 第一种方式最简单 先看看redis 的yml 文件…

Redis基本介绍

文章目录 1.Redis简介2.Redis应用场景3.Redis单线程模型4.Redis常用命令5.Redis数据结构6.SpringBoot整合Redis框架 参考蚂蚁课堂 1.Redis简介 Redis属于No-sql数据库类似于MongoDB&#xff0c;是一个完全开源免费的一个高性能的key-value数据库。它是基于内存的数据库&#…

DB2的HADR的搭建

整理这篇文档主要记录复制搭建过程中遇到的问题&#xff0c;被其中一个搞了好久才突然一下子明白过来。。。。 1.备份恢复的时候报错&#xff1a;SQL0970N The system attempted to write to a read-only file. SQLSTATE55009 2.SQL1768N Unable to start HADR. Reason cod…

gaussDB安装

1、用winSCP连接弹性服务器&#xff0c;将windows下的gaussDB安装包复制到linux下 2、将GaussDB安装包从root目录下复制一份到/gs目录下 3、在当前目录解压缩 4、打开配置文件 vi /etc/profile 添加如下命令 ulimit -c unlimited 5、打开系统配置文件 vi /etc/sysctl.c…

redis 如何切换db

文章来源&#xff1a;http://www.ttlsa.com/redis/redis-database/ redis默认有db0~db15之多。 一台服务器上都快开启200个redis实例了&#xff0c;看着就崩溃了。这么做无非就是想让不同类型的数据属于不同的应用程序而彼此分开。 那么&#xff0c;redis有没有什么方法使不同…

PostgreSQL安装+TimescaleDB安装(Windows)

PostgreSQL安装TimescaleDB安装&#xff08;Windows&#xff09; 一、安装环境1.系统2.PostgreSQL安装包3.TimescaleDB安装包4.Visual Studio Community 2019 二、PostgreSQL安装1.安装PostgreSQL2.配置环境变量3.验证是否安装成功 三、TimescaleDB安装1.安装TimescaleDB2.验证…

springboot连接redis并动态切换database(db0到db15)

redis redis db0到db15springboot连接redis添加配置文件application.properties测试是否连接成功redis动态切换database redis db0到db15 可以理解为数据库表这是redis默认提供的16个表 我们可以把不同的数据存在不同的db上 取得时候可以在不同的db拿到不同类型数据 springb…

各种接口

一、DB9与DB25 九针串口 串口是计算机主要的外部接口之一&#xff0c;通过九针串口连接的设备有很多&#xff0c;像串口鼠标、MODEM、手写板等等&#xff0c;九针串口的示意图如上&#xff0c;其各脚的定义如下&#xff1a; 1 DCD 载波检测 2 RXD 接收数据 3 TXD 发送数据…

Altium designer--DB接口DB9/DB15/DB25/DB37/DB50

使用Altium designer软件绘制DB接口封装图如下所示&#xff1a; 具体获取方式见文末链接 &#xff08;1&#xff09;DB9针 &#xff08;2&#xff09;DB15针 &#xff08;3&#xff09;DB25针 &#xff08;4&#xff09;DB37针 &#xff08;5&#xff09;DB50针 AD封装库链接…

常用接口定义02——DB与DR系列端口

&#xfeff;&#xfeff; DB系列与DR系列端子是设计PCB时经常会遇到的&#xff0c;直到前两天才专门找时间总结了一下两个系列接口的区别并从淘宝上找到实物图与之对应。 DB系列&#xff1a; 1.DB9 2.DB15&#xff08;三排&#xff09; 母头尺寸图&#xff1a; 3.DB15&#x…

pixhawk罗盘校准进度条没有反应

可能还是得把GPS加上才能校准罗盘。 https://blog.csdn.net/LockeDr/article/details/89320593 https://wenku.baidu.com/view/1b5c56114a2fb4daa58da0116c175f0e7cd11968.html

电子罗盘详解之地磁场和航向角

地球本身具有磁性,所以地球和近地空间之间存在着磁场,叫做地磁场。地磁场的强度为0. 3 至0. 6 高斯,其大小和方向随地点(甚至随时间) 而异。地球本身具有磁性,所以地球和近地空间之间存在着磁场,叫做地磁场。地磁场的强度为0. 3 至0. 6 高斯,其大小和方向随地点(甚至随时间) 而…

倾斜补偿的电子罗盘(2):磁传感器的误差来源、硬磁干扰的校准(3个参数)、实验验证

电子罗盘(2)&#xff1a;磁传感器的误差来源、硬磁干扰的校准&#xff08;3个参数&#xff09;、实验验证 文章目录 理想情况误差来源内部外部误差模型 硬磁干扰的校准&#xff08;3个参数&#xff09;使用的模型最小二乘法 实测结果总结代码和资料MATLAB代码参考资料样机 理想…

倾斜补偿的电子罗盘(3):椭球拟合,磁传感器软磁干扰和硬磁干扰的9参数校准

倾斜补偿的电子罗盘(3)&#xff1a;椭球拟合&#xff0c;磁传感器软磁干扰和硬磁干扰的9参数校准 背景 之前提到磁传感器的误差来源&#xff0c;并介绍了消除硬磁干扰的3参数校准。倾斜补偿的电子罗盘(2)&#xff1a;磁传感器的误差来源、硬磁干扰的校准&#xff08;3个参数&…

地磁传感器_磁感应计_电子罗盘(compass)原理

ref: http://www.360doc.com/content/14/0724/23/9152906_396847920.shtml https://wenku.baidu.com/view/8fcb6f94284ac850ad024244.html 原文链接&#xff1a;https://blog.csdn.net/weixin_43614541/article/details/104818380 1.利用旋转矩阵推导倾斜补偿公式 电子罗盘的…