自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(428)
  • 收藏
  • 关注

原创 一文搞懂Javascript中的函数柯里化(currying)

在使用JavaScript编写代码的时候,有一种函数式编程的思想,而提到函数式编程,一定绕不开一个概念,那就是柯里化。柯里化是编程语言中的一个通用的概念(不只是Js,其他很多语言也有柯里化),是指把接收多个参数的函数变换成接收单一参数的函数,嵌套返回直到所有参数都被使用并返回最终结果。f(a,b,c)f(a)(b)(c)的过程。柯里化不会调用函数,它只是对函数进行转换。柯里化是一个把具有较多 arity 的函数转换成具有较少 arity 函数的过程 -- Kristina Brainwave。

2024-05-23 10:42:32 333

原创 前端 MVC 分层的实践

前面我们讲了 JavaScript 面向对象编程,这篇文章我们会介绍一下面向对象中的经典编程模式 —— MVC。MVC、MVVM、MVP 这三个概念在前端领域是老生常谈了,但这节课不会只在概念层面讲述三者的区别,而是更偏向实践、从编写业务代码层面讨论一下 MVC 模式在前端开发中的意思。虽历经几十年的洗礼,MVC 架构依然没有过时,在各种语言中我们也经常能看到对应的 MVC 框架。在前端开发中,我们也可以借鉴 MVC 的思想来对项目进行重新组织和解耦,这样可以大大提高项目的灵活性。

2024-05-23 09:18:11 413

原创 JavaScript 中 unescape() 和 escape() 函数有什么区别

escape() 函数可以将字符串中的非 ASCII 字符转义为十六进制表示的字符串,以便在 URL 编码或者HTML编码中使用。unescape() 函数与 escape() 函数功能相反,可以将经过转义的十六进制字符转回为原始的 Unicode 字符。escape() 和 unescape() 函数是 JavaScript 中用于字符转义和解密的函数。escape() 函数将字符串中的非 ASCII 字符转义为十六进制表示的字符串,以便在 URL 编码或者 HTML 编码中使用。

2024-05-22 09:40:33 432

原创 谈谈前端路由的实现原理【hash&history】

这样写会有个问题,就是页面刚加载完毕的时候不会去加载当前的路由,想要hashchange在页面初次加载的时候触发一次,那就给一个监听dom结构的事件,dom一出来就会执行,也就是说页面加载完毕就调用一次hashchange。我们不可能给按钮添加一个点击事件,如果项目大起来,按钮很多,每次点击一个按钮都判断一次url的变化,会非常的不优雅。后的值就是哈希值,按道理url变了,页面一定会刷新,但是哈希是个特例,放个哈希值就是不会刷新页面,这样,我们就解决了第一个问题,修改url不引起页面的刷新。

2024-05-21 17:00:10 1066

原创 使用chalk时颜色不变的问题解决

chalk是一个npm 包,用来对控制台 console.log 的内容进行样式包装。chalk的用法非常简单,安装后,直接使用即可。一般情况下是直接引入chalk然后使用相关的API就可以改变颜色了行上面的内容,字体颜色却不变,有下面的解决方法。

2024-05-21 11:29:03 176

原创 uni-app环境变量 & 动态配置manifest.json

1.需要本地调试时,点击HBuilder X工具栏“运行”,选择自定义的对应的环境;2.代码中通过获取配置的变量,或者全局注册或者局部引入env.js 通过 ENV_CONFIG[process.env.UNI_SCRIPT].requestBaseUrl获取3.发布时, 点击HBuilder X工具栏“运行”,选择自定义的对应的环境,编译后打开微信开发者工具或者支付宝开发者工具,上传即可(运行的哪个环境,上传的就是哪个环境),也可以点击HBuilder X工具栏 "发行" ,选择自定义的对应的环境。

2024-05-18 12:02:05 644

原创 微信小程序picker 组件 region 本地数据源

懒人专用。

2024-05-15 16:44:09 356

原创 前端工程化 - 快速通关 - vue

快速创建前端项目脚手架●统一的工程化规范:目录结构、代码规范、git提交规范 等●自动化构建和部署:前端脚手架可以自动进行代码打包、压缩、合并、编译等常见的构建工作,可以通过集成自动化部署脚本,自动将代码部署到测试、生产环境等;

2024-05-14 20:02:25 712

原创 前端工程化 - 快速通关 - ES6

Promise 是现代 JavaScript 中异步编程的基础,是一个由异步函数返回的可以向我们指示当前操作所处的状态的对象。函数体内允许使用 await 关键字,这使得我们可以更简洁地编写基于 promise 的异步代码,并且避免了显式地配置 promise 链的需要。这使得代码在该点上等待,直到 Promise 被完成,这时 Promise 的响应被当作返回值,或者被拒绝的响应被作为错误抛出。fetch 是浏览器支持从远程获取数据的一个函数,这个函数返回的就是 Promise 对象。

2024-05-14 19:29:10 708

原创 vue----- watch监听$attrs 的注意事项

在Vue开发过程中,如遇到祖先组件需要传值到孙子组件时,需要在儿子组件接收props,然后再传递给孙子组件,通过使用则会带来极大的便利,但同时也会有一些隐患在其中。可以看到,当我们在输入框输入值的时候,只有修改到input字段,从而更新父组件,而子组件的 propstest则是没有修改的,按照谁更新,更新谁的标准来看,子组件是不应该更新触发updated方法的,

2024-05-10 20:28:20 371 1

原创 Git === Git常用命令

签名的作用是区分不同操作者身份。用户的签名信息在每一个版本的提交信息中能够看到,以此确认本次提交是谁做的。※注意:这里设置用户签名和将来登录GitHub(或其他代码托管中心)的账号没有任何关系。–首先查看当前的历史记录,可以看到当前是在48f4e22这个版本。–切换到之前版本,8ca80d7版本,也就是我们第一次提交的版本。–切换完毕之后再查看历史记录,当前成功切换到了8ca80d7版本。–然后查看文件hello.txt,发现文件内容已经变化。–然后查看文件hello.txt,发现文件内容已经变化。

2024-05-07 14:16:22 712

原创 Git === Git概述 && Git安装

Git是一个免费的、开源的分布式版本控制系统,可以快速高效地处理从小型到大型的各种项目。Git易于学习,占地面积小,性能极快。它具有廉价的本地库,方便的暂存区域和多个工作流分支等特性。其性能优于Subversion(svn)、CVS、Perforce和ClearCase等版本控制工具。

2024-05-07 12:48:45 1142

原创 uniapp 异步加载级联选择器(Cascader,data-picke)

由于uniapp uni-ui的data-picke 不支持异步作者自己写了一个 插件市场下载使用插件市场地址。

2024-05-02 17:21:43 1358 1

原创 uniapp 制作和发布插件指南

2.根目录下新建uni_modules目录(选择uni ui项目模板,会自动生成uni_modules目录),右键新建uni_modules插件,然后在对应的components/组件名称/组件名称.vue文件里编写代码。注意:并不是必须在项目的components目录新建自定义组件,也可以在uni_modules目录下新建自定义uni_modules插件,然后在对应的components/组件名称/组件名称.vue文件里编写代码。弹出发布到插件市场的对话框,填好相应的信息,一般会自动填充命的名字。

2024-04-29 08:37:48 1054

原创 uniapp H5的弹窗滚动穿透解决

有一层遮罩蒙层覆盖在body上时,当我们滚动,它下面的内容也会跟着一起滚动,看起来好像是上面的滚动事件穿透到下面的DOM元素上一样,我们称之为滚动穿透。

2024-04-22 17:01:29 1235

原创 腾讯地图选点(uniapp)

1、使用iframe调用时,为防止在大屏手机上字体过小,需在源码中加入meta信息,<meta name=“viewport” content=“width=device-width, initial-scale=1.0, minimum-scale=1.0, maximum-scale=1.0, user-scalable=no”>地图选点组件,类似微信中的“发送位置”功能,该组件可以让用户快速、准确地选择并确认自己的当前位置,并将相关位置信息回传给开发者。首先确认referer后是key对应的名字,

2024-04-19 09:25:33 966

原创 uni.uploadFile上传图片后台接收不到数据

今天遇到一个很奇怪的问题,通过使用uni.uploadFile上传文件时后端接收不到文件,查过很多资料,原来是自定义了header的Content-Type问题。取消即可,另把自定义文件上传的代码贴出来。浏览器会默认帮我们加上请求头,并且默认加上一串boundary信息。select文件动作保存文件信息。分析:当我们加上请求头的时候。

2024-04-17 10:15:32 613

原创 uniapp --- 实现图片压缩(兼容H5)

Canvas 是 HTML5 提供的一个用于在网页上绘制图形的元素,它可以实现图片压缩的功能。而结和UnoApp是一种基于Canvas的图形编辑工具库,它提供了丰富的API和功能,可以帮助开发者在网页上实现各种图形编辑和处理操作。实现图片压缩的原理在结和UnoApp中也是类似的,主要是通过Canvas的绘图功能来重新绘制图片并调整尺寸和质量。

2024-04-17 09:38:17 1139

原创 async-validator --- 中文文档

​​defaultField​​​ 属性可以在 ​​array​​​ 和 ​​object​​ 类型中用于校验所有的值,它可以是一个包含有校验规则的对象或数组。使用 ​​min​​​ 和 ​​max​​​ 属性定义范围,对于字符串和数组会与 ​​value.length​​ 比较,对于数字会直接与值比较。注意,​​defaultField​​​ 是 ​​fields​​​ 的扩展,见 deep rules.如果 ​​len​​ 与 ​​min​​ 和 ​​max​​ 同时使用, ​​len​​ 优先。

2024-04-14 20:31:51 1377

原创 微信小程序 ---- 慕尚花坊 代码优化

将 [设置页面] 配置到 [设置模块分包],在访问个人中心页面时,提前预下载 [设置模块分包]目前小程序页面都没有配置分享功能,需要给小程序页面设置分享功能。为了防止用户频繁点击按钮而导致的重复提交或者多次请求的问题,具体哪些页面需要设置分享功能,可以和产品经理进行协商。进入订单结算页面时,提前预下载 [设置模块分包]我们需要给关键按钮添加防抖函数,这里可以使用。但是并不是所有页面都需要设置分享功能,如何使用微信开发者工具进行代码质量检测。

2024-04-05 14:47:05 267

原创 微信小程序 ---- 慕尚花坊 订单列表

在用户网速很慢的情况下,如果用户在距离底部来回的进行多次滑动,可能会发送一些无意义的请求、造成请求浪费的情况,因此需要给上拉加载添加节流功能。当用户从个人中心页面点击进入订单中心的时候,就需要获取到订单中心的数据。,需要先将后台返回的 total 进行赋值到 data 中,然后使用。在下一页的商品数据返回以后,需要将下一页的数据和之前的数据进行合并。,说明订单中心数据没有加载完,可以继续上拉加载更多。进行判断,如果数据正在请求中,不请求下一页的数据。在获取到数据以后,使用后端返回的数据对页面进行渲染。

2024-04-05 14:44:10 1532

原创 charles 安装教程

本文将的是windows系统、mac系统的charles安装教程。windows、mac通用。先讲windows。

2024-03-20 14:59:40 512

原创 charles使用教程 ---- 抓取https请求 && 修改请求

Charles是在 Mac 下常用的网络封包截取工具,在做 移动开发时,我们为了调试与服务器端的网络通讯协议,常常需要截取网络封包来分析。Charles 通过将自己设置成系统的网络访问代理服务器,使得所有的网络访问请求都通过它来完成,从而实现了网络封包的截取和分析。除了在做移动开发中调试端口外,Charles 也可以用于分析第三方应用的通讯协议。配合 Charles 的 SSL 功能,Charles 还可以分析 Https 协议。Charles 是收费软件,可以免费试用 30 天。

2024-03-20 09:06:02 1323

原创 微信小程序 ---- 慕尚花坊 结算支付

将订单编号发送给后端后, [后端向微信服务器获取预付单信息,后端会将微信服务器返回的预付单信息进行加密,然后将加密以后的预付单信息返回给前端]唤醒支付弹窗,用户开输入支付密码或者进行指纹等操作,微信服务器会进行验证,如果验证成功,就会发起支付。:前端调用接口,向后端传递需要购买的商品信息、收货人信息,[后端生成平台订单,返回订单编号]当选择送达日期的时候,需要选择收货的时间,我们希望获取到的收货的时间格式是:年月日。进入结算支付页面后,需要获取收货地址信息,在获取到收货地址以后,需要进行判断,

2024-03-19 10:36:46 2075

原创 微信小程序 --- 简易双向绑定

双向绑定同样可以使用在自定义组件上。})这个自定义组件将自身的myValue属性双向绑定到了组件内输入框的value属性上。当输入框的值变更时,自定义组件的myValue属性会同时变更,这样,页面的也会同时变更,页面 WXML 中所有绑定了pageValue的位置也会被一同更新。自定义组件还可以自己触发双向绑定更新,做法就是:使用 setData 设置自身的属性。},methods: {// 更新 myValue})})当组件使用setData更新myValue时,页面的。

2024-03-01 16:56:54 724

原创 微信小程序 Component 构造器

定义段类型是否必填描述最低版本type是属性的类型Array否属性的类型(可以指定多个)2.6.5value否属性的初始值observerFunction否属性值变化时的回调函数属性值的改变情况可以使用 observer 来监听。目前,在新版本基础库中不推荐使用这个字段,而是使用 Component 构造器的observers字段代替,它更加强大且性能更好。定义段中的type字段为必填项,虽然2.17.2及以上的基础库增加了对未填写的兼容(未填写时兼容为填写null。

2024-03-01 15:47:54 1304

原创 微信小程序 ---- 慕尚花坊 购物车

点击加入购物车和立即购买的时候,展示购物弹框,在弹框中需要用户选择购买数量和祝福语点击加入购物车和立即购买,触发的是同一个弹框。因此点击弹框中的确定按钮时,我们需要区分当前是加入购物车操作还是立即购买操作。这时候定义一个状态。

2024-03-01 14:17:06 1246 1

原创 微信小程序 ---- 慕尚花坊 商品管理

在用户网速很慢的情况下,如果用户在距离底部来回的进行多次滑动,可能会发送一些无意义的请求、造成请求浪费的情况,因此需要给上拉加载添加节流功能。在这一节,我们需要相关的优化:判断数据是否已经加载完,如果加载已经加载完毕,需要给用户进行提示。下拉刷新是小程序中常见的一种刷新方式,当用户下拉页面时,页面会自动刷新,以便用户获取最新的内容。通过接口文档得知,我们需要以上的参数,我们先将参数提前声明,然后在发起请求获取商品列表的数据。函数获取商品列表的数据,在获取到数据以后,使用后端返回的数据对页面进行渲染。

2024-03-01 10:20:11 1300

原创 微信小程序 ---- 慕尚花坊 收货地址

点击新建地址按钮,需要跳转到新增地址页面因为新增和编辑收货地址页面是同一个页面,我们需要在这个页面处理新增和编辑功能,为了做区分处理。我们在后续做进行编辑的时候传递id属性,值为 收货地址的id值。获取用户信息接收文档在这一节,我们先来收集添加收货地址的请求参数参数名称参数说明是否必须收货人nametrue手机号phonetrue省true省 编码true市cityNametrue市 编码cityCodetrue区true区 编码true详细地址。

2024-02-29 15:22:29 1464

原创 微信小程序 ---- 慕尚花坊 用户管理

什么是 TokenToken是服务器生成的一串字符串,用作客户端发起请求的一个身份令牌。当第一次登录成功后,服务器生成一个Token便将此Token返回给客户端,客户端在接收到Token以后,会使用某种方式将Token保存到本地。以后客户端发起请求,只需要在请求头上带上这个Token,服务器通过验证Token来确认用户的身份,而无需再次带上用户名和密码。**Token的具体流程**客户端向服务器发起登录请求,服务端验证用户名与密码验证成功后,服务端会签发一个Token,并将Token发送到客户端。

2024-02-29 10:36:55 1180

原创 微信小程序 --- mobx-miniprogram && miniprogram-computed

propertiesgetApp()pubsub-js在中小型项目中,使用这些数据通信方式已经能够满足我们项目的需求。但是随着项目的业务逻辑越来越复杂,组件和页面间通信就会变的非常复杂。例如:有些状态需要在多个页面间进行同步使用,一个地方发生变更,所有使用的地方都需要发生改变,这时候如果使用前面的数据通信方案进行传递数据,给管理和维护将存在很大的问题。为了方便进行页面、组件之间数据的传递,小程序官方提供了一个扩展工具库:是针对微信小程序开发的一个简单、高效、轻量级状态管理库,它基于Mobx。

2024-02-28 15:46:23 1960

原创 微信小程序 --- 自定义组件

组件介绍小程序目前已经支持组件化开发,可以将页面中的功能模块抽取成自定义组件,以便在不同的页面中重复使用;也可以将复杂的页面拆分成多个低耦合的模块,有助于代码维护。公共组件:将页面内的功能模块抽象成自定义组件,以便在不同的页面中重复使用页面组件:将复杂的页面拆分成多个低耦合的模块,有助于代码维护如果是公共组件,建议将其放在小程序的目录下的components文件夹中如果是页面组件,建议将其放在小程序对应页面目录下,当然你也可以放到页面的components文件夹中。

2024-02-27 08:20:14 2025

原创 微信小程序 -- 小程序开发能力与拓展

小程序默认的导航栏与 APP 一样都位于顶部固定位置。但是默认导航栏可能会影响小程序整体风格,且无法满足特定的设计需求,这时候,就需要进行自定义导航栏。在 app.json 或者 page.json 中,配置 navigationStyle 属性为 custom,即可 自定义导航栏在设置以后,就会移除默认的导航栏,只保留右上角胶囊按钮

2024-02-26 10:13:14 1393 2

原创 微信小程序 --- 小程序基础知识

什么是微信小程序微信小程序是一种运行在微信内部的 轻量级 应用程序。在使用小程序时 不需要下载安装,用户 扫一扫 或 搜一下 即可打开应用。它也体现了 “用完即走” 的理念,用户不用关心安装太多应用的问题。它实现了应用“触手可及”的梦想,应用无处不在,随时可用,但又 无须安装卸载。特点小程序的四大特性:无须安装、用完即走、无须卸载、触手可及无须安装:体积小,用户感知不到下载的过程触手可及:用户 扫一扫 或 搜一下 即可打开应用,通过下拉能访问使用的小程序用完即走,无须卸载。

2024-02-26 09:49:26 1505

原创 微信小程序 --- 分包加载

什么是分包加载❓小程序的代码通常是由许多页面、组件以及资源等组成,随着小程序功能的增加,代码量也会逐渐增加,体积过大就会导致用户打开速度变慢,影响用户的使用体验。分包加载是一种小程序优化技术。将小程序不同功能的代码,分别打包成不同的子包,在构建时打包成不同的分包,用户在使用时按需进行加载,在构建小程序分包项目时,构建会输出一个或多个分包。每个使用分包小程序必定含有一个主包。每个分包可以包含多个页面、组件、样式和逻辑等。当小程序需要使用某个分包时,才会加载该分包中的代码。

2024-02-26 09:26:57 1737

原创 微信小程序 --- 常用样式和组件

在开 Web 网站的时候:页面的结构由HTML进行编写,例如:经常会用到divpspanimga等标签页面的样式由CSS进行编写,例如:经常会采用.class#idelement等选择器但在小程序中不能使用HTML标签,也就没有DOM和BOM,同时仅仅支持部分CSS选择器不过不用担心,小程序中提供了同样的角色:其中WXML充当的就是类似HTML的角色,只不过在WXML中没有divpspanimga等标签,在WXML中需要使用 小程序提供的viewtextimagenavigator。

2024-02-26 09:17:27 1199

原创 微信小程序 --- 事件处理

在小程序中,可以通过事件传参的方式,将数据传递给事件处理函数。常见的事件包括点击事件、输入事件等。在组件节点中可以通过data-的方式传递一些自定义数据,传递的数据可以通过事件对象的方式进行获取📌注意事项​ 使用data-方法传递参数的时候,多个单词由连字符连接​ 连字符写法会转换成驼峰写法,而大写字符会自动转成小写字符​ 例如:​,最终会呈现为​,最终会呈现为在 wxml 文件中,使用data-*属性将数据传递给事件处理函数。

2024-02-26 09:00:31 1314

原创 微信小程序 --- 模板语法

小程序的数据绑定机制只能监听到 setData 方法中修改的数据,无法监听到直接删除属性的操作,所以在删除对象属性时,需要先将对象复制一份再进行操作,然后再调用 setData 方法更新数据。当数据改变触发渲染层重新渲染的时候,会校正带有 key 的组件,框架会确保他们被重新排序,而不是重新创建,以确保使组件保持自身的状态,并且。中声明对象类型的数据,小程序中通过调用 setData 方法可以修改页面的数据,包括对象类型的数据。在数组类型的数据时,可以使用 ES6 的展开运算符先复制数组,然后进行合并。

2024-02-26 08:53:07 1146

原创 微信小程序 --- 微信原生 API

小程序中也能够像网页一样支持本地数据缓存,本地数据缓存是小程序存储在当前设备上硬盘上的数据,本地数据缓存有非常多的用途,我们可以利用本地数据缓存来存储用户在小程序上产生的操作,在用户关闭小程序重新打开时可以恢复之前的状态。其包含以下 8个主要的 API。但一般我们在开发阶段时,处于开发阶段的服务器接口可能还没部署到对应的域名下,经常会通过另一个域名来进行开发调试,考虑到这一点,为了方便开发者进行开发调试,开发者工具、小程序的开发版和小程序的体验版在某些情况下允许。

2024-02-23 16:49:23 1098

原创 微信小程序 ---- 生命周期

应用生命周期是指应用程序进程从创建到消亡的整个过程小程序的生命周期指的是 小程序从启动到销毁的整个过程在打开一个小程序应用的时候都需要经历一系列的初始化步骤,比如页面是否加载完成、页面是否初次渲染完成等等。在此过程中,小程序也会运行被称为生命周期钩子的函数,这些函数由小程序框架本身提供,被称为生命周期函数,生命周期函数会按照顺序依次自动触发调用。帮助程序员在特定的时机执行特定的操作,辅助程序员完成一些比较复杂的逻辑。让开发者有机会在特定阶段运行自己的代码。

2024-02-23 16:30:26 1823 2

微信小程序请求拦截器 ,响应拦截器

微信小程序请求拦截器 ,响应拦截器,结合微信小程序二次封装request 一起使用

2024-02-27

微信小程序 - wx.request网络请求封装

微信小程序 --- wx.request网络请求封装

2024-02-22

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除