当前位置: 首页 > news >正文

生命周期函数、组件

1. 生命周期函数 

  1. beforeCreate : 无法通过 vm 访问data 中的数据、methods 中的方法
  2. created :可以访问 vm 中的 data 的数据, methods 中的方法
  3. beforeMount:为经 Vue 编译的 dom
  4. mounted:经过 vue 编译的 dom ,对dom 操作有效,可以进行开启定时器、发生网络请求、订阅信息、绑定自定义事件等初始化操作
  5. beforeUpdate:数据是更新的,页面没有更新
  6. updated:数据也页面都是更新的
  7. beforeDestroy:vm 中所有的 data、methods、指令处于可用状态,马上执行销毁过程;一般此状态:关闭定时器、取消订阅信息、解绑自定义事件收尾操作
  8. destroyed:完全销毁一个实例,清除它与其他实例的连接,解绑它的全部指令以及事件监听器

vm. $template 是替换掉根节点

总结:

1. 常用的生命周期函数:

  • mounted:发送ajax 请求,启动定时器、解绑自定义事件、订阅消息等【初始化操作】
  • beforeDestroy:清除定时器、解绑自定义事件、取消订阅消息等【收尾工作】

2. 关于销毁 vue 实例

  • 销毁后借助 vue 开发者工具看不到任何信息
  • 销毁后自定义事件会失效。但是原生的 DOM 事件任然有效
  • 一般不会再 beforeDestroy 操作数据,因为操作数据不会再触发更新流程了

2. 组件化

2.1 理解组件

2.1.1 基础概念

  • 组件的定义:实现应用中局功能代码(css、html、js)和资源(mp3、zip)的集合
  • 模块: 前端的模块就是一个js文件
  • 模块化:一个js 文件里面划分了很多小的js文件(a.js\b.js)
  • 组件化:一个功能一个组件

2.1.2 非单文件组件

  • 定义:一个组件中包含n个组件
  • 不要写el配置项,因为最终的vm都要被一个vm管理,由vm决定服务
  • data ( ) { } : 一定要写成函数形式,不要写对象data: { } 形式;因为避免组件复用,数据存在引用关系
  • template 可以配置组件结构
  • 组件第一个字母最好大写!
<!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><script type="text/javascript" src="../js/vue.js"></script>
</head><body><div id="root"><!-- 三、编写组件标签 --><girl></girl><hr /><boy></boy></div></body>
<script type="text/javascript">Vue.config.productionTip = false// 一、创建组件1const girl = Vue.extend({// name 是同时改变创建组件和注册组件的名字name: 'peopel'template: `<div><h2>姓名:{{name}} </h2><h2>年龄:{{age}} </h2></div>`,data() {return {name: 'linda',age: 18,}}})// 一、创建组件2const boy = Vue.extend({template: `<div><h2>姓名:{{name}} </h2><h2>年龄:{{age}} </h2></div>`,data() {return {name: 'json',age: 28,}}})// 全局注册组件,所有的root 里面都可以使用组件Vue.component('girl', girl)// 创建vmnew Vue({el: '#root',// 二、注册(局部)组件(组件名:组件 key value形式)components: {// girl: girl,boy: boy,},data: {}})</script></html>
  1.   组件本质是一个VueComponent 的构造函数,是Vue.extend 生成的
  2.  只需要写<School/>, vue 解析时会帮我们创建组件的实例化对象,即执行: new VueComponent(options)
  3. 每次调用Vue.extend ,返回的是一个全新的vueComponent
  4. this 指向:
    (1)组件配置中:data函数、method函数、watch函数、component中的函数、他们的 this            指向均是 VueComponent 实例对象
    (2)new Vue(options)配置中:data 函数、method函数.... this 指向的是Vue 实例对象
  5. VueComponent的实例对象,以后简称vc(也可称之为:组件实例对象)。Vue的实例对象,以后简称vm。

  • 一个重要的内置关系:

  • VueComponent.prototype._proto_===Vue.prototype

  • 结果是让组件实例化对象vc可以访问vue原型的属性和方法

2.1.3 单文件组件

  • 定义:一个组件只包含一个组件(常用)

2.1.4 组件注意点

可以使用name 配置项指定组件在开发者工具中的名字

1. 一个单词组成:

  • 首字母小写:school
  • 首字母大写:School

 2. 多单词组成:

  • keybab-case命名: my-school
  • CamelCase命名:MySchool(需要Vue脚手架支持)

3. 组件标签 

  • <school> </school>
  • <school/> (没有使用vue脚手架组件会不能渲染)

4. 一个注册组件的简写

  • const school = Vue.extend (option)
  • 可简写:const school = option 

http://www.lryc.cn/news/10478.html

相关文章:

  • 蓝桥杯 stm32 PWM 测量频率
  • Docker CPU 资源控制
  • 小红书数据平台:笔记爆文率提升的三大秘诀公式!
  • Spring MVC 之Tomcat启动流程
  • 大疆车载更新产品矩阵,覆盖从主动安全到城区领航的全场景
  • 总结Anisble中的任务执行控制并练习
  • PMP好考吗,有多大的价值?
  • http常用状态码(204,304, 404, 504,502)含义
  • 记录锁,间隙锁,插入意向锁,临键锁兼容关系
  • map相关接口(map接口、HashMap、LinkedHashMap、TreeMap)
  • 抽象工厂模式(Abstract Factory Pattern)
  • Linux驱动学习笔记
  • tarfile — 访问 Tar 压缩文件
  • C++14深度探索之C++基础-共享指针与弱指针使用
  • 【React全家桶】reac组件通信
  • 2023,再转行去做软件测试还有前途吗?
  • Java程序API数据接口
  • 剑指offer 7 数组中和为0的三个数
  • DockerFile
  • Vue-Router 介绍及路由原理分析
  • git代码提交后jenkins构建和自动部署
  • 2023面试题目总结
  • Vue常用指令及声明周期
  • MariaDB 成功敲钟上市 | 它与 Navciat 缘起 10 年前
  • LESS模型与随机森林
  • 如何利用Power Virtual Agents机器人实现成绩查询服务
  • flavor 配置
  • 《第一行代码》 第五章:详解广播机制
  • Leetcode(每日一题)——1139. 最大的以 1 为边界的正方形
  • YOLOv5:GitHub两万八Star项目