自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 什么是JavaScript作用域?

作用域指的是在程序中定义变量时,这个变量所存在的范围或可访问性。在JavaScript中,作用域分为全局作用域和局部作用域(也称为函数作用域)。全局作用域:全局作用域是指在代码的任何地方都可以访问的变量和函数,它们被定义在全局范围内,不仅在全局范围内可见,还在局部作用域中可见。全局作用域的变量和函数可以被整个程序中的任何地方访问和使用。// 全局作用域// 在全局作用域中访问变量和函数// 输出: I am a global variable。

2024-03-12 21:36:05 560 1

原创 判断数据类型的方法

是 JavaScript 中的一个操作符,用于检查一个对象是否是特定类型(或者是特定类型的子类型)的实例。它用于判断一个对象是否是由一个特定的构造函数创建的。是 JavaScript 中的一个操作符,用于检查一个变量的数据类型。只能检查对象的原型链上是否存在指定类型的构造函数,而无法检查对象是否是通过其他方式创建的。是一个常用的方法,用于获取变量的具体数据类型。主要用于检查对象是否是特定类型的实例,特别是在处理继承关系时常用。三、Object.prototype.toString.call()

2024-02-26 08:32:33 316

原创 async await 是什么?它有哪些作用?

await 只能用在异步函数中,它可以暂停异步函数的执行,并等待 Promise 对象的解析结果。简化异步代码的编写:async/await 让异步代码的编写更像是同步代码的写法,提供了更直观、更易读的代码结构。解决回调地狱问题:通过使用 async/await,可以避免回调函数的嵌套和层层传递,使代码结构更加清晰。async 定义一个函数为异步函数,表示该函数是一个异步函数,返回一个 Promise 对象。总之,async/await 提供了一种更优雅的方式来处理异步操作,使代码更易读、维护和调试。

2024-01-07 08:43:42 1488

原创 v-if 和 v-show 有什么区别?

因此,如果元素在初始渲染时是隐藏的,并且需要频繁切换显示与隐藏,使用 v-show 是更好的选择。v-show 也是根据一个表达式的结果来决定是否渲染元素,但是不同于 v-if,它只是通过 CSS 的 display 属性来切换元素的显示与隐藏,而不会真正从 DOM 中删除元素。因此,v-if 在切换频繁的情况下,性能可能会稍差,因为每次切换时都需要重新创建和销毁元素,而 v-show 则只是改变了 CSS 的 display 属性,所以性能相对较好。v-if 是根据一个表达式的结果来决定是否渲染元素。

2024-01-07 08:43:09 359

原创 vue 双向数据绑定的原理?

当input的值发生变化时,会通过setter方法触发依赖收集器的notify()方法,进而更新订阅者的视图。当获取属性值时,会触发getter方法,而当修改属性值时,会触发setter方法。当模板中使用了属性的时候,会创建一个Watcher,Watcher会将自身添加到属性的依赖收集器中,并将依赖收集器添加到自身的订阅者列表中。当属性的值发生改变时,会触发属性的setter方法,setter方法会通知依赖收集器中的所有订阅者,然后订阅者会更新视图。这就实现了双向数据绑定。

2024-01-07 08:42:23 382

原创 什么是 MVVM、mvc 模型?

MVVM(Model-View-ViewModel)是一种软件架构模式,用于将用户界面(View)与业务逻辑(ViewModel)分离,通过数据绑定实现它们的关联。MVC(Model-View-Controller)模型也是一种常见的软件架构模式,用于分离应用程序的数据(模型)、用户界面(视图)和控制逻辑(控制器)。MVC模型的主要优势是它将应用程序的不同方面(数据、界面、控制逻辑)分离,使得代码更易于组织和维护。MVVM模式的主要优势是它使得视图和模型之间的耦合度降低,使代码更易于维护和测试。

2024-01-07 08:41:14 379

原创 组件缓存的方法是什么?

组件缓存是一种在应用程序中缓存组件实例的方法,以提高应用程序的性能和响应速度。以下是几种常见的组件缓存方法:全局组件缓存:将组件实例存储在全局变量中,以便在需要时直接访问。这种方法简单直接,但存在一些潜在的问题,例如组件的状态可能无法正确处理,在多线程环境下可能会出现竞争条件。本地缓存:将组件实例存储在本地变量或数据结构中,例如字典、列表等。这种方法可以更好地控制组件的生命周期和状态,但需要注意内存管理和清理。缓存策略:使用缓存策略来管理组件的缓存,例如LRU(最近最少使用)策略,根据最近的访问

2024-01-07 08:33:58 384

原创 vue toRaw和markRaw的使用

在上面的例子中,我们将obj对象通过markRaw函数标记为“非响应式”,然后将它作为data对象的属性。即使obj被修改,data.obj的值仍然保持不变。toRaw和markRaw都是Vue中的响应式辅助函数。

2024-01-07 08:33:20 448 1

原创 vue 3.0 所采用的 Composition Api 和 vue 2.0 使用的 Option Api 区别

在上面的示例中,Options API将所有东西放在一个对象中,而Composition API将逻辑按功能进行组织,使其更易于理解和维护。Options API:将所有相关的选项放在一个对象中,如data、methods、computed等,代码容易变得臃肿,逻辑难以追踪。Composition API:使用reactive函数创建响应式数据,并使用ref将普通值转换为响应式数据。Composition API:将逻辑按功能组织,每个功能可以单独使用,使代码更清晰、模块化和可维护。

2024-01-07 08:29:28 569

原创 浅拷贝和深拷贝

浅拷贝是创建一个新对象,将原始对象的属性值复制到新对象中。如果属性是基本类型,则直接复制其值;如果属性是引用类型,则复制的是引用地址,因此新旧对象会共享同一个引用地址。浅拷贝只复制了对象的一层,不会递归复制子对象。深拷贝是创建一个新对象,递归地将原始对象及其子对象的属性值复制到新对象中。整个复制过程是完全独立的,新对象和原对象不共享任何引用地址。在JavaScript中,浅拷贝和深拷贝都是用于复制一个对象的方式,但它们在复制过程中的方式和结果有所不同。

2024-01-07 08:28:26 342

原创 什么是扩展运算符?使用场景

原理: 扩展运算符背后的原理是利用可迭代对象的iterator接口(Symbol.iterator属性),通过遍历获取可迭代对象的每个元素。对于数组,扩展运算符会依次取出元素进行展开;对于对象,会先获取其可遍历属性的键,然后依次取出键对应的值进行展开。最终生成一个新的数组或对象。扩展运算符(Spread Operator)是ES6中引入的一个新语法,用三个点(...)表示。它可以在函数调用、数组和对象的字面量等场景中,将一个可迭代对象(如数组、字符串或对象)展开成单个元素序列。

2024-01-07 08:27:40 347

原创 js代码中“use strict” 是什么意思? 使用它的区别是什么

使用 "use strict" 会改变 JavaScript 的默认行为,它会使得代码执行更严格,并且会产生一些错误,这些错误在非严格模式下可能不会被捕获或报告。使用严格模式有助于避免一些常见的 JavaScript 编程错误,并且可以提高代码质量和可维护性。建议在开发 JavaScript 代码时始终使用严格模式。"use strict" 是 JavaScript 中的一个指令,它用于启用严格模式(strict mode)。

2024-01-07 08:25:29 356

原创 for 和 foreach 谁更快

在通常情况下,for循环比foreach循环更快,因为for循环是使用索引来遍历数据集合,而foreach循环是直接遍历数据集合的元素。尽管在绝大多数情况下,for循环比foreach循环更快,但在某些编程语言和特定场景下,foreach循环可能会被优化为与for循环相当的性能。因此,在选择使用for循环还是foreach循环时,建议根据具体情况和编程语言进行评估,以找到最佳的循环方式。在上述示例中,foreach循环直接遍历数组array中的每个元素,并将其赋值给变量num,然后打印输出。

2024-01-07 08:24:45 416

原创 math对象是什么?有什么用?

Math.max(x, y, ...):返回参数中的最大值。Math.min(x, y, ...):返回参数中的最小值。Math.floor(x):返回小于或等于x的最大整数。Math.random():返回一个0到1之间的随机数。Math.ceil(x):返回大于或等于x的最小整数。Math.round(x):返回x的四舍五入值。Math.pow(x, y):返回x的y次幂。Math.E:表示自然对数的底数e的近似值。Math.sqrt(x):返回x的平方根。Math.abs(x):返回x的绝对值。

2024-01-07 08:23:42 297

原创 使用JavaScript(2)使用Math对象的random() 方法编制-个产生0~ 100之间(含0、100 )的随机整数的函数

【代码】使用JavaScript(2)使用Math对象的random() 方法编制-个产生0~ 100之间(含0、100 )的随机整数的函数。

2024-01-07 08:23:08 398

原创 面向对象编程的理解

采用面向对象编程的思想,可以将问题分解为一个个独立的对象,并且对象之间可以通过相互调用来协同工作。面向对象编程还有一些其他的概念和原则,如抽象、接口、封装、组合等,通过这些概念和原则可以更好地设计和组织程序。通过多态可以增加代码的灵活性和可扩展性,可以在不修改原有代码的情况下,为程序增加新的功能。封装(Encapsulation):将相关的属性和方法封装在一个对象中,通过对象的接口来控制对内部数据的访问。继承(Inheritance):通过继承可以创建新的类,并且可以通过继承现有类的属性和方法来复用代码。

2024-01-07 08:22:21 380

原创 ArkTS 网络请求

在发送请求后,可以使用Promise来处理响应。ArkTS - 网络请求是一种用于发送和接收数据的库,它可以帮助开发者在前端应用中进行网络请求。通过使用ArkTS - 网络请求,开发者可以轻松地发送HTTP请求,获取服务器响应,并处理返回的数据。ArkTS - 网络请求库提供了一些常见的方法,如GET、POST、PUT和DELETE,这些方法可以用来发送不同类型的请求。总的来说,ArkTS - 网络请求提供了一种简单而有效的方式来处理前端应用中的网络请求,帮助开发者与后端服务器进行通信,并获取所需的数据。

2024-01-07 08:21:45 566

原创 vue生成动态表单

在上述代码中,我们通过fields数组来定义表单域的配置信息,包括id、name、label、type和required等属性。然后使用v-for指令根据fields数组动态生成表单组件,通过v-model指令将表单数据双向绑定到form对象上,最后在submitForm方法中处理表单数据。这样,我们就可以根据需求快速生成各种不同的动态表单了。动态表单可以根据不同的数据动态地生成表单组件,方便快速地实现表单的创建和处理。下面给出一个示例,演示如何使用Vue动态表单生成一个简单的注册表单。

2024-01-06 22:24:41 435

原创 uniApp获取当前位置经纬度

需要注意的是,获取位置信息需要用户授权,如果没有授权,则无法获取位置信息。以下是使用uni.getLocation获取当前位置的。

2024-01-06 22:24:00 391

原创 理解JavaScript事件循环机制

JavaScript作为前端开发的核心语言之一,其事件循环机制是实现异步编程的关键。本文将深入探讨JavaScript事件循环机制,帮助您更好地理解它是如何工作的,以及如何在前端开发中充分利用这一机制。1. 什么是事件循环?JavaScript是单线程的,这意味着它一次只能执行一段代码。然而,前端开发中需要处理各种异步任务,例如处理用户输入、发起网络请求、执行定时器等。为了应对这些异步任务,JavaScript引入了事件循环机制。事件循环是一种机制,用于管理和调度异步任务的执行。

2024-01-06 22:23:07 328

原创 CSS实现瀑布流的两种方式

column。

2024-01-06 22:22:04 397

原创 JavaScript获取 input 输入框内容的几种方法

HTMLCollection 接口表示一个包含了元素(元素顺序为文档流中的顺序)的通用集合(与 arguments 相似的类数组 (array-like) 对象),还提供了用来从该集合中选择元素的方法和属性。以下返回 NodeList,NodeList 对象是节点的集合,通常是由属性如 Node.childNodes 和 方法,如document.querySelectorAll 返回的。NodeList 是一个实时集合,也就是说,如果文档中的节点树发生变化,NodeList 也会随之变化。

2024-01-06 22:20:40 422

原创 React查询、搜索类功能的实现

查询之类的如果是通过向列表接口中发送对应参数来查询的,那么在默认输出时,在useEffect钩子中的请求中可以先为需要查询的请求参数设初始的state,也就是null或者未定义,这样的话初始请求的还是整个列表,然后将这些state放入useEffect的依赖中,也就是第二个参数的数组中,然后在一些查询相关的组件中,如下拉选项、Search搜索框、时间选择器等,具体根据可查询项决定,然后更新初始设置的state,set为在这些组件的事件函数中将组件筛选的最终值。React查询、搜索类功能的实现。

2024-01-06 22:18:55 289

原创 Docker 的基本概念和优势,以及在应用程序开发中的实际应用。

简化应用程序开发和部署:Docker 可以大大简化应用程序的开发和部署,因为它提供了一个一致的容器环境,可以在开发、测试和生产环境中使用相同的容器。提高应用程序的可移植性:Docker 的容器可以在任何支持 Docker 的操作系统上运行,这样可以在不同的环境中轻松移植应用程序。持续集成和部署:Docker 可以与持续集成和部署工具集成,以便在自动化的构建和部署过程中使用 Docker 容器。提高应用程序的可扩展性:Docker 的容器可以在分布式环境中部署,这样可以轻松地扩展应用程序的规模。

2024-01-06 22:18:25 359

原创 jsx种map循环中使用if判断

【代码】jsx种map循环中使用if判断。

2024-01-06 19:23:36 365

原创 uniapp分包

以下是一个完整的 Uniapp 分包示例,代码分布在不同的文件夹中,其中包含了两个子包 sub1 和 sub2,以及一个主包 main。在各个页面的 vue 文件中使用图片等资源时,使用相对路径或绝对路径引用即可。在项目根目录下创建 static 目录,并在其中存放项目所需的静态资源文件。在项目根目录下创建 pages 文件夹,并在其中创建各个页面的文件夹。在每个页面文件夹中创建对应的 vue 文件和 js 文件。在 pages.json 文件中定义各个页面和子包的信息。

2024-01-06 19:22:43 329

原创 小程序弹窗

提供了一些交互API,开发者可以通过这些API来与用户进行交互。这些API可以帮助开发者实现小程序与用户的交互,提高小程序的。

2024-01-06 19:20:43 335

原创 项目接口性能优化方案

接口降级:对于一些非核心的接口,可以设置降级策略,当系统负载过高时,暂时关闭或者简化该接口的功能,保证系统的稳定性。异步处理:对于一些耗时的操作,可以将其放入消息队列中异步处理,这样接口调用方可以快速返回结果,而后台可以慢慢处理。并发限流:针对一些可能引起接口雪崩的场景,可以设置并发限流策略,控制并发请求数量,保证接口的可用性。数据分页:对于返回大量数据的接口,可以进行数据分页,只返回分页的数据量,减少网络传输的负载。批量操作:对于需要对多个资源进行操作的接口,可以提供批量操作的接口,减少接口的调用次数。

2024-01-06 19:19:03 384

原创 前端 富文本编辑器原理

这只是一个简单的富文本编辑器的实现示例,实际上,富文本编辑器的原理和实现还涉及到很多复杂的功能,比如文本格式化、撤销和重做、表格编辑等。如果你想深入了解富文本编辑器的原理和实现,可以研究一些开源的富文本编辑器库,如TinyMCE、CKEditor和Quill等。这个处理逻辑可以根据自己的需求来实现,比如保存用户输入的内容到数据库或显示输入内容的预览。在上面的例子中,我们为editor元素设置了一些样式,比如边框、内边距、高度和垂直滚动条。最后,我们可以使用CSS来美化富文本编辑器的外观。

2024-01-06 19:18:38 352

原创 uni-app的三元表达式

【代码】uni-app的三元表达式。

2024-01-06 19:16:36 352

原创 js制作九宫格抽奖功能

是通过定时器实现的,每隔一段时间改变当前选中项的背景色来模拟抽奖的过程。当停止抽奖时,定时器会被清除,当前选中项的背景色会还原。通过点击按钮,可以开始或停止抽奖的功能。

2024-01-06 19:15:29 302

原创 Git从远程仓库拉取指定的分支

文章开始也提到git clone <url>命令默认将整个远程版本库克隆到本地,但是git clone -b <分支名称>命令可以将指定的某一个远程分支拉取到我们本地,而且拉取的本地分支自动和远程同名分支建立追踪关系,它不会将新创建的HEAD指向克隆仓库中HEAD指向的maser主分支,而是指向我们刚拉取下来的分支;否则,拉取下来的还是master主分支。该命令的作用是:checkout远程仓库origin的分支“dev开发分支”,在本地起名为“dev开发分支”分支,并切换到本地的“dev开发分支”分支。

2024-01-06 19:14:08 523

原创 uniapp页面间传参的方法

可以在源页面使用uni对象的navigateTo方法传参,在目标页面中使用uni对象的getOpenerEventChannel方法获取传递的参数。时,在url中添加参数,通过在目标页面的onLoad函数中的options参数获取传递的参数。可以在源页面设置一个state,然后在目标页面中获取该state的值。

2024-01-05 21:12:49 510

原创 微信小程序内部跳到外部小程序

函数是跳转成功时的回调函数。请注意,只有已经在微信公众平台上配置了相关的配置信息才能成功跳转到外部小程序。中跳转到外部小程序,可以使用wx.navigateToMiniProgram函数。是要传递给外部小程序的参数,是要跳转到的页面路径,

2024-01-05 21:11:15 401

原创 什么是Vue.js的响应式系统(reactivity system)?如何实现数据的双向绑定?

具体来说,当我们将数据对象传递给Vue实例时,Vue.js会遍历数据对象,并使用Object.defineProperty()方法将每个属性转换为getter和setter。Vue.js实现数据的双向绑定的方式是通过使用Object.defineProperty()方法来劫持数据对象的属性。当数据对象的属性被读取或修改时,Vue.js将能够捕获这些操作并触发相应的更新。总结来说,Vue.js的响应式系统通过劫持数据对象的属性,实现了数据的双向绑定。它是Vue.js框架的核心特性之一。

2024-01-05 21:10:42 325

原创 【Android】使用android studio查看内置数据库信息

右键点击"assets"文件夹,选择"New" > "Folder" > "Assets Folder"。在Android Studio的菜单栏中,选择"View" > "Tool Windows" > "Device File Explorer"。你会看到一个名为"database.db"的文件,在右侧的Device File Explorer窗口中右键点击它,并选择"Save As"。在"assets"文件夹中,右键点击空白区域,选择"New" > "File"。

2024-01-05 21:10:00 626

原创 vue 的实例生命周期

Vue.js 的实例生命周期指的是 Vue 实例在创建、更新和销毁过程中的一系列事件和钩子函数,允许在不同阶段执行自定义操作。created:实例已经创建完成,数据观测和事件配置都已完成,但虚拟 DOM 尚未创建,不能访问 $el。mounted:在实例被挂载后调用,可以访问 $el,此时实例已经成为 DOM 树上的一个节点。destroyed:在实例销毁后调用,可以访问实例的数据,但不再能访问 $el。beforeUpdate:在数据更新时调用,但在 DOM 重新渲染之前。

2024-01-05 21:09:29 334

原创 JavaScript 作用域

作用域是可访问变量的集合。

2024-01-05 21:08:53 337

原创 Amazon API Gateway CORS 实战

Amazon API Gateway提供了一种实现跨域资源共享(CORS)的方式,以便在Web应用程序中安全地使用API。使用Amazon API Gateway CORS可以有效地限制跨域请求,保护API资源的安全性。在Web应用程序中使用API,当发起跨域请求时,浏览器将在请求头中自动包含CORS相关的信息。API Gateway将响应返回给Web应用程序,并在响应头中包含CORS相关的信息。在API Gateway上验证请求,如果请求符合CORS规则,则允许请求通过。

2024-01-05 21:07:09 328

原创 信号处理设计模式

例子:一个自动售货机系统,在不同的状态下(如待机状态、投币状态、出货状态等),售货机对用户的操作会有不同的响应,状态模式可以帮助我们封装这些状态及相应的行为。管道-过滤器模式可以实现高度可重用的数据处理流程。观察者模式: 说明:观察者模式通过定义一对多的依赖关系,当一个对象的状态发生改变时,其他依赖于它的对象将自动收到通知并进行相应的处理。发布-订阅模式: 说明:发布-订阅模式通过将发送者与接收者解耦,实现了一对多的通信方式,发送者将消息发布到一个或多个主题,订阅者通过订阅感兴趣的主题来接收消息。

2024-01-05 21:06:34 332

空空如也

空空如也

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

TA关注的人

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