24年7月-8月工作笔记整理(前端)

目录

  • 一、问题解决
  • 二、基础知识学习

一、问题解决

1.浏览器拦截跳转的解决方案

//先打开一个空白页let winHandler = window.open('', '_blank')//再重定向到想要跳转的链接winHandler.location.href = redirectUrl

2.文字大小跟随父级元素宽度适配缩放

//父元素加不换行和相对定位,子元素通过计算得出缩放的比例,以及偏移的量,最后实现缩放后居中
//html:<div  style='position: 'retactive', white-space: nowrap;'><div:style="{transform: `scale(${item.scale}) translateX(-${item.offsetX}%)`,position: 'absolute',left: '50%'}">{{ item.quotaSymbol }}</div></div>//js:
//文字自适应父级宽度缩放,返回缩放比例
//入参:文字内容,文字的信息,父元素宽度
export function scaleRatio(text, font, parentWidth) {//计算文字的宽度const canvas = document.createElement('canvas')const context = canvas.getContext('2d')context.font = fontconst { width } = context.measureText(text)return parentWidth / Math.max(width, parentWidth)
}

3.pc端实现滚动懒加载

//html:<div class="content" v-loading="noticeLoading" @scroll="watchScroll"><div v-if="noticeData && noticeData.length > 0"><divclass="content-card"v-for="(item, index) in noticeData":key="index"@click="toDetail(item.messageType, item.businessId)"><div class="notice-title"><div class="title-style">{{ item.title }}</div><divclass="more"style="font-weight: 400"v-if="item.messageType === '36'">详情 <i class="el-icon-arrow-right"></i></div></div><div class="notice-text">{{ item.content }}</div><div class="notice-text time">{{ item.sendTime }}</div></div><div class="dataDesc"><span v-if="dataLoading && !finished"><i class="el-icon-loading"></i>加载中...</span><span v-else>没有更多了</span></div></div><i-no-data v-if="noticeData.length === 0 && !noticeLoading">暂无消息提醒</i-no-data></div>//  js:
data(){
return{//消息通知//一次多少页pageSize: 10,//第几页pageNum: 1,//总共条数total: 0,//懒加载loadingdataLoading: false,//判断是否加载完成finished: true,switch: false, // 加锁,防止滚动时,判断条件重复调用
}
}//滚动方法watchScroll(e) {const scrollTop = e.target.scrollTop // listBox 滚动条向上卷曲出去的长度,随滚动变化const clientHeight = e.target.clientHeight // listBox 的视口可见高度,固定不变const scrollHeight = e.target.scrollHeight // listBox 的整体高度,随数据加载变化const saveHeight = 30 // 安全距离,距离底部XX时,触发加载const tempVal = scrollTop + clientHeight + saveHeight // 向上卷曲距离 + 视口可见高度 + 安全距离// 如果不加入 saveHeight 安全距离,在 scrollTop + clientHeight == scrollHeight 时,触发加载// 加入安全距离,相当于在 scrollTop + clientHeight >= scrollHeight - 30 时,触发加载,比前者更早触发if (tempVal >= scrollHeight) {if (!this.finished && !this.switch) {// 数据加载未结束 && 未加锁this.queryUserMessage()}this.switch = true // 加锁,防止重复触发}},//获取消息通知async queryUserMessage() {this.dataLoading = truetry {const { list, total } = await getMessage({farmId: this.farmId,pageSize: this.pageSize,pageNum: this.pageNum,orgId: this.orgId})this.loading = falseif (list && list.length > 0) {this.noticeData = this.noticeData.concat(list)this.total = totalif (list.length < this.pageSize ||this.noticeData.length >= this.total) {// 返回结果条数少于请求条数,认为已结束// 目前数据条数等于总条数,认为已结束this.finished = true} else {this.finished = falsethis.pageNum += 1 // 页码加1this.switch = false // 还可以继续加载,改变锁状态}}this.noticeLoading = false} catch (error) {this.noticeLoading = falseconsole.log('error===', error)}},

4.字体抗锯齿设置

//App.vue
#app {/* 字体抗锯齿,让字体看起来更清晰 */-webkit-font-smoothing: antialiased;-moz-osx-font-smoothing: grayscale;
}

二、基础知识学习

1.vue3的watch

//监听ref:
watch(name, (currentValue, prevValue) => {console.log(currentValue, prevValue)
})
//监听reactive:(要使用箭头函数)
watch(() => nameObj.name, (newVal, oldVal) => {console.log(newVal, oldVal)
})
//监听多个 reactive :(且一个数组装现值,一个数组装旧值)
watch([() => nameObj.name, () => nameObj.englishName], ([curName, curEng], [preName, preEng]) => {console.log(curName, preName, '----', curEng, preEng)
})

2.vue3的组件间ref使用,父组件通过ref调用子组件的方法或数据需要子组件暴露出来

//父组件:
const cardRef = ref<InstanceType<typeof HomeOrderCard>>()
onMounted(() => {cardRef.value?.sayHello()
})
//子组件:
const sayHello = () => {console.log('hello')alert('are you ok?')
}
defineExpose({sayHello
})

3.History.pushState()方法用于在历史中添加一条记录。
window.history.pushState(state, title, url)
History.replaceState()方法用来修改 History 对象的当前记录,其他都与pushState()方法一模一样。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/web/51828.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

sqli-labs靶场(56-60)

56关 ?id-1)union select 1,2,database()-- 看数据库 ?id-1) union select 1,group_concat(table_name),3 from information_schema.tables where table_schemadatabase()-- 看表 ?id-1) union select 1,group_concat(column_name),3 from information_schema.columns wh…

深入探索MySQL数据库结构设计:实战案例解析,打造高效、可扩展的数据存储方案

作者简介&#xff1a;我是团团儿&#xff0c;是一名专注于云计算领域的专业创作者&#xff0c;感谢大家的关注 座右铭&#xff1a; 云端筑梦&#xff0c;数据为翼&#xff0c;探索无限可能&#xff0c;引领云计算新纪元 个人主页&#xff1a;团儿.-CSDN博客 前言&#xff1a;…

noge-gyp构建项目踩坑记录

开发环境 系统: win11 node: 19.7.0 npm: 8.3.2 node-gyp: 10.0.2可以不使用windows-build-tools来安装构建工具,手动进行安装 我这边用windows-build-tools安装时候会提示 process.env only accepts a configurable, writable, and enumerable data descriptor. 查了资料后…

转换视频格式轻松搞定!3个小窍门助你轻松将mxf格式转mp4

你是否因为格式转换而烦恼&#xff1f;你是否经历过这样的情况&#xff1a;你想要在别的设备或平台上播放心仪的视频&#xff0c;但是你的视频文件是xmf格式的&#xff0c;很多设备都不支持这个格式&#xff0c;导致视频无法播放。现在&#xff0c;你需要把mxf格式转mp4格式。你…

【时间盒子】-【2.准备】HarmonyOS 开发前需要准备什么?

零基础新手或转行进入鸿蒙生态应用的开发者&#xff0c;请提前准备以下内容&#xff1a; 一、注册华为帐号 此帐号在华为官方各平台通用&#xff0c;比如&#xff1a;华为手机、华为商城、华为云、华为开发者联盟等等。 https://id1.cloud.huawei.com/CAS/portal/userRegist…

linux 下转化 ppk 文件 为openssh 文件(private,public)

1. 首先安装&#xff1a; puttygen ubuntu &#xff1a; apt install putty-tools 2. ppk 文件转化 openssh key private key : puttygen /path/to/puttykey.ppk -O private-openssh -o ~/.ssh/id_rsa public key: puttygen /path/to/puttykey.ppk -O public-openssh -o…

如何在Windows和Mac上免费提取RAR文件?这里有方法

序言 你有没有下载过一个文件,却发现它有一个奇怪的.rar文件扩展名?RAR是一种压缩文件格式,与ZIP文件非常相似,在本文中,我们将向你展示如何在Windows或macOS上打开RAR文件。 如何在Windows 11上打开RAR文件 Windows 11在2023年增加了对RAR文件的原生支持。从那时起,你…

问:说说内部类和静态内部类的区别?

示例 内部类&#xff08;Non-static Inner Class&#xff09;: public class OuterClass {private String outerField "我是外部类字段";class InnerClass {public void display() {System.out.println(outerField); // 可以直接访问外部类的成员}}public void sh…

144. 腾讯云Redis数据库

文章目录 一、Redis 的主要功能特性二、Redis 的典型应用场景三、Redis 的演进过程四、Redis 的架构设计五、Redis 的数据类型及操作命令六、腾讯云数据库 Redis七、总结 Redis 是一种由 C 语言开发的 NoSQL 数据库&#xff0c;以其高性能的键值对存储和多种应用场景而闻名。本…

可重入VI,VI模板和动态VI之间的差异 转

可重入VI 当您想要同时运行同一VI的多个实例时&#xff0c;将使用可重入VI。当VI不可重入时&#xff0c;VI只有一个数据空间。因此&#xff0c;一次只能有一个调用者运行VI&#xff0c;因此调用者可能必须“等待轮到它”时才能使用VI。这是VI的默认选项&#xff0c;但您可以将V…

ARKTS数组和Map的常规操作

数组 Entry Component struct ArrayDemo {State message: string Hello World;// 创建一个数组State testList: Array<string> [测试1, 测试2, 测试3];build() {Row() {Column() {Button(新增元素).onClick(() > {// this.testList.push(测试4)//在数组末尾添加一个…

js基础速成-字符串方法

字符串方法 JavaScript 中的所有内容都是对象。字符串是一种基本数据类型&#xff0c;这意味着一旦创建就无法修改。字符串对象有许多字符串方法&#xff0c;有不同的字符串方法可以帮助我们处理字符串。 length 字符串的 length 方法返回字符串中字符的数量&#xff0c;包括…

Hibernate 批量插入速度慢的原因和解决方法

由于业务需要一次性连续写入超过10k条以上的新数据&#xff0c;当对象超过10个成员变量以后&#xff0c;整个写入过程居然需要长达35秒&#xff0c;这个速度是不能接受的&#xff0c;故此研究了一下怎么开启Hibernate批量写入的功能。 我这边使用的是Hibernate 5.6.15 在网上…

Spark MLlib模型训练—回归算法 Linear regression

Spark MLlib模型训练—回归算法 Linear regression 线性回归是回归分析中最基础且应用广泛的一种方法。它用于建模目标变量和一个或多个自变量之间的关系。随着大数据时代的到来,使用像 Spark 这样的分布式计算框架进行大规模数据处理和建模变得尤为重要。本文将全面解析 Spa…

Java 异常架构Exception(异常)

1. Exception 类的概述 在Java中&#xff0c;Exception类是Throwable类的直接子类之一。Throwable类是Java异常处理体系的根类&#xff0c;所有异常和错误都继承自它。Java的异常体系可以分为以下几个部分&#xff1a; Throwable&#xff1a;所有异常和错误的基类。 - Exce…

【Java|Stream流】不可变集合

文章目录 1.什么是不可变集合2.创建不可变集合的方式2.1 List类型2.2 Set2.3 Map 1.什么是不可变集合 不可变集合:不可以被修改的集合 不可变集合优点: 安全性 由于不可变集合不能被修改&#xff0c;所以可以安全地在多个线程之间共享&#xff0c;而不用担心被意外修改&#xf…

【kubernetes】Service 介绍和应用

一&#xff0c;Service介绍 四层代理是基于传输层&#xff08;第四层&#xff09;工作的代理&#xff0c;主要在传输层&#xff08;如TCP、UDP协议&#xff09;上转发和管理数据流 七层代理是基于应用层&#xff08;第七层&#xff09;工作的代理&#xff0c;能够对应用层协议…

# 利刃出鞘_Tomcat 核心原理解析(十)-- Tomcat 性能调优--2

利刃出鞘_Tomcat 核心原理解析&#xff08;十&#xff09;-- Tomcat 性能调优–2 二、Tomcat专题 - Tomcat性能调优 - 性能测试结果说明 1、压力性能测试 # 打开另一个终端&#xff0c;切换目录 [rootbogon ~]# cd /usr/local/tomcat# 进行压力性能测试[rootbogon tomcat]# …

JSON处理库 -- Fastjson

文章目录 一、json格式1.1 用途1.2 语法1.3 常见格式 二、fastjson常用类2.1 JSONObject2.2 JSONArray 三、序列化和反序列化3.1 默认序列化与反序列化3.2 序列化的扩展3.3 自定义序列化SerializeFilter3.4 JSONField 注解3.5 复习Jackson 一、json格式 1.1 用途 一种轻量级的…

浅谈SpringMvc的核心流程与组件

一、SpringMvc的核心流程 当发起请求时被前置的控制器(DispatcherServlet)拦截到请求&#xff0c;根据请求参数生成代理请求&#xff0c;找到请求对应的实际控制器&#xff0c;控制器处理请求&#xff0c;创建数据模型&#xff0c;访问数据库&#xff0c;将模型响应给中心控制…