Vue 入门和基础语法(一)

news2024/11/14 18:29:40

一、入门

        Vue 不支持 IE8 及以下的版本,因为 Vue 使用了 IE8 无法模拟的 ECMAScript 5 特性,但它支持所有兼容 ECMAScript 5 的浏览器。

1.1、创建 Hello Vue

        Vue.js 的核心是实现了 MVVM 模式,它扮演的角色就是 ViewModel 层,那么所谓的第一个应用程序就是展示它的数据绑定功能,操作流程如下:

1.1.1 创建一个 html 文件

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>xhf test</title>
</head>
<body>

</body>
</html>

1.1.2 引入Vue.js

<script src="https://cdn.jsdelivr.net/npm/vue@2/dist/vue.min.js"></script>

1.2.3 创建一个 Vue 实例

<script>
    var vm = new Vue({
        // 绑定元素的 ID
        el: "#app", 
        // 数据对象中有一个名为 message 的属性,并设置了初始值为 Hello Vue
        data: {
            message:"Hello Vue"
        }
    })

</script>

1.2.4 将数据绑定到页面元素

        只需要在绑定的元素中使用 双花括号 Vue 创建的名为 message 属性包裹起来,即可实现数据绑定功能,也就实现了 ViewModel 层所需的效果,是不是和 EL 表达式非常像?

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

1.2.5 测试

        为了能够更直观的体验 Vue 带来的数据绑定功能,我们需要在浏览器测试一番,操作流程如下:

        1、在浏览器上运行第一个 Vue 应用程序,进入 开发者工具

        2、在控制台输入 vm.message = 'Hello World' ,然后 回车,你会发现浏览器中显示的内容会直接变成 Hello World

        此时就可以在控制台直接输入 vm.message 来修改值,中间是可以省略 data 的,在这个操作中,我并没有主动操作 DOM,就让页面的内容发生了变化,这就是借助了 Vue 数据绑定 功能实现的。

        MVVM 模式中要求 ViewModel 层就是使用 观察者模式 来实现数据的监听与绑定,以做到数据与视图的快速响应。 

二、基础语法

        我们对于基础语法,说白了就是实现元素赋值循环判断,以及事件响应即可!

2.1 v-bind

        我们已经成功创建了第一个 Vue 应用!看起来这跟渲染一个字符串模板非常类似,但是 Vue 在背后做了大量工作。现在数据和 DOM 已经被建立了关联,所有东西都是响应式的。我们在控制台操作对象属性,界面可以实时更新!

        我们还可以使用 v-bind 来绑定元素特性。

<div id="app">
  <!--
        如果要将模型数据绑定在 html 属性中
        则使用 v-bind 指令,此时 title 中显示的是模型数据
  -->
  <h1 v-bind:title="message">鼠标悬停几秒钟查看此处动态绑定的提示信息!</h1>
  <!-- v-bind 指令的简写形式: 冒号(:) -->
  <h1 :title="message">我是标题</h1>
</div>
<script src="https://cdn.jsdelivr.net/npm/vue@2.5.21/dist/vue.js">
</script>
<script>
  new Vue({
    el: '#app',
    data: {
      message: '页面加载于 ' + new Date().toLocaleString()
    }
  })
</script>

        你看到的 v-bind 特性被称为指令。指令带有前缀 v- ,以表示它们是 Vue 提供的特殊特性。

        除了使用插值表达式 {{}} 进行数据渲染,也可以使用 v-bind 指令,它的简写的形式就是一个冒号(:

2.2 v-if 系列

        什么是条件判断语句,就不需要我说明了吧( ̄▽ ̄),以下两个属性

v-if

v-else-if

v-else

        测试:观察在控制台输入 vm.type = false 的变化 

<body>
    <div id="app2">
      <span v-if="type">TRUE</span>
      <span v-else>NO</span>
    </div>
    <script src="https://cdn.jsdelivr.net/npm/vue@2.5.21/dist/vue.js">
    </script>
    <script>
      var vm2 = new Vue({
        el: "#app2",
        data: {
          type: true
        }
      })
    </script>
</body>

        测试:观察在控制台输入 vm.type = 'B'、'C'、'D'  的变化。 

<body>
    <div id="app">
      <!--
         === 三个等号在 JS 中表示绝对等于(就是数据与类型都要相等)
      -->
      <h1 v-if="type === 'A'">A</h1>
      <h1 v-else-if="type === 'B'">B</h1>
      <h1 v-else-if="type === 'C'">C</h1>
      <h1 v-else>who</h1>
    </div>
    <script src="https://cdn.jsdelivr.net/npm/vue@2.5.21/dist/vue.js">
    </script>
    <script>
      var vm = new Vue({
        el: '#app',
        data: {
          type: 'A'
        }
      })
    </script>
</body>

2.3 v-for 

        语法格式如下:

<div id="vue">
    <li v-for="item in items">
        {{ item.message }}
    </li>
</div>

        需要注意的是:items 是数组,item 是数组元素迭代的别名。Thymeleaf 模板引擎的语法和这个十分的相似!

        在控制台输入 vm.items.push({code:'789',message: 'C'}) ,尝试追加一条数据,你会发现浏览器中显示的内容会增加一条内容。

<body>
  <div id="app">
    <li v-for="item in items">
      {{item.message}}
    </li>

  </div>
  <div id="app2">
    <li v-for="(item,index) in items">
      我的序号是:{{index}},信息是:{{item.message}}
    </li>

  </div>
  <script src="https://cdn.jsdelivr.net/npm/vue@2/dist/vue.min.js"></script>
  <script>
    var vm = new Vue({
      el: "#app",
      data: {
        items:[
          {code:'123',message:'A'},
          {code:'456',message:'B'},
        ]
      }
    })
    var vm2 = new Vue({
      el: "#app2",
      data: {
        items:[
          {code:'123',message:'A'},
          {code:'456',message:'B'},
        ]
      }
    })

  </script>
</body>

2.4 v-on

        v-on 标签的作用是监听事件,它包括 Vue 中的事件和前端页面本身的一些事件!我们这里 clickvue 的事件,还可以绑定到 Vue 中的 methods 中的方法事件。

<body>
  <div id="app">
    <!--
        在这里我们使用了 v-on 绑定了 click 事件
        并指定了名为 sayHi 的方法
    -->
    <button v-on:click="sayHi">点我</button>
    <!-- v-on 指令的简写形式 @ -->
    <button @click="sayHi">点我</button>
  </div>
  <script src="https://cdn.jsdelivr.net/npm/vue@2.5.21/dist/vue.js">
  </script>
  <script>
    var vm = new Vue({
      el: '#app',
      data: {
        message: 'Hello World'
      },
      // 方法必须定义在 Vue 实例的 methods 对象中
      methods: {
        sayHi: function (event) {
          // `this` 在方法里指向当前 Vue 实例
          alert(this.message);
        }
      }
    });
  </script>
</body>

2.5、v-model

        v-model 是双向数据绑定标签,Vue.js 是一个 MVVM 框架,即数据双向绑定,即当数据发生变化的时候,视图也就发生变化,当视图发生变化的时候,数据也会跟着同步变化。这也算是 Vue.js 的精髓之处了。

        值得注意的是,我们所说的数据双向绑定,一定是对于 UI 控件来说的,非 UI 控件不会涉及到数据双向绑定。对于我们处理表单,Vue.js 的双向数据绑定用起来就特别舒服了。

        你可以用 v-model 指令在表单 < input>< textarea> < select> 元元素上创建双向数据绑定。它会根据控件类型自动选取正确的方法来更新元素。尽管有些神奇,但 v-model 本质上不过是语法糖。它负责监听用户的输入事件以更新数据,并对一些极端场景进行一些特殊处理。

2.5.1 文本框

<body>
  <div id="app">
    <!-- v-bind:value只能进行单向的数据渲染 -->
    <input type="text" v-bind:value="searchMap.keyWord">

    <!-- v-model 可以进行双向的数据绑定 -->
    <input type="text" v-model="searchMap.keyWord">

    <p>您要查询的是:{{searchMap.keyWord}}</p>
  </div>
  <script src="https://cdn.jsdelivr.net/npm/vue@2.5.21/dist/vue.js">
  </script>
  <script>
    new Vue({
      el: '#app',
      data: {
        searchMap:{
          keyWord: 'xiehongfa'
        }
      }
    })
  </script>
</body>

2.5.2 单复选框

<body>
  <div id="app">
    单复选框:
    <input type="checkbox" id="checkbox" v-model="checked">
    &nbsp;&nbsp;
    <label for="checkbox">{{ checked }}</label>
  </div>
  <script src="https://cdn.jsdelivr.net/npm/vue@2.5.21/dist/vue.js">
  </script>
  <script>
    new Vue({
      el: '#app',
      data: {
        checked: false
      }
    })
  </script>
</body>

2.5.3 多复选框

<body>
  <div id="app4" >
    <input type="checkbox" value="打篮球" v-model="interest">打篮球
    <input type="checkbox" value="踢足球" v-model="interest">打篮球
    <input type="checkbox" value="唱" v-model="interest">唱
    <input type="checkbox" value="跳" v-model="interest">跳
  
    </br>
    你的兴趣爱好为:{{interest}}
  </div>
  <script src="https://cdn.jsdelivr.net/npm/vue@2/dist/vue.min.js"></script>
  <script>
    var vm4 = new Vue({
      el: "#app4",
      data: {
        interest:["唱"]
      }
    })
  </script>
</body>

2.5.4 单选按钮

<body>
  <div id="app3">
    <input type="radio" value="男" v-model="name">男
    <input type="radio" value="女" v-model="name">女
    你的选择为:{{name}}
  </div>
 
  <script src="https://cdn.jsdelivr.net/npm/vue@2/dist/vue.min.js"></script>
  <script>
    var vm3 = new Vue({
      el: "#app3",
      data: {
        name:""
      }
    });
  </script>
</body>

2.5.5 下拉框

<body>
  <div id="app5">
    <span>爱好</span>
    <select v-model="interest">
      <option value="" disabled>请选择</option>
      <option>打篮球</option>
      <option>踢足球</option>
      <option>乒乓球</option>
    </select>
    你的兴趣爱好为:{{interest}}
  </div>
  <script src="https://cdn.jsdelivr.net/npm/vue@2.5.21/dist/vue.js">
  </script>
  <script>
    var vm5 = new Vue({
      el: "#app5",
      data: {
        interest:""
      }
    })
  </script>
</body>

        注意:如果 v-model 表达式的初始值未能匹配任何选项,< select> 元素将被渲染为 “未选中” 状态。在 iOS 中,这会使用户无法选择第一个选项。因为这样的情况下,iOS 不会触发 change 事件。因此,更推荐像上面这样提供一个值为空的禁用选项。

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

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

相关文章

ChatGPT安全技术

前言 近期&#xff0c;Twitter 博主 lauriewired 声称他发现了一种新的 ChatGPT"越狱"技术&#xff0c;可以绕过 OpenAI 的审查过滤系统&#xff0c;让 ChatGPT 干坏事&#xff0c;如生成勒索软件、键盘记录器等恶意软件。 他利用了人脑的一种"Typoglycemia&q…

Github Pages自定义域名

Github Pages自定义域名 当你想在网上发布内容时&#xff0c;配置Github Pages是一个很好的选择。如果你想要在自己的域名上发布&#xff0c;你可以使用Github Pages来创建自己的网站。本文将介绍如何使用Github Pages自定义域名。 这里呢先列出前置条件&#xff1a; 您的Gi…

【二进制安全】堆漏洞:Double Free原理

参考&#xff1a;https://www.anquanke.com/post/id/241598 次要参考&#xff1a;https://xz.aliyun.com/t/6342 malloc_chunk 的源码如下&#xff1a; struct malloc_chunk { INTERNAL_SIZE_T prev_size; /*前一个chunk的大小*/ INTERNAL_SIZE_T size; /*当前chunk的…

偶数科技亮相第十届中国中小企业投融资交易会

第十届中国中小企业投融资交易会暨2023“小企业 大梦想”高峰论坛近日在北京举办。本届大会以“金融活水精准滴灌 专精特新体制增量”为主题&#xff0c;通过展览展示、论坛活动、项目路演、产融对接等形式&#xff0c;搭建了专精特新企业与金融机构之间、与地方政府之间的产融…

深入理解CountDownLatch计数器

入理解CountDownLatch计数器 其他知识点 Java 多线程基础 深入理解aqs ReentrantLock用法详解 深入理解信号量Semaphore 深入理解并发三大特性 并发编程之深入理解CAS 深入理解CountDownLatch Java 线程池 使用用法 CountDownLatch用法详解 CountDownLatch实现原理 下面例子来…

vscode 前端开发插件 2023

自己记录 安装vscode后必装插件 chinesegit 必装没啥可说 随时更新 1.CSS Navigation CTRL点击类名可跳转到对应样式位置。 如果是scss less的话。css peak插件无法生效 2.GitLens — Git supercharged 可以看到每一行的git提交记录。 3.Auto Rename Tag 可以同步更新…

阿里云服务器上通过宝塔面板部署SpringBoot+vue项目并添加ssl证书实现https加密传输

前言&#xff1a;如果只想要实现域名访问&#xff0c;不必添加ssl证书的话可以看我上一篇文章前期工作&#xff1a; 一台服务器一个已经备案的域名&#xff08;需要大概一周才能备案完成&#xff0c;可提前准备&#xff09;域名映射到服务器申请两份ssl证书(我的方案:阿里云腾…

Xilinx A7开发板LVDS IO无输出问题解决方法

使用A7-35T FGG484的FPGA开发板bank16上的IO作为差分LVDS的输入输出&#xff0c;搭建输入输出测试工程发现LVDS可以输入、无法输出。查阅UG471&#xff0c;找到如下信息&#xff1a; 手册中已经针对A7的LVDS做了明确的应用说明&#xff1a; &#xff08;1&#xff09;HP bank上…

通向架构师的道路之apache性能调优

一、总结前一天的学习 在前两天的学习中我们知道、了解并掌握了Web Server结合App Server实现单向Https的这样的一个架构。这个架构是一个非常基础的J2ee工程上线布署时的一种架构。在前两天的教程中&#xff0c;还讲述了Http服务 器、App Server的最基本安全配置&#xff08;…

PDM系统有什么好处之数据高效管理

在当今信息化时代&#xff0c;企业面对海量的产品数据和信息&#xff0c;如何高效地管理这些数据成为了关键问题。而PDM系统&#xff08;Product Data Management&#xff0c;产品数据管理&#xff09;以其强大的数据高效管理功能&#xff0c;为企业带来了诸多好处。我们以最新…

使用DeferredResult来设计异步接口

文章目录 DeferredResult 介绍思路Demo搭建1.定义一个抽象的请求体2.定义一个接口返回体3.定义一个接口请求体继承抽象类AsynTaskBaseRequest<T<T>>4.定义seveice类&#xff0c;并声明一个异步方法&#xff08;Async注解&#xff09;5.定义一个返回DeferredResult的…

助力618-Y的混沌实践之路 | 京东云技术团队

一、写在前面 1、混沌是什么&#xff1f; 混沌工程&#xff08;Chaos Engineering&#xff09;的概念由 Netflix 在 2010 年提出&#xff0c;通过主动向系统中引入异常状态&#xff0c;并根据系统在各种压力下的行为表现确定优化策略&#xff0c;是保障系统稳定性的新型手段。…

【简单认识rsync远程同步】

文章目录 一.rsync1、简介2.rsync应用场景3、 rsyncinotify的应用场景4、 rsynccron的应用场景 二.配置rsync备份源&#xff08;同步方式&#xff09;1.rsync同步源2.同步方式3.备份的方式 三.常用rsync命令3.配置源的两种表达 四、配置rsync实现同步1.使用ip表达式同步2.使用u…

【WebRTC---序篇】(七)RTC多人连麦方案

服务端可以选择mediasoup&#xff0c;作为SFU服务器&#xff0c;只负责转发数据 下图举例三个Client (browser或者客户端)同时加入一个房间&#xff0c;每个app同时发布一路视频和一路音频&#xff0c;并且接受来自其他app的音视频流&#xff0c;mediasoup内部的结构如下&…

Docker快速入门笔记

Docker快速入门 前言 当今软件开发领域的一股热潮正在迅速兴起&#xff0c;它融合了便捷性、灵活性和可移植性&#xff0c;让开发者们欣喜若狂。它就是 Docker&#xff01;无论你是一个初学者&#xff0c;还是一位经验丰富的开发者&#xff0c;都不能错过这个引领技术浪潮的工…

【Git】多人协作-多分支协作

文章目录 准备工作多人协作场景2-多分支协作补充&#xff1a;关于建立连接 远程分⽀删除后&#xff0c;本地依然能看到的解决办法 准备工作 在windosw环境下&#xff0c;再克隆同一个项目仓库&#xff0c;模拟一起协作开发的小伙伴 到此&#xff0c;相当于有了两个⽤⼾&#x…

344.翻转字符串+387.字符串中的第一个唯一字符

目录 一、翻转字符串 二、字符串中的第一个唯一字符 一、翻转字符串 344. 反转字符串 - 力扣&#xff08;LeetCode&#xff09; class Solution { public:void reverseString(vector<char>& s) {int start0;int end s.size()-1;while(start < end){swap(s[sta…

超详细!Jmeter性能测试

前言 性能测试是一个全栈工程师/架构师必会的技能之一&#xff0c;只有学会性能测试&#xff0c;才能根据得到的测试报告进行分析&#xff0c;找到系统性能的瓶颈所在&#xff0c;而这也是优化架构设计中重要的依据。 测试流程&#xff1a; 需求分析→环境搭建→测试计划→脚…

安装使用 StableDiffusionWebUI

安装使用 StableDiffusionWebUI 1 什么是 StableDiffusionWebUI2 如何完美运行 StableDiffusionWebUI 1 什么是 StableDiffusionWebUI StableDiffusion 并不是一个真正意义上的软件&#xff0c;它是由 Github 上一位叫 automatic1111 的开发者将 StableDiffusion 的源代码做了一…

Go语言入门:从零开始的快速指南(一)

文章目录 引言Go语言的诞生背景Go 语言的特性安装Go语言环境集成开发环境安装第一个Go程序Go 源代码的特征解读 引言 Go语言&#xff08;也称为Golang&#xff09;是一种开源的、静态类型的编程语言&#xff0c;由Google开发。它的设计目标是简单、高效、安全、并且易于学习和…