vue模板语法介绍及内置指令用法

1、文本差值(大括号、v-text、v-htm指令)

最基本的数据绑定就是文本差值,格式为“Mustache”语法(双大括号);

双大括号只能解析文本不能解析html,如需解析html则需使用v-html指令;后续指令再进行详解。v-作为指令前缀

<div id="app">
<p>{{ msg }}</p>
<p>你好<span v-html="rawHtml"></span></p>
</div>
//const msg = '测试';
//const rawHtml = '<b>加粗</b>';
//vue2
var vm = new Vue({el: '#app',data:{msg:'测试',rawHtml: '<b>加粗</b>'}
})

2、属性绑定v-bind指令,简写:(冒号)

响应式绑定html的属性,需要用到v-bind指令;
使用方法v-bind:html属性名,例如class的绑定,v-bind:class=“list_bar”;
绑定值为null或undefined时该属性会从渲染元素上移除。
简写:冒号;

<div :id="colorId">测试</div>
<div :class="colorClass">测试</div>
//布尔值
<button :disabled="btnDis">布尔值</button>
<input type="text" :value="inputVal" :autofocus="isFocus" placeholder="请输入用户名" />
//动态绑定多个值
<div v-bind="objAttrs">绑定多个属性</div>
//const colorId = ref('red');
//const colorClass = ref('green fontWeight');
//const btnDis = ref(true);
//const inputVal = ref('');
//const isFocus= ref(true);
//const objAttrs = {id: 'red',class:'fontWeight'}

使用 JavaScript 表达式,仅支持单一表达式;不支持运算符或者语句

2.1、class绑定

<div id="app"><div>{{state+2}}</div><div>状态:<span :class="{ green : state==1 }">成功 state==1时green类名才显示</span></div><div>状态:<span :class="state==1 ? 'green' : 'red'">{{state==1 ? '成功' : '失败'}}</span></div><div>状态:<span :class="['classA',state==1 ? 'green' : 'red']">{{state==1 ? '成功' : '失败'}}</span></div><div>状态:<span :class="['classA',{green:state==1}]">成功</span></div><div>状态:<span :class="['classA',{'class_red':state==1}]">失败</span></div><div>状态:<span :class="['classA',{'class_red':state==1,'green',type==2}]">失败</span></div><div>{{ msg.split('').reverse().join('') }}</div>
</div>

组件一个根元素的使用

<!-- 子组件只有一个根元素 -->
<div class="red">我是子组件</div>
<!-- 在使用组件时,渲染结果为<div class="red className">我是子组件</div> -->
<MyComponent class="className" /><!-- 布尔值判断,isTrue为ture时,渲染结果为<div class="red className">我是子组件</div> -->
<MyComponent :class="{className: isTrue}" />

组件多个根元素的使用

<!--MyComponent.vue 子组件多个根元素 -->
<template><div class="red" :class="$attrs.class">我是子组件</div><p>我不继承父组件类</p>
</template><script>
</script><style scoped>.red{color: #f00;font-weight: 700;}
</style>
/*home.vue 父组件*/
<template><main><my-component class="className"></my-component></main>
</template>
<style scoped>div{ padding: 5px 0px;}
</style>
<style>.className{font-style: italic;color: green;}
</style>

2.2、style绑定

<!-- 绑定内联样式 -->
<div :style="{fontSize: size + 'px'}"></div>
<div :style="{ color: activeColor, 'font-size': size + 'px' }"></div>
<div :style="{'margin-left':(isShow ? '20px' : '0px')}"></div>
<!-- 尽管推荐使用 camelCase,但 :style 也支持 kebab-cased 形式的 CSS 属性 key (对应其 CSS 中的实际名称) -->
<div :style="[styleObjectA, styleObjectB]"></div>
<div :style="{'text-align':textAlign}"></div>
//const size=ref(12);
//const styleObjectA = ref({color:'red'});
//const styleObjectB = ref({fontWeight:700});
//const textAlign = ref('left')

style多个样式时可直接绑定一个对象

const styleObject = reactive({color: 'red',fontSize: '13px'
})<div :style="styleObject"></div>

样式多值的写法
Vue 是在运行时检查该属性是否支持在当前浏览器中使用。如果浏览器不支持某个属性,那么将尝试加上各个浏览器特殊前缀,以找到哪一个是被支持的

<div :style="{ display: ['-webkit-box', '-ms-flexbox', 'flex'] }"></div>

以下为不支持2种情况

<!-- 这是一个语句,而非表达式 -->{{ var a=1; }}<!-- 条件控制也不支持,可使用三元表达式 -->{{ if(ok){return message} }}

2.3、动态值绑定

<div :id="`list-${count}`">list-{{count}}</div>

class及style绑定更多官网参考

3、条件渲染

v-if v-else v-else-if指令

v-if 指令用于条件性地渲染一块内容。这块内容只会在指令的表达式返回 true 值的时候被渲染。

  • 其中v-if可单独使用;
  • v-else配合v-if使用;
  • v-else-if必须紧跟在一个v-if或一个v-else-if元素后面,v-else-if可多次重复使用;
  • 当只需渲染判断,无需样式时可将v-if在< template >元素上使用;
//vue2 index.vue
<template>
<div class="main"><div>isShow的值为{{isShow}}<span v-if="isShow">显示</span></div><button @click="buttonClick">{{isShow ? '隐藏' : '显示'}}</button>
</div>
</template>
<script>
export default {name: "Index",data() {return {isShow: true}},mounted(){},methods:{buttonClick(){this.isShow = !this.isShow;},}
}
</script>
//vue3  index.vue
<script setup>
import { ref  } from 'vue';
const isShow = ref(true);
function buttonClick(){isShow.value = !isShow.value;
}const score = ref(85)
</script>
<template>
<div class='index-main'><div>isShow的值为{{isShow}}<span v-if="isShow">显示</span></div><button @click="buttonClick">{{isShow ? '隐藏' : '显示'}}</button><div>小明的成绩为{{score}}</div><p v-if="score>=90">优秀</p><p v-else-if="score>=80">良好</p><p v-else-if="score>=60">及格</p><p v-else>不及格</p>
</div>
</template>

v-show指令

用法基本与v-if相同,true显示,false隐藏;
不同之处:v-show会在DOM渲染中保留该元素,为该元素增加了display:none的属性;
v-show不支持在template元素上使用,也不能与v-else搭配使用;

两者的区别

  • v-if 是“真实的”按条件渲染,因为它确保了在切换时,条件区块内的事件监听器和子组件都会被销毁与重建。
  • v-if 也是惰性的:如果在初次渲染时条件值为 false,则不会做任何事。条件区块只有当条件首次变为 true 时才被渲染。
  • v-show 元素无论初始条件如何,始终会被渲染,只有 CSS display 属性会被切换。
  • v-if 有更高的切换开销,而 v-show 有更高的初始渲染开销
  • 如果需要频繁切换,则使用 v-show 较好;如果在运行时绑定条件很少改变,则 v-if 会更合适。

4、列表渲染 v-for指令

v-for的使用方法

  1. 格式1: v-for=“item in items”;其中item为迭代项别名;items为源数据的数组
  2. 格式2:v-for=“(item,index) in items”;支持第二个参数index,表示当前项的位置索引;
  3. 格式3:遍历对象,遍历对象时会按 Object.keys() 的结果遍历,但是不能保证它的结果在不同的 JavaScript 引擎下都一致。
//vue3 index.vue
<script setup>
import { ref  } from 'vue';
const items = ref(['列表一','列表二','列表三']);
const lists = ref([{id:1,name:'张三'},{id:2,name:'李四'}]);
const obj = ref({title:'vue.js',author:'Jane Doe',publishedAt:'2016-04-10'})
</script>
<template>
<div class='index-main'><ul><li v-for="item in items">{{item}}</li></ul><!-- index参数,index为列表当前项的索引位置 --><p v-for="(list,index) in lists">index: {{index}}--id: {{list.id}}--name: {{list.name}}</p><!-- 对象的渲染,支持三个参数,item为对象的值,name为对象的属性,index为当前项的索引位置 --><p v-for="(item,name,index) in obj">item: {{item}} -- name: {{name}} -- index:{{index}}</p><!-- 整数值的渲染,会基于1...n的取值范围重复多次 --><div v-for="n in 10">{{n}}</div>
</div>
</template>

v-for也可使用template标签,template 不会渲染,只渲染template中间的html标签

 <template v-for="item in lists"><p>{{item.name}}</p></template>

当v-if遇到v-for
不推荐v-if与v-for一起使用;
当 v-if 与 v-for 一起使用时,v-for 具有比 v-if 更高的优先级;

//v-if与v-for同时使用
<div v-if="isShow" v-for="item in lists">{{item.name}}</div>//建议改成下面的写法,当isShow为true时才进行列表渲染
<template v-if="isShow"><div v-for="item in lists">{{item.name}}</div>
</template>
//如需循环判断则可改为下面写法
<template v-for="item in lists"><p>{{item.name}}<span v-if="item.id>1"> ID:{{item.id}}</span></p></template>

Vue 默认按照“就地更新”的策略来更新通过 v-for 渲染的元素列表。当数据项的顺序改变时,Vue 不会随之移动 DOM 元素的顺序,而是就地更新每个元素,确保它们在原本指定的索引位置上渲染。

默认模式是高效的,但只适用于列表渲染输出的结果不依赖子组件状态或者临时 DOM 状态 (例如表单输入值) 的情况。

为了给 Vue 一个提示,以便它可以跟踪每个节点的标识,从而重用和重新排序现有的元素,你需要为每个元素对应的块提供一个唯一的 key attribute:

<div v-for="item in lists" :key="item.id">{{item.name}}</div>

建议:所有列表均增加key,提供一个唯一值;
key应该绑定一个基础类型(string或number类型);
组件使用v-for与普通元素没有区别,建议也提供一个唯一key值绑定;

关于key的更多官方介绍

数据变化侦听

以下变更方法影响数组时会被侦听响应且触发相关更新:

  • push()
  • pop()
  • shift()
  • unshift()
  • splice()
  • sort()
  • reverse()

非变更方法,这些方法不会改变原数组,总是返回一个新数组,所以遇到此类变更方法时,需将就数组替换为新数组;

  • filter()
  • concat()
  • slice()
const lists = refs([...]);
lists.value = lists.value.filter((item)=>{ return item.id>0 });

5、事件处理v-on指令

vue中使用v-on指令(简写@)来监听DOM事件,并在事件触发时执行对应的JavaScript

5.1、v-on的使用方法

//vue3 index.vue
<script setup>
import { ref,computed  } from 'vue';
const count = ref(0);
function buttonClick(event){//event.target.tagName可访问该DOM元素console.log(event.target.tagName);count.value++;
}
function sum(a,b){console.log('结果:',a+b);
}function btnClick(msg,event){//传递参数console.log('msg',msg);//按钮宽度console.log('e',event.target.clientWidth);
}
</script><template>
<div class="index-main"><p>count的值为{{count}}</p><button @click="count++">内联事件处理器</button><button @click="buttonClick">方法事件处理器</button><!-- 内联处理器调用方法,可传参,得到的结果为6 --><button @click="sum(1,5)">传参</button><button @click="btnClick('特殊$event变量',$event)">特殊变量$event</button><button @click="(event) => btnClick('箭头函数',event)">箭头函数</button>
</div>
</template>

5.2、扩展介绍,v-on的修饰符

v-on事件修饰符

  • .stop - 调用 event.stopPropagation()。阻止冒泡行为;
  • .prevent - 调用 event.preventDefault()。取消事件的默认行为,例如form表单默认的提交行为
  • .capture - 在捕获模式添加事件监听器。
  • .self - 只有事件从元素本身发出才触发处理函数。
  • .{keyAlias} - 只在某些按键下触发处理函数。
  • .once - 最多触发一次处理函数。
  • .left - 只在鼠标左键事件触发处理函数。
  • .right - 只在鼠标右键事件触发处理函数。
  • .middle - 只在鼠标中键事件触发处理函数。
  • .passive - 通过 { passive: true } 附加一个 DOM 事件

使用修饰符时需要注意调用顺序,因为相关代码是以相同的顺序生成的。
@click.prevent.self 会阻止元素及其子元素的所有点击事件的默认行为;
@click.self.prevent 则只会阻止对元素本身的点击事件的默认行为
.capture、.once 和 .passive 修饰符与原生 addEventListener 事件相对应

<!-- 方法处理函数 -->
<button v-on:click="doThis"></button>
<!-- 动态事件 -->
<button v-on:[event]="doThis"></button>
<!-- 内联声明 -->
<button v-on:click="doThat('hello', $event)"></button>
<!-- 缩写 -->
<button @click="doThis"></button>
<!-- 使用缩写的动态事件 -->
<button @[event]="doThis"></button>
<!-- 停止传播 -->
<button @click.stop="doThis"></button>
<!-- 阻止默认事件 -->
<button @click.prevent="doThis"></button>
<!-- 不带表达式地阻止默认事件 -->
<form @submit.prevent></form>
<!-- 链式调用修饰符 -->
<button @click.stop.prevent="doThis"></button>
<!-- 按键用于 keyAlias 修饰符-->
<input @keyup.enter="onEnter" />
<!-- 点击事件将最多触发一次 -->
<button v-on:click.once="doThis"></button>
<!-- 对象语法  当使用对象语法时,不支持任何修饰符 -->
<button v-on="{ mousedown: doThis, mouseup: doThat }"></button>

当用于普通元素,只监听原生 DOM 事件。当用于自定义元素组件,则监听子组件触发的自定义事件。

v-on指令官网介绍

按键修饰符

<!-- DOM的onkeyup 仅在键盘为enter时调用submit方法 -->
<input @keyup.enter="submit" />
<!-- 仅会在 $event.key 为 'PageDown' 时调用事件处理  按键名需转换kebab-case形式 -->
<input @keyup.page-down="onPageDown" />

vue为一些常用按键提供了别名:

按键介绍
.enterenter回车键
.tab键盘tab键
.delete键盘delete及backspace均会触发
.esc键盘Esc退出按键
.space键盘空格按键
.up键盘上箭头
.down键盘下箭头
.left键盘左箭头
.right键盘右箭头

系统按键修饰符:

  • .ctrl
  • .alt
  • .shift
  • .meta

在 Mac 键盘上,meta 是 Command 键 (⌘)。
在 Windows 键盘上,meta 键是 Windows 键 (⊞)。
在 Sun 微机系统键盘上,meta 是钻石键 (◆)。
在某些键盘上,特别是 MIT 和 Lisp 机器的键盘及其后代版本的键盘,如 Knight 键盘,space-cadet 键盘,meta 都被标记为“META”。
在 Symbolics 键盘上,meta 也被标识为“META”或“Meta”。

.exact 修饰符允许控制触发一个事件所需的确定组合的系统按键修饰符。

<!-- Alt + Enter,按住alt键时松开enter键触发 -->
<input @keyup.alt.enter="submit" /><!-- Ctrl + 点击  按住ctrl键执行鼠标点击事件触发; -->
<!-- 若按住ctrl及shift键点击也会触发,只要ctrl键被按住的情况均会触发,不管同时是否触发多个按键 -->
<!-- 若需限制仅按住ctrl触发,需使用.exact修饰符 -->
<div @click.ctrl="submit">Do something</div>
!-- 仅当按下 Ctrl 且未按任何其他键时才会触发 -->
<div @click.ctrl.exact="submit">Do something</div><!-- 按住ctrl键不松开的同时再松开其他按键时触发,仅松开ctrl键不会触发 -->
<div @keyup.ctrl="submit">Do something</div><!-- 仅当没有按下任何系统按键时触发 -->
<button @click.exact="onClick">A</button>

5.3、DOM事件—常用事件介绍

鼠标事件

属性描述
onclick当用户点击某个对象时调用的事件句柄。
oncontextmenu在用户点击鼠标右键打开上下文菜单时触发
ondblclick当用户双击某个对象时调用的事件句柄。
onmousedown鼠标按钮被按下
onmouseenter当鼠标指针移动到元素上时触发
onmouseleave当鼠标指针移出元素时触发
onmousemove鼠标被移动。
onmouseover鼠标移到某元素之上
onmouseout鼠标从某元素移开
onmouseup鼠标按键被松开

键盘事件

属性描述
onkeydown某个键盘按键被按下
onkeypress某个键盘按键被按下并松开
onkeyup某个键盘按键被松开

表单事件

属性描述
onblur元素失去焦点时触发
onchange该事件在表单元素的内容改变时触发( , , , 和 )
onfocus元素获取焦点时触发
onfocusin元素即将获取焦点时触发
onfocusout元素即将失去焦点时触发
oninput元素获取用户输入时触发
onreset表单重置时触发
onsearch用户向搜索域输入文本时触发 ( <input=“search”>)
onselect用户选取文本时触发 ( 和 )
onsubmit表单提交时触发

更多事件介绍

6、表单输入绑定v-model指令

6.1、v-model的使用方法

在这里插入图片描述
对于单选按钮,复选框和选择器选项,v-model 绑定的值通常是静态的字符串

//vue3 index.vue
<script setup>
import { ref  } from 'vue';
const text = ref('123');
const textArea = ref('多行输入框');
const checkedNames = ref(['write']);
const radioVal = ref('man');
const selectVal = ref('1');
const selectVal2 = ref(['1','2']);
const selectVa3 = ref();const selectData = ref([{text:'一年级',value:'1'},{text:'二年级',value:'2'},{text:'三年级',value:'3'},{text:'四年级',value:'4'},
])
</script>
<template>
<div class='index-main'><input v-model="text" type="text" placeholder="请输入内容" /><div>input输入内容:{{text}}</div><textarea v-model="textArea" placeholder="请输入内容"></textarea><div>textarea输入内容:{{textArea}}</div><label><input v-model="checkedNames" type="checkbox" value="read" />读书</label><label><input v-model="checkedNames" type="checkbox" value="write" />写字</label><div>checkbox多选选中值:{{checkedNames}}</div><input v-model="radioVal" id="first" type="radio" value="man" /><label for="first"></label><input v-model="radioVal" id="second" type="radio" value="woman" /><label for="second"></label><div>radio单选选中值:{{radioVal}}</div><select v-model="selectVal"><option value="1">一年级</option><option value="2">二年级</option><option value="3">三年级</option><option value="4">四年级</option></select><div>select选中值:{{selectVal}}</div><select v-model="selectVal2" multiple><option value="1">一年级</option><option value="2">二年级</option><option value="3">三年级</option><option value="4">四年级</option></select><div>select选中值:{{selectVal2}}</div><select v-model="selectVal3"><option v-for="(item,index) in selectData" :value="item.text" :key="index">{{item.text}}</option></select>
</div>
</template>

在这里插入图片描述

多选时定义的类型不是数组,选中后v-model绑定的类型为布尔类型( true ),而非checkbox的value值;
当定义类型为数组时,选中后v-model绑定值为value值

//vue3 index.vue
<script setup>
import { ref  } from 'vue';
const checkboxVal = ref();
const checkboxArr = ref([]);
</script>
<template>
<div class='index-main'><label style="display: block;"><input v-model="checkboxVal" type="checkbox" value="text" /><span>选中值:{{checkboxVal}}</span></label><label><input v-model="checkboxArr" type="checkbox" value="textArr" /><span>选中值:{{checkboxArr}}</span></label>
</div>
<template>

自定义绑定值

<!-- 选中值:yes,非选中值:no -->
<label style="display: block;"><input v-model="checkboxVal" type="checkbox" true-value="yes" false-value="no" /><span>选中值:{{checkboxVal}}</span>
</label>

true-value 和 false-value 是 Vue 特有的 attributes,仅支持和 v-model 配套使用

//vue3 index.vue
<script setup>
import { ref  } from 'vue';
const checkboxVal = ref();
const trueVal = ref('已选中');
const falseVal = ref('未选中'); 
</script>
<template>
<div class='index-main'><label style="display: block;"><input v-model="checkboxVal" type="checkbox" :true-value="trueVal" :false-value="falseVal" /><span>选中值:{{checkboxVal}}</span></label>
</div>
<template>

非字符串类型绑定

//vue3 index.vue
<script setup>
import { ref  } from 'vue';
const selectVal = ref();
const selectData=[{title:'HTML',value:1},{title:'Vue3',value:2},{title:'JavaScript',value:3}
]
</script>
<template>
<div class='index-main'><select v-model="selectVal"><option v-for="(item,index) in selectData" :value="item">{{item.title}}</option></select><div>选中值:{{selectVal}}</div><!-- selectVal格式:{ "title": "HTML", "value": 1 } -->
</div>
<template>

6.2、v-model修饰符

  • .lazy——取代 input 监听 change 事件(默认在input输入时就触发v-model的值变化,加上lazy修饰符会在change时触发)
  • .number——输入字符串转为有效的数字;number 修饰符会在输入框有 type=“number” 时自动启用(只能支持简单的数字限制)
  • .trim——输入首尾空格过滤
//vue3 index.vue
<script setup>
import { ref  } from 'vue';
const age = ref();
const carNo = ref();
/*正整数输入限制*/
function numChange(e){if( e<0 ){this.$nextTick(() => {age.value=0;})}
}
/*提交时的正则验证*/
function submitHandle(){//车牌号正则  var reg6 = /^[京津沪渝冀豫云辽黑湘皖鲁新苏浙赣鄂桂甘晋蒙陕吉闽贵粤青藏川宁琼使领A-Z]{1}[A-Z]{1}[A-Z0-9]{4}[A-Z0-9挂学警港澳]{1}$/;if( !reg6.test( carNo.value ) ){console.log('车牌号输入格式不正确');return}
}
</script>
<template>
<div class='index-main'><input v-model.number="age" @input="numChange" /><input v-model="carNo" /><button @click="submitHandle">提交</button>
</div>
</template>

7、内置指令汇总

指令是带有 v- 前缀的特殊 attribute。Vue 提供了许多内置指令,包括上面我们所介绍的 v-bind 和 v-html。

指令期望绑定值类型介绍
v-textstring更新元素的文本内容
v-htmlstring更新元素的 innerHTML
v-showany基于表达式值的真假性,来改变元素的可见性;v-show 通过设置内联样式的 display CSS 属性来工作,当元素可见时将使用初始 display 值。当条件改变时,也会触发过渡效果
v-ifany基于表达式值的真假性,来条件性地渲染元素或者模板片段。此指令会触发组件的销毁与重建,false时该内容不会被渲染;可用template包含文本或条件块;v-if优先级》v-for
v-else无需传入表达式一般配合v-if或v-else-if链式调用
v-else-ifany表示 v-if 的“else if 块”。可以进行链式调用
v-forArray, Object,number, string , Iterable基于原始数据多次渲染元素或模板块;指令值必须使用特殊语法 alias in expression 为正在迭代的元素提供一个别名
v-onfunction,inline statement,object给元素绑定事件监听器;缩写@
v-bindany(带参数),object(不带参数)动态的绑定一个或多个 attribute,也可以是组件的 prop。缩写:冒号或者. 当时用.prop修饰符
v-model随表单类型在表单控件或者组件上创建双向绑定
v-slot可放置在函数参数位置的 JavaScript 表达式缩写# 提供具名插槽或需要接收 prop 的插槽
v-pre跳过这个元素和它的子元素的编译过程。可以用来显示原始 Mustache 标签。跳过大量没有指令的节点会加快编译
v-cloak这个指令保持在元素上直到关联实例结束编译。和 CSS 规则如 [v-cloak] { display: none } 一起用时,这个指令可以隐藏未编译的 Mustache 标签直到实例准备完毕。
v-once只渲染元素和组件一次。随后的重新渲染,元素/组件及其所有的子节点将被视为静态内容并跳过。这可以用于优化更新性能

7.1、v-clock

当使用直接在 DOM 中书写的模板时,可能会出现一种叫做“未编译模板闪现”的情况:用户可能先看到的是还没编译完成的双大括号标签,直到挂载的组件将它们替换为实际渲染的内容。
v-cloak 会保留在所绑定的元素上,直到相关组件实例被挂载后才移除。

//vue2 index.html
<html>
<head>
<script src="https://cdn.jsdelivr.net/npm/vue@2"></script>
<style>
[v-cloak] {display: none;
}
</style>
</head>
<body><!-- 直到编译完成前,<div> 将不可见 --><div v-cloak id='app'><component-a></component-a></div><script>/*组件注册*/Vue.component('component-a', {template: `<div @click="changeHandle">{{msg}}</div>`,data: function(){return {msg:'我是局部子组件'}},methods:{changeHandle(){console.log('子组件点击事件');},}})/*创建vue实例*/new Vue({el: '#app',data(){return {count:0}},mounted(){console.log('mounted生命周期');},methods:{/*方法*/}})</script>
</body>
</html>

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

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

相关文章

C语言之通讯录的实现(静态版,动态版,文件版)

个人主页&#xff08;找往期文章包括但不限于本期文章中不懂的知识点&#xff09;&#xff1a; 我要学编程(ಥ_ಥ)-CSDN博客 目录 静态通讯录的实现逻辑 test.c&#xff1a;通讯录的逻辑实现 Contact.h&#xff1a;函数的声明与头文件的包含 Contact.c&#xff1a;函数的…

MySQL数据库实现增删改查基础操作

准备工作 安装mysql8.0 (安装时一定要记住用户名和密码)安装数据库可视化视图工具Navicat 请注意⚠️⚠️⚠️⚠️ a. 编程类所有软件不要安装在中文目录下 b. Navicat破解版下载安装教程&#xff1a;&#xff08;由于文章审核提示版权问题&#xff0c;链接不方便给出&#xff…

Spring Web MVC入门(3)

学习Spring MVC 请求 传递JSON数据 JSON概念 JSON: JavaScript Object Natation JSON是一种轻量的数据交互格式, 采用完全独立于编程语言的文本格式来存储和标识数据. 简单来说, JSON是一种数据格式, 有自己的格式和语法, 使用文本来表示对象或数组的信息, 因此JSON的本质…

C++——类和对象(3)

目录 1. 拷贝构造 1.1 概念 1.2 特性 ​编辑 2. 赋值重载 和 运算符重载 2.1 运算符重载 2.2 赋值重载 此篇文章讲解六个默认成员函数中的 拷贝构造和赋值重载 。 1. 拷贝构造 1.1 概念 拷贝构造&#xff1a; 在创建对象的时候用已经创建好的对象去初始化一个新对象&am…

C# 打开文件对话框(OpenFileDialog)

OpenFileDialog&#xff1a;可以打开指定后缀名的文件&#xff0c;既能单个打开文件也能批量打开文件 /// <summary>/// 批量打开文档/// 引用&#xff1a;System.Window.Fomrs.OpenFileDialog/// </summary>public void OpenFile(){OpenFileDialog dialog new Op…

操作系统(OS)

文章目录 前言一、操作系统是什么&#xff1f;二、用户对资源的访问三、操作系统是怎么做到管理的&#xff1f; 前言 任何计算机系统都包含一个基本的程序集合&#xff0c;称为操作系统(OS)。冯诺依曼体系结构中的硬件单元提供的功能&#xff0c;这些硬件由操作系统来控制与管…

整数和浮点数在内存中存储及题目

一、整数在内存中存储 整数的2进制表⽰⽅法有三种&#xff0c;即原码、反码和补码。三种表⽰⽅法均有符号位和数值位两部分&#xff0c;符号位都是⽤0表⽰“正”&#xff0c;⽤1表⽰“负”&#xff0c;⽽数值位最⾼位的⼀位是被当做符号位&#xff0c;剩余的都是数值位 正整数…

UglifyJS 压缩工具

要使用 UglifyJS 进行 JavaScript 代码的压缩和混淆&#xff0c;你可以按照以下步骤进行&#xff1a; 安装 Node.js&#xff1a; 首先确保你的计算机上安装了 Node.js。如果没有安装&#xff0c;你可以从 Node.js 官方网站 下载并安装。 安装 UglifyJS&#xff1a; 在安装 Nod…

2024腾讯云免费服务器2核8G配置申请流程,亲测有效

腾讯云免费服务器申请入口 https://curl.qcloud.com/FJhqoVDP 免费服务器可选轻量应用服务器和云服务器CVM&#xff0c;轻量配置可选2核2G3M、2核8G7M和4核8G12M&#xff0c;CVM云服务器可选2核2G3M和2核4G3M配置&#xff0c;腾讯云服务器网txyfwq.com分享2024年最新腾讯云免费…

C++for语句(2)

11.乘方计算 给出一个整数a和一个正整数n&#xff08;-1000000<a<1000000,1<n<100000&#xff09;&#xff0c;求乘方&#xff0c;即乘方的结果。最终结果的绝对值不超过1000000。 输入 一行&#xff0c;包含两个整数a和n&#xff08;-1000000<a<1000000,1…

第四十四周:文献阅读 + SG滤波+基于LSTM的编码器-解码器

目录 摘要 Abstract 文献阅读&#xff1a;基于集成深度神经网络的大规模水质预测 现有问题 提出方法 方法论 Savitsky-Golay过滤器 SE-LSTM&#xff08;基于LSTM的编码器-解码器神经网络&#xff09; 研究实验 数据集 实验设置 评估指标 基准模型 实验结果 发展…

搜维尔科技:使用SenseGlove Nova手套操纵其“CAVE”投影室中的虚拟对象

创造了一种基于 PC 的创新型多边沉浸式环境&#xff0c;让参与者完全被虚拟图像和声音包围。 需要解决的挑战&#xff1a; 传统的 VR 系统往往缺乏真实的触摸反馈&#xff0c;限制了用户的沉浸感。AVR Japan 旨在通过将触觉技术融入到他们的 CAVE 系统中来应对这一挑战&#x…

操作系统(AndroidIOS)图像绘图的基本原理

屏幕显示图像的过程 我们知道&#xff0c;屏幕是由一个个物理显示单元组成&#xff0c;每一个单元我们可以称之为一个物理像素点&#xff0c;而每一个像素点可以发出多种颜色。 而图像&#xff0c;就是在不同的物理像素点上显示不同的颜色构成的。 像素点的颜色 像素的颜色是…

HTML静态网页成品作业(HTML+CSS)——游戏战地介绍设计制作(4个页面)

&#x1f389;不定期分享源码&#xff0c;关注不丢失哦 文章目录 一、作品介绍二、作品演示三、代码目录四、网站代码HTML部分代码 五、源码获取 一、作品介绍 &#x1f3f7;️本套采用HTMLCSS&#xff0c;未使用Javacsript代码&#xff0c;共有4个页面。 二、作品演示 三、代…

3.4 bp,si,di寄存器,寻址方式,寄存器总结

汇编语言 1. [bxidata] 我们可以用[bx]来指明一个内存单元我们也可以用[bxidata]来表示一个内存单元&#xff0c;它的偏移地址为bx中的数值加上idata mount c d:masm c: debug r d 2000:1000 e 2000:1000 12 34 56 78 a mov ax,2000 mov ds,ax mov bx,1000 mov ax,[bx] mov c…

C++之deque与vector、list对比分析

一.deque讲解 对于vector和list&#xff0c;前一个是顺序表&#xff0c;后一个是带头双向循环链表&#xff0c;前面我们已经实现过&#xff0c;这里就不再讲解了&#xff0c;直接上deque了。 deque&#xff1a;双端队列 常见接口大家可以查看下面链接&#xff1a; deque - …

Redis - String 字符串

前言 下表中包含本博客提到的所有命令 字符串类型是 Redis 最基础的数据类型&#xff0c;关于字符串需要特别注意&#xff1a; 1&#xff09;⾸先 Redis 中所有的键&#xff08;key&#xff09;的类型都是字符串类型&#xff0c;⽽且其他⼏种数据结构也都是在字符串类似基础上…

Figure 01掀起了具身智能的崭新篇章

在人工智能的发展历程中&#xff0c;OpenAI始终扮演着创新的先锋角色。最近&#xff0c;他们与Figure公司的合作成果尤为引人注目&#xff0c;这一合作将多模态大模型技术成功应用于Figure 01机器人的开发中&#xff0c;为人类与机器的互动开辟了全新的时代。该机器人不仅能够与…

Matlab|【免费】基于半不变量的概率潮流计算

目录 主要内容 部分代码 结果一览 下载链接 主要内容 该程序主要内容是基于半不变量法的概率潮流&#xff0c;包含蒙特卡洛模拟法、半不变量法&#xff0b;Gram-Charlier级数展开以及半不变量法Cornish-Fisher级数展开三种方法以及效果对比&#xff0c;模型考虑了…

Python 查找并高亮PDF中的指定文本

在处理大量PDF文档时&#xff0c;有时我们需要快速找到特定的文本信息。本文将提供以下三个Python示例来帮助你在PDF文件中快速查找并高亮指定的文本。 查找并高亮PDF中所有的指定文本查找并高亮PDF某个区域内的指定文本使用正则表达式搜索指定文本并高亮 本文将用到国产第三方…