学学vue-1

news/2024/9/19 4:57:56/ 标签: vue.js, html5, css, chrome, css3

vue

0 安装

  • node.js,以及cnpm(npm超时或者被屏蔽,安装cnpm国内镜像)

    查看安装版本(是否安装成功)
    node -v
    安装成功之后也会安装npm
    npm -v
    cnpm镜像
    npm install -g cnpm --registry=http://registry.npm.taobao.org
    
  • 在vscode中装vue-offical扩展,点击install之后浏览器跳转到vscode

  • 注:需要vscode,试验创建文件是.html后缀

1 基础

1.1 创建一个简单vue实例

vscode编辑一个.html文件,然后!+Tab补全

<!DOCTYPE html>
<html lang="en">
<head><meta charset="UTF-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><title>Document</title>
</head>
<body></body>
</html>
1.2 创建vue实例 初始化渲染
  • 1,准备容器:div+容器

  • 2,引包:官网引包(生产和开发版本有区别)(vue2(停止维护)v3(默认))

    • 测试的需要警告的是否使用开发版本

      <script src="https://cdn.jsdelivr.net/npm/vue@2.7.16/dist/vue.js"></script>
      
    • 最终上线不需要警告等使用生产的版本上线

  • 3,创建实例:new Vue()

  • 4。添加配置项 => 完成渲染:

    • el:指定挂载节点,选择器指定控制那个盒子
    • data:给指定的盒子提供数据

<!DOCTYPE html>
<html lang="en">
<head><meta charset="UTF-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><title>Document</title>
</head>
<body><!-- 创建vue实例 初始化渲染1,准备容器2,引包3,创建实例4。添加配置项 => 完成渲染 -->
<div class="box2"></div>
<div class="box"></div><div id="app">
<!-- 用于编写未来的代码逻辑 --><h1>{{ msg }}</h1><a href="#">{{ count }}</a>
</div><!-- 引入开发版本的包 - 包含完整的注释和警告 -->
<script src="https://cdn.jsdelivr.net/npm/vue@2.7.16/dist/vue.js"></script><script>// 一旦引入vuejs核心包,在全局环境就有了vue构造函数const app = new Vue({//通过el配置选择器,指定vue是哪个盒子el: '#app',//通过data提供渲染的数据data: {msg: 'hello 测试数据',count: 200}})
</script></body>
</html>
1.3 插值表达式 {{}}

插值表达式是Vue的一种模板语法

作用:利用表达式进行插值,表达式可以是求值代码js引擎会将其计算出结果

语法{{ 表达式 }}

注意:使用的数据必须存在、支持表达式不能使用判断关键字、不能在属性中使用插值

    <div class="box"><p>{{ name }}</p><p>{{ name.toUpperCase() }}</p><p>{{ name + 'hello'}}</p><p>{{ age >= 18 ? 'y' : 'n'}}</p></div><script>const box = new Vue({el: '#box',data: {name: 'tony',age: 18}})</script>
1.4 Vue响应式特性

什么是响应式??

  • 响应式:数据修改,视图自动更新(F12控制台可以直接修改,视图可以直接变化,以后可以通过信号例如,按钮、提交表单等进行修改数据,但是底层原理就是相同的)
    在这里插入图片描述

数据—>修改数据—>vue监听到数据修改—>自动更新视图/Dom操作—>视图界面

聚焦于数据—>数据驱动视图,使用Vue开发只关注业务核心逻辑,根据业务修改数据即可

如何修改或者访问数据???

data数据最终会被添加到实例上

  1. 访问数据:“实例.属性名”
  2. 修改数据:“实例.属性名” = “值”
1.5 开发者工具

chrome的工具Vue.js Devtools_6.6.3_Chrome插件下载_极简插件 (zzzmh.cn)。下载之后在浏览器插件中打开开发者模式,然后拖拽进去这个插件,然后在插件详情中打开允许访问浏览器地址(在edge中安装叫做允许访问URL)然后就设置好了在启动vue程序之后f12查看网页元素最后可以看到一个vue的选项卡,经常使用可以放到前面。

在这里插入图片描述

Root:代表当前渲染的根实例(可以通过下列的数据修改直接更新数据,视图会实时更新)
在这里插入图片描述

<div id="box2">{{msg}}
</div>
<script>const box2 = new Vue({el: '#box2',data: {msg: 'hello world',count: 100}})
</script>
1.6 Vue指令

Vue指令会根据不同的指令,针对标签实现不同的功能,指令带有v-前缀的特殊标签属性

vue指令标签属性解释
v-html动态解析标签将div不识别的标签置入网页当中变成网页标签
v-show控制元素显示隐藏(频繁切换使用)v-show=‘'表达式‘’,true显示,false隐藏
v-if控制元素显示隐藏(条件渲染使用)与show不同,show可以在网页元素看到,if满足条件才渲染其余情况不显示
v-else控制元素显示隐藏和v-if相反,同时v-if/v-else显示一个
v-else-if条件判断语句和v-if/v-else一起组成switch case语句
v-on注册事件=监听条件+提供处理逻辑简写@事件名,事件触按照设置的处理方式处理
v-bind动态设置html的标签属性src、url、title等,简写:属性名,(插值表达式是不允许写在标签中的)
v-for基于数据进行循环,多次渲染元素便利数组、对象、数字v-for=“(item, index) in array”
v-for的 :key给元素添加唯一标识默认原地修改元素,修改了元素的标签元素前移,盒子不变添加后key后会全删
v-model给表单元素使用,双向数据绑定v-model = ‘变量’,在输入框和f12修改都会影响数据,快速设置表单元素内容
vue是数据驱动的数据变化,视图自动更新v-model实现视图变化数据自动更新
<div id="box3"><div v-html="msg"></div>
</div>
<script>const box3 = new Vue({el: '#box3',data: {msg: '<a href="https://baidu.com">测试网页链接(百度)</a>'}})
</script>

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

<style>css"></style>
<div id="app"><div class="box">v-show控制的盒子</div><div class="box">v-if控制的盒子</div>
</div><script>const app = new Vue({el: '#app',data: {flag: false}})
</script>

在这里插入图片描述

在这里插入图片描述

<body><script src="https://cdn.jsdelivr.net/npm/vue@2.7.16/dist/vue.js"></script><style>css">.box {margin: auto;width: 50%;border: 3px solid green;padding: 10px;text-align: center;}.btn {width: 67%;border: 3px solid yellowgreen;padding: 16px;text-align: center;}</style><div id="app"><div v-show='flag' class="box">v-show控制的盒子</div><div v-if='flag' class="box">v-if控制的盒子</div><div v-else class="box">v-else控制的盒子</div><button v-on:click="doThis" class="btn">btn</button></div><script>const app = new Vue({el: '#app',data: {flag: false}})</script></body>

v-on

    </style><div id="app"><div class="box"><button @click="fn">控制显示隐藏</button><h3 v-show="flag">自动贩卖机</h3><button @click="qs">汽水5元</button><button @click="buy(8)">桃子</button><button @click="cfe">coffee10元</button></div><p>剩余钱数:{{ money }}元</p><button @click="sub()">-</button><span>{{money}}</span><button @click="money++">+</button></div><script>const app = new Vue({el: '#app',data: {money: 100,money2: 200,flag: true},methods: {fn(){this.flag = !this.flag},qs(){app.money -= 5},cfe(){this.money -= 10},buy(price){// console.log(price)this.money -= price},sub(){this.money--}}})</script>

v-for

<ul><li v-for="(item, index) in list">{{ item }} - {{ index }}</li><li v-for="item in list">{{ item }}</li>
</ul>
<script>data: {money: 100,money2: 200,flag: true,list: ['汽水5块', '桃子8块', 'coffee10块']}
</script>

注意项

  • v-for中的:key只能是数字或者字符串类型,需要具有唯一性。推荐使用id作为key不推荐使用index,因为index 是会变化的

v-model

在这里插入图片描述

在这里插入图片描述

<div id="app">账户:<input type="text" v-model="username"> <br><br>密码:<input type="password" v-model="password"> <br><br><button @click="login()">登录</button><button @click="reset()">重置</button>
</div>

联系测试部分的完整代码

<!DOCTYPE html>
<html lang="en">
<head><meta charset="UTF-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><title>Document</title>
</head>
<body><script src="https://cdn.jsdelivr.net/npm/vue@2.7.16/dist/vue.js"></script><style>css">.box {width: 50%;border: 3px solid green;padding: 10px;text-align: center;}.btn {margin: auto;width: 67%;border: 3px solid yellowgreen;padding: 16px;text-align: center;}</style><div id="app">账户:<input type="text" v-model="username"> <br><br>密码:<input type="password" v-model="password"> <br><br><button @click="login()">登录</button><button @click="reset()">重置</button><div class="box"><button @click="fn()">控制显示隐藏</button><h3 v-show="flag">自动贩卖机</h3><button @click="qs()">汽水</button><button @click="buy(8)">桃子</button><button @click="cfe()">coffee</button><ul><li v-for="(item, index) in list">{{ item }} - {{ index }}</li><li v-for="(item, index) in booklist" :key="item.id"><span>书名:{{ item.name }}</span><span>书作者:{{ item.author }}</span><button @click="del(item.id)">delete</button><button @click="buy(20)">买了</button></li></ul></div><p>剩余钱数:{{ money }}元</p><button @click="sub()">-</button><span>{{ money }}</span><button @click="money++">+</button></div><script>const app = new Vue({el: '#app',data: {username: '',password: '',money: 100,money2: 200,flag: true,list: ['汽水5块', '桃子8块', 'coffee10块'],booklist: [{id: 1, name: '《红楼梦》', author: '曹雪芹'},{id: 2, name: '《西游记》', author: '吴承恩'},{id: 3, name: '《水浒传》', author: '施耐庵'},{id: 4, name: '《三国演义》', author: '罗贯中'}]},methods: {fn(){this.flag = !this.flag},qs(){app.money -= 5},cfe(){this.money -= 10},buy(price){// console.log(price)this.money -= price},sub(){this.money--},del(id){console.log('删除', id)this.booklist = this.booklist.filter(item => item.id !== id)},login(){console.log(this.username, this.password)},reset(){this.username = ''this.password = ''}}})</script></body>
</html>

运行效果:

在这里插入图片描述

1.x 错误汇总
div元素标签配置错误导致vue元素显示失败
<div id="box">    <!-- js -->
<div class="box"> <!-- css -->
开发者工具安装在edge上的时候不显示安装插件

插件需要安装在程序启动都的浏览器上,普通的使用浏览器和程序启动的浏览器似乎插件隔离。至少实验下来edge是这样的,插件应该是chrome的毕竟网址是chrome的,暂不了解chrome是否会出现这个问题。

可以将程序启动之后复制本地连接到解压过插件的浏览器浏览,就可以正常使用插件,程序打开的浏览器,有可能没有插件,每次在这个地方安装以后可能还需要安装

在使用@click组件过程中调用methods函数过程失效

如果失效首先看看是不是有函数名称等写错了,出现错误:methods写成method,这么写在数据元素中不会报错,但是在实际运行的过程中会导致函数失灵

如果确定没有出现错误,就可以参考网上的原生组件部分的内容,例如在click后面加上.native,变成原生组件可能会好使

参考文献

vue2官方文档:https://v2.cn.vuejs.org/v2/api
黑马程序员vue教程:https://www.bilibili.com/video/BV1HV4y1a7n4/


http://www.ppmy.cn/news/1520929.html

相关文章

安全检查报告模板

概述 本报告旨在对公司的数据、系统安全、管理制度进行自查&#xff0c;并提出相应的整改方案。通过深入分析和评估&#xff0c;发现并解决潜在的安全风险和漏洞&#xff0c;提升公司的数据和系统安全性。 自查结果 2.1数据安全自查结果 1、数据备份与恢复&#xff1a;根据…

大屏可视化:阿里 DataV 大屏怎么做自适应的?

你好&#xff0c;我是沐爸&#xff0c;欢迎点赞、收藏、评论和关注。 阿里 DataV 大屏是一款功能强大的数据可视化应用搭建工具&#xff0c;由阿里云提供&#xff0c;旨在帮助用户通过图形化的界面轻松搭建专业水准的可视化应用。 下面我们一起看下 DataV 大屏 是如何做自适应…

Android 读取 XML 文件之 SAX 解析编码模板

一、SAX 解析概述 SAX&#xff08;Simple API for XML&#xff09;是一种基于事件的 XML 解析技术&#xff0c;它一边读取 XML 文件一边解析&#xff0c;占用内存少&#xff0c;适用于大型文件 SAX 解析器会触发一系列事件&#xff0c;例如&#xff0c;开始解析元素、结束解析…

【微处理器系统原理和应用设计第六讲】片上微处理器系统系统架构

一、概念辨析 首先来厘清以下概念&#xff1a;微处理器&#xff0c;微控制器&#xff0c;单片机&#xff0c;片上微处理器系统 &#xff08;1&#xff09;微处理器&#xff1a;即MPU&#xff08;Microprocessor Unit&#xff09;&#xff0c;微处理器是一种计算机的中央处理单…

【Next】5. 全局权限管理

以下笔记来源&#xff1a;编程导航 需求 能够灵活配置每个页面所需要的用户权限&#xff0c;由全局权限管理系统自动校验和拦截路由&#xff0c;而不需要在每个页面中编写权限校验代码&#xff0c;提高开发效率。&#xff08;路由权限&#xff09;还要能够根据权限控制导航菜单…

生活因科技而美好:一键解锁PDF处理的无限可能

前言 “科技&#xff0c;是时代的诗篇&#xff0c;书写着人类不断超越自我、追求卓越的壮丽篇章。”这一理念深刻地影响着每一位开发者&#xff0c;他们不断探索、创新&#xff0c;旨在为用户带来更加便捷、高效的生活体验。正是在这样的背景下&#xff0c;一款旨在提升PDF处理…

MySQL case when【用法详解】

MySQL case when【用法详解】 语法1. 简单CASE表达式2. 搜索CASE表达式 示例示例1&#xff1a;使用简单CASE表达式示例2&#xff1a;使用搜索CASE表达式示例3&#xff1a;在UPDATE语句中使用CASE示例4&#xff1a;在DELETE语句中使用CASE注意事项 总结 在MySQL中&#xff0c;CA…

【技术解析】工厂内部导航系统:高精度定位与智能路径规划的技术实现

一、工厂内部导航系统概述 工厂内部导航系统集成了最新的GPS室内定位技术、蓝牙定位技术&#xff0c;实现了对工厂内部环境的无缝覆盖与高精度定位。无论是繁忙的生产线、错综复杂的仓库还是广阔的厂区&#xff0c;都能轻松应对。 二、工厂内部导航系统核心功能 实时定位&…

深度学习的发展历程

深度学习的起源 在机器学习中&#xff0c;我们经常使用两种方式来表示特征&#xff1a;局部表示&#xff08;Local Representation&#xff09;和分布式表示&#xff08;Distributed Representation&#xff09;。以颜色表示为例&#xff0c;见下图&#xff1a; 要学习到一种好…

电信500M宽带+AX210无线网卡测速

500M电信宽带&#xff0c;PC的Wifi模块是AX210 一、PC测速 2.4G Wifi 5G Wifi 有线网口 二、 手机端&#xff0c;小翼管家App测速 2.4G Wifi 5G Wifi 结论&#xff1a; 手机上网要快的话&#xff0c;还是要选择5G wifi

使用实例:xxl-job应用在spring cloud微服务下

1、首先下载&#xff0c;从github上下载&#xff0c;选择zip然后直接解压 https://github.com/xuxueli/xxl-job/releases 2、解压完后用idea启动。 启动这个启动类&#xff0c;然后按照路径访问 http://localhost:8080/xxl-job-admin/ 3、在你的项目里编写一个单独的微服务&a…

目标跟踪算法——ByteTrack算法原理解析

文章目录 ByteTrack1. ByteTrack算法步骤&#xff1a;2. 算法解释2.1 模型初始化2.2 模型更新算法流程2.2.1 检测结果划分&#xff0c;划分为高分和较低分段2.2.2 高分段处理手段2.2.3 最优匹配与未匹配划分2.2.4 低分框再匹配2.2.5 未确认轨迹处理2.2.6 更新状态 2.3 匈牙利匹…

ffplay源码分析(五)包缓存队列和帧缓存队列

在音视频处理流程中&#xff0c;ffplay的有两种队列&#xff0c;包缓存队列&#xff08;Packet Buffer Queue&#xff09;和帧缓存队列&#xff08;Frame Buffer Queue&#xff09;。这两个队列的存在&#xff0c;是为了适应音视频数据处理过程中的多线程架构——包括收包线程、…

图像白平衡

目录 效果 背景 什么是白平衡&#xff1f; 实现原理 将指定图色调调整为参考图色调主要流程 示例代码 效果 将图一效果转换为图二效果色调&#xff1a; 调整后&#xff0c;可实现色调对换 背景 现有两张图像&#xff0c;色调不一致&#xff0c;对于模型重建会有影响。因…

RabbitMQ 02 操作,配置信息,用户权限

01.介绍启动&#xff0c;关闭 02.环境 2.1 MQ是用Erlang语言写的 2.2 一个RabbitMQ 节点 一个 Erlang节点一个Erlang 程序 &#xff08;RabbitMQ程序&#xff09; 2.3 Erlang节点&#xff1a; 这个是Erlang节点集群状态下&#xff1a; 2.4 启动节点 2.5 查看日志信息 …

2021年大厂Java面试题(基础+框架+系统架构+分布式+实战)

Java线程的状态 进程和线程的区别&#xff0c;进程间如何通讯&#xff0c;线程间如何通讯 HashMap的数据结构是什么&#xff1f;如何实现的。和HashTable&#xff0c;ConcurrentHashMap的区别 Cookie和Session的区别 索引有什么用&#xff1f;如何建索引&#xff1f; Arra…

Elasticsearch 中,term 查询和 match 查询的区别

文章目录 前言Elasticsearch 中&#xff0c;term 查询和 match 查询的区别1. Term 查询2. Match 查询3. 总结 前言 如果您觉得有用的话&#xff0c;记得给博主点个赞&#xff0c;评论&#xff0c;收藏一键三连啊&#xff0c;写作不易啊^ _ ^。   而且听说点赞的人每天的运气都…

各种各样的正则表达式

一、校验数字的表达式 数字:^[0-9]*$ n位的数字:^\d{n}$ 至少n位的数字:^\d{n,}$ m-n位的数字:^\d{m,n}$ 零和非零开头的数字:^(0|[1-9][0-9]*)$ 非零开头的最多带两位小数的数字:^([1-9][0-9]*)+(.[0-9]{1,2})?$ 带1-2位小数的正数或负数:^(\-)?\d+(\.\d{1,2})?$ 正…

【flask】python框架flask的hello world

创建一个py文件&#xff0c;写如下内容 # save this as app.py from flask import Flaskapp Flask(__name__)app.route("/") def hello():return "Hello, World!"如下图 在此py文件路径下启动cmd&#xff0c;输入 flask run结果如下图 在浏览器中访问…

【科普】数字化和数字化转型:是什么,为什么,怎么做?

​一、什么是数字化转型&#xff1f; 近年来 “数字化”、“数字化转型”概念已经渗透到各个行业&#xff0c;成为业界的热点议题。对于什么是“数字化转型”&#xff0c;众说纷纭。 有人说“数字化转型不过就是给传统的信息化穿上皇帝的新衣”&#xff0c;也有人说“数字化转…