- 博客(144)
- 问答 (19)
- 收藏
- 关注
原创 小程序线多点路图绘制
height800rpxwidth: 3,},width: 3,},width: 3,},width: 3,},width: 3,},width: 3,},width: 3,},
2024-04-23 19:58:17
1643
2
原创 Object.is 和==,===的区别
使用==比较当左右两边类型不同时,会进行类型转换,而Object.is则不会。例如 ‘’ == false 的结果是 true,但是 Object.is() 不会对其操作数进行类型转换。Object.is和===直接的唯一区别就是对带符号的0或NaN之间的不同。静态方法确定两个值是否为相同值。
2024-03-12 17:00:29
309
原创 uniapp小程序获取位置权限(不允许拒绝)
小程序上如果需要一些定位功能,那么我们需要提前获取定位权限。我们页面的所有功能后续都需要在用户同意的前提下进行,所以一旦用户点了拒绝,我们应该给予提示,并让用于修改为允许。方法,然后走获取权限的逻辑。如果用户点击拒绝则会弹出提醒,用户点击确定按钮后会跳到权限设置页面进行重新设置。无论他选择了允许还是不允许,重新回到页面都会重新执行。上面方法,是在vue3 + ts的环境执行的。方法进行权限获取,如果你之前拒绝过该权限,则直接走。进行权限提示,并且在确定按钮绑定。方法重新进行权限设置。方法,再次进行判断。
2024-03-06 19:48:15
2913
原创 uniapp文件预览以及修改预览标题
这个api会将文件临时存到本地,并且会返回该文件的临时地址,预览时候显示的标题就是文件的临时名称。很多时候我们需要自己定义文件标题,而不是临时文件名。看起来是没什么问题,只是我们会发现预览的时候文件标题竟然是一串奇怪的字符。其实这是该文件的临时文件名。这两个api可以很简单实现对文档类型的文件预览。uniapp里面我们使用。
2024-01-31 10:29:40
1224
原创 uniapp——自定义导航栏的封装
首先如果开发的是微信小程序,那么在安卓环境下导航栏标题是默认靠左对齐的(虽然你在微信开发者工具上看到的依旧是居中展示),而在ios环境则是居中展示的。很多时候我们需要对整个项目有一个主题色或者公共的样式配置,封装一个公共的自定义导航栏更易于实现与管理。系统导航栏高度根据机型会发生变化,大部分是44px,但是有时候也会是40px等高度,如果你需要针对导航栏和状态栏高度对页面做一些定制需求那会显得比较困难。(网上有一些根据胶囊按钮获取导航栏高度的方法实测后发现并不精准。当然原生导航也并不是一无是处的。
2024-01-15 11:01:49
1471
2
原创 六. 函数
ts与js一样拥有具名函数和匿名函数两种函数类型。但是ts的函数需要提前定义好参数类型以及函数的返回值类型。ts里面每个函数参数都是必须的,函数参数的数量与类型必须完全一致才可以使用函数。指定一个函数参数非必传,当然这种参数需要放到所有参数的末尾。所谓函数重载,就是指的是拥有多个函数签名,一个函数体实现。事实上如果给末尾的参数设置默认值效果是等同于在末尾使用。在js里面如果我们并不知道将会有多少参数传入,可以使用。匿名函数的定义相对麻烦,我们需要提前定义函数的类型。进行所有参数的接收,也可以使用es6。
2023-12-14 19:39:19
165
原创 设计可编辑表格组件
什么是表单表格呢?简单来说就是在一个表格里面进行表单操作,执行增删改查。这在一些后台管理系统中是尤为常见的。今天我们根据 + 来设计一个表单表格组件。(不涉及完整代码,想要使用完整功能可以看底部连接)首先我们思考表格里面的表单元素应该如何实现。在用户使用的时候,我们希望用户传入一个指定的类型自动去匹配对应的表单组件。那我们就应该将所有类型做一个集成,并分别给他们一个类型名称。当然,为了最大程度为他们保留在已经实现的属性与方法,肯定接收的是一个对象,对象里面包含了他要展示的组件类型,一些原的属性方法,我们
2023-12-14 13:06:08
857
1
原创 五. 泛型
软件工程中,我们不仅要创建一致的定义良好的API,同时也要考虑可重用性。组件不仅能够支持当前的数据类型,同时也能支持未来的数据类型,这在创建大型系统时为你提供了十分灵活的功能。
2023-12-13 15:15:54
100
原创 三(五)ts非基础类型(对象)
/ obj1.name = 'fufu' 报错,只能定义为空对象且不能修改// 但是可以在赋初始值的时候直接添加属性,这是ts在类型推断时,它会宽容地匹配对象的结构。// obj2.name = 'dandan' 依旧报错,不能修改// obj2.age =20 报错,只能修改定义的属性// obj4.name = 'fufu' 报错,只能定义为空对象且不能修改// 但是可以在赋初始值的时候直接添加属性,这是ts在类型推断时,它会宽容地匹配对象的结构。
2023-12-12 11:39:35
136
原创 三(三)ts非基础类型(接口)
使用readonly关键字限制接口中的参数是只读 ,使用该接口的对象只有在第一次赋值的时候可以对可读属性进行赋值操作。有时候我们会想到如果我们定义一个只读的接口,为什么不直接使用const声明一个对象呢?readonly是’TS’ 在接口提出,只针对接口中的参数赋值后就禁止更改,而const是es6 提出的针对变量,不让变量进行更改。最简单判断该用readonly还是const的方法是看要把它做为变量使用还是做为一个属性。做为变量使用的话用const,若做为属性则使用readonly。
2023-12-11 16:34:49
261
原创 三(二)ts非基础类型(枚举)
常量枚举与普通枚举得区别:普通枚举在编译得时候会真的生成一个对象保存到js代码中,而常量枚举不会,它会直接赋值到对应得变量上;因为常量枚举没有生成真正得对象,所以常量枚举只能包含字面量或其他常量枚举成员,并且不能包含计算成员,也不支持反向映射。当然,我们也可以定义字符串值得枚举,如果其中有属性定义为字符串,那么该值后面所有得枚举属性都需要你设置一个初始值。如上面代码中,我们定义了一个关于颜色的枚举类型,里面的值会从0开始依次递增,也就是说。枚举里面的值是可以重复定义的,所以在赋值的时候需要细心。
2023-12-11 15:36:49
109
原创 三(一)ts非基础类型(类型别名,交叉与联合类型)
按照合并逻辑他应该既是字符串又是数字的类型,但是ts并不存在这样的类型,所以会被赋值为never类型。有时候我们并不确定一个变量的具体类型,他可能是一个字符串,也可能是一个数字,甚至可能是undefined。在函数里面,我们定义了形参为联合类型AB,但是并不确定是A还是B,所以直接在里面使用age属性是错误的,我需要在使用前提前就知道有没有age属性。交叉类型是用于将多个类型合并成一个类型的语法形式。我们使用交叉类型合并这两个接口。首先介绍下type关键字,它表示类型别名,也就是说我们可以自定义一个类型。
2023-12-11 15:14:18
83
原创 一.初始typescript
首先我们要确认typescript是一个语言,是等同于JavaScript层级得,并不是一些人认为得是JavaScript得类型规范工具或者插件。
2023-12-07 15:58:34
258
原创 二.数据结构——数组
是一种由相同类型的元素组成的数据结构。它在内存中连续存储着一系列的元素,并且通过每个元素的索引来访问数组中的特定元素。数组的容量也就是长度会在一开始就被确定优点快速访问:由于数组的元素被存储在连续的内存位置中,因此可以通过下标快速访问数组的任意元素。这使得数组的访问速度非常快,特别是在对元素进行操作时,例如插入、删除或更新元素。高效的内存利用:由于数组中的元素存储在连续的内存位置中,因此数组的内存利用率通常比链表等其他数据结构更高。简单易用:数组是一种基本数据结构,易于使用和编写。
2023-12-06 10:18:35
201
原创 点击元素以外的事件监听
在项目中,我们经常会遇到需要监听目标元素以外的区域被点击或鼠标移入移出等需求。例如下面我们有一个表格里面嵌套表单的组件我希望点击n行的时候,n行的元素变成表单元素进行输入或者选择,当我点击其他其他区域n行又会恢复成数据展示的样子。那现在我们来想想这种监听应该如何实现呢?
2023-11-29 20:55:41
460
原创 git常用语句
将本地连接到https://gitee.com/ffanddd/uni-shop.git地址。将本地第一次(-u)提交到远程(origin)master分支。更新本地分支(通常在git创建分支后回到编辑器获取新分支操作)创建tabbar分支并切换到tabbar分支。本地初始化git仓库。列举仓库中的所有分支。删除本地(-d)分支。查看当前分支暂存状态。
2023-11-21 15:02:19
137
原创 6.canvas绘制基本图形——椭圆
参数八(可选):Boolean 选项,如果为 true,逆时针方向绘制椭圆(逆时针),反之顺时针方向绘制。参数六:将要绘制的起始点角度,从 x 轴测量,以弧度表示 (非角度度数)。参数七:椭圆将要绘制的结束点角度,以弧度表示 (非角度度数)。参数五:椭圆的顺时针旋转角度,以弧度表示 (非角度度数)。ellipse是一个用来绘制椭圆的api,它拥有8个参数。参数一:椭圆圆心的 x 轴坐标。参数二:椭圆圆心的 y 轴坐标。参数三:椭圆长轴的半径。参数四:椭圆短轴的半径。
2023-10-07 16:37:13
606
原创 5.图形的连续绘制
到目前为止我们已经学习了折线,圆弧,矩形的基本绘制,但是我们每次都是单独绘制并且只绘制一个图形的。正当我们以为我们会得偿所愿的时候,悲剧出现了仔细看我们想得到的形状都拿到了,但是会什么会有多余的连接先线呢?仔细观察发现多余的连接线连接的是矩形的定位坐标和圆的起始角度,而我们在绘制这两种图形的时候也正是从这两个点开始绘制的。所以结论来了:在绘制多个图形的时候,多个图形的起点坐标往往会连在一起。、但是疑问来了?折线为什么没有连接在一起呢?如果你还记得moveTo的作用,那么大家就不会疑惑了。
2023-09-28 16:18:16
168
原创 4.canvas绘制基本图形——折线
在日常生活中,除了矩形与圆弧外,接触最多的就是折线了。甚至矩形也可以看出是一段折线,所以我们自然也可以使用绘制折线的方式绘制出矩形。
2023-09-28 14:52:04
599
原创 3.canvas绘制基本图形——圆弧
圆弧是圆的组成部分,一个圆可以看成多个圆弧或者一个圆弧闭环组合而成。因此我们画圆弧的时候往往把他看成一个残缺的圆。
2023-09-28 14:39:32
431
原创 盒子阴影效果与环绕阴影
在前端样式里面,最常见的一中效果之一就是阴影,好的阴影可以瞬间给人一种高端的用户体验,今天简单总结下这个样式的语法与使用方法。
2023-08-14 14:07:19
356
原创 uniapp自动获取视频第一帧作为视频封面
很多时候我们都需要使用视频的第一帧当作视频的封面,今天我们从uni-app的安卓app这个环境来实现下这个需求。
2023-08-01 21:03:48
7060
12
空空如也
vue3 页面刷新空白
2024-09-26
uniapp + vue3 + vite项目安装pinia失败,依赖冲突
2024-06-25
uniapp动态插槽报错
2024-05-09
v-html在小程序不同环境展示效果不同
2024-03-01
vue3版本的$attrs拿不到自定义事件
2024-01-18
this.$attrs获取布尔值为空字符串
2023-11-22
拿到模板字符串执行后的结果
2023-08-31
uniapp使用requireNativePlugin为什么一直为undefined
2023-05-15
uniapp如何进行无感热更新
2023-05-10
js实现对时间的监测
2023-04-28
uniapp在安卓设备上想要禁用掉虚拟按钮和顶部状态栏
2023-04-13
uniapp获取设备唯一标识怎么获取,
2023-04-10
安卓app上面怎样禁止下拉出现顶部的时间,音量等状态栏
2023-04-06
plus.downloader.startAll无效
2023-04-01
vite创建的项目不能直接使用node的内置模块
2023-03-10
在vue3里面使用ref获取elementPuls里面的组件元素失效
2023-03-07
使字符串平衡的最少删除次数。
2023-03-06
element下拉框在搜索过程中无法选中下拉值
2023-02-28
cnpm安装成功但是下载时报错
2023-01-08
vue项目发版到正式环境问题
2022-12-21
纯前端批量导出速度太慢
2022-12-01
el-tree查询卡顿问题
2022-11-04
父元素同时获取多个子元素
2022-10-16
contenteditable
2022-09-20
需要在el-element里面的el-select组件上直接做编辑操作
2022-09-20
transform的连续使用失效
2022-06-13
vue-router的history模式
2022-06-10
在<script setup>标签里面获取ref绑定的元素,一直获取不到。
2022-06-06
页面第一次打开和刷新的不同
2022-06-05
vue是mvvm框架吗?
2022-06-02
this指向问题:a.b()和(a.b)()为何一样呢?
2022-06-02
多级路由下,详情页面全屏展示怎么搞
2022-05-27
less模式里面嵌套修改element样式失效
2022-05-17
后端返回了html代码,前端怎样进行预览
2022-05-04
预览html格式的文件
2022-04-18
vue3使用ref获取子组件
2022-03-04
请求时的loading问题
2022-02-21
TA创建的收藏夹 TA关注的收藏夹
TA关注的人