Vue3知识总结-1

news2024/11/20 12:23:32

前面学习一段时间的前端,但是没有进行过太多的练习,并且对于里面一些重要的知识点也没有去着重的记忆,所以打算在学习Vue3的时候,做一些笔记,方便后面翻看。这个笔记会对于学习一些做一些,而不是一个整体的部分,整个学习过程也都是跟着视频来做的。

为什么选择Vue

Vue是什么

渐进式的JS框架,易用易学,性能出色,使用场景丰富

为什么学习

  1. 最火的

  2. 企业中要求

  3. 可以提升开发体验

  4. ……

Vue简介

提供了一套声明式,组件化的编程模型

渐进式框架

Vue是一个框架也是生态,覆盖了很多前端开发请求。Vue设计非常注重灵活性和“可以被逐步集成”这个特点。可以用不同的方式使用Vue:

  • 无需构建,渐进式增强静态的HTML

  • 任何页面作为Web Components嵌入

  • 单页应用SPA

  • 全栈/服务端渲染(SSR)

  • 开发桌面端等

Vue版本

目前,开发中有2和3,老项目一般是Vue2,新项目是Vue3

Vue API风格

有两种书写风格:选项API和组合式API

选项式API

 
<script>
export default {
  data(){
    return {
      count: 0
    }
  },
  methods:{
    increment() {
      this.count += 1;
    }
  },
  mounted() {
    console.log(`选项式AIP: The initial count is &{this.count}.`)
  }
}
</script>
<template>
  <button @click="increment">选项式AIP: Count is : {{count}}</button>/
</template>

组合式API

 
<script setup >
import {ref, onMounted} from 'vue'
const count = ref(0)
function increment(){
  count.value++
}
onMounted(() =>{
  console.log(`组合式AIP: The initial count is &{this.count}.`)
})
</script>

<template>
  <button @click="increment">组合式API:Count is : {{count}}</button>/
</template>

Vue开发前准备

首先需要安装Node.js,然后配置一下就好了。

下面的是运行整个项目

 npm init vue@latest  创建项目
 npm install / cnpm install 安装依赖目录文件夹
 npm run dev   运行整个项目

Vue项目目录结构

模版语法

文本差值

最基本的数据绑定形式是文本差值,使用的是“Mustache”语法(及大括号)

 
<template>
  <h3> 模版语法</h3>
  <p>{{msg}}</p>
</template>

<script>
export default {
  data(){
    return{
      msg:"神奇的语法"
    }

  }
}
</script>

使用js表达式

每个绑定仅仅支持单一表达式,也就是一段能够被求值的代码,

 
<template>
  <h3> 模版语法</h3>
  <p>{{msg}}</p>
  <p>{{number + 1}}</p>
  <p>{{ok}}</p>
  <p>{{ok ? 'yes': 'no'}}</p>
  <p>{{msg.split("").reverse().join()}}</p>
  <!--  <p>{{var a = 1}}/p>-->
  <!--  <p>{{if (number > 10) {return 0}}}</p>/-->
</template>

<script>
export default {
  data(){
    return{
      msg:"神奇的语法",
      number: 122,
      ok:true,
    }

  }
}
</script>

原始HTML

双大括号将会将数据差值为纯文本,而不是HTML,如果想插入HTML,需要使用v-html指令

 
<template>
  <p v-html="rawHtml"></p>
</template>

<script>
export default {
  data(){
    return{
      rawHtml:"<a href='www.baidu.com'>百度</a>"
    }

  }
}
</script>

属性绑定

 

<template>
  <div v-bind:id="msg" v-bind:class="dynamicClass" >测试</div>
</template>

<script>
export default {
  data(){
    return{
      msg:"active",
      dynamicClass: "appclass",
    }
  }
}

</script>
<style>
.appclass{
  color:red;
  font-weight: bold;
  font_size: 30px;
}
</style>

v-bind指令标识Vue将元素id attribute与dynamicId组件属性保持一致,如果绑定的值是null或者undefind,那么该attribute将会从渲染的元素上移除

简写

<div :id="msg" :class="dynamicClass" >测试</div>

布尔值Attribute

根据true/false来决定attribute是否存在于该元素上,disabled是常见的

动态绑定多个值


<template>
  <button :disabled="isButtonDisabled">Button</button>
  <div v-bind="objectOfAttrs">测试问题呢</div>
</template>

<script>
export default {
  data(){
    return{
      dynamicClass: "appclass",
      isButtonDisabled:false,
      objectOfAttrs:{
        class: "appclass",
        dynamilId: "appid",
      }
    }
  }
}

</script>
<style>
.appclass{
  color:red;
  font-weight: bold;
  font_size: 30px;
}
</style>

条件渲染

类似于条件语句

V-if 用于条件性的渲染,为真的时候就渲染,假的时候不渲染

V-else 可以设计为多个分块

V-show 按照条件显示一个元素的指令

下面是上面这些指令的一些代码示例:

<template>
  <h3>条件渲染</h3>
  <div v-if="flag"> 你们看见我不</div>
  <div v-else> 你还是看看我吧</div>
  <div v-if="type ==='A'">A</div>
  <div v-else-if="type ==='B'">B</div>
  <div v-else-if="type ==='C'">C</div>
  <div v-else>Not a/b/c</div>
  <div v-show="flag">Not a/b/c</div>
</template>
<script>
  export default {
    data(){
      return {
        flag:true,
        type: "D",
      }
    }
  }
</script>

v-if 和v-show

v-ifv-show 是 Vue.js 中常用的两个指令,用于条件性地显示或隐藏元素,但它们有一些不同之处。

  1. v-if:

    1. v-if 是一种条件渲染指令,用于根据表达式的真假条件来决定是否渲染 DOM 元素。

    2. 如果条件为真,元素将被渲染到 DOM 中;如果条件为假,元素将从 DOM 中移除。

    3. 当条件为假时,Vue.js 不会渲染或管理该元素及其子元素,因此对性能有一定的提升。

示例:

<div v-if="isVisible"This will only be rendered if isVisible is true</div>
  1. v-show:

    1. v-show 也用于根据条件显示或隐藏元素,但与 v-if 不同,它只是简单地切换 CSS 的 display 属性,而不是添加或移除元素。

    2. 元素始终被渲染到 DOM 中,只是通过 CSS 控制其显示或隐藏。

    3. 当条件为假时,元素的样式为 display: none;,因此元素仍然存在于 DOM 中,可能会对性能产生一定的影响。

示例:

<div v-show="isVisible"This will be rendered but may not be visible</div>

选择使用 v-if 还是 v-show 取决于你的具体需求:

  • 如果你希望在条件为假时从 DOM 中完全移除元素,可以使用 v-if

  • 如果你希望保留元素的 DOM 结构并且只是简单地控制其显示或隐藏状态,可以使用 v-show

列表渲染

使用v-for指令去渲染一个数组渲染一个列表,需要使用item in items这样的特殊语法

<template>
  <h3>列表渲染</h3>
  <p v-for="item in names">{{ item }}</p>
</template>
<script>
  export default {
    data(){
      return{
        names:["实验室","大学","小学"]
      }
    }
  }
</script>

复杂数据

大多数情况下,渲染的都是网络请求,json格式

<template>
  <h3>列表渲染</h3>
  <p v-for="item in result">
    <p>{{item.title}}</p>
<!--   / <img src="item.avator">-->
  </p>
</template>
<script>
  export default {
    data() {
      return {
        result: [
          {
            "id": 123,
            "title": "中药",
            "avator": "http://^",
          },
          {
            "id": 124,
            "title": "西药",
            "avator": "http://^",
          },
          {
            "id": 125,
            "title": "中西药",
            "avator": "http://^",
          },
        ]

      }
    }
  }
</script>

V-for 可以有数组的下标,并且可以使用of来代替in

<p v-for="(item, index) in names">{{ item}}-{{index}}</p>

V-for与 对象

可以用来遍历对象

<template>
  <h3>列表渲染</h3>

  <p v-for="(value, key, index) of user">{{index}}-{{key}}-{{value}}</p>
</template>
<script>
  export default {
    data() {
      return{
        user:{
          name: "123",
          age: 13,
        }
      }
    }
  }
</script>

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

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

相关文章

java中的oop(一)、概念

一、三大主线 &#xff08;非官方&#xff09; 成员&#xff1a;属性、方法、构造器、&#xff08;代码块&#xff0c;内部类&#xff09;&#xff1b; 特征&#xff1a;封装、继承、多态、&#xff08;抽象&#xff09;——三大特征&#xff1b; 关键字&#xff1a; this、…

免费软件不一定不好用,分享5个实用小工具

​ 今天继续分享5个超实用的小工具&#xff0c;都是非常小巧精致的免费软件。 1.广告拦截与隐私保护——AdGuard ​ AdGuard是一款跨平台广告拦截和隐私保护软件&#xff0c;支持Windows、MacOS、Android和iOS系统。它能有效屏蔽不必要的广告、弹窗和跟踪&#xff0c;同时抵御…

(Mac)RocketMQ的本地安装测试(详细图示)

目录 部署服务 namesrv / broker下载解压缩运行 namesrvnohup ./bin/mqnamesrv & 启动命令详解运行 broker 测试收发消息运行自带的生产者测试类运行自带的消费者测试类 部署 Dashboard 可视化下载打包运行访问 部署服务 namesrv / broker 下载解压缩 官网下载 https://r…

会话劫持攻击就在我们身边,我们要如何防范

会话劫持攻击&#xff08;Session Hijacking&#xff09;是一种网络攻击方式&#xff0c;攻击者通过某种手段获取到用户的会话标识&#xff08;Session ID&#xff09;&#xff0c;然后使用这个会话标识冒充合法用户进行恶意操作。这种攻击方式允许攻击者以合法用户的身份访问受…

【go项目01_学习记录10】

操作数据库 1 插入数据2 显示文章2.1 修改 articlesShowHandler() 函数2.2 代码解析 3 编辑文章3.1 添加路由3.2 编辑articlesEditHandler()3.3 新建 edit 模板3.4 代码重构3.5 完善articlesUpdateHandler()3.6 测试更新3.7 封装表单验证 1 插入数据 . . . func articlesStore…

测径仪供风设备的操作和维护

关键字:测径仪供风系统,测径仪供风设备,测径仪冷却设备维护,测径仪冷却设备故障, 测径仪的供风设备包括高压鼓风机和空气过滤装置两部分。 鼓风机要求有独立的供电系统和电源开关&#xff0c;安装时应调整好风机叶轮的旋向&#xff0c;保证接通电源后鼓风机正常工作。另外&am…

Nginx rewrite项目练习

Nginx rewrite练习 1、访问ip/xcz&#xff0c;返回400状态码&#xff0c;要求用rewrite匹配/xcz a、访问/xcz返回400 b、访问/hello时正常访问xcz.html页面server {listen 192.168.99.137:80;server_name 192.168.99.137;charset utf-8;root /var/www/html;location / {root …

深度学习论文: LightGlue: Local Feature Matching at Light Speed

深度学习论文: LightGlue: Local Feature Matching at Light Speed LightGlue: Local Feature Matching at Light Speed PDF: https://arxiv.org/pdf/2306.13643 PyTorch代码: https://github.com/shanglianlm0525/CvPytorch PyTorch代码: https://github.com/shanglianlm0525/…

202466读书笔记|《一天一首古诗词》——借问梅花何处落,风吹一夜满关山

202466读书笔记|《一天一首古诗词》——借问梅花何处落&#xff0c;风吹一夜满关山 上册下册 《一天一首古诗词》作者李锡琴&#xff0c;蛮早前加入书架的已购买书籍&#xff0c;这次刚好有点时间&#xff0c;利用起来读完。 赏析没有细看&#xff0c;只读了诗词部分&#xff0…

YOLOv5改进 | 注意力机制 | 理解全局和局部信息的SE注意力机制

在深度学习目标检测领域&#xff0c;YOLOv5成为了备受关注的模型之一。本文给大家带来的是能够理解全局和局部信息的SE注意力机制。文章在介绍主要的原理后&#xff0c;将手把手教学如何进行模块的代码添加和修改&#xff0c;并将修改后的完整代码放在文章的最后&#xff0c;方…

多模态模型Mini-Gemini:代码模型数据均开源,MiniCPM小钢炮2.0全家桶四连发,可以在Android 手机端上运行的大模型,效果还不错

多模态模型Mini-Gemini&#xff1a;代码模型数据均开源&#xff0c;MiniCPM小钢炮2.0全家桶四连发&#xff0c;可以在Android 手机端上运行的大模型&#xff0c;效果还不错。 多模态模型Mini-Gemini&#xff1a;代码模型数据均开源 香港中文大学终身教授贾佳亚团队提出多模态模…

印象笔记使用技巧

印象笔记使用技巧 印象笔记&#xff08;Evernote&#xff09;是一款非常流行的笔记软件&#xff0c;它为用户提供了一个方便的平台来记录、整理和管理各种信息。无论是个人生活还是工作场景&#xff0c;印象笔记都可以帮助用户提高效率、整理思绪、轻松查找信息。下面是一些印象…

gpustat 不能使用问题

突然间就不能用了&#xff0c;可能是环境出了问题&#xff0c;如果GPU没问题的话&#xff0c;那么换个环境重新安装试一下&#xff08;pip install gpustat&#xff09;&#xff0c;目前是换个环境就可以了&#xff08;做个笔记&#xff09;

Mapreduce | 案例

根据提供的数据文件【test.log】 数据文件格式&#xff1a;姓名,语文成绩,数学成绩,英语成绩 完成如下2个案例&#xff1a; &#xff08;1&#xff09;求每个学科的平均成绩 &#xff08;2&#xff09;将三门课程中任意一门不及格的学生过滤出来 &#xff08;1&#xff09;求每…

DVWS靶场全总结(详细)--主要用来复习(暂未完善,累了大体框架已成)

目录 一、环境安装 二、开始闯关 2.1暴力破解 2.1.1 low: 2.1.2 medium: 2.2命令注入 2.2.1 low: ​编辑​编辑 2.2.2 medium: 2.3跨站请求伪造&#xff08;CSRF&#xff09; 2.3.1 low: 2.3.2 medium: 2.4文件包含漏洞 2.4.1 low&#xff1a; 2.4.2 medium: 2.…

暴力数据结构之栈与队列(队列详解)

1.队列的定义 队列是一种特殊的线性表&#xff0c;它遵循先进先出&#xff08;FIFO&#xff09;的原则。在队列中&#xff0c;只允许在表的一端进行插入操作&#xff08;队尾&#xff09;&#xff0c;而在另一端进行删除操作&#xff08;队头&#xff09;。这种数据结构确保了最…

【栈】Leetcode 比较含退格的字符串

题目讲解 844. 比较含退格的字符串 算法讲解 使用栈模拟&#xff0c;但遇到#字符就让栈顶元素出栈&#xff0c;但是在写的过程中有两点需要注意&#xff1a;当#出现在第一个位置&#xff0c;需要特殊处理一下&#xff1b;当栈为空的时候&#xff0c;还出现#字符需要特殊处理…

普通人可以抓住黄金价格大涨的投资机会吗?

黄金价格的波动对于投资者来说&#xff0c;总是充满了诱惑和挑战。近期&#xff0c;全球经济形势变化多端&#xff0c;地缘政治冲突频发&#xff0c;这些因素无不对黄金市场造成影响&#xff0c;使得黄金价格出现大幅波动。那么&#xff0c;作为普通人&#xff0c;能否抓住黄金…

会赚钱的人都在做这件事:你了解吗?

在我们日常生活的点滴中&#xff0c;以及在各种场合的交互中&#xff0c;利他思维始终扮演着不可或缺的角色。当我们追求合作与共赢时&#xff0c;单方面的自我立场显然是不够的&#xff0c;真正的关键在于换位思考&#xff0c;寻找并满足对方的需求。 互利互赢的核心理念正是利…

centos安装mysql-client

直接安装&#xff1a; yum install mysql-community-client报了错误No package mysql-community-client available. 原因&#xff1a;CentOS/RHEL系统默认的软件源中并不包含MySQL软件包&#xff0c;需要通过添加第三方存储库来获取MySQL相关软件 添加源 安装MySQL官方的Yum…