学学vue-1

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></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>.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>.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.xdnf.cn/news/1523228.html

如若内容造成侵权/违法违规/事实不符,请联系一条长河网进行投诉反馈,一经查实,立即删除!

相关文章

哈希:哈希函数 | 哈希概念 | 哈希冲突 | 闭散列 | 开散列

&#x1f308;个人主页&#xff1a; 南桥几晴秋 &#x1f308;C专栏&#xff1a; 南桥谈C &#x1f308;C语言专栏&#xff1a; C语言学习系列 &#x1f308;Linux学习专栏&#xff1a; 南桥谈Linux &#x1f308;数据结构学习专栏&#xff1a; 数据结构杂谈 &#x1f308;数据…

GEE APP——Bellingcat 雷达影像监测平台分析

简介 许多军用雷达在开启时会干扰开源卫星图像。 一个新工具可以让任何人监控这些雷达部署的时间和地点。 该资源库包含该工具的源代码。 下面是该工具使用时的截图,其中有五个标注组件,我们将逐一查看。 在此示例中,该工具以驻扎在沙特阿拉伯达曼的 MIM-104 爱国者 PAC-2 …

早上醒来嗓子干、喉咙痛、咳嗽……快用这个润养好物,给嗓子做个spa,让身体润起来~

进入秋季&#xff0c;很多人出现了眼睛干涩、大便干燥、嘴唇干裂、咽喉疼痛等症状&#xff0c;虽说这些还能够忍受&#xff0c;但它却影响了正常的饮食和休息。 秋季气候干燥&#xff0c;外界燥邪侵犯肺部&#xff0c;易伤津液&#xff0c;肺失滋润&#xff0c;清肃失司&#x…

探讨马丁格尔策略应用的3问和昂首平台的3答

问&#xff1a;为什么在使用马丁格尔策略时要如此谨慎?毕竟最大的市场波动可能根本不会发生。 答&#xff1a;让我们以一个具体的例子来说明这个问题。假设我们进行交易&#xff0c;计算出一个小于最大预期值的市场动量&#xff0c;比如说这个值为90便士。试想&#xff0c;如…

Acunetix v24.8 发布,新增功能概览

Acunetix v24.8 发布&#xff0c;新增功能概览 Acunetix v24.8 (Linux, Windows) - Web 应用程序安全测试 Acunetix | Web Application Security Scanner 请访问原文链接&#xff1a;https://sysin.org/blog/acunetix/&#xff0c;查看最新版。原创作品&#xff0c;转载请保…

Linux---文件(1)---初识文件

目录 预备知识 文件操作接口 打开文件接口 重定向与文件操作关系 "w"方式与重定向 “a”方式与追加重定向 写入文件接口 读取文件接口 系统调用接口 参数解析 预备知识 我们知道&#xff0c;创建出一个空文件也要在内存中占空间。 文件文件内容文件属性 操…

网络安全服务基础Windows--第12节-域与活动目录

工作组 在Windows环境中配置⼯作组相对简单&#xff0c;适合⼩型⽹络环境&#xff0c;如家庭或⼩型办公室⽹络。⼯作组通过简单的⽹络共享和本地管理来实现资源共享&#xff0c;⽽不依赖于中央控制的服务器。 ● 定义&#xff1a;⼯作组是⼀种对等⽹络模型&#xff0c;在这种…

总结一下windows电脑字体模糊的优化方案

问题&#xff1a;谷歌浏览器上页面显示的字体非常细&#xff0c;有点费眼睛了&#x1f47e; 解决方案&#xff1a; 方案1&#xff1a;手动调整ClearType文本。方案2&#xff1a;英伟达显卡控制面板->管理3d设置->关闭全局平滑FXAA&#xff08;如果某个软件需要使用平滑处…

【vue css】background设置背景图片不显示问题

问题&#xff1a; 如上图所示&#xff0c;添加背景图片页面没有显示 解决&#xff1a; 添加background-position: center center 即可显示 但是不知道为什么添加这个属性就可以&#xff0c;求大神解惑

出现 /www/server/mysql/bin/mysqld: Shutdown complete 的解决方法

目录 1. 基本知识1.1 查找my.cnf目录1.2 配置错误日志2. 问题所示3. 原理分析4. 解决方法1. 基本知识 主要补充一些基本知识的拓展 1.1 查找my.cnf目录 查看mysql默认读取my.cnf的目录: mysql --help|grep my.cnf 截图如下:(为了方便查看具体使用的配置文件在哪个路径)…

数据库悲观锁和乐观锁的区别

前言 MySQL本身不直接提供悲观锁&#xff08;Pessimistic Locking&#xff09;和乐观锁&#xff08;Optimistic Locking&#xff09;的实现机制&#xff0c;因为这些锁的概念通常是在应用层面通过不同的策略和工具来实现的。然而&#xff0c;我们可以利用MySQL的一些特性来模拟…

泰克THDP0100(Tektronix)thdp0100高压差分探头详情资料

泰克 THDP0100 高压差分探头具有较大的差分动态范围功能&#xff0c;为用户提供了安全的高压测量探头解决方案。每个探头都配有两种尺寸的钩尖&#xff0c;并具有超范围视觉和声音指示器&#xff0c;当用户超出探头的线性范围时会发出警告。泰克 THDP0100 探头配备 TEkVPI 接口…

实训day42(9.3)

⼀、编排分类 单机容器编排: docker-compose 容器集群编排: docker swarm、mesosmarathon、kubernetes 应⽤编排: ansible(模块&#xff0c;剧本&#xff0c;⻆⾊) ⼆、系统管理进化史 1. 传统部署时代 早期&#xff0c;各个组织是在物理服务器上运⾏应⽤程序。 由于⽆法限…

【Linux】倒计时|进度条|git|gdb的实现

目录 一、缓冲区 1.缓冲区概念&#xff1a; 2.缓冲区作用&#xff1a; 3.缓冲区刷新策略 4.缓冲区位置 5.总结 二、实现倒计时 三、进度条版本1️⃣ 四、进度条版本2️⃣ 五、使用git命令行 六、Linux调试器-gdb使用 背景 开始使用 一、缓冲区 1.缓冲区概念&…

如何提升网站权重?

提升网站权重的方法有很多&#xff0c;常规的方法包括内容优化、关键词研究、页面结构调整、提高用户体验等。但这些方法往往需要时间来见效。如果你希望在短时间内看到显著的提升&#xff0c;发外链是一个非常有效的策略。 外链是提升网站权重的有效方法&#xff0c;但需要注…

【Transformer】Tokenization

文章目录 直观理解分词方式词粒度-Word字粒度-Character子词粒度-Subword&#xff08;目前最常使用&#xff09; 词表大小的影响参考资料 直观理解 在理解Transformer或者大模型对输入进行tokenize之前&#xff0c;需要理解什么是token&#xff1f; 理工科的兄弟姐妹们应该都…

无人机+应用综合实训室解决方案

随着无人机技术的飞速发展&#xff0c;其在航拍、农业、环境监测、物流运输等多个领域展现出巨大的应用潜力。为了满足职业院校及企业对无人机应用技术型人才的培养需求&#xff0c;唯众紧跟市场趋势&#xff0c;推出了全面且详尽的《无人机应用综合实训室解决方案》。本方案旨…

TeamTalk路由服务器

路由相关信令和协议设计 enum BuddyListCmdID {// ...... 暂时省略无关信令CID_BUDDY_LIST_USERS_STATUS_REQUEST 522,CID_BUDDY_LIST_USERS_STATUS_RESPONSE 523,// ...... 暂时省略无关信令 };message IMUsersStatReq{//cmd id: 0x020arequired uint32 user_id 1;repeat…

python 正则表达式“.*”和“.*? ”的区别

“.*”和“.*? ”的区别 点号表示任意非换行符的字符&#xff0c;星号表示匹配它前面的字符0次或者任意多次。所以“.*”表示匹配一串任意长度的字符串任意次。这个时候必须在“.*”的前后加其他的符号来限定范围&#xff0c;否则得到的结果就是原来的整个字符串。 “.*? &…

“软件即仪器”——全新架构 Xtreme Vision显微测量软件平台

“软件即仪器”&#xff0c;工业测量软件较为复杂&#xff0c;涵盖了软件架构、信号处理、图像处理、数值计算、空间几何、三维建模、3D渲染、并行计算、人机交互等多种交叉软学科&#xff0c;是测量仪器系统极为重要的组成部分&#xff0c;中图仪器一直致力于自主化工业测量软…