【Vue】初识Vue(一)

🚗Vue学习·扬帆起航~
🚩本文已收录至专栏:Vue框架
👍由于Vue2与Vue3存在许多相似之处,先开始Vue2学习再进阶到Vue3

我们知道技术的兴起与流行一般都是为了帮助我们解决一类问题使得我们开发体验更加舒适,那么什么是Vue呢?它对我们开发有什么好处?或者说帮我们解决了哪些痛点?

一.什么是Vue

官方给出的定义是:一套用于构建用户界面渐进式JavaScript框架。

划重点:

  • 构建用户界面 => 帮助我们将获取到的数据转变成用户所看到的界面。
    在这里插入图片描述

  • 渐进式 => 如果我们要在项目中简单的使用Vue可以只引入一个小体量的核心库。而要想在项目中复杂使用也可以引入各种各样的Vue插件丰富功能,它可以适应我们的不同需求。
    在这里插入图片描述

二.Vue的特点

  • 采用组件化模式,提高代码复用率且让代码更好维护。
    在这里插入图片描述

对于可能在许多界面中会同时会使用到的部分,我们常常需要大幅度的使用CV大法,这极易导致一些错误产生,当发生变动需要修改时工作也比较繁琐。而我们使用组件化的模式去写,可将一些容易发生替换更改的功能封装为一个.vue文件,我们可以在文件中同时写html,css,js。当我们想在不同的地方使用这部分功能时可以直接将.vue文件引入即可,当我们想修改时,只需要修改.vue文件即可在所有使用的地方生效且不会影响其他组件。

  • 声明式编码,让编程人员无需直接操作DOM,提高开发效率。
    在这里插入图片描述

当我们使用原生js将获取到的数据渲染到界面时,需要一步步的处理拼接数据(命令式编码),最后通过DOM操作将数据渲染到界面,而我们使用Vue的声明式编码则可以大幅度的简化这个过程,并且开发体验更好。

  • 使用虚拟DOM+优秀的Diff算法,尽量复用DOM节点。
    在这里插入图片描述

当我们渲染的数据经常发生变化时,更新视图需要频繁的大幅度销毁与渲染DOM,这对于只进行小幅度数据改变的操作可能会导致大量性能损耗。如果我们只改动发生变化的部分是不是会好很多?Vue便很好的帮我们实现了这一过程。
在这里插入图片描述

Vue在将数据转为页面DOM之前会在内存中标识DOM(虚拟DOM),当我们数据发生更改时,它会将我们的新数据与旧数据通过生成的虚拟DOM进行比对,从而复用页面之前已经存在的DOM,只渲染我们发生改变的新数据。

三.MVVM模型

虽然没有完全遵循 MVVM 模型,但是 Vue 的设计也受到了它的启发。由此我们可以了解一下以便更好的学习Vue。

Vue结构分别对应着这三部分:

  • M:模型(Model) :对应Vue实例data中的数据

  • V:视图(View) :模板,也就是页面结构

  • VM:视图模型(ViewModel) :Vue实例对象
    在这里插入图片描述

对应到代码中也就是:
在这里插入图片描述

Vue作为ViewModel可以帮助我们把一堆数据与Dom结构进行连接,当数据发生变化时,自动更新到视图中。

四.开发环境搭建

(1) 下载与引入

我们可以在官方下载Vue的开发版本来学习使用。
在这里插入图片描述

将其放到项目目录下再使用script标签引入即可
在这里插入图片描述

(2) 开发工具

此外在学习期间安装使用Vue给我提供的浏览器插件辅助开发将给我们带来极大的便利。
在这里插入图片描述

五.入门案例

(1) 初体验

我们通过如下几个步骤来完成入门案例以学习Vue的使用:

  1. 引入Vue -> Vue都没引入项目又怎么使用它呢?
  2. 准备好一个容器(html元素)-> 我们得准备好一个容器存放Vue构建出来的界面,不然它哪知道放哪?
  3. 创建一个Vue实例 -> 不然你怎么使用Vue呢?
  4. 绑定容器 -> 我们总得告诉Vue容器是哪个呀,不然它怎么找的到
  5. 在实例中制造一些数据供界面使用
  6. 在界面中渲染数据
<!DOCTYPE html>
<html lang="ZH-CN">
<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>
  <!-- 1. 在项目中引入下载的Vue -->
  <script src="./js/vue.js"></script>
</head>
<body>
    
  <!-- 2. 准备并指定(id)一个容器 -->
  <div id="root">
    <!-- 6. 使用Vue语法渲染数据 -->
    <h1>My name is:{{name}}</h1>
    <h1>My sex is:{{sex}}</h1>
  </div>
    
  <script type="text/javascript">
    // 3. 创建Vue实例
    new Vue({
      // 4. 绑定到容器,另一种方式见文末
      el: '#root', // el通常用于指定当前Vue实例为哪个容器服务,值通常为css选择器
      // 5. 编写数据,另一种方式见文末
      data: { // data 中用于存储数据,数据供el《《所指定的》》容器去使用
        name: '观止666',
        sex: '男'
      },
    })
  </script>
</body>
</html>

在浏览器中访问我们可以看到渲染的界面,
在这里插入图片描述

注意有个大坑:要是实例中所有属性值都是中文数据会卡住点不了devtools里的Root。

通过上述案例,我们了解到:

  • 想让Vue工作,就必须创建一个Vue实例,且要传入一个配置对象
  • root容器里的代码依然符合html规范,只不过混入了一些特殊的Vue语法
  • root容器里的代码被称为【Vue模板】

(2) 注意事项

(2.1) 1对1绑定容器

一个Vue实例只能接管一个容器,如果需要处理多个容器,可以创建多个实例分别指定。

// 第一个容器
<div id="demo1"></div>
// 第二个容器
<div id="demo2"></div>

<script type="text/javascript" >
// 绑定第一个容器
new Vue({
    el:'#demo1'
})
// 绑定第二个容器
new Vue({
	el:'#demo2'
})
</script>

(2.2) el与data两种写法

el:

// 方式一:
//  创建并直接挂载Vue实例
     new Vue({
      el: '#root',
      data:{
          sex: '男',
          name: '观止666'
      },
    })

// 方式二:
// 1. 创建并接收Vue实例
    const vm = new Vue({
      // el: '#root',
      data() {
        return {
          sex: '男',
          name: '观止666'
        }
      },
    })
   // 2.通过其原型对象上的方法挂载到对应的容器上
    vm.$mount('#root')

data:

// 方式一:对象式
new Vue({
      el: '#root',
      data:{
          sex: '男',
          name: '观止666'
      },
    })


// 方式二: 函数式
new Vue({
      el: '#root',
      data() {
        return {
          sex: '男',
          name: '观止666'
        }
      },
    })

目前我们使用哪种写法都行,当需要使用组件时,data则必须使用函数式,否则会报错。

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

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

相关文章

C++之多态

文章目录前言一、多态的概念二、多态的定义及实现1.多态的构成条件2.虚函数3.虚函数的重写&#xff08;覆盖&#xff09;4.虚函数重写的两个例外4.C11中的override和final关键字三、重载、重定义&#xff08;隐藏&#xff09;、重写&#xff08;覆盖&#xff09;的区分四、抽象…

【美赛】2023年ICM问题Z:奥运会的未来(思路、代码)

&#x1f4a5;&#x1f4a5;&#x1f49e;&#x1f49e;欢迎来到本博客❤️❤️&#x1f4a5;&#x1f4a5; &#x1f3c6;博主优势&#xff1a;&#x1f31e;&#x1f31e;&#x1f31e;博客内容尽量做到思维缜密&#xff0c;逻辑清晰&#xff0c;为了方便读者。 ⛳️座右铭&a…

【面试】MySQL面试题

文章目录数据库基础知识为什么要使用数据库什么是SQL&#xff1f;什么是MySQL?MySql, Oracle&#xff0c;Sql Service的区别数据库三大范式是什么mysql有关权限的表都有哪几个MySQL的binlog有有几种录入格式&#xff1f;分别有什么区别&#xff1f;数据库经常使用的函数数据类…

C++设置动态库的版本号(软链接)

1,动态库版本命名规则 假设有一个动态库&#xff1a;libfooSdk.so.1.1.0&#xff0c;其对应的三个名称如下。 realname&#xff1a;libfooSdk.so.1.1.0 soname&#xff1a;libfooSdk.so.1 linkname&#xff1a;libfooSdk.solinux的动态库的命名格式是libfooSdk.so.x.y.z 版本…

大数据概述及其软件生态

一、大数据的诞生 &#xff08;1&#xff09;当全球互联网逐步建成&#xff08;2000年左右&#xff09;&#xff0c;各大企业或政府单位拥有了海量的数据亟待处理。 &#xff08;2&#xff09; 基于这个前提逐步诞生了以分布式的形式&#xff08;即多台服务器集群&#xff09;…

PCB生产工艺流程三:生产PCB的内层线路有哪7步

PCB生产工艺流程三&#xff1a;生产PCB的内层线路有哪7步 在我们的PCB生产工艺流程的第一步就是内层线路&#xff0c;那么它的流程又有哪些步骤呢&#xff1f;接下来我们就以内层线路的流程为主题&#xff0c;进行详细的分析。 由半固化片和铜箔压合而成&#xff0c;用于…

Vue|计算属性

1. 计算属性1.1 差值语法1.2 methods1.3 计算属性1. 计算属性 1.1 差值语法 开始前分别在项目目录创建文件夹及页面如下 需求1&#xff1a;在两个文本框中分别输入姓和名的同时需要在下方将数据进行拼接组装&#xff0c;效果如下图 如果用传统的方式来实现的话&#xff0c;需要…

投屏软件:ApowerMirror Crack

一个软件&#xff0c;两个系统 ApowerMirror是一个跨平台的屏幕镜像应用程序&#xff0c;可用于iOS和Android设备&#xff0c;与Windows和Mac兼容。对于运行支持 Chromecast 的 Android 5.0 或更高版本的手机&#xff0c;用户可以使用此程序镜像屏幕。而对于支持AirPlay的iOS设…

bfs与dfs详解(经典例题 + 模板c-代码)

文章首发于&#xff1a;My Blog 欢迎大佬们前来逛逛 文章目录模板解析dfsbfs1562. 微博转发3502. 不同路径数165. 小猫爬山模板解析 DFS&#xff08;深度优先搜索&#xff09;和BFS&#xff08;广度优先搜索&#xff09;是图论中两个重要的算法。 dfs 其中DFS是一种用于遍历…

spring源码之扫描前设置

扫描前设置 &#x1f6f9;源码源码说明总结启动一个springboot项目源码 org.springframework.context.annotation.ComponentScanAnnotationParser#parse public Set<BeanDefinitionHolder> parse(AnnotationAttributes componentScan, String declaringClass) {// 创建C…

清明-微信小程序

# 云开发接入 初始化云开发 环境保密

深度学习部署(十三): CUDA RunTime API thread_layout线程布局

1. 知识点 在.vscode/settings.json中配置"*.cu": "cuda-cpp"可以实现对cuda的语法解析 layout是设置核函数执行的线程数&#xff0c;要明白最大值、block最大线程数、warpsize取值 maxGridSize对应gridDim的取值最大值maxThreadsDim对应blockDim的取值最…

酷炫的青蛇探针serverMmon

本文软件由网友 114514 推荐&#xff1b; 什么是 serverMmon &#xff1f; serverMmon (青蛇探针)是 nodeJs 开发的一个酷炫高逼格的云探针、云监控、服务器云监控、多服务器探针。 主要功能介绍&#xff1a; 全球服务器分布世界地图服务器&#xff08;控制端&#xff09; ping…

简单3招教你设置电脑时间

案例&#xff1a;电脑时间怎么设置&#xff1f; 【我使用电脑时&#xff0c;电脑显示的时间一直不对&#xff0c;这导致我非常不方便&#xff0c;想问下大家平常使用电脑时有什么设置电脑时间比较简单的方法吗&#xff1f;】 电脑的时间设置很重要&#xff0c;不仅可以保证电…

Java单例模式、阻塞队列、定时器、线程池

目录1. 单例模式1.1 饿汉模式实现单例1.2 懒汉模式实现单例1.2.1 加锁实现懒汉模式线程安全1.2.2 volatile实现懒汉模式线程安全1.3 饿汉模式和懒汉模式小结&#xff08;面试题&#xff09;2. 阻塞队列2.1 单线程下阻塞队列2.2 多线程下阻塞队列——生产者消费者模型2.3 模拟写…

【蓝桥集训18】二分图(2 / 2)

二分图定义&#xff1a;将所有点分成两个集合&#xff0c;使得所有边只出现在集合之间&#xff0c;就是二分图 目录 860. 染色法判定二分图 1、dfs 2、bfs 861. 二分图的最大匹配 - 匈牙利算法ntr算法 860. 染色法判定二分图 活动 - AcWing 1、dfs 思路&#xff1a; 对每…

白农:Imagination将继续致力于推进车规半导体IP技术创新和应用

4月2日Imagination中国董事长白农在中国电动汽车百人论坛上发表演讲&#xff0c;探讨了车规半导体核心IP技术如何推动汽车智能化发展&#xff0c;并接受了媒体采访。本次论坛上&#xff0c;他强调了IP技术在汽车产业链中日益重要的地位和供应商的位置前移。类比手机行业的发展&…

树、森林、二叉树:相互之间的转换

你好&#xff0c;我是王健伟。 前面我们讲过了各种二叉树&#xff0c;这方面的知识已经够多的了&#xff0c;本节就来讲一讲更通用的概念&#xff1a;树、森林以及与二叉树之间的转换问题。 树的存储结构 前面我们学习了树形结构的基本概念&#xff0c;在满足这个概念的前提…

python 包、模块学习总结

、模块基础 1、基本概念 模块是最高级别的程序组织单元&#xff0c;它将程序代码和数据封装起来以便重用。从实际角度来看&#xff0c;模块往往对应于python程序文件&#xff08;或是用外部语言如C、Java或C#编写而成的扩展&#xff09;。每一个文件都是一个模块&#xff0c;并…

小驰私房菜_11_mm-camera 添加客制化分辨率

#小驰私房菜# #mm-camera# #客制化分辨率# 本篇文章分下面几点展开&#xff1a; 1) mm-camera框架下&#xff0c;是在哪个文件添加客制化分辨率&#xff1f; 2&#xff09; 新添加分辨率的stall duration如何计算&#xff1f; 3&#xff09; 新添加的分辨率会有哪些影响&…