【vue2.0入门】vue基本语法

目录

  • 引言
  • 一、页面动态插值
    • 1. 一般用法
  • 二、计算属性computed
  • 三、动态class、style绑定
  • 四、条件渲染与列表渲染
  • 五、事件处理
  • 六、表单输入绑定
  • 七、总结

引言

本系列教程旨在帮助一些零基础的玩家快速上手前端开发。基于我自学的经验会删减部分使用频率不高的内容,并不代表这部分内容不重要,只是对于初学者来说没必要一开始就学的面面俱到。我希望可以先通过主干内容带大家入门前端,细节技巧性内容,可以在后续的开发工作中自行发现并掌握。

在上一篇 【vue2.0入门】vue单文件组件 中,我们已经对vue单文件各个部分做了解释,本篇将通过几个例子对常用vue语法进行讲解。

详细的vue语法内容参考:vue2语法教程


一、页面动态插值

在template中以 {{ 表达式 }} 的形式,将一个表达式的结果以文本形式动态插入页面标签中。

一般情况下,这个表达式可以是:

  • data中定义的变量
  • props中从父组件传入的属性
  • computed中对data变量或是props属性加工后的表达式

1. 一般用法

仍然使用 HelloWorld 组件,按照 【vue2.0入门】vue单文件组件 中介绍的vue2代码片段初始化一个vue组件模板。

<template>
  <div class="container">
    <div class="item">
      <span>父组件传值</span>
      <span>{{ msg }}</span>
    </div>
    <div class="item">
      <span>系统内存</span>
      <span>{{ memorySize }} B</span>
    </div>
    <div class="item">
      <span>系统内存格式化方式1:</span>
      <span>{{ (memorySize / 1024 / 1024 / 1024).toFixed(2) }} GB</span>
    </div>
    <div class="item">
      <span>系统内存格式化方式2:</span>
      <span>{{ memorySizeFormat }} GB</span>
    </div>
    <div class="item">
      <span>引用类型属性为空:</span>
      <span>{{ sysInfo.cpu || "AMD" }} </span>
    </div>
    <div class="item">
      <span>引用类型属性不存在:</span>
      <span>{{ sysInfo.gpu || "NVIDIA" }} </span>
    </div>
  </div>
</template>

<script>
export default {
  props: {
    msg: {
      type: String,
      default: "hello world!",
    },
  },
  data() {
    return {
      memorySize: 8589935000,
      sysInfo: {
        cpu: "",
      },
    };
  },
  // 计算属性
  computed: {
    memorySizeFormat() {
      return (this.memorySize / 1024 / 1024 / 1024).toFixed(2);
    },
  },
};
// 其他代码
</script>

如上代码中:

  • 系统内存格式化方式1系统内存格式化方式2 的插值我用了两种方式,表达的意思是一样的。插值符号中可以利用变量编写表达式,最后呈现表达式执行结果的字符串形式,当表达式过于复杂时,可以考虑使用computed加工一下变量。computed就像是一个加工车间,输入的是data或是props的变量,输出一个表达式结果。 memorySizeFormat 就表示一条产品线,它等价于 (this.memorySize / 1024 / 1024 / 1024).toFixed(2) 这个生产过程的结果。当前组件的全局都可以通过 this.memorySizeFormat 访问到这个结果。
  • 当需要向template插入的值取自一个 sysInfo 的属性,然而这个属性值为空或是不存在时,可以使用 || 符号添加默认值,使页面位置不为空。

效果如下:

在这里插入图片描述


二、计算属性computed

在页面动态插值部分我们已经展示了computed的基础使用方法。

在一些特殊情况下,computed并不依赖于data变量或是props变量,而是接收一个传入的参数做计算,具体写法如下

  // 计算属性
  computed: {
    memorySizeParams(){
      return (params)=>{
        return (params / 1024 / 1024 / 1024).toFixed(2);
      }
    }
  },

我们在 template 中可以按照函数传参的方式来调用,这里把 memorySize 作为参数传入函数内部,返回处理后的结果用于页面插值渲染。

    <div class="item">
      <span>系统内存格式化方式3:</span>
      <span>{{ memorySizeParams(memorySize) }} GB</span>
    </div>

三、动态class、style绑定

class的绑定主要是对一个 自定义class名 做一个是否为 的判断,style的绑定主要是对 css属性名 赋予动态的 属性值

写法上只需要在原有的class和style属性名前加上冒号 : 即可,例如 :class:style 。此时这两个属性的值需要是一个表达式,而不是确定的值。(表达式可以是变量,可以是计算属性的返回值,也可以是通过代码运算后得到的值)

对于class的绑定:

  • 多个类的动态绑定我会采用对象形式,可以在data中设置对象变量,属性名为你需要设置的 class名,属性值为Boolean,用于判断当前class名是否授予这个标签。在style中也要提前编写好对应 class名 的样式类。
  • 你同样可以把这个对象直接搬到标签中,这和你使用data中的对象是等价的。需要要注意的是 双引号 " "单引号 ' ' 的嵌套关系,避免一些报错。
  • 当你需要动态添加单个class类,那可以不加 大括号 {},直接编写表达式(需要该表达式最终返回一个class名)。我这里用了一个 三元运算符 返回一个确定的class名,感兴趣的百度一下这个运算符用法。

对于style的绑定:

  • 和class的区别就是,style的绑定主要是对一个确定css属性赋予动态的值。通过表达式获取一个合规的css属性值。
<template>
  <div class="container">
    <!-- 动态class -->
    <div class="mainclass" :class="additionalClass">动态class测试</div>
    <div
      class="mainclass"
      :class="{ customBg: customStr == 'world', customColor: customNum == 1 }"
    >
      动态class测试
    </div>
    <div
      class="mainclass"
      :class="customStr == 'world' ? 'customBg' : 'customColor'"
    >
      动态class测试
    </div>
    <!-- 动态style -->
    <div class="mainclass" :style="additionalStyle">动态style测试</div>
    <div
      class="mainclass"
      :style="{
        background: customBackground,
        color: customColor,
      }"
    >
      动态style测试
    </div>
    <div class="mainclass" :style="{ color: customNum == 1 ? 'red' : 'blue' }">
      动态style测试
    </div>
  </div>
</template>

<script>
export default {
  data() {
    return {
      //动态class
      additionalClass: {
        customBg: true,
        customColor: false,
      },
      customNum: 1,
      customStr: "hello",
      // 动态style
      additionalStyle: {
        background: "yellow",
        color: "blue",
      },
      customBackground: "yellow",
      customColor: "blue",
    };
  },


};
</script>
<style scoped>
.mainclass {
  margin-top: 20px;
}

.customBg {
  background: #f8a5d4;
}

.customColor {
  color: #0ade0d;
}
</style>


观察对比开发者工具中标签属性和代码,理解下动态绑定的过程

在这里插入图片描述


四、条件渲染与列表渲染

这两个语法在官网中有着较为详尽的介绍,参考:条件渲染 、列表渲染

本篇针对列表渲染与条件渲染嵌套使用时如何处理。

在这里插入图片描述

这个问题常发生在一些场景中,例如从后端拿到了一组原始数据,数据中有个 A属性 代表该数据是否渲染。我们一般做法是提前根据这个 A属性 对数据进行筛选,然后在进行列表渲染,避免列表渲染和条件渲染同时使用。

举个例子:

<template>
  <div class="container">
    <!-- 列表渲染 -->
    <div class="mainclass" v-for="item in handleFruits" :key="item.id">
      {{ item.name }}
    </div>
  </div>
</template>

<script>
export default {
  data() {
    return {
      // 列表渲染
      Fruits: [
        { id: 1, name: "苹果", visible: true },
        { id: 2, name: "香蕉", visible: false },
        { id: 3, name: "橙子", visible: true },
        { id: 4, name: "桃子", visible: false },
      ],
    };
  },
  // 计算属性
  computed: {
    handleFruits() {
      return this.Fruits.filter((item) => item.visible);
    },
  },

};
</script>



五、事件处理

关于vue2的事件处理语法,建议参考:事件处理

本篇介绍一些需要注意的地方:

  • 在官方文档中绑定事件的方法为 v-on: ,日常工作中使用简写方式 @ ,例如:@click
  • 如果你需要在事件处理器中访问原生事件对象,可以使用 $event 关键字作为参数传入调用的方法中。
    <div @click="handleClick($event)">

六、表单输入绑定

关于vue2的表单输入绑定语法,建议参考:表单输入绑定

本篇介绍一些需要注意的地方:

  • 表单输入绑定主要用于需要用户输入信息或者选择信息的标签,主要是这三种: <input><textarea><select>

七、总结

以上即为vue基础语法的内容,建议从官方文档入手,结合本篇介绍的需要注意的点一起学习。

本篇重点:

  • 再次熟悉 表达式 这个概念
  • 了解 computed 的传参用法
  • 掌握列表渲染与条件渲染嵌套使用时的应对方法。
  • vue的一些语法简写

接下来我们将学习vue工程引入第三方库,进行数据获取、路由配置、全局状态管理等。

再接再厉~

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

丹摩征文活动 | 丹摩智算平台:服务器虚拟化的璀璨明珠与实战秘籍

丹摩DAMODEL&#xff5c;让AI开发更简单&#xff01;算力租赁上丹摩&#xff01; 目录 一、引言 二、丹摩智算平台概述 &#xff08;一&#xff09;平台架构 &#xff08;二&#xff09;平台特点 三、服务器虚拟化基础 &#xff08;一&#xff09;虚拟化的概念 &#xf…

蓝牙5.0模块助力闹钟升级,开启智能生活第一步

随着智能家居产业的快速发展&#xff0c;智能闹钟作为其中一个重要的品类&#xff0c;逐渐从单一的时间提醒功能演变为集音频播放、语音交互、智能控制等多种功能于一体的智能设备。而在这些功能的实现中&#xff0c;蓝牙音频模组扮演着核心角色。 1、蓝牙音频模组的功能概述 …

POI word转pdf乱码问题处理

1.使用poi 转换word文档成pdf 导入依赖 <dependency><groupId>com.aspose</groupId><artifactId>words</artifactId><version>16.8.0</version></dependency>2.代码实现: SneakyThrowspublic void wordToPdf(String docPath,…

有趣的Midjourney作品赏析(附提示词)

中文提示词&#xff1a;国风少年 C4D软件,高分辨率,超细节,超现实主义, 英文提示词&#xff1a;National Style Youth Cinema4D,high resolution,hyper detailed,surrealism, --niji 6 --ar 1:1 中文提示词&#xff1a;粘土模型&#xff0c;男性穿着中世纪欧洲蓝色盔甲&#x…

猫头虎分享: 小米大模型升级第二代MiLM2:从一代到二代,能力飞跃提升

小米大模型升级第二代MiLM2&#xff1a;从一代到二代&#xff0c;能力飞跃提升 大家好&#xff0c;我是猫头虎&#xff0c;今天给大家带来一篇关于小米大模型MiLM2的深度解读。作为技术圈的重磅消息&#xff0c;小米的第二代大模型&#xff08;MiLM2&#xff09;在多项领域实现…

解决Anaconda出现CondaHTTPError: HTTP 000 CONNECTION FAILED for url

解决Anaconda出现CondaHTTPError: HTTP 000 CONNECTION FAILED for url 第一类情况 在anaconda创建新环境时&#xff0c;使用如下代码 conda create -n charts python3.7 错误原因&#xff1a; 默认镜像源访问速度过慢&#xff0c;会导致超时从而导致更新和下载失败。 解决方…

【机器学习】机器学习中用到的高等数学知识-2.概率论与统计 (Probability and Statistics)

概率分布&#xff1a;理解数据的分布特征&#xff08;如正态分布、伯努利分布、均匀分布等&#xff09;。期望和方差&#xff1a;描述随机变量的中心位置和离散程度。贝叶斯定理&#xff1a;用于推断和分类中的后验概率计算。假设检验&#xff1a;评估模型的性能和数据显著性。…

ESLint 使用教程(四):ESLint 有哪些执行时机?

前言 ESLint 作为一个静态代码分析工具&#xff0c;可以帮助我们发现和修复代码中的问题&#xff0c;保持代码风格的一致性。然而&#xff0c;ESLint的最佳实践不仅仅在于了解其功能&#xff0c;更在于掌握其执行时机。本文将详细介绍ESLint在不同开发阶段的执行时机&#xff…

【设计模式系列】享元模式(十五)

目录 一、什么是享元模式 二、享元模式的角色 三、享元模式的典型应用场景 四、享元模式在ThreadPoolExecutor中的应用 1. 享元对象&#xff08;Flyweight&#xff09;- 工作线程&#xff08;Worker&#xff09; 2. 享元工厂&#xff08;Flyweight Factory&#xff09;- …

#渗透测试#SRC漏洞挖掘#云技术基础02之容器与云

免责声明 本教程仅为合法的教学目的而准备&#xff0c;严禁用于任何形式的违法犯罪活动及其他商业行为&#xff0c;在使用本教程前&#xff0c;您应确保该行为符合当地的法律法规&#xff0c;继续阅读即表示您需自行承担所有操作的后果&#xff0c;如有异议&#xff0c;请立即停…

【Linux系统编程】第四十六弹---线程同步与生产消费模型深度解析

✨个人主页&#xff1a; 熬夜学编程的小林 &#x1f497;系列专栏&#xff1a; 【C语言详解】 【数据结构详解】【C详解】【Linux系统编程】 目录 1、Linux线程同步 1.1、同步概念与竞态条件 1.2、条件变量 1.2.1、认识条件变量接口 1.2.2、举例子认识条件变量 1.2.3、…

力扣(LeetCode)283. 移动零(Java)

White graces&#xff1a;个人主页 &#x1f649;专栏推荐:Java入门知识&#x1f649; &#x1f439;今日诗词:雾失楼台&#xff0c;月迷津渡&#x1f439; ⛳️点赞 ☀️收藏⭐️关注&#x1f4ac;卑微小博主&#x1f64f; ⛳️点赞 ☀️收藏⭐️关注&#x1f4ac;卑微小博主…

如何在单片机引脚有限时拓展更多引脚

假设单片机有3个GPIO口可以使用&#xff0c;但是我现在要控制多余3个口的功能怎么办&#xff1f; 这个时候可以用到74LS138&#xff08;3 线&#xff0d;8线译码器&#xff09;&#xff1a; 这个时候我使用三位二进制位可以表示2^3 8个引脚的内容 这种方法经常用于选择数码屏…

go debug日记:protoc -I . helloworld.proto --go_out=plugins=grpc:.错误debug

使用protoc生成go的文件出现bug 运行命令 protoc -I . helloworld.proto --go_outpluginsgrpc:.如图所示 即&#xff0c;没有指定生成的go文件位置&#xff0c;需要在文件中添加 option go_package"path;name";其中 path 表示生成的go文件的存放地址&#xff0c;…

cesium渲染3DTiles模型和glb模型

cesium渲染3DTiles模型和glb模型 相关网站&#xff1a; 1.快速入门&#xff1a;https://cesium.com/learn/cesiumjs-learn/cesiumjs-quickstart/ 2.webpack配置&#xff1a;https://github.com/CesiumGS/cesium-webpack-example#cesium-webpack-example 3.说明文档&#xff…

灰狼优化算法

一、简介 1.1 灰狼优化算法-Grey Wolf Optimizer 通过模拟灰狼群体捕食行为&#xff0c;基于狼群群体协 作的机制来达到优化的目的。&#xff27;&#xff37;&#xff2f;算法具有结构简单、需 要调节的参数少、容易实现等特点&#xff0c;其中存在能够自适应调整 的收敛因子…

新日撸java三百行` 新手小白java学习记录 `Day1

新日撸java三百行新手小白java学习记录 Day1 模拟多线程回调机制 文章目录 新日撸java三百行 新手小白java学习记录 前言一 、模拟异步机制提出问题解决方案 前言 古人称长江为江&#xff0c;黄河为河。长江水清&#xff0c;黄河水浊&#xff0c;长江在流&#xff0c;黄河也在…

【Unity Bug 随记】unity version control 报 xx is not in a workspace.

可能原因是更改了仓库或者项目名称。 解决办法就是重置Unity Version Control&#xff0c;去Hub disconnect 然后重新connect cloud和UVC UVC可能连不上&#xff0c;直接进入项目就行&#xff0c;打开版本管理标签会让你重新连工作区&#xff0c;选择你的仓库和工作区 然后In…

Go语言入门教案

文章目录 一、教学目标二、教学重难点&#xff08;一&#xff09;重点&#xff08;二&#xff09;难点 三、教学方法四、教学过程&#xff08;一&#xff09;Go语言简介&#xff08;二&#xff09;环境搭建1. 下载和安装Go语言开发环境2. 配置Go语言环境变量3. 命令行查看Go语言…