news 2026/4/29 5:59:47

vue 3

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
vue 3
一、Vue

https://v2.cn.vuejs.org/v2/cookbook/#top

1、如何学习vue

2、学习vue时遇到不会的方法,就看vue官方文档中的api
3、vue官方整理的比较好用的包

览器默认发送请求获取页签图标

shift强制刷新浏览器,可以查看这个请求的接口信息

4、vue模版解析

先有容器,再有实例

5、1个vue实例不能同时接管2个容器(不可以多容器对应1个例)

1个容器也不能对应多个实例
容器和vue实例只能一一对应

6.容器中模版,插值语法:{{内容}},内容只能为js表达式、js语句、js代码

二、组件之间实现使用 v-model 实现双向绑定(语法糖)
1、父组件传值进来,子组件输入框修改时,通过 emit 触发更新

父组件变量也同步更新 —— 双向绑定完成

在自定义组件中,可以通过v-model实现双向绑定。需要注意的是,Vue 3 中的v-model默认会绑定到modelValue属性,并监听update:modelValue事件。

父组件:

<template>

<ChildComponent v-model="title" />

<p>父组件:{{ title }}</p>

</template>

<script setup lang="ts">

import { ref } from 'vue'

import ChildComponent from './ChildComponent.vue'

const title = ref('初始标题')

</script>

子组件:

<template>

<input :value="modelValue" @input="onInput" />

</template>

<script setup lang="ts">

const props = defineProps<{

modelValue: string

}>()

const emit = defineEmits<{

(e: 'update:modelValue', value: string): void

}>()

function onInput(e: Event) {

emit('update:modelValue', (e.target as HTMLInputElement).value)

}

</script>

三、Vue 2 监听子组件自定义事件

子组件 Student.vue

<template>

<button @click="sendEvent">触发事件</button>

</template>

<script>

export default {

methods: {

sendEvent() {

// 触发自定义事件 'atguigu'并传值'张三'

this.$emit('atguigu', '张三')

}

}

}

</script>

父组件 Parent.vue

<template>

<Student ref="student" />

</template>

<script>

export default {

methods: {

getStudentName(name) {

alert('收到学生名字:' + name)

}

},

mounted() {

// 通过 $refs 拿到子组件实例,监听子组件的 'atguigu' 事件

this.$refs.student.$on('atguigu', this.getStudentName)

}

}

</script>

四、Vue3组件自定义事件,通过模板的 @事件名="回调函数" 方式监听

子组件 Child.vue

<template>

<button @click="sendEvent">点击发送事件</button>

</template>

<script setup>

import { defineEmits } from 'vue'

// 定义要发出的事件名

const emit = defineEmits(['atguigu'])

function sendEvent() {

emit('atguigu', '张三')

}

</script>

父组件 Parent.vue

<template>

<Child @atguigu="getStudentName" />

</template>

<script setup>

function getStudentName(name) {

alert('收到学生名字:' + name)

}

</script>

总结:Vue3取消了$on事件监听,改为在模板中通过@享件名绑定监听函数。

子组件使用defineEmits定义事件,并通过emit(享件名',参数)触发事件。

父组件在模板直接绑定监听函数,更简洁、清晰。

五、全局状态管理Vue3(如:Pinia)

当组件之间层级很深或是跨组件通信,可以使用状态管理工具。

// useUserStore.ts

export const useUserStore = defineStore('user', {

state: () => ({

username: '张三'

}),

actions: {

updateName(name: string) {

this.username = name

}

}

})

<!-- 子组件调用修改 -->

<script setup>

const userStore = useUserStore()

userStore.updateName('李四')

</script>

总结:适合多个组件共享全局状态(比如用户信息、主题、权限等)

六、const{proxy}=getCurrentInstance()
1、main.js入口文件

/* 引入apis 管理请求接口 */

import apis from "@/apis/apis.js"

/* 定义全局配置使用 */

app.config.globalProperties.$apis = apis

2、页面

<script setup>

import { getCurrentInstance } from 'vue'

const {proxy} = getCurrentInstance()

const handleLogin = async() => {

console.log(loginForm)

const res = await proxy.$apis.getMenu(loginForm)

console.log("res的数据为", res);

// 修改展示菜单数据

store.updateMenuList(res.menuList)

store.state.token = res.token

// 根据权限添加路由配置

store.addRoutes(router)

router.push('/home')

}

</script>

七、路由
八、new Vue({})-Vue实例data是对象
1、传统的全局 Vue 实例写法(不使用构建工具)

<html>

<head>

<meta charset="UTF-8" />

<title>传统的全局 Vue 实例写法 </title>

<!-- 引入Vue -->

<script type="text/javascript" src="../js/vue.js"></script>

</head>

<body>

</body>

<script type="text/javascript">

Vue.config.productionTip = false //阻止 vue 在启动时生成生产提示。

// data就是vm中的_data

const vm = new Vue({

el: '#root',

data: {

name: '尚硅谷',

address: '宏福科技园'

}

})

</script>

2、单文件组件(SFC)写法(*.vue)依赖构建工具(如 Vue CLI 或 Vite)来编译。

<script>

export default {

name: 'School',

data() {

return {

name: '尚硅谷atguigu',

address: '北京',

}

}

}

</script>

九、watch监听(vue2和vue3的不同写法)
1、在 Vue 2 和 Vue 3 中,watch 的功能都是监听响应式数据的变化并执行相应逻辑,但两者的写法和使用场景有所不同。

(1)vue2在 options API (选项式API)中使用:

export default { data() { return { count: 0, user: { name: 'Alice' } } }, watch: { count(newVal, oldVal) { console.log('count changed:', newVal, oldVal) }, // 监听对象要用 deep user: { handler(newVal) { console.log('user changed:', newVal) }, deep: true } } }

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/4/23 0:50:51

Java源码:道路救援与同城货运一体化平台

以下是一套基于Java技术栈的道路救援与同城货运一体化平台源码方案&#xff0c;涵盖系统架构、核心功能、技术实现与代码示例&#xff1a; 一、系统架构 采用微服务架构设计&#xff0c;基于Spring Boot 2.7 Spring Cloud Alibaba构建&#xff0c;将系统拆分为用户服务、订单…

作者头像 李华
网站建设 2026/4/22 4:43:14

谢菲尔德大学突破:印尼多步推理问答揭示AI文化理解偏见

这项由英国谢菲尔德大学计算机科学学院主导、与印尼日惹国立发展大学信息学系合作完成的研究&#xff0c;发表于2026年计算语言学会议论文集&#xff08;论文编号&#xff1a;arXiv:2602.03709v1&#xff09;&#xff0c;有兴趣深入了解的读者可以通过该编号查询完整论文。要真…

作者头像 李华
网站建设 2026/4/22 23:59:51

基于深度学习的小麦病虫害检测系统[python]-计算机毕业设计源码+LW文档

摘要&#xff1a;小麦作为全球重要的粮食作物之一&#xff0c;其产量和质量受到病虫害的严重威胁。准确、及时地检测小麦病虫害对于采取有效的防治措施、保障小麦产量至关重要。本文研究了基于深度学习的小麦病虫害检测系统&#xff0c;阐述了深度学习技术在图像识别中的应用原…

作者头像 李华
网站建设 2026/4/26 19:33:16

如何让高度近视的脚步慢一点,家长们使用了“浑身解数”

如今&#xff0c;走在校园里不难发现&#xff0c;越来越多的孩子鼻梁上架起了厚重的眼镜&#xff0c;有的镜片厚如瓶底&#xff0c;眼神里藏着与年龄不符的疲惫。儿童青少年近视率居高不下&#xff0c;高度近视的低龄化趋势&#xff0c;成了压在无数家长心头的巨石。为了拦住高…

作者头像 李华
网站建设 2026/4/27 19:10:00

创客匠人的关系经济学:AI智能体如何重构知识服务的信任基座

成都浣花溪畔的茶室里&#xff0c;45岁的心理咨询师周静结束当日咨询&#xff0c;打开“心语”AI智能体面板&#xff1a;系统标记出3位用户情绪波动异常&#xff0c;自动生成关怀提示&#xff1b;一位用户连续三日打卡“正念练习”&#xff0c;触发深度课程推荐&#xff1b;社群…

作者头像 李华
网站建设 2026/4/22 3:14:37

目标检测数据集 - 家庭可回收垃圾检测数据集下载

数据集介绍&#xff1a;家庭可回收垃圾检测数据集&#xff0c;真实场景高质量图片数据&#xff0c;涉及场景丰富&#xff0c;比如厨房果蔬残渣、餐后可回收包装、客厅饮料瓶、浴室纸质用品、儿童零食包装、照明与个护小电器等&#xff0c;且类别丰富&#xff0c;划分为 Banana、…

作者头像 李华