Vue 介绍与体验

news2024/9/20 5:55:33

目录

  • Vue 介绍与体验
  • vue 简介
    • vue 概念
    • vue 特性
      • 数据驱动视图
      • 双向数据绑定
    • MVC和MVVM模型
    • vue 版本
  • Vue的 options
    • data属性
    • methods属性
  • Vue 的基本使用
    • Vue 安装与使用
    • Vue2 安装与使用(可选)
  • Vue 的调试工具

Vue 介绍与体验

vue 简介

Sum:

概念:Vue是一套用于构建 用户界面 的 渐进式前端框架。

  • 理解与表达:

    从两个角度解读,

    构建用户界面:通过指令、数据驱动视图、事件绑定等方式构建用户界面

    前端框架:提供一整套构建用户界面的解决方案,包括vue、vue-router、vuex、组件库等

    渐进式概念:可以先针对项目某个模块先用Vue开发,然后再逐步用Vue去开发更多模块。

vue 特性:主要体现在两方面:① 数据驱动视图 ② 双向数据绑定

vue 模型:MVVM

  • 理解与表达:

    vue的特性是数据驱动视图和双向数据绑定,其中MVVM是vue实现二者的核心原理,它把每个HTML页面都拆分成了View、ViewModel、Model三个部分,其中View 表示当前页面所渲染的 DOM 结构。Model 表示当前页面渲染时所依赖的数据源。ViewModel 表示 vue 的实例,它是 MVVM 的核心。

    ViewModel 作为 MVVM 的核心,是它把当前页面的数据源(Model)和页面的结构(View)连接在了一起。

    Untitled

    当数据源发生变化时,会被 ViewModel 监听到,VM 会根据最新的数据源自动更新页面的结构

    当表单元素的值发生变化时,也会被 VM 监听到,VM 会把变化过后最新的值自动同步到 Model 数据源中

  • 理解与表达:




vue 概念

官方概念:Vue (读音 /vjuː/,类似于 view) 是一套 构建用户界面渐进式 框架

关键词1:构建用户界面

概念:基于数据动态渲染页面

关键词2:框架

概念:一整套的项目解决方案,提升开发效率

Vue提供了构建用户界面的一整套解决方案(俗称 vue 全家桶):

  • vue(核心库)
  • vue-router(路由方案)
  • vuex(状态管理方案)
  • vue 组件库(快速搭建页面 UI 效果的方案)

以及辅助 vue 项目开发的一系列工具:

  • vue-cli(npm 全局包:一键生成工程化的 vue 项目 - 基于 webpack、大而全)
  • vite(npm 全局包:一键生成工程化的 vue 项目 - 小而巧)
  • vue-devtools(浏览器插件:辅助调试的工具)
  • vetur(vscode 插件:提供语法高亮和智能提示)

提到框架,不得不提一下库。

  • 库,类似工具箱,是一堆方法的集合,比如 axios、lodash、echarts等
  • 框架,是一套完整的解决方案,实现了大部分功能,我们只需要按照一定的规则去编码即可。

关键词:渐进式

概念:可以先针对项目某个模块先用Vue开发,然后再逐步用Vue去开发更多模块。

Vue的两种开发方式:

  1. Vue核心包开发场景:局部模块改造
  2. Vue核心包&Vue插件&工程化场景:整站开发

Untitled



vue 特性

vue 框架的特性,主要体现在两方面:① 数据驱动视图 ② 双向数据绑定

数据驱动视图

页面中如果使用 Vue,Vue 会监听数据的变化,从而自动重新渲染页面的结构。示意图如下:

image.png

好处:当页面数据发生变化时,页面会自动重新渲染!

注意:数据驱动视图是单向的数据绑定。


双向数据绑定

在填写表单时,双向数据绑定可以辅助开发者在不操作 DOM 的前提下,自动把用户填写的内容同步到数据源中。示意图如下:

image.png

好处:开发者不再需要手动操作 DOM 元素,来获取表单元素最新的值!



MVC和MVVM模型

MVC和MVVM都是一种软件的体系结构

概念:MVC是Model – View –Controller的简称,是在前期流行的框架架构模式,比如iOS、前端;

比如 Controller 从 Server 获取数据,然后传递给 Model,Model 将渲染后的结果传递给 Control,最后渲染到 View上

image.png

前端的MVC:比如我们就可以把 Html 看作 View,JS看作 Controller,然后通过 JS 从服务器获取数据,交给 Model,最后 Model 将渲染后的结果传递给 Control,最后渲染到 View上

image.png


MVVM是Model-View-ViewModel的简称,是目前非常流行的架构模式;

概念:MVVM 是 vue 实现数据驱动视图和双向数据绑定的核心原理。以下是对关键概念的理解:

  • Model 表示当前页面渲染时所依赖的数据源。
  • View 表示当前页面所渲染的 DOM 结构。
  • ViewModel 表示 vue 的实例,它是 MVVM 的核心。

它把每个 HTML 页面都拆分成了如下三个部分:

image.png

MVVM 的工作原理:

ViewModel 作为 MVVM 的核心,是它把当前页面的数据源(Model)和页面的结构(View)连接在了一起。

Untitled

当数据源发生变化时,会被 ViewModel 监听到,VM 会根据最新的数据源自动更新页面的结构

当表单元素的值发生变化时,也会被 VM 监听到,VM 会把变化过后最新的值自动同步到 Model 数据源中

结合计数器案例理解:

image.png

vue 版本

当前,vue 共有 3 个大版本,其中:

2.x 版本的 vue 是目前企业级项目开发中的主流版本

3.x 版本的 vue 于 2020-09-19 发布,生态还不完善,尚未在企业级项目开发中普及和推广

1.x 版本的 vue 几乎被淘汰,不再建议学习与使用

vue3.x 和 vue2.x 版本的对比:

vue2.x 中绝大多数的 API 与特性,在 vue3.x 中同样支持。同时,vue3.x 中还新增了 3.x 所特有的功能、并废弃了某些 2.x 中的旧功能:

新增的功能例如:

组合式 API、多根节点组件、更好的 TypeScript 支持等

废弃的旧功能如下:

过滤器、不再支持 o n , on, onoff 和 $once 实例方法等

详细的变更信息,请参考官方文档给出的迁移指南:

https://v3.vuejs.org/guide/migration/introduction.html





Vue的 options

data属性

data属性是传入一个函数,并且该函数需要返回一个对象:

在Vue2.x的时候,也可以传入一个对象(虽然官方推荐是一个函数);

在Vue3.x的时候,必须传入一个函数,否则就会直接在浏览器中报错;

基本原理:

data中返回的对象会被Vue的响应式系统劫持,之后对该对象的修改或者访问都会在劫持中被处理:

所以我们在template或者app中通过 {{counter}} 访问counter,可以从对象中获取到数据;

所以我们修改counter的值时,app中的 {{counter}}也会发生改变;

具体这种响应式的原理,我们后面会有专门的篇幅来讲解。

Code:

  • 基础

    <html lang="en">
    <head>
      <meta charset="UTF-8">
      <meta http-equiv="X-UA-Compatible" content="IE=edge">
      <meta name="viewport" content="width=device-width, initial-scale=1.0">
      <title>Document</title>
    </head>
    <body>
    
      <div id="app">
        <h2>{{message}}</h2>
        <button @click="changeMessage">改变message</button>
      </div>
      
      <script src="./lib/vue.js"></script>
      <script>
        const app = Vue.createApp({
          // data: option api
          data: function() {
            return {
              message: "Hello Data"
            }
          },
          // methods: option api
          methods: {
            changeMessage: function() {
              this.message = "你好, 师姐!"
            }
          }
        })
    
        app.mount("#app")
      </script>
    </body>
    </html>
    


methods属性

methods属性是一个对象,通常我们会在这个对象中定义很多的方法:

这些方法可以被绑定到 模板中;

在该方法中,我们可以使用this关键字来直接访问到data中返回的对象的属性;

对于有经验的同学,在这里我提一个问题,官方文档有这么一段描述:

问题一:为什么不能使用箭头函数(官方文档有给出解释)?

问题二:不使用箭头函数的情况下,this到底指向的是什么?(可以作为一道面试题)

Res:
箭头函数的this是绑定到上层作用域的this上。比如,如下箭头函数的this就相当于全局作用域的this,指向 window。因此,methods中定义方法不能使用箭头函数。

在这里插入图片描述

  • Code:

    <html lang="en">
    <head>
      <meta charset="UTF-8">
      <meta http-equiv="X-UA-Compatible" content="IE=edge">
      <meta name="viewport" content="width=device-width, initial-scale=1.0">
      <title>Document</title>
    </head>
    <body>
      
      <div id="app">
        <h2>当前计数: {{counter}}</h2>
        <button @click="increment">+1</button>
      </div>
    
      <script src="./lib/vue.js"></script>
      <script>
    
        console.log(this)
    
        const app = Vue.createApp({
          data: function() {
            return {
              counter: 0
            }
          },
    
          // methods: option api
          methods: {
            increment: function() {
              this.counter++
            },
            // 强调: methods中函数不能写成箭头函数
            // increment: () => {
            //   console.log(this)
            // }
          }
        })
    
        app.mount("#app")
      </script>
    </body>
    </html>
    



Vue 的基本使用

Vue 安装与使用

方式一:在页面中通过CDN的方式来引入;

<script src="https://unpkg.com/vue@next"></script>

Case:

<!DOCTYPE html>
<html lang="en">
<head>
  <meta charset="UTF-8">
  <meta name="viewport" content="width=device-width, initial-scale=1.0">
  <title>Document</title>
</head>
<body>
  <div id="app"></div>
  <script src="https://unpkg.com/vue@next"></script>
  <script>
    const app = Vue.createApp({
      template: `<h2>Hello World</h2>`
    })
    app.mount("#app")
  </script>
</body>
</html>

方式二:下载Vue的JavaScript文件,并且自己手动引入;

<html lang="en">
<head>
  <meta charset="UTF-8">
  <meta http-equiv="X-UA-Compatible" content="IE=edge">
  <meta name="viewport" content="width=device-width, initial-scale=1.0">
  <title>Document</title>
</head>
<body>

  <div id="app"></div>
  
  <script src="./lib/vue.js"></script>
  <script>
    
    // 1.创建app
    const app = Vue.createApp({
      template: `<h1>Hello Vue</h1>`
    })

    // 2.挂载app
    app.mount("#app")

  </script>

</body>
</html>

方式三:通过npm包管理工具安装使用它(webpack笔记里);


方式四:直接通过Vue CLI创建项目,并且使用它;



Vue2 安装与使用(可选)

基本使用步骤

  1. 引包(官网) — 开发版本/生产版本
  2. 创建Vue实例 new Vue()
  3. 指定配置项,渲染数据
    1. el:指定挂载点
    2. data提供数据

官网引包(直接用):

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

注意:开发版本包含完整的警告和调试模式;生产版本删除了警告,体积更小。

案例

<!DOCTYPE html>
<html lang="en">
<head>
  <meta charset="UTF-8">
  <meta http-equiv="X-UA-Compatible" content="IE=edge">
  <meta name="viewport" content="width=device-width, initial-scale=1.0">
  <title>Document</title>
</head>
<body>
<!-- 1-Vue所管理的范围 -->
<div id="app">
  <!-- 这里将来会编写一些用于渲染的代码逻辑 -->
  <h1>{{ msg }}</h1>
  <a href="#">{{ count }}</a>
</div>

<!-- 2-引入的是开发版本包 - 包含完整的注释和警告 -->
<script src="https://cdn.jsdelivr.net/npm/vue@2.7.14/dist/vue.js"></script>

<script>
  // 一旦引入 VueJS核心包,在全局环境,就有了 Vue 构造函数
  const app = new Vue({
    // 通过 el 配置选择器,指定 Vue 管理的是哪个盒子
    el: '#app',
    // 通过 data 提供数据
    data: {
      msg: 'Hello 传智播客',
      count: 666
    }
  })

</script>

  
</body>
</html>

Vue2网址:https://v2.cn.vuejs.org/




Vue 的调试工具

安装 vue-devtools 调试工具:

vue 官方提供的 vue-devtools 调试工具,能够方便开发者对 vue 项目进行调试与开发。

Chrome 浏览器在线安装 vue-devtools

vue 2.x 调试工具:
https://chrome.google.com/webstore/detail/vuejs-devtools/nhdogjmejiglipccpnnnanhbledajbpd

vue 3.x 调试工具:
https://chrome.google.com/webstore/detail/vuejs-devtools/ljjemllljcmogpfapbkkighbhhppjdbg

注意:vue2 和 vue3 的浏览器调试工具不能交叉使用

配置 Chrome 浏览器中的 vue-devtools:

点击 Chrome 浏览器右上角的 按钮,选择更多工具 -> 扩展程序 -> Vue.js devtools 详细信息,并勾选如下的两个选项:

image.png

注意:修改完配置项,须重启浏览器才能生效!

使用 vue-devtools 调试 vue 页面:

在浏览器中访问一个使用了 vue 的页面,打开浏览器的开发者工具,切换到 Vue 面板,即可使用 vue-devtools调试当前的页面。

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

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

相关文章

PI电动位移平台简明教程

该文章仅供参考&#xff0c;编写人不对任何实验设备、人员及测量结果负责&#xff01;&#xff01;&#xff01; 0 引言 文章主要介绍PI位移台的硬件连接、软件配置以及软件控制。文章中提到的内容在产品手册中都有说明&#xff0c;强烈建议在操作前通读产品手册&#xff0c;…

【Qt】Qt界面美化 | QSS

文章目录 QSS概述QSS 设置方式1. 指定控件设置样式2. 全局样式设置3. 样式的层叠4. 从文件加载样式表5. 使用 Qt Designer 编辑样式 选择器选择器概述1. 类选择器2. ID选择器3. 子控件选择器(Sub-Controls)4. 伪类选择器(Pseudo-States) 样式属性盒子模型(Box Model) 控件样式实…

YOLOv5改进 | 模块缝合 | C3 融合RFAConv和CBAM注意力机制 【二次融合 小白必备】

秋招面试专栏推荐 &#xff1a;深度学习算法工程师面试问题总结【百面算法工程师】——点击即可跳转 &#x1f4a1;&#x1f4a1;&#x1f4a1;本专栏所有程序均经过测试&#xff0c;可成功执行&#x1f4a1;&#x1f4a1;&#x1f4a1; 专栏目录 &#xff1a;《YOLOv5入门 改…

系统设计文档示例

设计文档示例 文章目录 设计文档示例一、整体架构二、业务或功能-模块设计2.1、需求说明2.2、交互流程2.3、页面设计2.4、功能实现逻辑2.4.1 API设计2.4.2 DB设计 三、 配置说明四、开发示例 一、整体架构 系统架构图简要说明部署架构图简要说明功能模块图简要说明技术架构:前…

智汇云舟在京举办2024视频孪生产品发布会

9月6日&#xff0c;由北京智汇云舟科技有限公司&#xff08;以下简称“智汇云舟”&#xff09;主办的“智算时空 重塑视界”2024视频孪生产品发布会在北京举行。此次活动汇聚了来自科技界的众多精英、合作伙伴及行业媒体&#xff0c;共同见证了视频孪生技术的最新成果与未来展望…

discuz论坛3.4 截图粘贴图片发帖后显示不正常问题

处理方法 source\function 路径下修改function_discuzcode.php function bbcodeurl($url, $tags) 函数 if(!in_array(strtolower(substr($url, 0, 6)), array(http:/, https:, ftp://, rtsp:/, mms://,data:i) 这一句里增加 data:i 即可 function bbcodeurl($url,…

【Java-反射】

什么是反射&#xff1f; JAVA反射机制是在运行状态中&#xff0c;创建任意一个类&#xff0c;能获取这个类的所有属性和方法&#xff1b;对于任意一个对象&#xff0c;都能够调用它的任意一个方法和属性&#xff1b;这种动态获取的信息以及动态调用对象的方法的功能称为java语言…

对云原生架构的理解和思考

云原生到底是什么&#xff1f; 现在大家都在讨论云原生&#xff0c;那么什么是云原生呢&#xff1f;顾名思义云原生便是云上生长出来的东西&#xff0c;用软件开发者的语言来说&#xff1a;就是用云计算的特性来构建、部署和管理应用程序。 说到云原生就不得不说下云计算&…

共享WIFI扫码率低怎么办?做好这些就够了!

随着共享WIFI贴的市场需求和收益空间不断展现&#xff0c;越来越多的人都开始计划加入共享WIFI贴dai li 商的行列之中&#xff0c;以借此成就一番事业。不过&#xff0c;由于不少入局者都在落地过程中遭遇了共享WIFI贴扫码率很低的问题&#xff0c;使得很多人都因害怕步入他们的…

《数字图像处理(面向新工科的电工电子信息基础课程系列教材)》P2

Old 目标检测原来只是定位目标的位置&#xff0c;给出bounding box&#xff0c;现在的目标检测是包括定位和识别的多任务学习。深度学习改变了很多。 每一轮备课都会发现问题&#xff0c;并完善。 New Give the analogy of the character recognition system. 禹晶、肖创柏…

使用Java增删改查数据库

文章目录 前言一、PrepareStatement类是什么&#xff1f;二、实操展示 1.增2.删3.改4.查总结 前言 既然连接数据库都可以通过java语言实现&#xff0c;那么通过java语言对数据库进行增删改查的操作自然是顺理成章的事情了。 一、PrepareStatement类是什么&#xff1f; PrepareS…

基于人工智能的个性化学习推荐系统

目录 引言项目背景环境准备 硬件要求软件安装与配置系统设计 系统架构关键技术代码示例 数据采集与预处理模型训练与推荐实时个性化推荐应用场景结论 1. 引言 个性化学习推荐系统通过人工智能技术&#xff0c;能够根据学习者的学习习惯、兴趣和能力水平&#xff0c;提供最适…

助力企业申报“合肥市首版次高端软件”,安畅提供第三方检测服务

一、合肥市发布首版次软件评定通知 9月4日&#xff0c;合肥市工业和信息化局为开展2024年合肥市首台套重大技术装备首批次新材料首版次软件申报评定工作&#xff0c;发布了《关于开展2024年合肥市首台套重大技术装备首批次新材料首版次软件申报评定工作的通知》。 《通知》对…

如何选择一款合适的高压功率放大器?

带宽&#xff1a;通常厂家放大器带宽都是以正弦波来定义的&#xff0c;例如功率放大器100KHz &#xff0c;指的是正弦波信号&#xff0c;可以达到的最高频率&#xff0c;而不是方波或者三角波&#xff0c;这些波形由于其高次谐波的影响&#xff0c;不能达到&#xff0c;通常厂家…

飞速(FS)数据中心布线系统线缆颜色编码管理解决方案

有效的数据中心布线管理对于实现高性能和高效率至关重要。然而&#xff0c;要实现有效布线管理存在一些挑战&#xff0c;包括单调的配色方案、复杂的区域布线和多样化的线缆杂乱。数据中心布线管理需要战略性的线缆颜色编码解决方案。本文探讨了数据中心布线管理面临的挑战&…

1、技术选型与前期准备

注意事项&#xff1a;框架选型尽量不要选择最新的框架&#xff0c;选择最新框架半年前左右的稳定版。 框架 旧版本 新版本 Hadoop 3.1.3 3.3.4 Zookeeper 3.5.7 3.7.1 MySQL 5.7.16 8.0.31 Hive 3.1.2 3.1.3(修改源码) Flume 1.9.0 1.10.1 Kafka 3.0.0 3.3…

新办建筑智能化专项乙级设计资质,郑州企业需要达到哪些要求?

新办建筑智能化专项乙级设计资质&#xff0c;郑州企业需要达到以下要求&#xff1a; 一、企业基本条件 法人资格&#xff1a; 申请企业必须具有独立法人资格&#xff0c;能够在郑州地区合法经营。注册资本&#xff1a; 企业的注册资本需达到规定标准&#xff0c;通常要求不低于…

WebGIS二维基础,地图开发必修框架:Canvas

项目名称&#xff1a;WebGIS二维基础,地图开发必修框架&#xff1a;Canvas 内容包含&#xff1a; 为什么要学习canvas 初识canvas 绘制描边图形 绘制圆 绘制笑脸 绘制异形曲线 线型的绘制 canvas绘制一个会转的时钟 获取方式&#xff1a;厚苔私[canvas]

Accelerated Soft Error Testing 介绍

加速软错误测试(Accelerated Soft Error Testing, ASET)是一种评估半导体器件或集成电路(ICs)在高辐射环境中发生软错误率(Soft Error Rate, SER)的方法。这种测试方法通过模拟或加速软错误的发生,以便在较短时间内评估器件的可靠性。软错误指的是那些不会对硬件本身造成…

故障排查:VMware虚拟机网络冲突,导致VPN网络无法正常访问

故障现象 某台windows10系统电脑&#xff0c;远程拨号SSL VPN后&#xff0c;无法正常公司内网。通过排查&#xff0c;发现重启开机&#xff0c;操作系统的默认路由多了一条公司内网的默认路由&#xff0c;但网关不正确。手动删除&#xff0c;重启系统又恢复原样。 排查过程 c…