vue.js学习笔记

一、Vue概述

通过我们学习的html+css+js已经能够开发美观的页面了,但是开发的效率还有待提高,那么如何提高呢?我们先来分析下页面的组成。一个完整的html页面包括了视图和数据,数据是通过请求 从后台获取的,那么意味着我们需要将后台获取到的数据呈现到页面上,很明显, 这就需要我们使用DOM操作。
正因为这种开发流程,所以我们引入了一种叫做MVVM(Model-View-ViewModel)的前端开发思想,
即让我们开发者更加关注数据,而非数据绑定到视图这种机械化的操作。那么具体什么是MVVM思想呢?
MVVM:其实是Model-View-ViewModel的缩写,有3个单词,具体释义如下:
Model: 数据模型,特指前端中通过请求从后台获取的数据
View: 视图,用于展示数据的页面,可以理解成我们的html+css搭建的页面,但是没有数据
ViewModel: 数据绑定到视图,负责将数据(Model)通过JavaScript的DOM技术,将数据展
示到视图(View)上

如图所示就是MVVM开发思想的含义

Vue.js(读音 /vjuː/, 类似于 view) 是一套构建用户界面的 渐进式框架。与其他重量级框架
不同的是,Vue 采用自底向上增量开发的设计。Vue 的核心库只关注视图层,并且非常容易学习,非常容易与其它库或已有项目整合。Vue.js 的目标是通过尽可能简单的 API 实现响应的数据绑定和组合的视图组件。
框架即是一个半成品软件,是一套可重用的、通用的、软件基础代码模型。基于框架进行开发,更加快捷、更加高效。

二、快速入门

1.引入vue.js文件,代码如下:

<script src="js/vue.js"></script>

2.在js代码区域定义vue对象,代码如下:

<script>
//定义Vue对象
new Vue({
el: "#app", //vue接管区域
data:{
message: "Hello Vue"
}
})
</script>

在创建vue对象时,有几个常用的属性:
el: 用来指定哪儿些标签受 Vue 管理。 该属性取值 #app 中的 app 需要是受管理的标签的id属性值
data: 用来定义数据模型
methods: 用来定义函数。这个我们在后面就会用到

3.在html区域编写视图,其中{ {}}是插值表达式,用来将vue对象中定义的model展示到页面上

<div id="app">
        <input type="text" v-model="message">
        {
  
  {message}}
        </div>

三、Vue指令

在上述的快速入门中,我们发现了html中输入了一个没有学过的属性 v-model ,这个就是vue的指
令。
指令:HTML 标签上带有 v- 前缀的特殊属性,不同指令具有不同含义。例如:v-if,v-for…
在vue中,通过大量的指令来实现数据绑定到视图的,所以接下来我们需要学习vue的常用指令,如下表
所示:

指令作用示例代码
v - bind为HTML标签绑定属性值,如设置href, css样式等<a v - bind:href = "url">Link</a>,假设在Vue实例中有data: {url: 'https://example.com'}
v - model在表单元素上创建双向数据绑定<input v - model = "message" type = "text">Vue实例中有data: {message: ''},输入框中的值与message双向绑定
v - on为HTML标签绑定事件<button v - on:click = "handleClick">Click Me</button>,在Vue实例中有methods: {handleClick: function () {console.log('Button clicked');}}
v - if条件性的渲染某元素,判定为true时渲染,否则不渲染<div v - if = "isShow">This div will be rendered if isShow is true</div>,假设在Vue实例中有data: {isShow: true}
v - else与v - if搭配使用,在v - if条件不成立时渲染<div v - if = "isShow">Yes</div><div v - else>No</div>,假设在Vue实例中有data: {isShow: false}
v - else - if与v - if搭配,用于多个条件判断<div v - if = "score >= 90">A</div><div v - else - if = "score >= 80">B</div><div v - else - if = "score >= 70">C</div><div v - else>D</div>,假设在Vue实例中有data: {score: 85}
v - show根据条件展示某元素,区别在于切换的是display属性的值<div v - show = "isVisible">This div will have its display property toggled</div>,假设在Vue实例中有data: {isVisible: true}
v - for列表渲染,遍历容器的元素或者对象的属性<ul><li v - for = "item in items">{ {item}}</li></ul>,假设在Vue实例中有data: {items: ['Apple', 'Banana', 'Cherry']}

1. v-bind和v-model


我们首先来学习v-bind指令和v-model指令。

v-bind: 为HTML标签绑定属性值,如设置 href , css样式等。当vue对象中的数据模型发
生变化时,标签的属性值会随之发生变化。
接下来我们通过代码来演示。

<div id="app">
        <a v-bind:href="url">链接1</a>
        <a :href="url">链接2</a>
        <input type="text" >
        </div>
        </body>
        <script>
        //定义Vue对象
        new Vue({
        el: "#app", //vue接管区域
        data:{
        url: "https://www.baidu.com"
        }
        })
        </script>

在上述的代码中,我们需要给<a>标签的href属性赋值,并且值应该来自于vue对象的数据模型中
的url变量。v-bind指令是可以省略的,但是:不能省略。

注意:html属性前面有:表示采用的vue的属性绑定!
v-model: 在表单元素上创建双向数据绑定。什么是双向?
vue对象的data属性中的数据变化,视图展示会一起变化
视图数据发生变化,vue对象的data属性中的数据也会随着变化。
data属性中数据变化,我们知道可以通过赋值来改变,但是视图数据为什么会发生变化呢?只有
表单项标签!所以双向绑定一定是使用在表单项标签上的。编写如下代码

        <div id="app">
        <a v-bind:href="url">链接1</a>
        <a :href="url">链接2</a>
        <input type="text" v-model="url">
        </div>
        </body>
        <script>
        //定义Vue对象
        new Vue({
        el: "#app", //vue接管区域
        data:{
        url: "https://www.baidu.com"
        }
        })
        </script>

 修改input框中的内容,链接也会跟着改变,见下图:

对比维度v-bindv-model
绑定方向单向绑定,将数据从Vue实例同步到页面双向绑定,实现数据在Vue实例和页面之间的双向同步
使用场景用于将数据绑定到HTML属性、CSS样式、Class类名等主要用于表单元素,实现表单数据的双向绑定
语法v-bind:属性名="表达式" 或 :属性名="表达式"v-model="表达式"
数据更新数据的更新是单向的,从Vue实例到页面数据的更新是双向的,页面上的修改会同步到Vue实例,Vue实例中的数据变化也会更新到页面
组件使用可以用于任何组件,用于传递数据和绑定属性主要用于表单组件,用于实现表单数据的双向绑定

2.v-on


接下来我们学习一下v-on指令。
v-on: 用来给html标签绑定事件的。需要注意的是如下2点:
v-on语法给标签的事件绑定的函数,必须是vue对象种声明的函数
v-on语法绑定事件时,事件名相比较js中的事件名,没有on 

示例代码:

<div id="app">
        <a v-bind:href="url">链接1</a>
        <a :href="url">链接2</a>
        <input type="text" v-model="url">
        <input type="button" value="点我一下" v-on:click="handle()">
        <input type="button" value="点我一下" @click="handle()">
        </div>
        </body>
        <script>
        //定义Vue对象
        new Vue({
        el: "#app", //vue接管区域
        data:{
            url: "https://www.baidu.com"
        },
        methods: {
            handle: function(){
                console.log("你点我了一下...");
            }
        }
    });
        



        </script>

3.v-if和v-show

<div id="app">
        <a v-bind:href="url">链接1</a>
        <a :href="url">链接2</a>
        <input type="text" v-model="url">
        <input type="button" value="点我一下" v-on:click="handle()">
        <input type="button" value="点我一下" @click="handle()">
        成绩<input type="text" v-model="grade">经判定,为:
        <span v-show="grade < 60">不及格</span>
        <span v-show="grade >= 60 && grade < 80">及格</span>
        <span v-show="grade >= 80">优秀</span>
        </div>
        </body>
        <script>
        //定义Vue对象
        new Vue({
        el: "#app", //vue接管区域
        data:{
            url: "https://www.baidu.com"
            ,grade: 100
        },
        methods: {
            handle: function(){
                console.log("你点我了一下...");
            }
        }
    });
        



        </script>

 测试结果

4.v-for

v-for: 从名字我们就能看出,这个指令是用来遍历的。其语法格式如下:

<标签 v-for="变量名 in 集合模型数据">
{
  
  {变量名}}
</标签>

需要注意的是:需要循环那个标签,v-for 指令就写在那个标签上。
有时我们遍历时需要使用索引,那么v-for指令遍历的语法格式如下:

<标签 v-for="(变量名,索引变量) in 集合模型数据">
<!--索引变量是从0开始,所以要表示序号的话,需要手动的加1-->
{
  
  {索引变量 + 1}} {
  
  {变量名}}
</标签>
        <div v-for="addr in addrs">{
  
  {addr}}</div>
        <hr>
        <div v-for="(addr,index) in addrs">{
  
  {index + 1}} : {
  
  {addr}}</div>
addrs:["北京", "上海", "西安", "成都", "深圳"],

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

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

相关文章

MySQL(高级特性篇) 13 章——事务基础知识

一、数据库事务概述 事务是数据库区别于文件系统的重要特性之一 &#xff08;1&#xff09;存储引擎支持情况 SHOW ENGINES命令来查看当前MySQL支持的存储引擎都有哪些&#xff0c;以及这些存储引擎是否支持事务能看出在MySQL中&#xff0c;只有InnoDB是支持事务的 &#x…

【C++】继承(下)

大家好&#xff0c;我是苏貝&#xff0c;本篇博客带大家了解C的继承&#xff08;下&#xff09;&#xff0c;如果你觉得我写的还不错的话&#xff0c;可以给我一个赞&#x1f44d;吗&#xff0c;感谢❤️ 目录 5.继承与友元6.继承与静态成员7.复杂的菱形继承及菱形虚拟继承8.继…

大数据治理体系构建与关键技术实践

&#x1f4dd;个人主页&#x1f339;&#xff1a;一ge科研小菜鸡-CSDN博客 &#x1f339;&#x1f339;期待您的关注 &#x1f339;&#x1f339; 1. 引言 随着信息技术的快速发展和数据规模的爆炸式增长&#xff0c;大数据已经成为各行业的核心资产。然而&#xff0c;数据质量…

数据分析系列--[11] RapidMiner,K-Means聚类分析(含数据集)

一、数据集 二、导入数据 三、K-Means聚类 数据说明:提供一组数据,含体重、胆固醇、性别。 分析目标:找到这组数据中需要治疗的群体供后续使用。 一、数据集 点击下载数据集 二、导入数据 三、K-Means聚类 Ending, congratulations, youre done.

SpringBoot整合Mybatis|入门级增删改查|2025

SpringBoot整合Mybatis 文章目录 SpringBoot整合Mybatis1. 新建User表2. 初始化项目2.1 新建项目2.2 配置数据库连接2.3 完善项目的架子 3. 正式开始3.1 新增用户3.2 根据邮箱查询3.4 改密码 和 删除用户3.5 用xml再写一遍 4. 进阶 1. 新建User表 CREATE DATABASE mybatis_dem…

【线程】基于环形队列的生产者消费者模型

1 环形队列 环形队列采用数组来模拟&#xff0c;用取模运算来模拟环状特性。 1.如何判断环形队列为空或者为满? 当环形队列为空时&#xff0c;头和尾都指向同一个位置。当环形队列为满时&#xff0c;头和尾也都指向同一个位置。 因此&#xff0c; 可以通过加计数器或者标记…

docker中运行的MySQL怎么修改密码

1&#xff0c;进入MySQL容器 docker exec -it 容器名 bash 我运行了 docker ps命令查看。正在运行的容器名称。可以看到MySQL的我起名为db docker exec -it db bash 这样就成功的进入到容器中了。 2&#xff0c;登录MySQL中 mysql -u 用户名 -p 回车 密码 mysql -u root -p roo…

SRS代码目录

代码目录&#xff1a; src/目录下核心代码&#xff1a; core&#xff1a;核心功能模块&#xff0c;包括日志、配置、错误处理等&#xff1b;protocol&#xff1a;实现RTMP、HTTP-FLV、HLS等协议的模块&#xff1b;app&#xff1a;应用层的实现&#xff0c;包括流的发布、播放…

Leetcode:680

1&#xff0c;题目 2&#xff0c;思路 首先就是判断它不发生改变会不会是回文如果不是回文&#xff0c;那么俩个指针从前往后与从后往前做对比如果俩字符不同&#xff0c;那就俩种选择&#xff0c;一种是保留前面的字符去掉后面字符&#xff0c;另一种是其反然后俩种选择只要满…

SliverAppBar的功能和用法

文章目录 1 概念介绍2 使用方法3 示例代码 我们在上一章回中介绍了SliverGrid组件相关的内容&#xff0c;本章回中将介绍SliverAppBar组件.闲话休提&#xff0c;让我们一起Talk Flutter吧。 1 概念介绍 我们在本章回中介绍的SliverAppBar和普通的AppBar类似&#xff0c;它们的…

【前端】ES6模块化

文章目录 1. 模块化概述1.1 什么是模块化?1.2 为什么需要模块化? 2. 有哪些模块化规范3. CommonJs3.1 导出数据3.2 导入数据3.3 扩展理解3.4 在浏览器端运行 4.ES6模块化4.1 浏览器运行4.2 在node服务端运行4.3 导出4.3.1 分别导出4.3.2 统一导出4.3.3 默认导出4.3.4 混用 4.…

【Numpy核心编程攻略:Python数据处理、分析详解与科学计算】2.16 记录数组:面向对象的数据操作

2.16 记录数组&#xff1a;面向对象的数据操作 内容提要 本文将深入探讨 NumPy 的 recarray 数据结构&#xff0c;这是一种特殊的数据类型&#xff0c;允许用户以面向对象的方式访问数组中的数据。我们首先介绍 recarray 的基本特性&#xff0c;然后讨论如何优化属性访问&…

本地搭建deepseek-r1

一、下载ollama(官网下载比较慢&#xff0c;可以找个网盘资源下) 二、安装ollama 三、打开cmd&#xff0c;拉取模型deepseek-r1:14b(根据显存大小选择模型大小&#xff09; ollama pull deepseek-r1:14b 四、运行模型 ollama run deepseek-r1:14b 五、使用网页api访问&#x…

linux本地部署deepseek-R1模型

国产开源大模型追平甚至超越了CloseAI的o1模型&#xff0c;大国崛起时刻&#xff01;&#xff01;&#xff01; DeepSeek R1 本地部署指南   在人工智能技术飞速发展的今天&#xff0c;本地部署AI模型成为越来越多开发者和企业关注的焦点。本文将详细介绍如何在本地部署DeepS…

手写MVVM框架-环境搭建

项目使用 webpack 进行进行构建&#xff0c;初始化步骤如下: 1.创建npm项目执行npm init 一直下一步就行 2.安装webpack、webpack-cli、webpack-dev-server&#xff0c;html-webpack-plugin npm i -D webpack webpack-cli webpack-dev-server html-webpack-plugin 3.配置webpac…

git基础使用--4---git分支和使用

文章目录 git基础使用--4---git分支和使用1. 按顺序看2. 什么是分支3. 分支的基本操作4. 分支的基本操作4.1 查看分支4.2 创建分支4.3 切换分支4.4 合并冲突 git基础使用–4—git分支和使用 1. 按顺序看 -git基础使用–1–版本控制的基本概念 -git基础使用–2–gti的基本概念…

想品客老师的第十天:类

类是一个优化js面向对象的工具 类的声明 //1、class User{}console.log(typeof User)//function//2、let Hdclass{}//其实跟1差不多class Stu{show(){}//注意这里不用加逗号&#xff0c;对象才加逗号get(){console.log(后盾人)}}let hdnew Stu()hd.get()//后盾人 类的原理 类…

JavaFX - 3D 形状

在前面的章节中&#xff0c;我们已经了解了如何在 JavaFX 应用程序中的 XY 平面上绘制 2D 形状。除了这些 2D 形状之外&#xff0c;我们还可以使用 JavaFX 绘制其他几个 3D 形状。 通常&#xff0c;3D 形状是可以在 XYZ 平面上绘制的几何图形。它们由两个或多个维度定义&#…

arm-linux-gnueabihf安装

Linaro Releases windows下打开wsl2中的ubuntu&#xff0c;资源管理器中输入&#xff1a; \\wsl$gcc-linaro-4.9.4-2017.01-x86_64_arm-linux-gnueabihf.tar.xz 复制到/home/ark01/tool 在 Ubuntu 中创建目录&#xff1a; /usr/local/arm&#xff0c;命令如下&#xff1a; …

【双指针题目】

双指针 美丽区间&#xff08;滑动窗口&#xff09;合并数列&#xff08;双指针的应用&#xff09;等腰三角形全部所有的子序列 美丽区间&#xff08;滑动窗口&#xff09; 美丽区间 滑动窗口模板&#xff1a; int left 0, right 0;while (right < nums.size()) {// 增大…