Vue 之 修饰符汇总

一、简介

在Vue中,修饰符是一种特殊的语法,用于修改指令或事件绑定的行为,它们以点号(.)的形式添加到指令或事件的后面,并可以改变其默认行为或添加额外的功能,如:禁止事件冒泡、数据双向绑定等,当然修饰符的功能也可以通过js在事件函数中自行实现,但是我们更希望在函数中只有纯粹的数据逻辑,而不是去处理 DOM 事件细节。

​ 因此Vue为我们提供了很多修饰符,相当于将一些常用DOM事件逻辑进行了封装,根据功能类别,共分为以下几类:① 事件修饰符。② 按键修饰符。③ 系统修饰符。 ④ 鼠标修饰符。 ⑤ 表单修饰符。⑥ 其他修饰符。

​ 多个修饰符可以在同一事件上同时串联使用,多方位的限制事件的触发范围。

​ 注意:下面的案例代码,全都是在Chrome浏览器中进行的实验。

二、事件修饰符

1、.stop

​ 该修饰符用于实现阻止事件冒泡,其作用等同于event.stopPropagation()

案例代码:
<div style="width: 200px; height: 200px; background: #ccc" @click="fatherClick()"><div style="width: 100px; height: 100px; background: red" @click.stop="sonClick()">stop修饰符测试</div>
</div><script>fatherClick() {console.log("父元素的点击事件被冒泡触发了");},sonClick() {console.log("带有stop修饰符的子元素被点击了");},
</script>
执行结果:

​ 点击子元素,子元素的事件正常触发执行,但父元素事件没有被触发。

在这里插入图片描述

2、.prevent

​ 该修饰符用于实现阻止事件的默认行为,其作用等同于event.preventDefault()

案例代码:
<a href="https://www.baidu.com" target="_blank" @click.prevent="preventClick()">测试prevent修饰符</a><script>preventClick() {console.log("阻止了默认事件行为,但事件绑定函数正常执行");},
</script>
执行结果:

​ 点击该元素后,页面并未发生跳转,但是click事件正常触发和执行。
在这里插入图片描述

3、.capture

​ 该修饰符用于实现修改事件的传播过程为捕获模式(正常为冒泡模式),其作用等同于在使用addEventListener('事件名','事件函数',{ capture: true })注册事件时将第三个参数中的capture设置为true。

​ **冒泡模式: **事件从触发事件的元素开始向上传播,逐级向上层父元素传递,直到达到根元素(通常是 window 对象)。这意味着父元素的事件处理程序会在子元素的事件处理程序之后被调用。

捕获模式: 事件从根元素开始向下传播,逐级向下层子元素传递,直到达到触发事件的元素。这意味着父元素的事件处理程序会在子元素的事件处理程序之前被调用。

案例代码:
<div style="width: 200px; height: 200px; background: #ccc" @click.capture="fatherClick()"><div style="width: 100px; height: 100px; background: red" @click="sonClick()">capture修饰符测试</div>
</div><script>fatherClick() {console.log("父元素的点击事件被触发了");},sonClick() {console.log("子元素的点击事件被触发了");},
</script>
执行结果:

​ 点击子元素后,先触发父元素的点击事件,然后再触发子元素的点击事件。

在这里插入图片描述

4、.self

​ 该修饰符用于实现,只有当触发事件的元素与当前事件绑定的元素是同一个元素时(即event.targetevent.currentTarget指向同一个元素),事件绑定函数才会被执行。主要可用来过滤因为事件冒泡而触发的事件。

event.currentTarget 的值只能在事件处理过程中被使用。如果尝试用 console.log()在控制台打印 event 对象,你会发现 currentTarget 的值是 null,如果想在控制台打印 currentTarget ,应该直接使用 console.log(event.currentTarget)

案例代码:
<div style="width: 200px; height: 200px; background: #ccc" @click.self="fatherClick()"><div style="width: 100px; height: 100px; background: red" @click="sonClick()">self修饰符测试</div>
</div><script>fatherClick() {console.log("父元素的点击事件被触发了");},sonClick() {console.log("子元素的点击事件被触发了");},
</script>
执行结果:

​ 点击子元素,子元素事件正常触发执行,虽然会正常冒泡到父元素,但父元素事件不会被触发执行。只有点击父元素本身时,父元素的事件才会正常触发执行。

在这里插入图片描述

5、.once

​ 该修饰符于v2.1.4版本新增,用于实现限制事件只触发执行一次,执行完成后绑定的事件会自动被移除,其作用等同于在使用addEventListener('事件名','事件函数',{ once: true })注册事件时将第三个参数中的once设置为true。后续再次触发事件,事件并不会再次执行,但事件会正常向上冒泡。当绑定事件的元素被销毁再重绘之后,限制会重置,如果元素只是通过display: none;进行隐藏,则不会重置限制。

​ 该修饰符不仅可以用于原生DOM事件,也可用于父子组件之间的自定义组件事件。

案例代码:
<div style="width: 200px; height: 200px; background: #ccc" @click="fatherClick()"><div style="width: 100px; height: 100px; background: red" @click.once="sonClick()">once修饰符测试</div>
</div><script>fatherClick() {console.log("父元素的点击事件被触发了");},sonClick() {console.log("子元素的点击事件被触发了");},
</script>
执行结果:

​ 第一次点击子元素,子元素绑定事件正常执行,然后冒泡到父元素,父元素事件也正常执行。后续再点击子元素,子元素事件不再被触发执行,但会正常后冒泡到父元素,触发父元素事件执行。

在这里插入图片描述

6、.passive

​ 该修饰符于v2.3.0版本新增,用于告诉浏览器当前事件永远不会调用 preventDefault()来阻止默认行为,其作用等同于在使用addEventListener('事件名','事件函数',{ passive: true })注册事件时将第三个参数中的passive设置为true。并且在事件被触发时,无需等待绑定事件执行,立即执行事件的默认行为。通常用于提升移动端的滚屏性能。

​ 不要把 .passive.prevent 一起使用,因为 .prevent 将会被忽略,同时浏览器可能会向你展示一个警告,因为.passive的目的就是告诉浏览器你不想阻止事件的默认行为。

​ 根据规范,事件的 passive 默认值始终为 false。然而,这增加了移动端触摸事件和滚轮事件的事件监听器在浏览器尝试滚动页面时阻塞浏览器主线程的可能性——这可能会大大降低浏览器处理页面滚动时的性能。为了避免这一问题,大部分浏览器(Safari 和 IE 除外)将文档级节点 WindowDocumentDocument.body 上的 wheelmousewheeltouchstarttouchmove 事件的 passive 默认值更改为 true。如此,事件监听器便不能取消事件,也不会在用户滚动页面时阻止页面呈现。

案例代码:
<div @scroll.passive="onScroll()">...</div>
执行结果:

​ 滚动事件的默认行为 (即滚动行为) 将会立即触发,而不会等待事件绑定的onScroll()函数执行结束后再触发。

三、按键修饰符

​ 按键修饰符是Vue提供的处理键盘事件的特殊方式。它允许你在处理键盘事件时,对触发事件的按键进行限制。使用按键修饰符之后,只有修饰符对应的键盘按键才会触发对应事件。

​ 该类型的修饰符通常只在文本域元素上使用,但并不绝对,我们也可以在任何一个非文本域元素上,通过增加tabindex=0属性的方式,使元素可聚焦,从而可以使用该类型的修饰符。

1、.enter

​ 该修饰符对应键盘中的Enter回车键,限制触发事件的按键只能是Enter回车键。

案例代码:
<!-- 通过在非文本域元素中增加tabindex="0"属性 使其能够使用按键修饰符 -->
<div tabindex="0" @keyup.enter="ajFunction($event)">按键修饰符</div>
执行结果:

​ 鼠标指针点击该元素后,再按下键盘的Enter回车键,页面上该元素会出现聚焦效果,并且会触发对应的按键事件。

在这里插入图片描述

2、.tab

​ 该修饰符对应键盘中的tab键,限制触发事件的按键只能是tab键。

案例代码:
 <input @keyup.tab="ajFunction($event, 2)" placeholder="按键修饰符" />
执行结果:

​ 按下键盘的tab键,如果焦点聚焦到该元素,则会触发对应的按键事件。如果按下tab键之前,目标元素正处于聚焦状态,则焦点会切换到下一可聚焦的元素,当前元素的按键事件也不会触发。

在这里插入图片描述

3、.delete

​ 该修饰符对应键盘中的delete删除键和Backspace删除键,限制触发事件的按键只能是delete删除键Backspace删除键。

案例代码:
<input @keyup.delete="ajFunction($event, 2)" placeholder="按键修饰符" />
执行结果:

在这里插入图片描述

4、.esc

​ 该修饰符对应键盘中的esc退出键,限制触发事件的按键只能是esc退出键。

案例代码:
<input @keyup.esc="ajFunction($event, 2)" placeholder="按键修饰符" />
执行结果:

在这里插入图片描述

5、.space

​ 该修饰符对应键盘中的space空格键,限制触发事件的按键只能是space空格键。

案例代码:
<input @keyup.space="ajFunction($event, 2)" placeholder="按键修饰符" />
执行结果:

在这里插入图片描述

6、.up/.down/.left/.right

​ 这四个按键修饰对应着键盘上的上下左右四个键位,设置对应的修饰符可以限制触发事件的按键。

案例代码:
<input @keyup.up="ajFunction($event, 2)" placeholder="按键修饰符1" />
<input @keyup.down="ajFunction($event, 2)" placeholder="按键修饰符2" />
<input @keyup.left="ajFunction($event, 2)" placeholder="按键修饰符3" />
<input @keyup.right="ajFunction($event, 2)" placeholder="按键修饰符4" />
执行结果:

在这里插入图片描述

7、按键名和按键码

​ 除了使用Vue提供的按键修饰符之外,我们还可以通过按键名(KeyboardEvent.key转换为 kebab-case 来作为修饰符)和按键码(keyCode直接作为修饰符),两种方式来实现限制触发事件的按键。

​ 注意:keyCode 的事件用法已经被废弃了并可能不会被最新的浏览器支持。

案例代码:
<input @keyup.arrow-up="ajFunction($event, 2)" placeholder="按键修饰符2" />
执行结果:

在这里插入图片描述

四、系统修饰符

​ 系统修饰符是用来进一步限制鼠标或键盘事件的触发范围,只有在按下系统修饰符对应按键的同时,再去操作其他按键,才能触发对应的鼠标或按键事件,如果单独只按下系统修饰符对应按键或者只按下其他按键都不会触发鼠标或按键事件。

​ 例如在和 keyup 事件一起用时,事件触发时修饰键必须处于按下状态。以.ctrl修饰符为例,只有在按住 ctrl 的情况下释放其它按键,才能触发 keyup.ctrl。而单单释放 ctrl或者单独释放其他按键都不会触发事件。

1、.ctrl

​ 该修饰符用于进一步限制按键事件,必须得在按下ctrl键位的同时操作其他按键才会触发对应事件。

​ 但修饰符在浏览器中不能与鼠标事件合用,因为浏览器系统定义很多关于ctrl的快捷键,可能会造成逻辑冲突。

案例代码:
<!-- 在按下ctrl的同时 松开其他任意一个按键 才会触发事件 -->
<input @keyup.ctrl="ajFunction($event, 2)" placeholder="按键修饰符1" />
<!-- 在按下ctrl的同时 松开上方向键按键 才会触发事件 -->
<input @keyup.ctrl.up="ajFunction($event, 2)" placeholder="按键修饰符1" />
执行结果:

在这里插入图片描述

2、.alt

​ 该修饰符用于进一步限制按键事件,必须得在按下alt键位的同时操作其他按键才会触发对应事件。

​ 该修饰符可以与鼠标事件合用。

​ 但是经过实践发现,该修饰符不能跟.space.tab等部分修饰符合用,目前原因未知,怀疑是与浏览器快捷键冲突了。

案例代码:
<!-- 在按下alt的同时 用鼠标点击事件 才会触发事件 -->
<div @click.alt="ajFunction($event, 1)">系统修饰符</div>
<!-- 在按下alt的同时 松开其他任意一个按键 才会触发事件 -->
<input @keyup.alt="ajFunction($event, 2)" placeholder="按键修饰符1" />
<!-- 在按下alt的同时 松开删除按键 才会触发事件 -->
<input @keyup.alt.delete="ajFunction($event, 2)" placeholder="按键修饰符1" />
执行结果:

在这里插入图片描述

3、.shift

​ 该修饰符用于进一步限制按键事件,必须得在按下shift键位的同时操作其他按键才会触发对应事件。

​ 该修饰符可以与鼠标事件合用。

案例代码:
<!-- 在按下shift的同时 用鼠标点击事件 才会触发事件 -->
<div @click.shift="ajFunction($event, 1)">系统修饰符</div>
<!-- 在按下shift的同时 松开其他任意一个按键 才会触发事件 -->
<input @keyup.shift="ajFunction($event, 2)" placeholder="系统修饰符1" />
<!-- 在按下shift的同时 松开空格按键 才会触发事件 -->
<input @keyup.shift.space="ajFunction($event, 2)" placeholder="系统修饰符1" />
执行结果:

在这里插入图片描述

4、.meta

​ 该修饰符用于进一步限制按键事件,但是该修饰符比较特殊,在不同系统对应的按键不同。在 Mac 系统键盘上,meta 对应 command 键 (⌘)。在 Windows 系统键盘 meta 对应 Windows 徽标键 (⊞)。在 Sun 操作系统键盘上,meta 对应实心宝石键 (◆)。

​ 该修饰符可以与鼠标事件合用,但不能跟键盘按键合用,原因未知,怀疑是与浏览器快捷键冲突了。

案例代码:
<!-- 在按下meta的同时 用鼠标点击事件 才会触发事件 -->
<div @click.meta="ajFunction($event, 1)">系统修饰符</div>
执行结果:

在这里插入图片描述

5、.exact

​ 该修饰符是在 v2.5.0 版本中新增的修饰符,用于更精准的控制系统修饰符组合触发的事件。

案例代码:
<!-- 单独使用系统修饰符alt 表示只要按下的按键中包含alt键 就可以通过鼠标触发事件 同时按下了其他按键并不影响 -->
<div @click.alt="ajFunction($event, 1)">系统修饰符1</div>
<!-- 使用系统修饰符alt+exact 表示按下的按键中只能包含alt键 不可以有其他按键 然后才能通过鼠标触发事件 如果同时按下了其他按键 则不会触发事件 -->
<div @click.alt.exact="ajFunction($event, 1)">系统修饰符2</div>
<!--  单独使用系统修饰符exact 表示通过鼠标触发事件时,不能按下任何一个系统修饰符对应的按键 才能触发事件否则事件不会被触发-->
<div @click.exact="ajFunction($event, 1)">系统修饰符3</div>
执行结果:

在这里插入图片描述

五、鼠标按钮修饰符

​ 鼠标修饰符用来限制触发鼠标事件的按键,共分为三种:left-鼠标左键、right-鼠标右键、middle-鼠标中键(鼠标滚轮)。

1、.left

​ 该修饰限制只当点击鼠标左键时,才会触发对应的鼠标事件。

2、.right

​ 该修饰限制只当点击鼠标右键时,才会触发对应的鼠标事件。但是在网页中点击鼠标右键是会显示页面功能菜单的,可以借助.prevent取消默认行为来屏蔽显示菜单功能。

3、.middle

​ 该修饰限制只当点击鼠标中键(鼠标滚轮)时,才会触发对应的鼠标事件。

案例代码:
<div @click.left="ajFunction($event, 1)">鼠标修饰符1</div>
<div @click.right="ajFunction($event, 2)">鼠标修饰符2</div>
<div @click.middle="ajFunction($event, 3)">鼠标修饰符3</div>
执行结果:

在这里插入图片描述

六、表单修饰符

​ 该类型的修饰符基本都是在文本域元素上与v-model语法糖一起使用,用于在处理表单输入时修改或增强默认行为。下面所有讲解中的文本域元素都以input元素为示例。

1、.lazy

​ 默认情况下,使用v-model在文本域元素上实现数据的双向绑定时,都是在input 事件后更新数据(IME拼字阶段的状态例外,详情请看第二段)。我们可以通过使用该修饰符,修改更新数据的时机为每次 change 事件后。

​ 对于需要使用 IME 的语言 (中文,日文和韩文等),你会发现 v-model 不会在 IME 输入还在拼字阶段时触发更新。如果你的确想在拼字阶段也触发更新,请直接使用自己的 input 事件监听器和 value 绑定而不要使用 v-model

案例代码:
<input v-model="msg" @input="inputHandle" @change="changeHandle" placeholder="表单修饰符1" />
<input v-model.lazy="msg" @input="inputHandle" @change="changeHandle" placeholder="表单修饰符2" /><script>
inputHandle() {console.log("input事件被触发了---", this.msg);
},
changeHandle() {console.log("change事件被触发了--", this.msg);
},
</script>
页面表现:

在这里插入图片描述

2、.number

​ 该修饰符的作用是将用户输入的内容自动转化成Number数字类型,其内部是通过parseFloat()方法进行处理,如果输入的内容不能被该方法处理,那将返回原始输入的内容值。如果一开始输入的内容可以被转成数字(如:123),但是后续输入的内容无法转成数字(如:123abc),则在change事件触发后,后面输入的非数字内容将会被清空,变量值最终为123。并且在input事件阶段获取到的变量值也为123,不包含后面输入的非数字内容。

​ 如果设置了input元素的type="number" ,则会自动启用该修饰符。

案例代码:
<input v-model.number="msg" @input="inputHandle" @change="changeHandle" placeholder="表单修饰符1" />
执行结果:

先输入123,然后清空,再输入abc,然后清空,最后输入123,紧接着输入abc,然后切换焦点,触发change事件

在这里插入图片描述

3、.trim

​ 该修饰符的作用是自动去除输入内容前后两端的空格。在input事件触发时,就已经将空格去除。

案例代码:
<input v-model.trim="msg" @input="inputHandle" @change="changeHandle" placeholder="表单修饰符1" /><script>
inputHandle() {console.log("input事件被触发了---",this.msg,"--数据长度--",this.msg.length);
},
changeHandle() {console.log("change事件被触发了--",this.msg,"--数据长度--",this.msg.length);
},
</script>
页面效果:

在这里插入图片描述

七、其他修饰符

1、.sync

​ 该修饰符用于实现父子组件之间props传递数据的双向绑定。在父组件向子组件传值时,使用该修饰符后,我们就可以直接在子组件中通过$emit('update:propName')来更新数据。

案例代码:

父组件:

<template><div><h1>这是父组件{{ count }}</h1><!-- 向子组件传递数据并使用sync修饰符 --><son :count.sync="count"></son></div>
</template><script>
import son from "../components/son.vue";
export default {components: {son,},data() {return {count: 1,};},
};
</script>

子组件:

<template><div><h3 @click="add()">这是子组件{{ count }}</h3></div>
</template><script>
export default {props: {// 接收父组件传递过来的值count: {type: Number,default: 0,},},methods: {add() {// 子组件直接修改父组件传递的值this.$emit("update:count", this.count + 1);},},
};
</script>
页面效果:

初始状态:

在这里插入图片描述

点击后:

在这里插入图片描述

八、修饰符串联

​ 在同一个元素上,修饰符并不是只能使用一种,而是能够叠加使用多个修饰符,其作用也将同事发挥作用,对事件作更详细的限制。 但要注意修饰符的使用顺序,对于大部分修饰符来说,顺序并不重要。但对于部分修饰符来说顺序很重要,以 .prevent.self 这两个修饰符来说,顺序会影响它们的行为。因为这两个修饰符的作用顺序与使用顺序相同,后面的修饰符是在前面修饰符的基础上进一步做限制。

​ 例如:用 @click.prevent.self 会阻止当前元素的所有的点击产生的默认行为,包括冒泡过来的点击事件,而 @click.self.prevent 只会阻止当前元素自身点击产生的默认行为,冒泡过来的点击则会正常执行默认行为。

常见组合修饰符:
1、.stop.prevent

​ 在阻止事件冒泡的同时,阻止事件默认行为。

2、.enter.space

​ 限制触发事件的按键只能为Enter 键或者 Space 键。

3、.self.once

​ 只有当事件是从元素本身触发时执行绑定函数,且只触发一次。

4、.prevent.self

​ 阻止当前元素的当前事件的产生的默认行为,包括冒泡过来的事件。

5、.lazy.trim.number

​ 当离开输入框时(change 事件),移除首尾空白后的输入框的值,将转为数值类型,然后进行数据同步。

6、其他。。。

九、相关资料

Vue官方文档-事件修饰符

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

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

相关文章

java 中数组常用排序方法举例说明

java 中数组常用排序方法举例说明 在Java中&#xff0c;数组的排序是常见的操作之一&#xff0c;而Java提供了多种排序方法来满足不同场景的需求。下面详细介绍5种常用的数组排序方法&#xff1a; 冒泡排序&#xff08;Bubble Sort&#xff09;&#xff1a; 冒泡排序是一种简单…

【mars3d】new mars3d.layer.GeoJsonLayer(实现环状面应该怎么传data

问题&#xff1a;【mars3d】new mars3d.layer.GeoJsonLayer(实现环状面应该怎么传data 解决方案&#xff1a; 1.在示例中修改showDraw()方法的data数据&#xff0c;实现以下环状面效果 2.示例链接&#xff1a; 功能示例(Vue版) | Mars3D三维可视化平台 | 火星科技 export f…

Ubuntu20.04安装ROS2 Foxy

Ubuntu20.04安装ROS2 Foxy 实操安装 安装ROS2的教程在网上很多&#xff0c;但是我操作之后都有问题&#xff0c;大部分的问题是在 sudo apt update 时访问packages.ros.org无法成功&#xff0c;主要的原因是没有外网&#xff0c;而自己整一个外网代理又非常麻烦&#xff0c;所…

读书之深入理解ffmpeg_简单笔记3(初步)

通读完只能对书中内容有大概的了解&#xff0c;具体的细节还得一一实践攻克。 10: libavformat接口使用 媒体流&#xff0c;文件等封装&#xff0c;解封装&#xff0c;转封装 视频截取&#xff0c;AVFormatContext,AVPacket等介绍 11&#xff1a;libavcodec接口使用 视频&…

Android开发中“真正”的仓库模式

原文地址&#xff1a;https://proandroiddev.com/the-real-repository-pattern-in-android-efba8662b754原文发表日期&#xff1a;2019.9.5作者&#xff1a;Denis Brandi翻译&#xff1a;tommwq翻译日期&#xff1a;2024.1.3 Figure 1: 仓库模式 多年来我见过很多仓库模式的实…

pytest安装失败,报错Could not find a version that satisfies the requirement pytest

问题 安装pytest失败&#xff0c;尝试使用的命令有 pip install pytest pip3 install pytest pip install -U pytest pip install pytest -i https://pypi.tuna.tsinghua.edu.cn/simple但是都会报同样的错&#xff1a; 解决方案 发现可能是挂了梯子的原因&#xff0c;关掉…

代码随想录算法训练营Day20|654.最大二叉树、617.合并二叉树、700.二叉搜索树中的搜索、98.验证二叉搜索树

目录 654.最大二叉树 前言 递归法 617.合并二叉树 前言 递归法 700.二叉搜索树中的搜索 前言 递归法 递归法 98.验证二叉搜索树 前言 递归法 迭代法 总结 654.最大二叉树 题目链接 文章链接 前言 本题延续昨天最后一题&#xff0c;依然是一道构造二叉树的题目…

烟花燃放如何管控?智能分析网关V4烟火检测保障烟火安全

一、方案背景 随着元旦佳节的热潮退去&#xff0c;春节也即将来临&#xff0c;在众多传统的中国节日里&#xff0c;烟花与烧纸祭祀都是必不可少的&#xff0c;一方面表达了人们对节日的庆祝的期许&#xff0c;另一方面也是一种对故者思念的寄托。烟花爆竹的燃放不仅存在着巨大的…

Node.js中的模块,常用模块具体代码示例

核心模块&#xff1a;https://blog.csdn.net/kkkys_kkk/article/details/135409851?spm1001.2014.3001.5501 目录 第三方模块 代码示例 Express示例 Lodash示例 MongoDB示例 Async示例 Request示例 发送GET 发送POST请求 自定义模块 创建步骤 常见示例 导出一个函数&a…

【PHP】TP5 使用模型一对一关联查询,条件筛选及字段过滤

目录 方法一&#xff1a;使用Eloquent ORM的with关联查询 方法二&#xff1a;使用JOIN进行查询 方法一&#xff1a;使用Eloquent ORM的with关联查询 在 ThinkPHP5 中&#xff0c;可以使用模型关联和条件查询来实现一对一关联查询。以下是一个示例&#xff1a; 假设有两个表&a…

跑通大模型领域的 hello world

跑通书生浦语大模型的 3 个趣味 demo&#xff08;InternLM-Chat-7B 智能对话、Lagent工具调用解简单数学题、浦语灵笔多模态图文创作和理解&#xff09;视频和文档。 1、两个框架 InternLM 是⼀个开源的轻量级训练框架&#xff0c;旨在⽀持⼤模型训练⽽⽆需⼤量的依赖。 Lage…

Underactuated Robotics - 欠驱动机器人学(一)- 全驱动与欠驱动系统

系列文章目录 前言 如今的机器人行动过于保守&#xff0c;只能完成机械性能所能完成的一小部分任务&#xff0c;实现一小部分性能。在某些情况下&#xff0c;我们仍然从根本上受限于在结构化工厂环境中成熟的刚性机械臂控制技术&#xff0c;在这种环境中&#xff0c;可以使用大…

烧录FRU方法

烧录FRU ipmitool远程命令示例: ipmitool -I lanp -H 127.0.0.1 -U admin -P admin write FRUID FRUfilename 1、修改Chassis PN ipmitool fru edit 0 field c 0 01234567892、修改 Board PN ipmitool fru edit 0 field b 3 01234567893、修改 Product PN ipmitool fru ed…

docker一键安装命令

docker一键安装命令 curl -fsSL https://get.docker.com | bash -s docker开机自动运行 systemctl start docker systemctl enable docker配置镜像仓库 sudo vim /etc/docker/daemon.json增加或修改以下配置内容 {"registry-mirrors": ["https://dockerprox…

将文本文件导入Oracle数据库的简便方法:SQL Loader Express

需求 我有一个文本文件dbim.txt&#xff0c;是通过alert log生成的&#xff0c;内容如下&#xff1a; 2020-09-11 2020-09-11 ... 2023-12-03 2023-12-03 2023-12-26我已经在Oracle数据库中建立了目标表&#xff1a; create table dbim(a varchar(16));我想把日志文件导入Or…

C++之STL库简介

目录 一、STL&#xff08;Standard Template Library&#xff0c;标准模板库&#xff09; 二、容器&#xff08;Containers&#xff09; 1.vector&#xff08;动态数组&#xff09; 2.list&#xff08;双向链表&#xff09; 3.deque&#xff08;双端队列&#xff09; 4.st…

用友U8 Cloud smartweb2.RPC.d XXE漏洞复现

0x01 产品简介 用友U8 Cloud 提供企业级云ERP整体解决方案,全面支持多组织业务协同,实现企业互联网资源连接。 U8 Cloud 亦是亚太地区成长型企业最广泛采用的云解决方案。 0x02 漏洞概述 用友U8 Cloud smartweb2.RPC.d接口处存在 XXE漏洞,攻击者可通过该漏洞获取敏感文件…

软件工程:用例图相关知识和多实例分析

目录 一、用例图相关知识 1. 基本介绍 2. 常用符号 二、用例图实例分析 1. 新闻管理系统 2. 医院病房监护系统 3. 实验上机安排系统 4. 远程网络教学系统 一、用例图相关知识 1. 基本介绍 用例图&#xff08;use case diagram&#xff09;是用户与系统交互的最简表示…

L1-084:拯救外星人

你的外星人朋友不认得地球上的加减乘除符号&#xff0c;但是会算阶乘 —— 正整数 N 的阶乘记为 “N!”&#xff0c;是从 1 到 N 的连乘积。所以当他不知道“57”等于多少时&#xff0c;如果你告诉他等于“12!”&#xff0c;他就写出了“479001600”这个答案。 本题就请你写程序…

条款35:考虑virtual函数以外的其它选择

1.前言 假设我们在写一个3D游戏软件&#xff0c;打算为游戏内的人物设计一个继承体系。游戏内容属于暴力砍杀类型&#xff0c;游戏中的角色被伤害或其它因素导致健康状态下降的情况是一个常见属性。因此设计一个成员函数healthValue&#xff0c;它会返回一个整数&#xff0c;表…