【VueUse】超越基本功能的高级 Vue 元素操作

news2024/11/24 15:54:32

在vue开发中我们经常需要操作DOM元素,从简单的添加类到动态创建元素,这些操作都是不可避免的。而在VueUse库中,Elements相关API函数为我们提供了一系列强大而灵活的工具,帮助我们更轻松地处理DOM元素。无论是优雅地处理元素、动态渲染元素还是简化复杂的DOM操作,VueUse Elements都能够成为您的得力助手。

        在本文将带您深入探索VueUse Elements,揭示其背后的神秘面纱,并展示如何利用这些强大的API函数提升您的Vue项目至新的高度。让我们一起踏上这场关于VueUse Elements的探索之旅吧!

目录

useActiveElement(跟踪焦点元素)

useDocumentVisibility(跟踪文档可见状态)

useDraggable(拖拽元素)

useDropZone(拖放区域)

useElementBounding(响应边界数据)

useElementSize(获取指定元素宽高)

useResizeObserver(监听元素内容和边框尺寸变化)

useElementVisibility(跟踪元素可见性)

useIntersectionObserver(指定元素交集变化)

useMouseInElement(跟踪鼠标指定元素状态)

useMutationObserver(监听DOM树修改)

useWindowFocus(跟踪窗口焦点)

useWindowScroll(获取窗口的滚动位置)

useWindowSize(获取窗口尺寸)

最后总结


useActiveElement(跟踪焦点元素)

响应式 document.activeElement。什么意思呢?就是跟踪文档中当前处于焦点的元素。具体来说,useActiveElement函数会返回一个Ref对象,该对象的值为当前处于焦点的元素。这意味着,当用户在页面上点击、输入或以其他方式与页面交互时,useActiveElement将提供当前活动元素的信息。如下:

<template>
  <input v-for="i in 6" :key="i" type="text" :data-id="i" :placeholder="`${i}`"><br>
  当前聚焦的元素:{{ key }}
</template>

<script setup lang="ts">
import { watch, computed } from 'vue'
import { useActiveElement } from '@vueuse/core'

const activeElement = useActiveElement()
const key = computed(() => activeElement.value?.dataset?.id || 'null')

watch(activeElement, (el) => {
  console.log(activeElement.value?.dataset)
})
</script>

最终得到的结果如下:

useDocumentVisibility(跟踪文档可见状态)

响应式跟踪 document.visibilityState。什么意思呢?就是跟踪文档的可见性状态,允许开发者监测页面是否处于可见状态,从而可以根据不同的可见性状态来执行相应的操作。例如,在开发通知系统或者数据同步功能时,可以利用useDocumentVisibility函数来检测用户是否正在浏览页面,从而决定是否发送通知或执行数据同步操作,以避免在用户不可见时造成不必要的打扰或消耗额外的资源。如下:

<template>
  <div class="use-document-visibility">
    {{ hello }}
  </div>
</template>

<script lang="ts" setup>
import { ref, watch } from 'vue'
import { useDocumentVisibility } from '@vueuse/core'

const visibility = useDocumentVisibility()

const hello = ref('最小化页面或切换标签然后返回!')
watch(visibility, (current, previous) => {
  if (current === 'visible' && previous === 'hidden') {
    hello.value = '欢迎回家!'
  }
})
</script>

最终得到的结果如下:

useDraggable(拖拽元素)

使元素可拖拽。什么意思呢?就是使元素能够响应拖拽操作,允许开发者将其应用于某个元素,从而使该元素具有拖拽功能。一旦应用了该函数,用户便可以通过鼠标或触摸屏对元素进行拖拽操作,移动元素到所需位置。如下:

<template>
  <div class="use-draggable" ref="el" :style="style" style="position: fixed;">
    <div class="title">标题</div>
    我的位置:{{ x }}, {{ y }}
  </div>
</template>

<script setup lang="ts">
import { ref } from 'vue'
import { useDraggable } from '@vueuse/core'

const el = ref(null)
const { x, y, style } = useDraggable(el, {
  initialValue: { x: 40, y: 40 }, // 初始位置

})
</script>

<style scoped lang="scss">
.use-draggable {
  border: 1px solid #e5e5e5;
  border-radius: 4px;
  background: #fff;
  color: #333;
  padding: 10px 20px;
  .title {
    line-height: 32px;
    font-size: 14px;
    font-weight: bold;
  }
}
</style>

最终得到的结果如下:

useDropZone(拖放区域)

创建一个可以放置文件的区域。什么意思呢?就是让一个元素成为“拖放区域”,从而可以接收用户拖放的文件或其他数据。这个区域可以接收用户从文件系统或其他来源拖放过来的内容。通过这个函数,你可以监听各种拖放相关的事件,比如当用户开始拖拽、拖拽进入区域、拖拽在区域内移动以及拖放操作完成等。场景应用于文件上传组件、拖放式接口、图片管理工具等。如下:

<template>
  <div ref="dropZoneRef" class="drop-zone" :class="{ 'over': isOverDropZone }">
    拖拽文件到这个地方 {{ isOverDropZone }}
  </div>
  <ul v-if="state.name">
    <li>{{ state.name }}</li>
    <li>{{ state.size }}</li>
    <li>{{ state.type }}</li>
  </ul>
  <img src="./assets/1.jpg" alt="" style="width: 100px; height: 100px;">
</template>

<script lang="ts" setup>
import { ref, reactive } from 'vue'
import { useDropZone } from '@vueuse/core'

const dropZoneRef = ref<HTMLDivElement>()
let state = reactive({}) as any

function onDrop(files: any) {
  state = files[0]
  console.log(state)
}
const { isOverDropZone } = useDropZone(dropZoneRef, onDrop)
</script>

<style>
  .drop-zone {
    width: 500px;
    border: 2px dashed #ccc;
    padding: 20px;
    text-align: center;
  }
  .drop-zone.over {
    background-color: #f0f0f0;
  }
</style>

最终得到的结果如下:

useElementBounding(响应边界数据)

让HTML元素的bounding box 响应式。什么意思呢?就是可以获取指定元素的位置、宽度、高度等边界信息。这对于实现响应式布局或者对元素进行定位、动画等操作非常有用。当元素的边界发生变化时(例如窗口大小变化导致元素位置或尺寸变化),相关的响应式数据也会自动更新,从而保持界面的同步性。这里我们搭配上文讲解到的拖拽元素的API一起使用,如下:

<template>
  <div ref="el" class="use-element-bounding" :style="style" style="position: fixed;">
    位置信息:<br />
    x: {{ x }}<br />
    y: {{ y }}<br />
    top: {{ top }}<br />
    left: {{ left }}<br />
    right: {{ right }} <br />
    bottom: {{ bottom }}<br />
    width: {{ width }}<br/>
    height: {{ height }}<br/>
  </div>
</template>

<script lang="ts" setup>
import { ref } from 'vue'
import { useElementBounding, useDraggable } from '@vueuse/core'

const el = ref(null)

const { x, y, style } = useDraggable(el, {
  initialValue: { x: 40, y: 40 }, // 初始位置
})

const { top, right, bottom, left, width, height } = useElementBounding(el, {
  reset: true, // 组件卸载时重置边界信息
  windowResize: true, // 监听窗口大小调整事件
  windowScroll: true, // 监听窗口滚动事件
  immediate: true, // 组件挂载时立即调用
})
</script>

<style scoped>
.use-element-bounding {
  background: #e5e5e5;
  border: 1px solid #ccc;
  padding: 10px;
  border-radius: 4px;
  width: 200px;
  height: 200px;
  color: #333;
  user-select: none;
}
</style>

最终得到的结果如下:

useElementSize(获取指定元素宽高)

元素尺寸大小响应式。什么意思呢?就是获取指定元素的宽度和高度,这对于布局和样式计算非常有用。基于元素的尺寸信息,你可以根据需要动态地调整布局和样式。例如,可以根据元素的宽度和高度选择合适的样式或者调整其他元素的位置和大小。如下:

<template>
    <div>
      width: {{ width }}<br>
      height: {{ height }}
    </div>
  <textarea ref="el" class="use-element-size">
  </textarea>
</template>

<script lang="ts" setup>
import { ref } from 'vue'
import { useElementSize } from '@vueuse/core'

const el = ref(null)
const { width, height } = useElementSize(el)
</script>

<style scoped>
.use-element-size {
  background: #e5e5e5;
  border: 1px solid #ccc;
  padding: 10px;
  border-radius: 4px;
  width: 200px;
  height: 200px;
  color: #333;
}
</style>

最终得到的结果如下:

useResizeObserver(监听元素内容和边框尺寸变化)

监听元素内容和边框尺寸的变化。什么意思呢?就是用于观察指定元素的大小变化,并在大小变化时执行相应的回调函数。如下:

<template>
  <div>{{ text }}</div>
  <textarea class="use-resize-observer" ref="el"></textarea>
</template>

<script lang="ts" setup>
import { ref } from 'vue'
import { useResizeObserver } from '@vueuse/core'

const el = ref(null)
const text = ref('')

useResizeObserver(el, (entries) => {
  const entry = entries[0]
  const { width, height } = entry.contentRect
  text.value = `width: ${width}, height: ${height}`
})
</script>

<style>
.use-resize-observer {
  width: 200px;
  height: 200px;
  background: #ccc;
}
</style>

最终得到的结果如下: 

useResizeObserver 和 useElementSize 都是 VueUse 中用于监测元素大小变化的函数,但它们之间有一些区别

实现原理

1)useElementSize 则是通过监听 window 的 resize 事件以及元素的 scroll 事件,并结合获取元素的 clientWidth 和 clientHeight 属性来计算元素的大小变化。

2)useResizeObserver 使用的是 Resize Observer API,它能够在元素大小变化时立即触发回调函数。
浏览器支持

1)useElementSize 的实现方式则更依赖于浏览器的 resize 和 scroll 事件,可能存在一些兼容性问题。
2)Resize Observer API 的支持程度较高,大多数现代浏览器都支持。

精确度

由于 Resize Observer API 是专门用于监测元素大小变化的 API,因此在性能和精确度上可能会优于通过 resize 和 scroll 事件计算大小的方法。

使用场景

1)如果你的项目需要考虑到一些老版本浏览器的兼容性,并且对性能要求不是特别高,可以考虑使用 useElementSize。

2)如果你需要在元素大小变化时立即触发回调函数,并且希望在现代浏览器中使用,则可以选择 useResizeObserver。

综上所述

useResizeObserver 更适合现代化的项目,并且提供了更好的性能和精确度,而 useElementSize 则更适合需要考虑兼容性和性能要求不那么严格的项目。

useElementVisibility(跟踪元素可见性)

跟踪元素在视口中的可见性。什么意思呢?就是用于检测元素的可见性,可以帮助你监听指定元素的可见状态,即当元素进入或离开视窗时,相关的可见性状态会被更新。通过检测元素的可见性,你可以延迟加载页面中的图片、视频或其他资源,从而提高页面的加载性能和用户体验。当元素进入视窗时,再开始加载相应的内容。

举个经典的例子,当你电脑浏览b站视频的时候,你想刷一下评论区,当你鼠标滚动,原本的视频离开可视窗口的那一瞬间,右下角会给你打开一个小窗口,当你回到原本的视频窗口后,小窗口就会消失,就是这个道理!

案例代码如下:

<template>
  <div class="use-element-visiblity">
    <div ref="target" class="target">向下滚动到可视区域</div>
    <div class="tips-zone">
      提示内容{{ targetIsVisible }}
    </div>
  </div>
</template>

<script lang="ts" setup>
import { ref } from 'vue'
import { useElementVisibility } from '@vueuse/core'

const target = ref(null)
const targetIsVisible = useElementVisibility(target)
</script>

<style scoped lang="scss">
.use-element-visiblity {
  height: 100%;
  height: 200vh;
  background-color: #eee;
  .target {
    width: 200px;
    height: 200px;
    background-color: red;
  }
  .tips-zone {
    position: fixed;
    bottom: 20px;
    right: 20px;
    z-index: 9;
    border: 2px dashed #ccc;
    padding: 20px;
  }
}
</style>

最终得到的结果如下:

useIntersectionObserver(指定元素交集变化)

响应式监听目标元素的可见性。什么意思呢?就是监听指定元素与其祖先元素或视窗的交集变化。当元素进入或离开视窗,或者与祖先元素的交集变化时,相关的回调函数会被触发。如下:

<template>
  <div class="use-intersection-observer">
    <div class="box">
      <div class="p1">向下滚动</div>
      <div class="p2" ref="target">
        监听可视区域内容
      </div>
      <div class="p3">最底部</div>
    </div>
    <div class="tip">元素在窗口内 {{ targetIsVisible }}</div>
  </div>
</template>

<script lang="ts" setup>
import { ref } from 'vue'
import { useIntersectionObserver } from '@vueuse/core'

const target = ref(null)
const targetIsVisible = ref(false)
const { stop } = useIntersectionObserver(
  target,
  ([{ isIntersecting }], observerElement) => {
    targetIsVisible.value = isIntersecting
  }
)
</script>

<style scoped lang="scss">
.use-intersection-observer {
  width: 500px;
  .box {
    border: 2px dashed #ccc;
    height: 100px;
    overflow-y: auto;
    padding: 20px;
    .p1, .p3 {
      padding: 30px;
    }
    .p2 {
      margin-top: 100px;
    }
  }
}
</style>

最终得到的结果如下:

useMouseInElement(跟踪鼠标指定元素状态)

响应式获取鼠标相对于元素的位置。什么意思呢?就是用于跟踪鼠标在指定元素内的位置和状态,实时获取鼠标相对于指定元素的位置信息,包括水平和垂直方向的坐标,通过实时追踪鼠标在元素内的位置和状态,可以为用户提供更加灵活、智能的交互体验,从而增强用户对网页或应用的满意度。如下:

<template>
  <div ref="el" class="use-mouse-in-element">
    <div ref="target" class="content">相对内容</div>
      位置信息:<br />
      x: {{ x }}<br />
      y: {{ y }}<br />
      sourceType: {{ sourceType }}<br />
      elementX: {{ elementX }}<br />
      elementY: {{  elementY }}<br />
      elementPositionX: {{ elementPositionX }}<br />
      elementPositionY: {{ elementPositionY }}<br />
      elementHeight: {{ elementHeight }}<br />
      elementWidth: {{  elementWidth }}<br />
      isOutside: {{  isOutside }}<br />
  </div>
</template>

<script lang="ts" setup>
import { ref } from 'vue'
import { useMouseInElement } from '@vueuse/core'

const target = ref(null)
const { 
  x, y, sourceType, elementX, elementY, elementPositionX, 
  elementPositionY, elementHeight, elementWidth, isOutside 
} = useMouseInElement(target)
</script>

<style scoped lang="scss">
.use-mouse-in-element {
  background: #e5e5e5;
  border: 1px solid #ccc;
  padding: 10px;
  border-radius: 4px;
  width: 400px;
  color: #333;
  .content {
    color: #fff;
    background: #ddd;
    padding: 40px;
  }
}
</style>

最终得到的结果如下:

useMutationObserver(监听DOM树修改)

监听DOM树修改。什么意思呢?就是用于观察指定元素及其子元素的 DOM 变化,并在发生变化时执行相应的回调函数。如下:

<template>
  <div>
    <h2>DOM元素监视器</h2>
    <div ref="targetElement">
      监视的元素
    </div>
    <button @click="changeElement">改变元素</button>
    {{ messages }}
  </div>
</template>

<script lang="ts" setup>
import { ref } from 'vue'
import { useMutationObserver } from '@vueuse/core'

const targetElement = ref()
const messages = ref<any[]>([])

useMutationObserver(targetElement, (mutations) => {
  console.log('DOM元素发生变化:', mutations)
  if (mutations[0])  messages.value.push(mutations[0].attributeName) 
}, 
{ attributes: true });

// 改变DOM元素的内容
const changeElement = () => targetElement.value.style.color = 'red'
</script>

最终得到的结果如下: 

useWindowFocus(跟踪窗口焦点)

使用 window.onfocus 和 window.onblur 事件响应式跟踪窗口焦点。什么意思呢?就是实时监测浏览器窗口的焦点状态,即浏览器窗口是处于激活状态(获得焦点)还是非激活状态(失去焦点)。如下:

<template>
  <div>{{ message }}</div>
</template>

<script setup lang="ts">
import { ref, watch } from 'vue'
import { useWindowFocus } from '@vueuse/core'

const startMessage = '💡单击文档之外的某个位置以取消聚焦。'
const message = ref(startMessage)
const focused = useWindowFocus()

watch(focused, (isFocused) => {
  if (isFocused)
    message.value = startMessage
  else
    message.value = 'ℹ 选项卡未聚焦'
})
</script>

最终得到的结果如下: 

useWindowScroll(获取窗口的滚动位置)

响应式获取窗口的滚动位置。什么意思呢?就是实时监测浏览器窗口的滚动位置,包括水平和垂直方向上的滚动距离,通过监听窗口的滚动事件,你可以实现一些响应式的效果,例如根据用户滚动位置展示或隐藏导航栏、懒加载页面内容、实现无限滚动加载等。如下:

<template>
  <div class="showTip">
    滚动值:<br>
    X轴{{ x }} - y轴{{ y }}
  </div>
  <div class="windowScroll"></div>
</template>

<script setup lang="ts">
import { useWindowScroll } from '@vueuse/core'
const { x, y } = useWindowScroll()
</script>

<style scoped lang="scss">
.showTip {
  width: 120px;
  height: 50px;
  background: #008c8c;
  position: fixed;
  bottom: 20px;
  right: 20px;
}
.windowScroll {
  width: 10000px;
  height: 200vh;
  background: #eee;
}
</style>

最终得到的结果如下: 

useWindowSize(获取窗口尺寸)

响应式获取窗口尺寸。什么意思呢?就是用于获取浏览器窗口的尺寸信息,通过监听窗口大小变化事件,你可以实现一些响应式的布局或样式,确保页面在不同设备或窗口尺寸下都能够正确展示。如下:

<template>
  <div class="use-window-size">
    width: {{ width }}, height: {{ height }}
  </div>
</template>

<script lang="ts" setup>
import { useWindowSize } from '@vueuse/core'

const { width, height } = useWindowSize()
</script>

最终得到的结果如下: 

最后总结

useActiveElement:监测和响应用户与页面的交互,自动聚焦输入框或执行验证操作。

useDocumentVisibility:管理页面的可见性状态,优化用户体验和应用程序性能。

useDraggable:实现元素的拖拽功能,从而增强了应用程序的交互性和可用性。

useDropZone:在 Vue 应用中实现拖放区域,从而提升应用的交互性和用户体验。

useElementBounding:获取和管理元素的边界信息,处理元素相关的操作和交互。

useElementSize:响应式的方式获取和管理元素的尺寸信息,处理元素相关的操作和交互。

useResizeObserver:监测元素大小的变化,并实时响应变化。

useElementVisibility:监测和响应元素的可见性变化,实现与可见性相关的功能和优化。

useIntersectionObserver:实现在元素可见状态变化时自动更新相关的界面内容或状态。

useMouseInElement:追踪和监测鼠标在指定元素内的位置和状态。

useMutationObserver:监测 DOM 变化,并实时响应变化。

useWindowFocus:监测浏览器窗口的焦点状态,实现一些交互效果改善用户体验。

useWindowScroll:实时监听浏览器窗口的滚动事件,实现一些响应式效果。

useWindowSize:实时获取和响应浏览器窗口的尺寸信息,实现响应式布局。

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

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

相关文章

25计算机考研院校数据分析 | 哈尔滨工业大学

哈尔滨工业大学&#xff08;Harbin Institute of Technology&#xff09;&#xff0c;简称哈工大&#xff0c; 校本部位于黑龙江省哈尔滨市&#xff0c;是由工业和信息化部直属的全国重点大学&#xff0c;位列国家“双一流”、“985工程”、“211工程”&#xff0c;九校联盟 、…

数据结构与算法之经典排序算法

一、简单排序 在我们的程序中&#xff0c;排序是非常常见的一种需求&#xff0c;提供一些数据元素&#xff0c;把这些数据元素按照一定的规则进行排序。比如查询一些订单按照订单的日期进行排序&#xff0c;再比如查询一些商品&#xff0c;按照商品的价格进行排序等等。所以&a…

ServiceNow 研究:通过RAG减少结构化输出中的幻觉

论文地址&#xff1a;https://arxiv.org/pdf/2404.08189 原文地址&#xff1a;rag-hallucination-structure-research-by-servicenow 在灾难性遗忘和模型漂移中&#xff0c;幻觉仍然是一个挑战。 2024 年 4 月 18 日 灾难性遗忘&#xff1a; 这是在序列学习或连续学习环境中出现…

Costas-Barker序列模糊函数仿真

文章目录 前言一、Costas 序列二、Barker 码三、Costas-Barker 序列模糊函数仿真1、MATLAB 核心代码2、仿真结果①、Costas-Barker 模糊函数图②、Costas-Barker 距离模糊函数图③、Costas-Barker 速度模糊函数图 四、资源自取 前言 Costas 码是一种用于载波同步的频率调制序列…

20232810 2023-2024-2 《网络攻防实践》实验七

一、实践内容 &#xff08;1&#xff09;使用Metasploit进行Linux远程渗透攻击 任务&#xff1a;使用Metasploit渗透测试软件&#xff0c;攻击Linux靶机上的Samba服务Usermap_script安全漏洞&#xff0c;获取目标Linux靶机的主机访问权限。实践步骤如下&#xff1a; ①启动Met…

字节跳动发起AI战争 寻找下一个TikTok

现如今在字节跳动&#xff0c;已近乎隐退的张一鸣&#xff0c;只重点关注两件事&#xff1a;其一&#xff0c;是风暴中的TikTok&#xff1b;其二&#xff0c;就是字节跳动正在全力追赶的AI战略业务。 提及字节的AI战略远望,多个接近字节的人士均认为,以Flow部门出品最为“正统…

缩小COCO数据集

在运行YOLOS模型的过程中&#xff0c;需要使用到COCO2017这个数据集&#xff0c;但从实验运行来看&#xff0c;其所需时间无疑是相当漫长&#xff0c;预计可能需要近几十天才能完成&#xff0c;因此便考虑缩小COCO数据集大小&#xff0c;即尽可能在遵循其分布的情况下&#xff…

Unity开发一个FPS游戏之四

在前面的系列中&#xff0c;我已介绍了如何实现一个基本的FPS游戏&#xff0c;这里将继续进行完善&#xff0c;主要是增加更换武器以及更多动作动画的功能。 之前我是采用了网上一个免费的3D模型来构建角色&#xff0c;这个模型自带了一把AR自动步枪&#xff0c;并且自带了一些…

Unity开发微信小游戏(2)分享

目录 1.概述 2.代码 3.示例 4.个人作品 1.概述 这里我们能做有两件事&#xff1a; 1&#xff09;主动发起分享 2&#xff09;监听右上角分享&#xff08;...按钮&#xff0c;发朋友圈也在这里&#xff09; API&#xff1a;官方文档 2.代码 1&#xff09;主动发起分享&…

DHCPv4_CLIENT_ALLOCATING_01: 在其本地物理子网上广播DHCPDISCOVER消息

测试目的&#xff1a; 确保客户端能够在其本地物理子网上广播DHCPDISCOVER消息。 描述&#xff1a; 该测试用例旨在验证DHCP客户端是否能够正确地在其本地物理子网上广播DHCPDISCOVER消息&#xff0c;以便进行IP地址的自动分配。 测试拓扑&#xff1a; 测试步骤&#xff1a…

生产看板:最直观的车间管理方式之一,是马是马户牵出来溜溜。

可视化生产看板在组织工业生产中扮演着重要的角色&#xff0c;它可以提供实时的信息和可视化的数据&#xff0c;帮助团队和管理层更好地监控和管理生产过程。 以下是可视化生产看板在组织工业生产中的作用&#xff1a; 实时监控&#xff1a;可视化生产看板可以显示实时的生产数…

JavaEE初阶-多线程易忘点总结

文章目录 1.PCBPID文件描述符表内存指针状态上下文优先级记账信息tgid 2.线程与进程的区别3.sleep和interrupt方法的关系变量终止线程interrupt方法终止线程 4.线程状态5.出现线程不安全的原因线程在系统中是随即调度&#xff0c;抢占式执行的。多个线程修改同一个变量线程针对…

小白也能微调大模型:LLaMA-Factory使用心得

大模型火了之后&#xff0c;相信不少人都在尝试将预训练大模型应用到自己的场景上&#xff0c;希望得到一个垂类专家&#xff0c;而不是通用大模型。 目前的思路&#xff0c;一是RAG(retrieval augmented generation)&#xff0c;在模型的输入prompt中加入尽可能多的“目标领域…

Linux-管道通信

1. 管道概念 管道&#xff0c;是进程间通信的一种方式&#xff0c;在Linux命令中“ | ”就是一种管道&#xff0c;它可以&#xff0c;连接前一条命令&#xff0c;和后一条命令&#xff0c;把前面命令处理完的内容交给后面&#xff0c;例如 cat filename | grep hello …

富文本编辑器CKEditor4简单使用-07(处理浏览器不支持通过工具栏粘贴问题 和 首行缩进的问题)

富文本编辑器CKEditor4简单使用-07&#xff08;处理浏览器不支持通过工具栏粘贴问题 和 首行缩进的问题&#xff09; 1. 前言——CKEditor4快速入门2. 默认情况下的粘贴2.1 先看控制粘贴的3个按钮2.1.1 工具栏粘贴按钮2.1.2 存在的问题 2.2 不解决按钮问题的情况下2.2.1 使用ct…

三维图形学知识分享---求平面与模型相交线

在CGAL&#xff08;Computational Geometry Algorithms Library&#xff09;中&#xff0c;Polygon_mesh_processing模块提供了用于处理多边形网格数据结构的功能。其中&#xff0c;surface_intersection函数是用来计算模型的表面相交线的工具。 CGAL_Mesh mesh_orcl;std::vect…

C++ 函数 参数与返回值

#一 参数与返回值 回顾文件读数据功能 文件读数据 1函数参数传值调用过程 将函数调用语句中的实参的一份副本传给函数的型材。 简单的值的传递&#xff0c;实参的值没有发生变化。 2 函数参数传值调用过程 传地址调用 将变量的地址传递给函数的形参 形参和实参指向了同…

SpringBoot文件上传+拦截器

1、resource static下有个图片&#xff0c;希望浏览器可以查看这个图片 访问&#xff1a; 若yml设置路径&#xff0c;则可以定义在static下才可以访问 classpath代表类路径&#xff0c;都在target下 也就是项目在运行后的resource下的文件都会到classes下去 无需在target下创…

MES(制造执行系统)与PDCA循环,斩不断理还乱的关系。

MES系统算是B端系统中比较复杂的一种&#xff0c;这与我国制造业标准化程度较低有一定的关联&#xff0c;MES的存在就是要更好执行PDCA循环&#xff0c;二者关联是千丝万缕的&#xff0c;B系统提升专家借此为大家分享一下。 一、什么是PDCA PDCA&#xff08;Plan-Do-Check-Ac…

前端Web开发基础知识

HTML定义 超文本标记语言&#xff08;英语&#xff1a;HyperText Markup Language&#xff0c;简称&#xff1a;HTML&#xff09;是一种用于创建网页的标准标记语言。 什么是 HTML? HTML 是用来描述网页的一种语言。 HTML 指的是超文本标记语言: HyperText Markup LanguageH…