前端入门(三)Vue生命周期、组件技术、事件总线、

文章目录

  • Vue生命周期
  • Vue 组件化编程 - .vue文件
    • 非单文件组件
      • 组件的注意点
      • 组件嵌套
      • Vue实例对象和VueComponent实例对象
      • Js对象原型与原型链
      • Vue与VueComponent的重要内置关系
    • 应用单文件组件构建
  • Vue脚手架 - vue.cli
    • 项目文件结构
    • ref
    • props
    • mixin
    • 插件
    • scoped样式

Vue生命周期

在这里插入图片描述

在这里插入图片描述

  • 1、beforeCreate():数据代理尚未开始,此时无法通过vm访问到data中的数据,methods中的方法。
  • 2、created():数据监测和数据代理完成了,可以通过vm访问到data中的数据,methods中的方法。
  • 3、beforeMount():页面呈现的是未经Vue编译的DOM结构,所有对DOM的操作,最终都不奏效。
  • 4、mounted():页面中呈现的是经过Vue编译的DOM,此时对DOM的操作均有效,一般在此进行:开启定时器、发送网络请求、订阅消息、绑定自定义事件等初始化操作。1-4步骤构成了挂载的主要流程
  • 5、beforeUpdate():此时数据是新的,但是页面是旧的,即新的数据尚未更新到页面上。
  • 6、updated():此时,页面的显示的是新数据,页面和数据同步完毕。
  • 7、beforeDestroy():此时vm中所有的data、methods、指令等等,都处于可用状态,马上要执行销毁的过程,一般在此阶段:关闭定时器、取消订阅消息,解绑自定义事件等收尾操作。
  • 8、destroyed():销毁完毕。可以使用this.$destroy(),让vue实例自己销毁,Vue实例销毁后,自定义事件会失效,但原生DOM事件依然有效。

Vue 组件化编程 - .vue文件

组件的定义——实现应用中局部功能代码和资源的集合。

在这里插入图片描述
在这里插入图片描述

非单文件组件

一个组件文件中由多个其他组件构成,称为非单文件组件。

Vue使用组件的三大步骤:

  • 1、定义组件(创建组件)
  • 2、注册组件(Vue的components局部注册或者使用Vue.component(‘组件名’, 组件))全局注册。
  • 3、使用组件(写组件标签)

1、创建组件
创建组件时,需要注意:

  • 不需要写el标签:el标签是将Vue实例与DOM元素绑定的,当你创建组件时,你并不知道需要将其用在哪里,因此不需要写el标签。
  • 组件的data属性需要写成函数式的:因为一个组件可能在多个地方使用,如果写为对象式的,各个组件之间的数据变化会相互影响。
  • 使用Vue.extend({})创建组件,在template属性中,使用反引号包裹HTML标签。
    在这里插入图片描述

在这里插入图片描述

2、注册组件
局部注册:在Vue实例的components属性中,标注上构建的组件。
在这里插入图片描述

使用`Vue.componet(‘组件名’, 组件);可以注册全局组件,即所有的Vue实例,尽管在components属性中没声明该组件,也可直接使用。
在这里插入图片描述

3、使用组件,写组件标签。
在这里插入图片描述

组件的注意点

在这里插入图片描述

组件嵌套

组件可以嵌套使用。注册给谁的组件,就可以在它的template属性中应用这个组件标签。
在这里插入图片描述

Vue实例对象和VueComponent实例对象

以定义的school组件为例:

  • 1、当我们使用school标签时,本质上是调用了VueComponent构造函数,该构造函数是Vue.extend生成的。
  • 2、当使用school标签时,Vue框架解析时会帮助创建school组件的实例对象,方式就是执行new VueComponent(options)
  • 3、特别注意,每次调用Vue.extend,返回的都有一个全新的VueComponent对象。
  • 4、关于this指向,组件配置中:data函数、methods中的函数,watch、computed函数,它们的this均是VueComponent实例对象。而在new Vue(options)配置中,data函数、methods中的函数,watch、computed函数,它们的this均是Vue实例对象
  • 5、根组件Vue实例对象会有$children属性,其中就是VueComponent实例对象数组。
  • 6、Vue实例对象和VueComponent实例对象在创建时接收的options选项,除了Vue实例可以使用el 绑定具体的DOM标签外,其余都一样。

在这里插入图片描述

Js对象原型与原型链

JavaScript 是一种基于原型的语言 (prototype-based language),每个对象拥有一个原型对象,对象以其原型为模板,从原型继承方法和属性,这些属性和方法定义在对象的构造器函数的 prototype 属性上,而非对象实例本身。

每个Js对象都会有一个名为__proto__的内部属性,该属性指向当前对象的原型对象。在Js中,当我们访问一个对象的某个属性时,如果该对象没有这个属性,Js语法引擎就会沿着该对象的原型链(在对象的__proto__上找)向上查找,直到找到该属性为止。在查找对象属性时,通过__proto__查找原型的属性这个过程,就用到原型链。

当然在Js对象中,根原型为Object,而Object的__proto__是为null的。

原型属性又可分为显示原型属性隐式原型属性

  • 显示原型属性访问:构造函数名.prototype
  • 隐式原型属性访问:实例对象名.__proto__
  • 由这两种方式访问到的原型对象是等价的,即指向的是同一个原型对象。构造函数名.prototype === 实例对象名.__proto__
  • 由原型链的属性访问方式可知,如果给原型对象添加一个属性x = 99,那么可以由实例对象d的原型对象属性访问它,即d.__proto__.x,实际上对于__proto__的访问是Js执行引擎自动完成的,因此d.__proto__.x访问的方式,可以等价于使用d.x

在这里插入图片描述

Vue与VueComponent的重要内置关系

VueComponent(Vue组件)的原型对象的原型对象是Vue的原型对象
在这里插入图片描述

应用单文件组件构建

1、构建一个单文件组件
一个单.vue文件,基本结构如下;
在这里插入图片描述
定义好单文件组件是为了提供给 别的文件使用,因此需要使用export将该文件进行暴露。
export default {
……
}
实际上是一种简写,等价于:
const vc = Vue.extend(
{
……
}
)

export vc

在这里插入图片描述
2、入口Vue文件:App.vue
一般而言,Vue项目的根组件为App.vue,这里使用其他的组件。
组件化编程三步走:

  • 导入
  • 注册
  • 使用标签
    在这里插入图片描述
    3、入口js文件:main.js
    构建的根组件App.vue并没有使用,在main.js中构建App.vue的实例对象,使用el属性为其绑定DOM对象。

在这里插入图片描述

4、入口HTML文件:index.html
在这里插入图片描述

Vue脚手架 - vue.cli

项目文件结构

在这里插入图片描述

ref

props

mixin

插件

scoped样式

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

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

相关文章

MBA-论证有效性分析

论证有效性分析∶分析下述论证中存在的缺陷和漏洞,选择若干要点,写一篇 600 字左石的文章.对该论证的有效性进行分析和评论。(论证有效性分析的一般要点是∶概念特别是核心概念的界定和使用是否准确并前后一致,有无各种明显的逻辑…

cineSync 3.3新功能: 深入iconik集成、激光工具、OTIOZ支持等

cineSync 3.3为大家带来了灵活性和精准度,使连接审阅会话与iconik中的媒体管理和存储更加容易,并且引入了颜色配置文件以快速测试颜色配置,还有通过激光指针等新工具带来新的可能性。 在ftrack,我们意识到当今的远程创意工作流比以…

vue3 导出数据为 excel 文件

文章目录 安装插件封装组件 -- Export2Excel.js多表封装界面使用 -- 数据处理成二维数组更多 菜鸟最近做了一个需求,就是需要上传表单并识别,然后识别出来的内容要可以修改,然后想的就是识别内容变成 form 表单,所以并没有使用 Sp…

反爬虫机制与反爬虫技术(二)

反爬虫机制与反爬虫技术二 1、动态页面处理与验证码识别概述2、反爬虫案例:页面登录与滑块验证码处理2.1、用例简介2.2、库(模块)简介2.3、网页分析2.4、Selenium准备操作2.5、页面登录2.6、模糊移动滑块测试3、滑块验证码处理:精确移动滑块3.1、精确移动滑块的原理3.2、滑…

【模块补充】importlib

importlib 【一】介绍 importlib 模块是 Python 中用于动态加载和导入模块的内置模块。它提供了一组函数和类,使得我们可以在运行时根据需要加载模块,并且可以对已导入的模块进行操作和管理。 【二】详解及示例: 【1】动态加载模块&#…

PyQt6简介

锋哥原创的PyQt6视频教程: 2024版 PyQt6 Python桌面开发 视频教程(无废话版) 玩命更新中~_哔哩哔哩_bilibili2024版 PyQt6 Python桌面开发 视频教程(无废话版) 玩命更新中~共计12条视频,包括:2024版 PyQt6 Python桌面开发 视频教程(无废话版…

企业远程访问业务系统:对比MPLS专线,贝锐蒲公英为何更优优势?

如今,企业大多都会采用OA、ERP、CRM等各种数字化业务系统。 私有云、公有云混合架构也变得越来越常见。 比如:研发系统部署在公司本地私有云、确保数据安全,OA采用公有云方案、满足随时随地访问需求。 如此一来,也产生了远程访问…

js前端跨屏效果

效果: 三个球 源码: <!DOCTYPE html> <html lang"en"> <head><meta charset"UTF-8"><meta name"viewport" content"widthdevice-width, initial-scale1.0"><title>三个球</title> </h…

js实现图片懒加载

方式一&#xff1a;html实现 在img标签加上 loading"lazy" 方式二&#xff1a;js实现 通过js监听页面的滚动&#xff0c;实现的原理主要是判断当前图片是否到了可视区域&#xff1a; 拿到所有的图片 dom 。遍历每个图片判断当前图片是否到了可视区范围内。如果到了…

Maven项目下详细的SSM整合流程

文章目录 &#x1f389;SSM整合流程一、两个容器整合✨ 1、先准备好数据库config.properties连接、mybatis-config.xml&#x1f38a; 2、容器一&#xff1a;优先配置spring.xml文件&#x1f38a; 3、容器二&#xff1a;配置springMVC.xml文件&#x1f38a; 4、Tomcat整合spring…

解释PCIe MSI 中断要求中断向量连续?PCIe 规范里并没有明确指出

MSI 向量必须连续&#xff1f; 前言 MSI 物理条件&#xff0c;MSI 中断产生的逻辑是RC初始化的时候&#xff0c;由软件将配置写入到 EP 的 2 个寄存器中&#xff0c;这两个寄存器一个指示的是地址 Message Address&#xff0c;一个指示的是数据 Message Data。当 EP 试图触发…

你再不学Git就来不及了!!!

其他系列文章导航 设计模式合集 多线程合集 分布式合集 ES合集 文章目录 其他系列文章导航 文章目录 前言 版本控制 什么是版本控制 为什么要版本控制 一、认识 Git 1.1Git 简史 1.2Git 与其他版本管理系统的主要区别 1.3Git 的三种状态 二、Git 使用快速入门 2.1获…

springboot使用redis缓存乱码(key或者 value 乱码)一招解决

如果查看redis中的值是这样 创建一个配置类就可以解决 package com.deka.config;import org.springframework.beans.factory.annotation.Autowired; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; i…

CPU+GPU多样化算力,ZStack Cloud助力游戏精酿核心业务上云

游戏精酿通过ZStack Cloud云平台提供高性能、高可用的云主机、云存储和云网络&#xff1b;前期通过超融合架构快速构建云基础设施&#xff0c;来支持Jira、Redis等关键业务&#xff1b;并实现对原有私有云平台业务的替代&#xff0c;按需将原有私有云业务滚动迁移到ZStack Clou…

移动端浏览器 jquery 获取 pdf blob文件流 预览pdf

最近遇到一个需求&#xff0c;一个古早的移动端 juery 项目要求做一个页面&#xff0c;从接口获取 pdf 文件流&#xff0c;然后预览出来 这里使用第三方工具&#xff1a;pdf.js 代码如下&#xff1a; // 引入相关文件<script src"../js/pdf.js" type"text…

N_1 验证密码

N_1 验证密码 题目 设计一个用户密码验证程序&#xff0c;要求密码输入只有3次机会&#xff0c;且密码中不能包含”*”字符。 分析 需要考虑3个问题&#xff1a;验证次数、特殊字符和正误密码判断&#xff1b;验证次数需要使用循环&#xff0c;3个问题需要用到分支结构&…

java 系统属性和环境属性

Java系统属性和环境属性都是与Java应用程序相关的参数&#xff0c;但它们有以下区别&#xff1a; 系统属性是由Java虚拟机&#xff08;JVM&#xff09;设置的&#xff0c;而环境属性是由操作系统设置的。 系统属性是以“-D”开头的命令行参数传递给JVM的&#xff0c;而环境属性…

深入理解Spring AOP的工作流程

文章目录 引言什么是AOP&#xff1f;Spring AOP的工作原理1. JDK动态代理2. CGLIB代理 Spring AOP的注解方式Aspect注解EnableAspectJAutoProxy注解 Spring AOP的工作流程拓展应用1. 自定义注解2. 异常处理3. 切面优先级 结论 &#x1f389;深入理解Spring AOP的工作流程 ☆* o…

关于运行软件程序出现vcruntime140.dll丢失的修复教程-解决方案

vcruntime140.dll是Microsoft Visual C库文件的一部分&#xff0c;用于支持Windows操作系统上的应用程序。如果找不到或丢失了这个文件&#xff0c;可能会导致某些应用程序无法正常运行。下面是关于vcruntime140.dll丢失的5个修复方法&#xff0c;以及vcruntime140.dll文件属性…

Python基础教程之分支结构详解

文章目录 一、分支结构二、单分支结构三、双分支结构四、多分支结构五、嵌套分支结构六、三元表达式七、条件测试关于Python技术储备一、Python所有方向的学习路线二、Python基础学习视频三、精品Python学习书籍四、Python工具包项目源码合集①Python工具包②Python实战案例③P…