【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.mfbz.cn/a/176865.html

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

相关文章

实验4.数据全量、增量、比较更新

【实验目的】 1.利用Kettle的“表输入”&#xff0c;“表输入出”&#xff0c;”JavaScript代码”组件&#xff0c;实现数据全量更新。 2.熟练掌握“JavaScript代码”&#xff0c;“表输入”&#xff0c;“表输入出”组件的使用&#xff0c;实现数据全量更新。 【实验原理】 …

2024法定节假日|除夕不放假?企业这样做员工更满意

国务院办公厅发布了 关于2024年部分节假日安排的通知 全文如下 各省、自治区、直辖市人民政府&#xff0c;国务院各部委、各直属机构&#xff1a; 经国务院批准&#xff0c;现将2024年元旦、春节、清明节、劳动节、端午节、中秋节和国庆节放假调休日期的具体安排通知如下。 …

【OpenCV实现图像:使用OpenCV进行图像处理之透视变换】

文章目录 概要计算公式举个栗子实际应用小结 概要 透视变换&#xff08;Perspective Transformation&#xff09;是一种图像处理中常用的变换手段&#xff0c;它用于将图像从一个视角映射到另一个视角&#xff0c;常被称为投影映射。透视变换可以用于矫正图像中的透视畸变&…

CSM32RV003:国产高精度16位ADC低功耗RISC-V内核MCU

目录 高精度ADC工业应用工业数据采集应用CSM32RV003简介主要特性 高精度ADC工业应用 高精度ADC即高精度模数转换器&#xff0c;是一种能够将输入模拟信号转换为数字信号的芯片&#xff0c;在多种消费电子、工业、医疗和科研领域都有广泛应用。高精度ADC的主要特点是能够提供高…

echarts 几千条分钟级别在小时级别图标上展示

需求背景解决效果ISQQW代码地址strategyChart.vue 需求背景 需要实现 秒级数据几千条在图表上显示&#xff0c;(以下是 设计图表上是按小时界别显示数据&#xff0c;后端接口为分钟级别数据) 解决效果 ISQQW代码地址 链接 strategyChart.vue <!--/** * author: liuk *…

02房价预测

目录 代码 评分算法&#xff1a; 代码 import numpy as np from sklearn import datasets from sklearn.linear_model import LinearRegression# 指定版本才有数据集 # C:\Users\14817\PycharmProjects\pythonProject1\venv\Scripts\activate.bat # pip install scikit-le…

webpack项目 index.html 根据不同的变量引入不同的js

项目 webpack搭建 问题&#xff1a;在入口文件index.html中根据不同的变量引入不同的js 使用插件HtmlWebpackPlugin HtmlWebpackPlugin 项目里用来生成静态文件的 这个插件每个项目基本都要用到的&#xff0c;只要全局搜一下位置 根据配置文件的指令找到执行的文件&#xff0…

[点云分割] 区域增长分割

效果&#xff1a; 原始数据 分割结果 代码&#xff1a; #include <iostream> #include <vector> #include <pcl/io/pcd_io.h> #include <pcl/point_types.h> // 各种点云数据类型 #include <pcl/search/search.h> #include <pcl/search/kdtr…

【Java】基于SaaS模式的Java基层医院卫生健康云HIS系统源码

一、模板管理 模板分为两种&#xff1a;病历模板和报表模板。模板管理是运营管理的核心组成部分&#xff0c;是基层卫生健康云中各医疗机构定制电子病历和报表的地方&#xff0c;各医疗机构可根据自身特点特色定制电子病历和报表&#xff0c;制作的电子病历及报表可直接在业务…

CSS画一条线

<p style"border: 1px solid rgba(0, 0, 0, 0.1);"></p> 效果&#xff1a;

Power Apps-Timer

插入一个计时器 右侧属性面板&#xff0c;持续时间的单位是毫秒&#xff0c;60000就是60秒&#xff08;一分钟&#xff09;&#xff1b;开启重复是指60秒结束后重新开始计时&#xff1b;自动启动是指当从其他页面进入时是否自动开始计时&#xff1b;自动暂停是指当离开这个页面…

Python语言:猜数字游戏案例讲解

猜数字游戏题目要求如下&#xff1a;该程序随机生成一个1到100之间的整数&#xff0c;然后要求玩家在有限的次数内猜出这个数字。如果玩家猜对了&#xff0c;游戏结束并显示成功信息&#xff1b;如果玩家猜错了&#xff0c;程序会提示玩家猜的数字是偏大还是偏小&#xff0c;并…

VsCode连接远程Linux编译环境的便捷处理

1.免输登录密码 免输命令的正确方法是使用公钥和私鈅在研发设备&#xff0c;和linux服务器上校验身份。公钥和私钥可在windows系统上生成。公钥要发送到linux服务器。私钥需要通知给本地的ssh客户端程序&#xff0c;相关的操作如下&#xff1a; 生成 SSH Key&#xff1a; 打开…

如何编辑WordPress配置文件wp-config.php

目录 wp-config.php文件全部内容&#xff1a; 修改wp-config.ph文件中的数据库设置&#xff1a; 设置wp-config.ph文件中的密钥部分 修改数据库表前缀 设置绝对路径 WordPress会把数据库的相关信息存在wp-config.php文件中。如果编辑有问题&#xff0c;则会出现建立数据库连…

C语言--每日五道选择题-- Day22

第一题&#xff08;注意&#xff09; 1.下列 C 代码中&#xff0c;不属于未定义行为的有&#xff1a;______。 A&#xff1a;int i0; i(i); B&#xff1a;char *p"hello"; p[1]E; C&#xff1a;char *p"hello"; char ch*p; D&#xff1a;int i0; printf(&q…

Leo赠书活动-10期 【AIGC重塑教育 AI大模型驱动的教育变革与实践】文末送书

✅作者简介&#xff1a;大家好&#xff0c;我是Leo&#xff0c;热爱Java后端开发者&#xff0c;一个想要与大家共同进步的男人&#x1f609;&#x1f609; &#x1f34e;个人主页&#xff1a;Leo的博客 &#x1f49e;当前专栏&#xff1a; 赠书活动专栏 ✨特色专栏&#xff1a;…

【SpringBoot】ThreadLocal 的详解

一、ThreadLocal 简介 ThreadLocal 叫做线程变量&#xff0c;意思是 ThreadLocal 中填充的变量属于当前线程&#xff0c;该变量对其他线程而言是隔离的&#xff0c;也就是说该变量是当前线程独有的变量。ThreadLocal 为变量在每个线程中都创建了一个副本&#xff0c;那么每个线…

Redis 性能管理 主从复制与哨兵模式

目录 redis性能管理 内存碎片率 如何清理内存 面试题 Redis雪崩 Redis集群大面积故障 面试&#xff1a;Redis的缓存击穿 Redis的缓存穿透 Redis的集群高可用方案 redis的主从复制 哨兵模式 redis性能管理 redis的数据缓存在内存当中 info memory #在redis数据库中查…

npm ERR!问题解决

问题一 解决办法 两个文件夹【node_global】和【node_cache】 修改文件属性 问题二 解决办法 安装淘宝镜像 npm config set registry https://registry.npm.taobao.org 查看是否成功&#xff1a; npm config get registry 是淘宝的就ok

口袋参谋:只用一招,提前规避差评!请看具体操作步骤

​如何提前规避差评&#xff1f;至少99%的商家都不知道该怎么做&#xff0c;剩下的1%还是我刚教会的。 宝贝的评价直接影响宝贝转化&#xff0c;特别是新品链接。 10个好评也挽回不了一个差评对产品的致命打击&#xff0c;差评就像一个重磅炸弹&#xff0c;威力足够能让你的转…
最新文章