【5k字长文 | Vue学习笔记】#1 认识Vue对象和基础语法

Vue是一个非常流行的渐进式JavaScript框架,渐进式指的是自底向上,从小组件逐渐向上构成整个项目,渐进式还可以理解为:用什么就拿什么,每个组件只做自己的事,尽可能解耦合。

本节我们将学习简单的Vue实例,选用版本是Vue2(更加稳定且生态丰富)。

请确保在学习本内容前,你有一定的HTMLJavaScript基础(要理解JavaScript的对象的概念)。

在刚开始学习的时候,我们可以用在页面中引入Vue.js的方法来使用Vue,但是后续实际开发的时候还是要用Node.js来构建Vue项目。

Node.js:一个包管理工具,你可以理解为python中的pip或者anaconda,不过node.js是一种面向js的管理工具。

1.引入Vue.js

先创建一个HTML页面,内容如下:

<!DOCTYPE html>
<html lang="en">
<head><meta charset="UTF-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><title>Title</title><!--引入Vue2--><script src="https://cdn.bootcdn.net/ajax/libs/vue/2.0.0-rc.1/vue.min.js"></script>
</head>
<body></body><script>
//咱们自己的代码写在这里
</script></html>

2.创建Vue实例

Vue实例是Vue.js中最基本的单元,通过new Vue(构造参数)可以得到一个实例对象。

在后面,我们不再叫Vue对象,而是Vue实例,这更加准确,并且有助于与数据对象进行区分。

一般我们会用vm来命名一个Vue对象。(vm: ViewModel试图模型)

body里面添加一个div,并将其id设置为app,这个命名是自己定的,但是通常情况下都使用app

<div id="app">{{msg}}
</div>

这里的{{msg}}是一种“显式调用”,这里将会把app对应的Vue实例中的data中的msg取出来放到这里,并实现数据的“双向绑定”。先不要管这些概念,有个大概了解就好。

Vue实例和一个DOM对象利用id进行绑定,并且这个绑定是双向的,意思是如果我们修改Vue实例中的数据,DOM中的也会改变,反之亦然。

然后我们在<script>中创建一个Vue实例,它可以包含一些属性,这些属性用一个对象包起来:

const vm = new Vue({el: "#app",//绑定到对应的dom上data: function(){return {msg : "Hello, World!"}}
})

注意看这里的data里面是一个函数,它返回一个对象,里面可以放一些数据(键值对)。

现在打开这个html,它就会显示一个"Hello, World!"字符串。

3.Vue实例的常用属性

  • el:表示Vue实例将要挂载到的元素。它可以是一个CSS选择器字符串,也可以是一个DOM元素。当Vue实例被创建时,它会自动将自己挂载到这个元素上。
  • data:表示Vue实例的数据对象。它可以包含各种数据属性,用于存储和管理Vue实例的状态。这些数据属性可以在模板中被访问和展示。它的值是一个函数,这个函数返回一个数据对象。
  • methods:表示Vue实例的方法。这些方法可以在模板和Vue实例内部通过this访问。注意这个不能使用() => 的形式来写,因为这样是不能用this的

4.给实例加一些方法

我们来实现这样一个功能:点击按钮,让页面上的元素值+1或-1。

先写下HTML:

<div id="app"><h1>{{msg}}{{cnt}}</h1><button>ADD</button><button>SUB</button>
</div>

我们的业务逻辑如何设计呢?原理就是在Vue实例的methods属性中添加两个函数用于修改cnt的值,然后将它们分别绑定到两个按钮的点击事件上即可。

写一个Vue实例,通过el属性绑定到#app这个DOM上面。

const vm = new Vue({el: "#app",//绑定到对应的dom元素上data: function(){return {msg: "Count : ",cnt: 0}},methods:{add(){this.cnt ++//注意这里一定要写this否则会出错},sub(){this.cnt --}}
})

接下来将这两个函数绑定到按钮事件上,可以使用v-on:click或者@click属性来设置(但是@click是Vue3.x的语法糖,我也不知道为啥在Vue2.x可以用,很神秘):

<div id="app"><h1>{{msg}}{{cnt}}</h1><button v-on:click="add">ADD</button><button @click="sub">SUB</button>
</div>

以下是一些常见的监听器(不用谢我,点个赞不过分叭):

  • v-on:mouseover:鼠标移动到元素上时触发的事件监听器。
  • v-on:mouseout:鼠标从元素上移开时触发的事件监听器。
  • v-on:mousemove:鼠标在元素上移动时触发的事件监听器。
  • v-on:keydown:按下键盘按键时触发的事件监听器,,只有在获得焦点时有效。
  • v-on:keyup:释放键盘按键时触发的事件监听器,只有在获得焦点时有效。
  • v-on:focus:元素获得焦点时触发的事件监听器。
  • v-on:blur:元素失去焦点时触发的事件监听器。
  • v-on:change:元素值发生变化时触发的事件监听器,一般配合输入框使用。
  • v-on:submit:表单提交时触发的事件监听器。
  • v-on:click:鼠标点击元素时触发的事件监听器。

5.条件与循环

Vue中,可以在HTML中使用v-if属性来设置条件,使用v-for来设置循环。

<div id="app"><li v-for="item in items">姓名:{{item.name}}大学:{{item.university}} 网址:<a v-bind:href="item.url">{{item.url}}</a></li>
</div>

我们可以看到HTML中仅需写一个li,就可以实现循环生成多个li的功能。

我们写的Vue实例如下:

const vm = new Vue({el: "#app",//绑定DOM元素,注意一定要写#data: function(){return {msg: "Hello",//这个可以不写items:[{name: "张三", university: "武汉理工大学", url: "https://www.baidu.com"},{name: "李四", university: "武汉原神大学", url:"https://www.yuanshen.com"},{name: "李四2号", university: "湖北原神大学", url:"https://www.yuanshen.com"},{name: "王五", university: "武汉冰红茶大学", url:"https://www.binghongcha.com"},]}},
})

结果如图:

并且我们可以再加一个v-if属性,来筛选大学中带有"武汉"的对象。

<div id="app"><li v-for="item in items" v-if="item.university.indexOf('武汉') != -1">姓名:{{item.name}}大学:{{item.university}} 网址:<a v-bind:href="item.url">{{item.url}}</a></li>
</div>

结果如下:

Vue中,可以使用javascript语句:[可迭代数据对象名].push({数据对象})来新增一个数据。

6.处理用户输入

在前面的例子中我们尝试了使用按钮来进行交互,现在我们来看下Vue如何处理用户的输入框。

我们来实现一个input输入框:输入什么,页面上就显示什么,实时更新。

这里我们需要用到v-model属性来将input输入框和message变量来绑定。

<div id="app"><p>Message is: {{message}}</p><input v-model="message" placeholder="edit me">
</div>

Vue实例如下:

const vm = new Vue({el: "#app",data: function(){return {message: ""}},
})

效果如下:

v-model 指令在表单 <input>,<textarea>,<select> 元素上创建双向数据绑定。它会根据控件类型自动选取正确的方法来更新元素。

7.写在最后

本文仅作一个Vue的入门学习,没有具体全面的逐个学习组件,而是挑选一些简单有趣的例子进行实现。

我自己也还在学习中,希望一起进步!

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

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

相关文章

Thales安全解决方案:国家网络安全的关键

随着信息技术的飞速发展&#xff0c;网络安全问题日益凸显。在这个背景下&#xff0c;Thales安全解决方案正成为提高国家网络安全的关键。本文将探讨Thales安全解决方案如何为国家网络安全保驾护航。 一、Thales安全解决方案概述 Thales安全解决方案是一种全方位的网络安全防护…

upload-labs关卡11(双写后缀名绕过)通关思路

文章目录 前言一、回顾前几关知识点二、靶场第十一关通关思路1、看源代码2、bp抓包双写后缀名绕过3、检查文件是否成功上传 总结 前言 此文章只用于学习和反思巩固文件上传漏洞知识&#xff0c;禁止用于做非法攻击。注意靶场是可以练习的平台&#xff0c;不能随意去尚未授权的…

细思极恐!5秒钟克隆你的声音

Mocking Bird 是开发者 babysor 开源的比较火的 AI 拟声开源项目&#xff0c;目前在 GitHub 已经获得了 32K 的 Star&#xff0c;它能在 5 秒内克隆你的声音并生成任意语音内容&#xff0c;支持中文普通话。 01 功能特性 支持中文普通话拟声&#xff0c;并且在多个中文数据集…

小程序授权获取头像

wxml <view class"header"><text>头像</text><button class"butt" plain"true" open-type"chooseAvatar" bind:chooseavatar"chooseAvatar"><image src"{{HeadUrl}}" mode"&quo…

初刷leetcode题目(5)——数据结构与算法

&#x1f636;‍&#x1f32b;️&#x1f636;‍&#x1f32b;️&#x1f636;‍&#x1f32b;️&#x1f636;‍&#x1f32b;️Take your time ! &#x1f636;‍&#x1f32b;️&#x1f636;‍&#x1f32b;️&#x1f636;‍&#x1f32b;️&#x1f636;‍&#x1f32b;️…

工具及方法 - 多邻国: Duolingo

网站&#xff1a;Duolingo 有iOS和Android应用&#xff0c;在App Store和Google Play上都能下载。也可以使用网页版。我就在iOS上安装了付费版&#xff0c;为了小朋友学习英语&#xff0c;一年的费用&#xffe5;588。 目前学习中的课程是英语、日语和粤语。英语是小学课程&a…

GPU Microarch 学习笔记【3】Tensor Core

目录 1. 指令与架构 2. Load 3. 计算MMA 4. Set, Step 与thread group 5. OCTET 6. Tensor Core微架构 7. Final Nvidia自从Volta/Turing&#xff08;2018&#xff09;架构开始&#xff0c;在stream multi processor中加入了tensor core&#xff0c;用于加速矩阵计算。如…

代码随想录算法训练营Day36 —— 435. 无重叠区间、763.划分字母区间、56. 合并区间

435. 无重叠区间 思路&#xff1a; 按照左边排序&#xff0c;按照452引爆气球的思路即可&#xff0c;统计重叠区间个数就是最小删除个数&#xff0c; 直接改点就好。 代码&#xff1a; //手搓 class Solution { private:static bool cmp(const vector<int>& a, c…

用Java实现简单的俄罗斯方块

一、创建新项目 1.首先新建一个项目&#xff0c;并命名为俄罗斯方块。 2.其次新建一个类&#xff0c;命名为Main&#xff0c;或其他的。 二、运行代码package 俄罗斯方块; import java.awt.BorderLayout; import java.awt.Color; import java.awt.GridLayout; import java…

贝锐蒲公英路由器X4C如何远程访问NAS?

在目前网盘前路坎坷的情况下&#xff0c;私人云盘已然是一种新的趋势&#xff01;那自己打造一个私有云盘&#xff0c;是否需要高成本或是高门槛呢&#xff1f;其实并不用&#xff01;蒲公英针对个人玩家打造了全方位的私有云解决方案。 &#xff08;1&#xff09;入门级玩家只…

计算机毕业论文内容参考|基于深度学习的交通标识智能识别系统的设计与维护

文章目录 导文摘要前言绪论1课题背景2国内外现状与趋势3课题内容相关技术与方法介绍系统分析总结与展望导文 基于深度学习的交通标识智能识别系统是一种利用深度学习模型对交通标识进行识别和解析的系统。它可以帮助驾驶员更好地理解交通规则和安全提示,同时也可以提高道路交通…

全志H616开发版

开发板介绍&#xff1a; 二、开发板刷机 SDFormatter TF卡的格式化工具、Win32Diskimager 刷机工具 刷机镜像为&#xff1a;Orangepizero2_2.2.0_ubuntu_bionic_desktop_linux4.9.170.img 使用MobaXterm_Personal_20.3连接使用 网络配置&#xff1a;nmcli dev wifi 命令接入网…

策略模式在数据接收和发送场景的应用(升级版)

1.背景 在数据接收和发送场景打算使用了 if else 进行判断&#xff1a; if("A".equals(system)){ASystem.sync("向A同步数据"); } if("B".equals(system)){BSystem.sync("向B同步数据"); } ... 非常麻烦&#xff0c;需求多了很臃肿&…

C#,数值计算——插值和外推,分段线性插值(Linear_interp)的计算方法与源程序

1 文本格式 using System; namespace Legalsoft.Truffer { /// <summary> /// 分段线性插值 /// Piecewise linear interpolation object. /// Construct with x and y vectors, then call interp for interpolated values. /// </summary> …

Windows 安装 Docker

目录 前言安装 WSL2WSL2 简介系统要求安装步骤 安装 Docker Desktop下载安装验证 安装 Docker Compose结语开源项目 前言 下图展示了在 Windows 系统上安装 Docker&#xff0c;并利用Docker Compose一键搭建 youlai-mall 微服务商城所需的环境。本篇将先介绍 Windows 上如何安…

【Linux】指令详解(二)

目录 1. 前言2. 重新认识指令2.1 指令的本质2.1.1 which2.1.2 alias 3. 常见指令3.1 whoami3.2 cd3.2.1 cd -3.2.2 cd ~ 3.3 touch3.3.1 文件创建时间 3.4 stat3.5 mkdir3.5.1 创建一个目录3.5.2 创建路径 3.6 tree3.7 rm3.7.1 rm -f3.7.2 rm -r 3.8 man3.9 cp3.10 mv 1. 前言 …

Leetcode刷题详解——删除并获得点数

1. 题目链接&#xff1a;740. 删除并获得点数 2. 题目描述&#xff1a; 给你一个整数数组 nums &#xff0c;你可以对它进行一些操作。 每次操作中&#xff0c;选择任意一个 nums[i] &#xff0c;删除它并获得 nums[i] 的点数。之后&#xff0c;你必须删除 所有 等于 nums[i] …

#gStore-weekly | gBuilder功能详解之结构化数据抽取

上一个weekly中已经详细讲解了schema的设计&#xff0c;在schema设计好了之后&#xff0c;gBuilder支持将结构化和非结构化数据转化为RDF图数据。其中结构化数据支持数据的无损转化。 1. 技术介绍 gBuilder的结构化数据抽取采用D2RQ技术实现。 DR2Q是一个能够将关系数据库中…

linux上安装qt creator

linux上安装Qt Creator 1 Qt Creator 的下载 下载地址为&#xff1a;http://download.qt.io/archive/qt/ 根据自己的需求选择Qt Creator版本&#xff0c;这里我下载的是5.12.9&#xff0c;如下图所示&#xff1a; 在ubuntu上可以使用wget命令下载安装包&#xff1a; wget h…

【Qt开发流程】之程序主窗口

描述 就目前的应用程序而言&#xff0c;一般包含菜单栏、工具栏、状态栏、中央区域等。 qt窗口部件类图如下&#xff1a; 一个主窗口提供了一个构建应用程序用户界面的框架。 Qt有QMainWindow及其相关类来管理主窗口。 QMainWindow有自己的布局&#xff0c;可以向其中添加QTo…