Vue2+Vue3学习笔记

Vue基础介绍

下载并安装vue.js

v2

https://v2.cn.vuejs.org/https://v2.cn.vuejs.org/

 

v3

https://v3.cn.vuejs.org/ 会重定向到Vue.js - 渐进式 JavaScript 框架 | Vue.jsVue.js - 渐进式的 JavaScript 框架https://cn.vuejs.org/

从v2过渡到v3

在F盘创建v2+v3学习笔记

并用VSCODE打开

第一个VUE程序

 

<!DOCTYPE html>
<html lang="en"><head><meta charset="UTF-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><title>第一个Vue程序</title><!-- 引入Vue.js 直接下载并用 <script> 标签引入,Vue 会被注册为一个全局变量。 --><script src="../js/vue.js"></script>
</head><body><div id="app"></div><script>// 创建一个简单的 Vue 实例/*第一步:创建Vue实例1. 为什么要用 new Vue(),直接调用 Vue() 函数不行吗?不行,因为直接调用 Vue() 函数,不创建实例的话,会出现以下错误:Vue is a constructor and should be called with the `new` keyword2. 关于 Vue 构造函数的参数:options?options 翻译为选项。options 翻译为多个选项。Vue框架要求这个 options 参数必须是一个纯粹的 JS 对象:{}在 {} 对象中可以编写大量的 key:value 对。一个 key:value 对就是一个配置项。主要是通过 options 这个参数来给 Vue 实例指定多个配置项。3. 关于 template 配置项:template 翻译为:模板。template 配置项用来指定什么?用来指定模板语句,模板语句是一个字符串形式的。什么是模板语句? 模板语句里可以有{{}}Vue 框架自己制定了一些具有特殊含义的特殊符号。Vue 的模板语句是 Vue 框架自己搞的一套语法规则。我们写 Vue 模板语句的时候,不能乱写,要遵守 Vue 框架的模板语法规则。模板语句可以是一个纯粹的 HTML 代码,也可以是 Vue 中的特殊规则。也可以是 HTML 代码 + Vue 的特殊规则。*/var app = new Vue({template: '<h1>hhhh</h1>'})//  第二步:$mount方法 将vue实例 挂载 到指定的元素上app.$mount('#app')</script>
</body></html>

 直接点的写法

<!DOCTYPE html>
<html lang="en"><head><meta charset="UTF-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><title>第一个Vue程序</title><!-- 引入Vue.js 直接下载并用 <script> 标签引入,Vue 会被注册为一个全局变量。 --><script src="../js/vue.js"></script>
</head><body><div id="app">{{message}}</div><script>var app = new Vue({el:'#app',data:{message:'Hello Vue'}    })</script>
</body></html>

第二个Vue程序

<!DOCTYPE html>
<html lang="en"><head><meta charset="UTF-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><title>Document</title><script src="../js/vue.js"></script>
</head><body><!-- 指定挂载位置 --><div id="app"></div><!-- Vue程序 --><script>/*关于template配置项:1. template后面指定的是模板结构,但是模板结构的行为只有留一个替补位。2. 只要data中的数据发生变化,模板中的{{}}一定会重新赋值。(只要data变,template就会重新解析,重新渲染)3. 使用template配置项目,指定挂载单位的元素会被替换,且template中的内容只能有一个根元素。*/new Vue({// 传统的// template: '<h1>{{msg}}</h1><h1>动力节点老杜</h1>',template: `<div><h1>{{msg}}</h1><h1>{{name}}</h1></div>`,data: {msg: 'Hello Vue!!',name: '动力节点老杜!!'}}).$mount("#app")</script>
</body></html>

第三个Vue程序

<!DOCTYPE html>
<html lang="en">
<head><meta charset="UTF-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><title>Document</title><script src="../../js/vue.js"></script>
</head>
<body><div id="app"><h1>{{msg}}</h1></div><script>/*不适用template,效果是一样的*/var app=new Vue({el:  '#app',data:{msg:'Hello Vue!'},})</script></body>
</html>

解决控制台提示问题

就是说你在开发模式下

第一种方式引入生产环境的js即可

第二种方式使用Vue全局配置

偶尔会失效

Vue Devtools插件安装

可视化地查看 Vue 应用内部的结构

然后把版本7的插件关闭或者移除

简单使用Vue devtools

暗的时候,说明前端不是Vue写的   亮的时候就是Vue写的

F12可以看到多了Vue选项卡

一个app下可能有多个组件  Root是根组件   注意有时候数据含有中文时候 第三个数据有可能显示不出来,可能插件对于中文不是很友好

Vue实例和容器的关系:1V1

容器,指的是 HTML 页面中,Vue 要控制的那个元素

上面的例子中

<div id="app"></div>

这里的 <div id="app"></div> 就是Vue实例的容器
Vue 程序启动后,会接管这个 div,然后在这个范围内操作页面、渲染数据、绑定事件。 

代码示例

<!DOCTYPE html>
<html lang="en"><head><meta charset="UTF-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><title>Vue实例和容器关系:一夫一妻制</title><script src="../js/vue.js"></script>
</head><body><div id="app"></div><div id="app2"></div><script>var app = new Vue({el: '#app',data: {msg: 'Hello Vue!'},template: `<div><h1>{{msg}}</h1></div>`})var app2 = new Vue({el: '#app2',data: {msg: 'Hello Vue!'},template: `<div><h1>{{msg}}</h1></div>`})</script></body></html>

Vue核心技术

模板语法之插值表达式

<!DOCTYPE html>
<html lang="en"><head><meta charset="UTF-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><title>模板语法之插值语法{{}}</title><script src="../js/vue.js"></script>
</head><body><div id="app"><h1>{{ name }}</h1><h2>{{ age }}</h2></div><script>/*在 Vue 中,data里的每一个属性(比如 name 和 age)都会被单独跟踪(响应式)。当你修改 age 时,Vue 只会重新渲染那些用了 {{age}} 的地方的DOM节点。用到 {{name}} 的部分,因为 name 没有变化,Vue 就不会重新渲染这部分 DOM。*/var app = new Vue({el: '#app',data: {name: '张三',age: 18}})</script>
</body></html>

模板语法之指令 v-xxx

<!DOCTYPE html>
<html lang="en"><head><meta charset="UTF-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><title>02.模板语法之指令V-XXX</title><script src="../js/vue.js"></script>
</head><body><!--指令	功能简述v-text	设置文本内容v-html	设置 HTML 内容v-show	控制元素显示/隐藏(通过 display)v-if / v-else-if / v-else	条件判断渲染v-for	遍历数组或对象v-on	绑定事件监听,比如点击v-bind	动态绑定属性(如 src、href)v-model	双向数据绑定(表单控件)v-slot	插槽(子组件插入内容)v-pre	跳过编译,直接原样输出v-cloak	避免 Vue 未编译时闪烁v-once	只渲染一次,之后数据改变也不更新--><!-- 准备容器 --><div id="app"><!-- v-text:设置文本内容 --><h2 v-text="textMsg"></h2><!-- v-html:设置 HTML 内容 --><div v-html="htmlMsg"></div><!-- v-show:通过 display 显示/隐藏元素 --><p v-show="isShow">v-show 显示的内容</p><!-- v-if / v-else-if / v-else:条件渲染 --><div v-if="score >= 90">优秀</div><div v-else-if="score >= 60">及格</div><div v-else>不及格</div><!-- v-for:遍历列表 --><ul><li v-for="(item, index) in list" :key="index">{{ item }} &nbsp {{index}}</li></ul><!-- v-on:绑定事件 --><button v-on:click="clickMe">点击按钮</button><hr>hr是分割线<hr><br>br是换行<br><!-- v-bind:动态绑定属性 --><img v-bind:src="imgUrl" alt="图片示例" width="200"><br><!-- _self	默认值,在当前窗口/标签页打开链接	本页面跳转_blank	在新窗口/新标签页打开链接	新页面打开,不影响当前页面_parent	在父框架(iframe 父窗口)打开链接	少用,主要用于嵌套页面_top	在最顶层框架打开链接(跳出所有 iframe)	少用,跳出多层嵌套其他自定义名字(如 frameName)	打开到指定的 <iframe> 窗口	用于多窗口控制(高            级用法)--><a v-bind:href="url" target="_blank">点击跳转到百度</a><!-- v-model:表单双向绑定 --><input type="text" v-model="inputValue"><p>你输入了:{{ inputValue }}</p><!-- v-slot:插槽 (基础用法) --><child-component><template v-slot:default><p>我是插入到子组件里的内容</p></template></child-component><!-- v-pre:跳过编译 --><h1>下面的{{}}表达式不会被解析</h1><div v-pre>{{ textMsg }}</div><!-- v-cloak:防止闪现未编译的 Mustache 标签 --><div v-cloak>{{ cloakedText }}</div><!-- v-once:只渲染一次 --><h2 v-once>{{ onceText }}</h2></div><script>Vue.component('child-component', {template: '<div><slot></slot></div>'});new Vue({el: '#app',data: {textMsg: 'Hello v-text',htmlMsg: '<strong style="color: red;">Hello v-html</strong>',isShow: true,url: 'https://www.baidu.com',score: 75,list: ['苹果', '香蕉', '橘子'],imgUrl: 'https://www.gstatic.com/images/branding/googlelogo/svg/googlelogo_clr_74x24px.svg',inputValue: '',cloakedText: '这段文字被 v-cloak 控制',onceText: '只渲染一次的内容'},methods: {clickMe() {alert('按钮被点击了!');}}});</script></body></html>
v-bind说明
<!DOCTYPE html>
<html lang="en"><head><meta charset="UTF-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><title>Document</title><script src="../js/vue.js"></script>
</head><body><div id="app"><!-- v-bind 指令后面的参数属性可以随便写(语法是通过的,但是该标签里有没有该属性,是否被浏览器识别就是问题了) 页面上不会展示任何内容虽然可以随便写,但是浏览器识别不了,就没有意义--><span v-bind:xyz="msg"></span><span xyz="msg"></span></div><script>/*v-bind 指令详解1. 这个指令是干啥的?它可以让 HTML 标签的某个属性的值产生动态的效果。2. v-bind 指令的语法格式:<HTML 标签 v-bind:参数 = "表达式"></HTML 标签>3. v-bind 指令的编译原理?编译前:<HTML 标签 v-bind:参数 = "表达式"></HTML 标签>编译后:<HTML 标签 参数 = "表达式的执行结果"></HTML 标签>注意两项:第一:在编译的时候 v-bind 后面的 “参数名” 会被编译为 HTML 标签的 “属性名”第二:表达式会关联 data,当 data 发生改变之后,表达式的执行结果就会发生变化。所以,连带的就会产生动态效果。*/new Vue({el: '#app',data: {msg: 'Hello Vue!'}})</script>
</body></html>
v-model说明

        v-bind 和 v-model 的区别和联系
        1. v-bind单向绑定,v-model双向绑定
        2. v-model只能使用在
            <input>  
            <select>
            <textarea>
            components

<!DOCTYPE html>
<html lang="en"><head><meta charset="UTF-8"><meta http-equiv="X-UA-Compatible" content="IE=edge"><meta name="viewport" content="width=device-width, initial-scale=1.0"><title>v-model指令详解</title><!-- 安装 Vue --><script src="../js/vue.js"></script>
</head><body><!-- v-bind 和 v-model 的区别和联系1. v-bind单向绑定,v-model双向绑定2. v-model只能使用在<input>  <select><textarea>components--><!-- 准备一个容器 --><div id="app"><!-- v-bind 指令 --><input type="text" v-bind:value="name1"><br><!-- v-model 指令 --><input type="text" v-model:value="name2"><br><!-- v-model 指令 --><input type="text" v-model="name3"></div><!-- vue 程序 --><script>new Vue({el: '#app',data: {name1: 'zhangsan',name2: 'wangwu',name3: 'lisi'}})</script></body></html>

简述前端MVVM分层思想

<!DOCTYPE html>
<html lang="en"><head><meta charset="UTF-8"><meta http-equiv="X-UA-Compatible" content="IE=edge"><meta name="viewport" content="width=device-width, initial-scale=1.0"><title>初识MVVM分层思想</title><script src="../js/vue.js"></script>
</head><body><!-- V --><div id="app">{{message}}</div><!-- 1. MVVM 是什么?M:Model(模型/数据)V:View(视图)VM:ViewModel(视图模型),VM 是 MVVM 中的核心部分。(它起到一个核心的非常重要的作用。)MVVM 是目前前端开发领域当中非常流行的开发思想。(一种架构模式。)目前前端的大部分主流框架都实现了这个 MVVM 思想,例如 Vue、React 等。2. Vue 框架遵循 MVVM 吗?虽然没有完全遵循 MVVM 模型,但是 Vue 的设计也受到了它的启发。Vue 框架本身也是符合 MVVM 思想的。3. MVVM 模型当中倡导了 Model 和 View 进行分离,为什么要分离?假如 Model 和 View 不分离,使用最原始的原生的 JavaScript 代码写项目:如果要数据发生任意的改变,接下来我们需要编写大量繁琐的操作 DOM 元素的 JS 代码。将 Model 和 View 分离之后,出现了一个核心 VM,这个 VM 把所有的脏活累活给做了。也就是说:当 Model 发生改变之后,VM 自动去更新 View。当 View 发生改动之后,VM 自动去更新 Model。我们再也不需要编写操作 DOM 的 JS 代码了。
--><script>//vue实例VMvar app = new Vue({el: '#app',//Mdata: {message: 'Hello Vue!'}})</script>
</body></html>

Vue实例的属性

<!DOCTYPE html>
<html lang="en"><head><meta charset="UTF-8"><meta http-equiv="X-UA-Compatible" content="IE=edge"><meta name="viewport" content="width=device-width, initial-scale=1.0"><title>Vue实例的属性</title><script src="../js/vue.js"></script>
</head><body><!-- 1. 通过 Vue 实例都可以访问哪些属性?(通过 app 都可以 app.什么)Vue 实例中的属性很多,有的是以 $ 开头,有的是以 _ 开头。所有以 $ 开头的属性:可以看做是公开的属性,这些属性是供程序员使用的。所有以 _ 开头的属性:可以看做是私有的属性,这些属性是 Vue 框架底层使用的。一般我们程序员很少使用。通过 app 也可以访问 Vue 实例对象的原型对象上的属性,例如:app.$delete ...2. app指的是Vue的引用,可以是任何名字  随便自己定义,不一定要用app, vm  xxx都可以--><div id="app"><h1>{{ msg }}</h1></div><script>let dataObj = {msg: 'Hello Vue!'}const app = new Vue({el: '#app',data: dataObj})// 按说 msg 是 dataObj 对象的属性console.log('dataObj 的 msg:', dataObj.msg);// 为什么 msg 属性可以通过 vm 来访问呢?// 这是因为 Vue 框架底层使用了 “数据代理机制”// 要想搞明白数据代理机制,必须有一个基础知识点学会:Object.defineProperty()console.log('app 的 msg:', app.msg);</script></body></html>

属性访问

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

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

相关文章

2025年KBS新算法 SCI1区TOP:长颖燕麦优化算法AOO,深度解析+性能实测

目录 1.摘要2.算法原理3.结果展示4.参考文献5.文章&代码获取 1.摘要 本文提出了一种新颖的元启发式算法——长颖燕麦优化算法&#xff08;AOO&#xff09;&#xff0c;该算法灵感来自动画燕麦在环境中的自然行为。AOO模拟了长颖燕麦的三种独特行为&#xff1a;(i) 通过自然…

CentosLinux系统crontab发现执行删除命令失效解决方法

权限或安全策略限制 ​​可能场景​​&#xff1a; ​​### ​​目录权限冲突​​&#xff1a; 你的目录权限为 drwxr-xr-x&#xff08;属主 mssql&#xff09;&#xff0c;但 cron 任务以 root 执行。 ​​风险点​​&#xff1a;若目录内文件属主为 mssql 且权限为 700&…

后验概率最大化(MAP)估计算法原理以及相具体的应用实例附C++代码示例

1. MAP估计基本原理 MAP&#xff08;Maximum A Posteriori&#xff0c;最大后验概率估计&#xff09;是贝叶斯推断中的重要概念&#xff0c;它的目标是&#xff1a; 给定观测数据&#xff0c;找到使得后验概率最大的参数值。 公式化表示&#xff1a; [ θ MAP arg ⁡ max ⁡…

16、路由守卫:设置魔法结界——React 19 React Router

一、魔法结界的本质 "路由守卫是霍格沃茨城堡的隐身斗篷&#xff0c;在时空裂隙中精准控制维度跃迁&#xff01;" 魔法部交通司官员挥舞魔杖&#xff0c;React Router 的嵌套路由在空中交织成星轨矩阵。 ——基于《国际魔法联合会》第7号时空协议&#xff0c;路由守…

从车道检测项目入门open cv

从车道检测项目入门open cv 前提声明&#xff1a;非常感谢b站up主 嘉然今天吃带变&#xff0c;感谢其视频的帮助。同时希望各位大佬积积极提出宝贵的意见。&#x1f60a;&#x1f60a;&#x1f60a;(❁◡❁)(●’◡’●)╰(▽)╯ github地址&#xff1a;https://github.com/liz…

【行业特化篇3】制造业简历优化指南:技术参数与标准化流程的关键词植入艺术

写在最前 作为一个中古程序猿,我有很多自己想做的事情,比如埋头苦干手搓一个低代码数据库设计平台(目前只针对写java的朋友),比如很喜欢帮身边的朋友看看简历,讲讲面试技巧,毕竟工作这么多年,也做到过高管,有很多面人经历,意见还算有用,大家基本都能拿到想要的offe…

如何在本地部署小智服务器:从源码到全模块运行的详细步骤

小智聊天机器人本地后台服务器源码全模块部署 作者&#xff1a;林甲酸 -不是小女子也不是女汉子 是大女子 更新日期&#xff1a;2025年4月29日 &#x1f3af; 前言&#xff1a;为什么要写这篇教程&#xff1f; 上周按照虾哥小智服务器的教程去部署本地后台&#xff0c;我用的是…

github开源项目添加开源协议,使用很简单

直接在 GitHub 网页上创建 进入你的 GitHub 仓库 打开你的项目仓库页面&#xff08;如 https://github.com/用户名/仓库名&#xff09;。 点击 "Add file" → "Create new file" 在仓库主页&#xff0c;点击右上角的 "Add file" 按钮&#xff…

8.idea创建maven项目(使用Log4j日志记录框架+Log4j 介绍)

8.idea创建maven项目(使用Log4j日志记录框架Log4j 介绍) 在 IntelliJ IDEA 的 Maven 项目中引入了 Log4j&#xff0c;并配置了日志同时输出到控制台和文件。 Log4j 提供了灵活的日志配置选项&#xff0c;可以根据项目需求调整日志级别、输出目标和格式。 1. 创建 Maven 项目 …

【和春笋一起学C++】函数——C++的编程模块

目录 1. 原型句法 2. 函数分类 3. 函数参数之按值传递 4. 数组作为函数参数 在C中&#xff0c;要使用函数&#xff0c;必须要有这三个方面&#xff1a; 函数原型&#xff0c;函数原型描述了函数到编译器的接口&#xff0c;函数原型一般放在include文件中。函数原型告诉编译…

深挖Java基础之:认识Java(创立空间/先导:Java认识)

今天我要介绍的是在Java中对Java的一些基本语法的认识与他们的运用&#xff0c;以及拟举例子说明和运用场景&#xff0c;优势和劣势&#xff0c; 注&#xff1a;本篇文章是对Java的一些基本的&#xff0c;简单的代码块的一些内容&#xff0c;后续会讲解在Java中的变量类型&…

Python+Selenium+Pytest+Allure PO模式UI自动化框架

一、框架结构 allure-report&#xff1a;测试报告base&#xff1a;定位元素封装data&#xff1a;数据log&#xff1a;日志文件page&#xff1a;页面封装文件夹report&#xff1a;缓存报告testcases&#xff1a;测试用例层utils&#xff1a;工具类run.py&#xff1a;执行文件 二…

博物馆除湿控湿保卫战:M-5J1R 电解除湿科技如何重塑文物守护的未来

在卢浮宫幽深的长廊里&#xff0c;达芬奇的《蒙娜丽莎》正经历着一场看不见的战争——不是来自时间的侵蚀&#xff0c;而是空气中无形的水分子。每一件文物都在与湿度进行着无声的抗争&#xff0c;这场抗争关乎人类文明的延续。湿度&#xff0c;这个看不见的文物杀手&#xff0…

【嘉立创EDA】如何找到曲线和直线的交点,或找到弧线和直线的交点

文章路标👉 :one: 文章解决问题:two: 主题内容:three: 参考方法be end..1️⃣ 文章解决问题 操作环境:嘉立创EDA专业版 V2.2.38 本文使用嘉立创EDA,描述如何快速找到曲线和直线交点的方法,这里的曲线包括了弧线等。本文将此过程记录,以供有需要的读者参考。 2️⃣ 主题…

大语言模型能否替代心理治疗师的深度拓展研究:fou

大语言模型能否替代心理治疗师的深度拓展研究 在科技初创企业和研究领域,大型语言模型(LLMs)用于替代心理健康服务提供者的应用备受关注。但研究人员通过对主要医疗机构治疗指南的梳理回顾,并对当前 LLMs(如 gpt-4o)进行实验评估后发现,LLMs 存在对心理疾病患者表达污名…

【linux】Chrony服务器

简介 1.1 时间的重要性 由于 IT 系统中&#xff0c;准确的计时非常重要&#xff0c;有很多种原因需要准确计时&#xff1a; 在网络传输中&#xff0c;数据包括和日志需要准确的时间戳 各种应用程序中&#xff0c;如订单信息&#xff0c;交易信息等 都需要准确的时间戳 1.2 时区…

mysql查看哪些表的自增id已超过某个值

场景 想看哪些表数据比较大&#xff0c;如果用count 比较慢&#xff0c;同时表设计如果是自增&#xff0c;有没有办法一次查出自增id已超过某值的所有表呢。 方法 SELECT AUTO_INCREMENT,TABLE_NAME FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_SCHEMA 库名 AND AUTO_INCRE…

SiamMask原理详解:从SiamFC到SiamRPN++,再到多任务分支设计

SiamMask原理详解&#xff1a;从SiamFC到SiamRPN&#xff0c;再到多任务分支设计 一、引言二、SiamFC&#xff1a;目标跟踪的奠基者1. SiamFC的结构2. SiamFC的局限性 三、SiamRPN&#xff1a;引入Anchor机制的改进1. SiamRPN的创新2. SiamRPN的进一步优化 四、SiamMask&#x…

SpringBoot终极形态:AI生成带OAuth2鉴权的微服务模块(节省20人日)

在数字化转型的浪潮中,开发效率和质量是企业竞争力的关键要素。飞算 JavaAI 作为一款创新的 AI 工具,能在 Spring Boot 开发中,自动生成完整微服务模块,极大提升开发效率。下面,我们就详细介绍如何借助飞算 JavaAI,实现 Spring Boot 微服务模块的自动化生成。 飞算 JavaAI 简介…

Spring缓存注解深度实战:3大核心注解解锁高并发系统性能优化‌

引言&#xff1a;缓存——高并发系统的“性能加速器”‌ 在互联网应用中&#xff0c;数据库查询往往是性能瓶颈的核心。当每秒数千次的请求直接冲击数据库时&#xff0c;系统响应速度会急剧下降&#xff0c;甚至引发宕机风险。‌缓存技术‌应运而生&#xff0c;成为解决这一痛…