VUE2基础-Vue实例

news2024/11/24 20:05:43

Vue 实例

创建一个 Vue 实例 每个 Vue 应用都是通过用 Vue 函数创建一个新的 Vue 实例开始的:

var vm = new Vue({
  // 选项
})

虽然没有完全遵循 MVVM 模型,但是 Vue 的设计也受到了它的启发。因此在文档中经常会使用 vm (ViewModel 的缩写) 这个变量名表示 Vue 实例。

当创建一个 Vue 实例时,你可以传入一个选项对象。这篇教程主要描述的就是如何使用这些选项来创建你想要的行为。作为参考,你也可以在 API 文档中浏览完整的选项列表。

一个 Vue 应用由一个通过 new Vue 创建的根 Vue 实例,以及可选的嵌套的、可复用的组件树组成。举个例子,一个 todo 应用的组件树可以是这样的:

根实例
└─ TodoList
   ├─ TodoItem
   │  ├─ TodoButtonDelete
   │  └─ TodoButtonEdit
   └─ TodoListFooter
      ├─ TodosButtonClear
      └─ TodoListStatistics

我们会在稍后的组件系统章节具体展开。不过现在,你只需要明白所有的 Vue 组件都是 Vue 实例,并且接受相同的选项对象 (一些根实例特有的选项除外)。

数据与方法

当一个 Vue 实例被创建时,它将 data 对象中的所有的 property 加入到 Vue 的响应式系统中。当这些 property 的值发生改变时,视图将会产生“响应”,即匹配更新为新的值。

// 我们的数据对象
var data = { a: 1 }

// 该对象被加入到一个 Vue 实例中
var vm = new Vue({
  data: data
})

// 获得这个实例上的 property
// 返回源数据中对应的字段
vm.a == data.a // => true

// 设置 property 也会影响到原始数据
vm.a = 2
data.a // => 2

// ……反之亦然
data.a = 3
vm.a // => 3

当这些数据改变时,视图会进行重渲染。值得注意的是只有当实例被创建时就已经存在于 data 中的 property 才是响应式的。也就是说如果你添加一个新的 property,比如:

vm.b = 'hi'

那么对 b 的改动将不会触发任何视图的更新。如果你知道你会在晚些时候需要一个 property,但是一开始它为空或不存在,那么你仅需要设置一些初始值。比如:

data: {
  newTodoText: '',
  visitCount: 0,
  hideCompletedTodos: false,
  todos: [],
  error: null
}

这里唯一的例外是使用 Object.freeze(),这会阻止修改现有的 property,也意味着响应系统无法再追踪变化。

var obj = {
  foo: 'bar'
}

Object.freeze(obj)

new Vue({
  el: '#app',
  data: obj
})
var obj = {
  foo: 'bar'
}

Object.freeze(obj)

new Vue({
  el: '#app',
  data: obj
})

除了数据 property,Vue 实例还暴露了一些有用的实例 property 与方法。它们都有前缀 $,以便与用户定义的 property 区分开来。例如:    

var data = { a: 1 }
var vm = new Vue({
  el: '#example',
  data: data
})

vm.$data === data // => true
vm.$el === document.getElementById('example') // => true

// $watch 是一个实例方法
vm.$watch('a', function (newValue, oldValue) {
  // 这个回调将在 `vm.a` 改变后调用
})

实例生命周期钩子

每个 Vue 实例在被创建时都要经过一系列的初始化过程——例如,需要设置数据监听、编译模板、将实例挂载到 DOM 并在数据变化时更新 DOM 等。同时在这个过程中也会运行一些叫做生命周期钩子的函数,这给了用户在不同阶段添加自己的代码的机会。

比如 created 钩子可以用来在一个实例被创建之后执行代码:

new Vue({
  data: {
    a: 1
  },
  created: function () {
    // `this` 指向 vm 实例
    console.log('a is: ' + this.a)
  }
})
// => "a is: 1"

也有一些其它的钩子,在实例生命周期的不同阶段被调用,如 mounted、updated 和 destroyed。生命周期钩子的 this 上下文指向调用它的 Vue 实例。

生命周期图示

下图展示了实例的生命周期。你不需要立马弄明白所有的东西,不过随着你的不断学习和使用,它的参考价值会越来越高。

 


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

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

相关文章

交换:交换机相关技术(二层技术)

目录 VLAN:虚拟局域网 VLAN种类: 接口分配链路类型 接口划分VLAN 跨网段的通讯 VLAN:虚拟局域网 LAN :局域网 MAN:城域网 WAN:广域网 1.一个VLAN相当于一个广播域 VLAN:通过路由器和交换机…

PADS Logic如何对原理图页面进行操作呢?

在绘制复杂的原理图时,会根据功能模块来将原理图进行分页处理,在绘制原理图过程中,会对原理图页面进行一些处理,操作方法如下所列: 1、页面拷贝与粘贴:在原理图中选中需要复制的元件走线等,左击…

Git常用命令及在Idea中如何使用创建分支等,详讲带图[保姆级]

文章目录 Git在Git命令行中执行下面命令:设置基本信息获取Git仓库Git 工作区 暂存区 版本库概念工作状态远程仓库操作分支操作标签分类 Idea中使用推送到远程仓库(提交并且推送)分支操作 Git 在Git命令行中执行下面命令: 设置基本信息 设置用户信息 git config --global use…

阿里巴巴开源的Spring Cloud Alibaba手册在GitHub上火了,完整版开放下载

“微服务架构经验你有吗?” 前段时间一个朋友去面试,阿里面试官一句话问倒了他。实际上,不在BAT这样的大厂工作,是很难接触到支撑千亿级流量微服务架构项目的。但也正是这种难得,让各个大厂都抢着要这样的人才&#x…

Bash 第十行

195 第十行 给定一个文本文件 file.txt,请只打印这个文件中的第十行。 示例: 假设 file.txt 有如下内容: Line 1 Line 2 Line 3 Line 4 Line 5 Line 6 Line 7 Line 8 Line 9 Line 10 你的脚本应当显示第十行: Line 10 来源:…

NITIRE 2023官方的PSNR及SSIM计算代码

NITIRE 2023官方的PSNR及SSIM计算代码 问题描述 做图像复原任务时,总避免不了计算PSNR和SSIM等图像质量评估指标,但是网上实在是太多计算这类指标的代码了,不同代码计算的结果还可能存在差异。有使用matlab计算SSIM的,也有使用py…

7月23作业

2.作业 platform驱动实现 platform.c #include <linux/init.h> #include <linux/module.h> #include <linux/fs.h> #include <linux/device.h> #include <linux/cdev.h> #include <linux/slab.h> #include <linux/io.h> #include&l…

CDN技术(Content Delivery Network,内容分发网络)分布式网络架构(CND与P2P(Peer-to-Peer)区别)

文章目录 CDN是什么&#xff1f;CDN的优势CDN的应用1. 静态内容加速2. 动态内容加速3. 视频流媒体4. 软件分发5. 游戏加速6. 移动应用加速 CDN收费吗&#xff1f;CND与P2P区别什么是静态内容和动态内容&#xff1f; CDN是什么&#xff1f; CDN&#xff08;Content Delivery Ne…

七大排序算法——直接选择排序,通俗易懂的思路讲解与图解(完整Java代码)

文章目录 一、排序的概念排序的概念排序的稳定性七大排序算法 二、直接选择排序核心思想代码实现 三、性能分析四、七大排序算法 一、排序的概念 排序的概念 排序&#xff1a;所谓排序&#xff0c;就是使一串记录&#xff0c;按照其中的某个或某些关键字的大小&#xff0c;递…

基于linux下的高并发服务器开发(第一章)- Makefile(1)1.10

01 / 什么是Makefile 02 / Makefile文件命名和规则 &#xff08;1&#xff09;在~/Linux/lesson7目录下,vim Makefile &#xff08;2&#xff09;ll查看当前目录下的文件信息 &#xff08;3&#xff09;编辑以下内容,然后保存并退出 app:sub.c add.c mult.c div.c main.c gcc…

熊猫代阅脚本-沉睡者IT技术分享

熊猫代阅脚本-我的编程技术之路 熊猫阅读app是一款酷炫的阅读应用带来了多样化的阅读模式&#xff0c;熊猫阅读app专注网络小说阅读&#xff0c;更新快&#xff0c;让大家获得最好的小说阅读体验&#xff0c;有需要的快来下载。 熊猫阅读app亮点 阅读赚钱&#xff1a;越读越…

DAY46:动态规划(七)01背包应用:分割等和子集+最后一块石头重量Ⅱ+目标和

文章目录 416.分割等和子集&#xff08;回溯01背包&#xff09;思路回溯解法&#xff08;类似组合总和Ⅱ&#xff09;回溯解法存在的问题 01背包思路为什么能抽象成背包问题 01背包写法1&#xff1a;常规写法&#xff0c;考虑重量价值重量价值类问题的思考方式DP数组含义递推公…

综合小实验

第一步&#xff1a;计划IP R1的环回&#xff1a;192.168.1.0/28 R2的环回&#xff1a;192.168.1.16/28 R123的O/O/0接口&#xff1a;192.168.1.32/28 R3-4&#xff1a;192.168.1.128/30 Vlan2&#xff1a;192.168.1.48/28 vlan3&#xff1a;192.168.1.64/28 192.168.1.0/24 0区…

力扣 279. 完全平方数

一、题目描述 给你一个整数 n&#xff0c;返回和为 n 的完全平方数的最少数量 。 完全平方数是一个整数&#xff0c;其值等于另一个整数的平方&#xff1b;换句话说&#xff0c;其值等于一个整数自乘的积。例如&#xff0c;1、4、9 和 16 都是完全平方数&#xff0c;而 3 和 …

3Ds max入门教程:创建马来西亚双子塔3D模型

推荐&#xff1a; NSDT场景编辑器助你快速搭建可二次开发的3D应用场景 最终图像&#xff1a; 步骤-1 下面给出了这个双子塔的基本轮廓。 步骤-2 由于它是一栋88层的建筑&#xff0c;所以我一开始打算把它建到40层。为此&#xff0c;我使用标准的基元类型&#xff1a;盒子和圆…

python 使用 subprocess 实现交互式命令的非交互式执行

背景 想要定时执行某些脚本, 但是脚本是交互式的, 例如下面的bat 脚本 echo offset /p nameName: echo Name is %name%echo exit set /p byeBye: echo Bye is %bye%需要先输入Name, 在看到 exit 后在输入 Bye, 然后程序退出. 解决方案 使用subprocess 来实现 import subpr…

【Solidworks加密软件】Solidworks图纸文件加密方法

Solidworks是一款广泛应用于机械设计和工程领域的三维建模软件。由于Solidworks文件中可能包含敏感的设计和知识产权信息&#xff0c;保护这些图纸的安全性变得至关重要。本文将介绍Solidworks图纸加密的方法和最佳实践&#xff0c;以确保文件的机密性和安全性。 为什么需要加…

Redis字典

1.前言 我们回顾一下之前讲到的Redis的字典结构&#xff0c;示意图如下&#xff1a; Redis的字典本质上来说也是数组链表的数据结构&#xff0c;这与Java中HashMap的数据结构很类似。 由上述结构示意图也能看出&#xff0c;字典dict中维护了一个ht数组&#xff0c;而且只有两…

使用IDEA工具debug java annotation processors

最近看Spring提供的自动生成spring-configuration-metadata.json文件的组件。组件依赖 <dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-configuration-processor</artifactId><optional>true</opti…

IO线程NO

在处理问题&#xff1a; Got fatal error 1236 from master when reading data from binary log: Could not find first log file name in binary log index file 好翻译过来就是&#xff1a; 从二进制日志读取数据时&#xff0c;从主服务器收到致命错误 1236&#xff1a;“无法…