初始化蓝牙使用蓝牙之前,首先要先初始化蓝牙(openBluetoothAdapter),之后才能调用蓝牙的各种api。初始化状态分为两种: 初始化成功:这时可以去搜索蓝牙设备(startBluetoothDevicesDiscovery)。 初始化失败:这个时候需要提示用户打开蓝牙,同时监听蓝牙的状态(onBluetoothAdapterStateChange),当蓝牙打开时,去搜索设备。 op
一、父组件给子组件传值:prop1、父组件部分:在调用子组件的时候,使用 v-bind 将 msg 的值绑定到子组件上:parentMsg=“msg”<child-component :parentMsg="msg"></child-component>//引入子组件 import childComponent form '@component/childComponen
Promise 对象含义: Promise是异步编程的一种解决方案,优点: 相比传统回调函数和事件更加合理和优雅,Promise是链式编程,有效的解决了令人头痛的回调地狱问题,Promise的结果有成功和失败两种状态,只有异步操作的结果,可以决定当前是哪一种状态,外界的任何操作都无法改变这个状态基本用法: //ES6 规定,Promise对象是一个构造函数,用来生成Promise实例。
配置操作全局配置对全局用户的所有仓库有效(最常用) git config --global user.name '你的名字' git config --global user.email '你的邮箱' 对当前仓库用户有效(不常用) git config --local user.name '你的名字' git config --local user.email '你的邮箱' 对系统所有用户
传统解决方案通常通过比较元素的 scrollWidth 与 clientWidth 来判断文本是否被截断。此外,我们可以使用 Range 的方式更精确地判断文本是否被截断。overflow: hidden 在布局上会将文本进行截断,但是双击全选复制的时候,可以复制到全部的内容。因此我们可以基于此特性,通过 浏览器提供的 Range api 获取 文本的宽度/高度进行判断。const app = d
前言字典即 hash 表是很多语言都有的数据结构,例如 Java 中的 HashMap。字典在日常开发中具有广泛的应用,并且是 Redis 服务的基石,在 Redis 数据库的实现、发布订阅、键值过期等场景有很重要的应用。本文从源码层面介绍 Redis 的结构与操作,深入理解其内部原理。字典结构struct dict { //保存当前字典的 hash 函数、key 比较函数等信息
针对不同设备的适配问题,用了两种常见的解决方案:有pc端UI,但无移动端,移动端适配自己排版,这种情况下我采用的是媒体查询,通过@media实现一套html配合多套css实现适配有完整的移动端UI,我通过rem实现的不同设备相同比例的适配首先是媒体查询(更多用法可见MDN):/*媒体查询的基本语法,这句代码的意思是当屏幕的最小宽度是900px的时候,使用以下的css*/ @media screen
一、前言在鸿蒙OS开发过程中,随着应用规模的扩大,登录状态管理逐渐成为系统设计中的一个挑战。一个清晰、高效的登录状态管理系统不仅可以简化开发流程,还能提升用户体验。本文将分享一种优雅的登录状态管理设计方案,帮助开发者轻松应对复杂系统中的登录状态控制。二、认证事件与认证代码设计认证事件是应用全局事件的核心,它触发登录或退出操作,并可在整个项目中进行广播。我们定义了三种基本的认证事件:启动认证、登录认
在实际开发中,有时候我们需要实现几个功能类似的函数,只是有些细节不同。例如希望交换两个变量的值,这两个变量有多种类型,可以是 int、float、char、bool 等,我们需要通过参数把变量的地址传入函数内部。在C语言中,程序员往往需要分别设计出三个不同名的函数,其函数原型与下面类似:void swap1(int *a, int *b); //交换 int 变量的值 void
在 TypeScript 中,enum 关键字提供了一种定义一组命名常量的方式,这些常量可以作为类型或值使用。枚举最早在 TypeScript 的第一个版本中引入,虽然它们还没有被添加到 JavaScript 中,但它们在 TypeScript 中作为一个独有的运行时特性,展现了强大的功能和一些有趣的行为。枚举特别适用于定义一组有限的、稳定的常量值,帮助开发者编写更加清晰和易于维护的代码。数值枚举
当我们处理数据时,有时候需要对数据进行去重操作。在 JavaScript 中,我们可以使用 Array.prototype.reduce() 方法来实现数组去重。本文将介绍如何使用 reduce() 方法来去重数组,并提供一些示例代码。什么是 reduce() 方法Array.prototype.reduce() 方法是 JavaScript 中的一个高阶函数,它可以将数组中的每个元素依次传递给一
防抖(debounce)和节流(throttle)是两种常用的优化高频触发事件的方法。防抖:当持续触发事件时,一定时间段内没有再触发事件,函数才会执行一次,如果在这个时间段内又触发了事件,则会重新开始延时。常用于输入框搜索、滚动加载等场景。节流:当持续触发事件时,保证一定时间段内只触发一次事件处理函数。常用于滚动监听、窗口大小改变等场景。防抖:通俗来说就是我输入一个a后再规定时间内又输入一个a,第
Vue.js 组件间通信指南本文将详细介绍 Vue 中几种常用的通信方法,包括基本的 props 传递、自定义事件、事件总线、v-model 双向绑定、sync 属性修饰符、$attrs 与 $listeners 的使用、$children 与 $parent 的访问、provide 与 inject 的高级应用,以及 Vuex 状态管理库的集成。一、组件间通信最基本方式: propsprops
背景:最近实现一个功能需要使用iframe嵌入其它系统内部的一个页面,但嵌入后出现一个问题,就是一打开这个页面就会自动跳转到登录页,原因是被嵌入系统没有登录(没有token)肯定不让访问内部页面的,本文就是解决这个问题的。选择的技术方案:本地系统使用iframe嵌入某个系统内部页面,那就证明被嵌入系统是安全的可使用的,所以可以通过通讯方式带一个token过去实现免登录,我用vue项目作为例子具体如
axios的两种调用方式经常调接口的同学一定非常熟悉aixos下面的两种使用方式:axios(config)// 配置式请求 axios({ method: 'post', url: '/user/12345', });axios.post(url, config)// 简洁的写法 axios.post('/user/12345')axios到底是个什么东西?我们为什么可以使用这两种方式请
前言作为公司内的一名高级前端码喽,大大小小也封装过了不少组件和功能,我逐渐意识到封装并非全是优点,也会存在一些不可忽视的潜在劣势。在项目中,我们急切地对各种功能和 UI 进行封装,却在不经意间忽略了封装可能带来的额外成本与潜在问题。比如,在之前的一个项目中,为了实现一个看似简单的列表展示功能,我将数据获取、渲染逻辑以及交互处理都塞进了一个繁杂的组件中。后续当需要对列表的某一特定功能进行细微调整时,
在嵌入式系统的世界里,C++ 是一种强大且灵活的编程语言,尤其在需要高性能和低层硬件控制的应用场景中大放异彩。裸机开发,即不依赖于任何操作系统直接与硬件交互的编程方式,是嵌入式开发中的一个重要分支。本文将深入浅出地探讨C++在嵌入式编程与裸机开发中的应用,包括常见问题、易错点以及如何避免这些问题。1. 内存管理在裸机开发中,内存管理至关重要,因为资源有限。C++提供了多种内存管理工具,如
单线程模型Event Loop机制Dart是单线程的,单线程和异步不冲突。App应用程序绝大多数时间都在等待,等用户点击、等网络请求返回,文件IO结果等。基于这些特点,单线程模型可以在等待中做别的事情。等待的过程并不是阻塞的,这个行为就是Event Loop驱动的。事件队列Event Queue会把其他异步操作的完成、需要主线程响应的事件加入其中。有点像iOS的RunLoop,不断轮询事件队列,取
canvas水印生成在大多数内部项目中,水印是一个常见需求。过去,当新项目需要添加水印时,通常是从旧项目中复制水印代码。这种做法不仅带来了大量重复工作,还导致了可维护性差的问题。另外,当前的方法在手动调整水印位置时,常常无法根据内容自动对齐。本文旨在根据产品侧的规范设计方法,解决现有方法中的问题:统一格式,遵循需求文档自动居中对齐参数可配置,例如间距、旋转角度、透明度以下是改进后的水印代码:imp
最近vue3项目做一个消息通知模块,于是决定采用websocket通讯方式。 项目是基于vue3和pina库下引入websocket。思路如下: 1.客户端登录货军师websocket会进行连接,客户端 每15秒会向服务端发送“ping”判断websocket是否正常连接,如果正常连接服务端会返回“pong” 2.当意外连接断开(可能是服务端或者客户端网络问题)时,服务端不能正常返回“pong”,
元素出现在视图中时触发的JavaScript:Intersection Observer API简介在前端开发中,有时我们需要在元素进入视图时触发特定的操作。无论是实现懒加载图片、无限滚动,还是统计广告曝光率,Intersection Observer API 都提供了一种高效且简便的解决方案。本文将详细介绍 Intersection Observer API 的使用,并通过一个示例展示如何在元素
Copyright © 2005-2024 51CTO.COM 版权所有 京ICP证060544号