vue文档整理

news/2025/1/5 0:58:21/文章来源:https://www.cnblogs.com/longfeiPHP/p/18647024
一、环境配置:1. npm create vue@latest #安装vue 3.5.13
2. cd projectDir
3. npm install # 安装vue
4. npm run dev # 运行:其实运行的是src/package.json 中的vite命令,和在控制台直接输入vite的效果相同
5. npm run build # 打包 上线版本二、基础学习:
1. 选项式API:常用的,组合式API:单页项目推荐使用
2. 定义数据时要使用ref(): 触发组件的重新渲染、数据的深层响应性(要使用.value的方式取值)要使对象本身具有深层响应性要使用reactive(),只能用于集合类型,不能用于原始数据类型,建议使用ref作为响应式的主要api。
3. attributes:v-html: 在当前标签中插入html,并渲染v-bind:id(等于:id): 动态绑定id属性,支持同名简写:v-bind:id / :id 表示动态变量的名是idv-if: 更高的切换开销v-show: 更高的初始渲染开销v-for: 不建议v-if 和 v-for 同时使用,但是v-if的优先级要高于v-for,最佳实践:加一个template标签使用v-for,然后在子标签中使用v-if。推荐给v-for提供一个:key属性。v-on:click(等于@click): 监听DOM事件事件修饰符:@click.once、@click.strop(停止事件传递)@click.prevent.self 会阻止元素及其子元素的所有点击事件的默认行为,而 @click.self.prevent 则只会阻止对元素本身的点击事件的默认行为。按键修饰符:@keyup.enter:回车键抬起时执行,.enter/.tab/.delete (捕获“Delete”和“Backspace”两个按键)/.esc/.space/.up/.down/.left/.right/.ctrl/.alt/.shift/.meta<input @keyup.alt.enter="clear" /><!-- Alt + Enter -->v-model: 数据双向绑定
4. await nextTick() //等待DOM更新完成
5. 计算属性:与函数的区别是计算属性有缓存,函数则在每次重新渲染时都会执行,因此计算属性要比函数快计算发生的值不应该被更改,可以认为计算属性是其他数据的一个快照,更改快照是没有意义的,建议修改原数据,以产生新的计算属性const publishedBooks = computed(() => {return auth.value.books.length > 0 ? 'Yes' : 'No'})
6. v-bind:class(:class): 特殊增强功能,可以使用对象{active:isActive,box:true}isActive==true 渲染结果:class="active box" isActive==false 渲染结果:class="box" 
7. 生命周期:onMounted、onUpdated、onUnmounted......
8. 侦听器: watch// let count = ref({count: 0})// 侦听对象属性变化watch(()=>count.value.count, async (newCount, oldCount) => {console.log(newCount)console.log(oldCount)})或watch(count, async (newCount, oldCount) => {console.log(newCount)//newCount == oldCount console.log(oldCount)//newCount == oldCount }, {deep: true}) // deep true
9. 获取dom元素:<input ref="my_input" type="text" />/*获取dom元素、也适用获取组件*/const inputElement = useTemplateRef('my_input')onMounted(()=>{inputElement.value.focus() //聚焦
    })10. 组件:组件命名必须使用大驼峰格式,使用时在DOM 中可以使用<my-component>调用1. 子组件获取父组件中的数据可以使用attribute传值的方式,子组件通过props接收,prop接收数据的命名使用小驼峰2. 子组件调用父函数1. 父组件定义函数function logParentMessage() {console.log(messages.value)}2. 调用组件时定义事件属性<DemoComponent :data="messages" @parentMethod="logParentMessage"/><!--@parentMethod-->3. 在子组件中声明触发的事件:类似props的接收const emit = defineEmits({parentMethod:{type: Function,required: true}})4. 在子组件的事件中使用emit调用接收到的父组件中的事件属性<button @click="$emit('parentMethod')">调用父组件中的方法</button>
function callParentMethod(){emit("parentMethod","param");}<button @click="callParentMethod">调用父组件中的方法</button>3. 父组件访问子组件数据:1. 使用子组件调用父组件的函数,然后把子组件的数据作为参数传递给父组件,但是该方法是子组件的事件驱动2. ref获取:const child = ref(null) // 获取子组件对象,常量名的定义要和 组件调用时ref的值相等child.value.childMessage // childMessage为子组件的数据<DemoComponent ref="child" :data="messages" @parentMethod="logParentMessage">这是插槽内容:这是子组件</DemoComponent>// 在子组件中导出数据变量
            defineExpose({childMessage,})4. 父组件调用子组件函数:和父组件访问子组件数据类似,只要把子组件函数在defineExpose中导出即可(上面3.2)5. 插槽: slot 类型于div标签中的内容6. 单向绑定:prop接收数据时数据变量使用小驼峰,在父组件中传递是使用my-data的格式,因为dom是不区别大小写的,要形成这种良好习惯。不建议且不应该在子组件中修改父组件传递过来的数据,如果确实有需要则应该在子组件中copy一个新变量。如果传递的是对象,那么在子组件中修改对象的属性,那么父组件中对象的属性也已经改变了,但是不会通知到父组件重新渲染,在父组件中nextTick渲染中会使用子组件修改后的数据。这种情况建议不要传递数组或对象,或者通过10.2调用父组件的函数实现。7. 组件数据的双向绑定v-model示例一:父组件:const countModel = ref(10) // 定义数据<demo-component v-model="countModel"></demo-component> // 绑定v-model ***注意语法子组件:const model = defineModel()// 修改值const changeModel = () => {model.value = model.value + 1console.log('changeModel',model.value)}// 显示<div>子组件中显示v-model的值:{{ model }}</div>
        示例二:父组件:const bookTitle = ref("this is book title")<div>父组件的title:{{bookTitle}}</div><demo-component v-model:title="bookTitle" v-model="countModel"></demo-component> // 绑定v-model ***注意语法子组件:const title = defineModel('title')子组件的title:<input v-model="title" />8. 插槽:1. <slot>Submit(默认值)</slot>2. 具名插槽:子组件插槽出口:<slot name="header"></slot><slot name="footer"></slot>父组件需要定义v-slot:<childCompont><template v-slot:header><!--简写为#header--><!-- header 插槽的内容放这里 --></template></childCompont>3. 条件插槽:子组件:<div v-if="$slots.header" class="card-header"><slot name="header" /></div>9. 依赖注入:用于解决深层子组件使用较远祖先组件中部分数据的问题1. 祖先组件注入数据:import {createApp, provide, ref} from "vue"/*为后代组件提供数据*/provide("appVueData", ref("This data from App.vue"))2. 深层子组件使用数据const appVueData = inject("appVueData", "default value")3. 如果要更改祖先组件的数据,应该在祖先组件注入更新方法,然后在较远子组件中调用更新方法4. 如果禁止较远子组件更改数据,要用readonly 包装 提供的数据5. 如果使用依赖注入的方式,建议使用一个文件维护key,避免key名冲突

 

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

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

相关文章

WPS 关闭个性化推荐

WPS>打开文件位置>打开第一个文件夹>继续打开文件夹>找到ksomisc.exe工具并双击打开>高级>功能定制:关闭个性化推荐I have a dream : Sandy beach B-J-N.

搭建一个简单的UVM验证平台

转载自 https://zhuanlan.zhihu.com/p/713891980 一. UVM 方法学简介 UVM(Universal Verification Methodology),又称作通用验证方法学。它起源于OVM(Open Verification Methdology),是由Cadence,Mentor和Synopsys联合推出的主流验证方法学;UVM方法学可以帮助我们搭建…

react学习之antd

antd为 Web 应用提供了丰富的基础 UI 组件,我们还将持续探索企业级应用的最佳 UI 实践。它最初是基于 React 的组件库,但随着技术的发展,现在也提供了基于 Vue.js 的版本——Antd Vue。无论你是 React 还是 Vue 的开发者,都可以利用 Antd 来丰富你的 Web 应用界面。antd 为…

windos server添加新用户

以Windows Server 2022举例子(该机器本身是一台轻量应用服务器)。 首先添加新用户:以管理员身份登录,选择“更改账户设置”: 选择 “其他用户” --> “将其他人添加到这台电脑”: 选择 “用户”: 单击鼠标右键,选择 “新用户”: 填写要创建的新用户信息: 选…

LLM2Vec: 解锁大语言模型的隐藏能力

LLM2Vec:重新定义大语言模型在自然语言处理中的应用一种名为 ** LLM2Vec ** 的新方法正在改变我们对大语言模型(LLMs)在自然语言处理(NLP)中的使用方式。 研究人员提出了一种创新方法,将通常仅用于生成文本的大型语言模型转化为更强大的文本理解和组织工具。这项技术有可…

将未来帧中的点 pts​ 对齐到当前帧

已知当前的rt矩阵,和未来下一帧的rt矩阵和未来下一帧的5个点pts,求把pts对齐到当前帧。import numpy as npdef align_points(rt_current, rt_future, pts_future):# 计算从未来帧到当前帧的相对变换矩阵rt_relative = np.linalg.inv(rt_current) @ rt_future# 将点转换为齐次…

基于甘特图的任务调度与跟踪工具

在当今复杂的项目管理领域,工具的种类繁多且功能各异。常见的项目管理工具包括禅道、Trello、Jira、Microsoft Project等。这些工具在不同层面上助力项目管理,从任务分配到进度跟踪,从团队协作到资源管理。甘特图作为一种直观且有效的任务调度与跟踪工具,在众多项目管理工具…

2024年项目管理软件的创新突破:数据分析与自动化的结合

项目管理软件在现代企业中的作用愈加重要,尤其是在快速变化和竞争激烈的环境中。随着技术不断发展,项目管理软件也在不断创新,以适应新的工作方式和需求。2024年,项目管理软件将不仅仅是一个任务管理工具,而是一个集成化平台,支持团队协作、数据分析、资源优化等多项功能…

分布匹配蒸馏:扩散模型的单步生成优化方法研究

扩散模型在生成高质量图像领域具有显著优势,但其迭代去噪过程导致计算开销较大。分布匹配蒸馏(Distribution Matching Distillation,DMD)通过将多步扩散过程精简为单步生成器来解决这一问题。该方法结合分布匹配损失函数和对抗生成网络损失,实现从噪声图像到真实图像的高效…

服务器负载过高,硬件升级后仍无法访问网站

当您的服务器因负载过高提示需要升级,且在完成硬件升级后仍然无法访问网站时,可能是由于多个方面的问题导致的。为了确保网站能够正常运行,请按照以下步骤进行排查和优化: 1. 检查Web服务状态 首先,确保Web服务器(如Apache、Nginx)正在运行。通过SSH登录到服务器,使用命…

配置无误的网站无法访问 - 云服务器问题

当遇到配置看似正确却仍无法访问的情况时,可以从以下几个方面进行排查:检查80端口状态:首先确认服务器的80端口是否畅通。使用命令行工具如netstat或ss来查看端口监听情况,确保Nginx确实在监听80端口。如果发现端口未被占用,可能是因为Nginx服务未启动或配置文件中指定了错…

如何解决 Windows 服务器被平台强制修改密码后无法远程登录的问题?

,Windows 服务器被平台强制修改了远程桌面密码,导致无法通过远程桌面或控制台登录。以下是详细的排查和解决方案:重置为初始密码:平台通常会将服务器的远程桌面密码重置为初始密码。您可以登录到服务商的后台管理系统,查找并获取初始密码。 如果您忘记了初始密码,可以通过…