Vue04

自定义指令

  • directives是Vue的一个配置项

  • 这里写自定义指令

自定义指令被调用的时机

  1. 指令与元素成功绑定时

  2. 指令所在的模板被重新解析时

函数式

<span v-big="n"></span> 

directives:{    
     big(element,binding){         
        element.innerText =binging.value *10          
    } 
} 
//element拿到的是实体标签 
//binding里的value是传入的参数 n

对象式

注:函数式相当于对象式的一种简写

directives:{
    m:{
        bind:function(el,binding){
            el.innerHTML = binding.value;
        },
        inserted:function(el,binding){      
            el.focus();
        },
        update:function(el,binding){
            el.innerHTML = binding.value;
        }

    }
}
  1. 定义语法

  2. 局部指令,对象式,函数式

  3. 全局指令,Vue.directive(指令名,配置对象)或 Vue.directive(指令名,回调函数)

  4. 配置对象中常用的3个回调

  5. bind :指令与元素成功绑定时

  6. inserted:指令所在元素被插入页面时

  7. update:指令所在的模板被重新解析时

  8. 备注

  9. 指令定义时不加v-,但使用时要加v-

  10. 指令名如果时多个单词,要使用kebab-case命名方式,不要用cameCase命名

<body>
    <div id="root">

        <span v-text="n"></span>
        <button @click="n++">点我n+1</button>
        <input type="text" :value="n" v-focus>
    </div>
</body>
<script>
    new Vue({
        el:'#root',
        data:{
            message:'你好哇!',
            n : 1
        },
        // 这里使用函数式写法,缺点是不能够在生命周期中起作用,但我感觉,可以满足大多数需求了
        directives:{
            focus(el, binding){
                el.focus()
            }
        }
    })

生命周期

生命周期

  • 又名:生命周期回调函数,生命周期函数,生命周期钩子

  • 是生命:Vue在关键时刻帮我们调用的一些特殊名称的函数

  • 生命周期函数的名字不可更改,但函数的具体内容是程序员根据需求编写的

  • 生命周期函数中的this指向是vm或组件实例对象

注:调试bug的一个技巧,在代码里写入debugger(添加断点)

挂载流程

  • beforeCreate

    • 此时无法通过vm访问到data中的数据,methods中的方法
  • created

    • 此时可以访问vm中的data中的数据和methods中的方法
  • beforeMount

    • 页面呈现的是未经Vue编译的DOM结构

    • 所有对DOM的操作,最终都不奏效

  • mounted

    • 页面中呈现的是经过Vue编译的DOM

    • 对DOM的操作均有效(尽可能避免)至此初始化过程结束,一般在从进行:开启定时器,发送网络请求,订阅消息,绑定自定义事件 等初始化操作

更新流程

  • beforeUpdata

    • 此时:数据是新的,但页面是旧的(页面尚未和数据保持同步)
  • updated

    • 此时:数据是新的,页面也是新的(页面和数据保持同步)

销毁流程

  • vm.destroy() 被调用时,vm就被销毁了。完全销毁一个实例,清理它与其他实例的链接,解绑它的全部指令及自定义事件监听器
  • beforeDestroy
    • 此时:vm中所有的:data,methods,指令等待,都处于可用状态,马上要执行销毁过程,一般在此阶段:关闭定时器,取消订阅信息,解绑自定义事件等收尾操作
  • destroyed

常用的生命周期钩子

  1. mounted: 发送ajax请求,启动定时器,绑定自定义事件,订阅消息等【初始化操作】

  2. beforeDestroy:清除定时器,解绑自定义事件,取消订阅消息等【收尾工作】

关于销毁Vue实例

  1. 销毁后借助Vue开发者工具看不到任何信息

  2. 销毁后自定义事件会失效,但原生DOM事件依然有效

  3. 一般不会在beforeDestroy操作数据,因为即操作数据,也不会再触发更新流程

    // 生命周期钩子
    // 目前是8个生命周期钩子,分为4对
    // beforeCreate、created  ------> create 对
    // beforeMount、mounted  ------> mount 对
    // beforeUpdate、updated  ------> update 对
    // beforeDestroy、destroyed  ------> destroy 对
    beforCreate:function(){
        console.log('beforCreate');
    },
    created:function(){
        console.log('created');
    },
    beforeMount:function(){
        console.log('beforeMount');
    },
    mounted:function(){
        console.log('mounted');
    },
    beforeUpdate:function(){
        console.log('beforeUpdate');
    },
    updated:function(){
        console.log('updated');
    },
    beforeDestroy:function(){
        console.log('beforeDestroy');
    },
    destroyed:function(){
        console.log('destroyed');
    }

组件

原生 html,css,js的存在的问题

1,依赖关系混乱,不好维护

2,代码复用率不高

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

在这里插入图片描述

非单文件组件

Vue中使用组件的三大步骤

  1. 定义组件(创建组件)

  2. 注册组件

  3. 使用组件(写组件标签)

  • 如何定义一个组件

    • 使用const xxx = Vue.extend(options)创建,其中options 和 new Vue(options)传入的options几乎一样,但也有区别

    • el不要写,因为最终所有的组件都要经过一个vm的管理,由vm中的el决定服务哪个容器

    • data必须写成函数,因为避免组件被复用时,数据存在引用关系

    • 注:使用template来配置组件结构

  • 如何注册组件

    • 局部注册:靠new Vue的时候传入components选项

    • 全局注册:靠Vue.component(“组件名”,组件)

  • 使用组件

    • 编写组件标签

细节注意

  • 关于组件名

    • 一个单词组成

      • 第一种写法(首字母小写):school

      • 第二种写法(首字母大写):School

    • 多个单词组成

      • 第一种写法(kabab-case命名):my-school

      • 第二种写法(CamelCase命名):MySchool【需要Vue脚手架支持】

    • 注:

      • 组件名尽可能回避HTML中已有的元素名称,例如:h1,H1

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

  • 关于组件标签

    • 第一种写法:

    • 第二种写法:

    • 注:不用脚手架时, 会导致后续组件不能渲染

  • 一个简写方式

    • const school = Vue.extend(options) 可以简写为 const school =options

组件的嵌套

注:app这个组件在实际开发中管理剩余的其他组件

VueComponent

  1. school 组件本质是一个名为VueComponent的构造函数,且不是程序员定义的,是Vue.extend生成的

  2. 我们只需要写,Vue解析时会帮我们创建school组件的实例对象

  3. 特别注意:每次调用Vue.extend ,返回的都一个全新的VueComponent

  4. 关于this指向

  5. 组件配置中:data中的函数,methods中的函数,watch中的函数,computed中的函数,他们的this均是【VueComponent实例对象】

  6. new Vue(options) 配置中:data中的函数,methods中的函数,watch中的函数,computed中的函数,他们的this均是【Vue实例对象】

  7. VueComponent的实例对象,以后简称vc(也可称为:组件实例对象)

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

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

相关文章

岳阳市美术馆预约平台(小程序论文源码调试讲解)

第4章 系统设计 一个成功设计的系统在内容上必定是丰富的&#xff0c;在系统外观或系统功能上必定是对用户友好的。所以为了提升系统的价值&#xff0c;吸引更多的访问者访问系统&#xff0c;以及让来访用户可以花费更多时间停留在系统上&#xff0c;则表明该系统设计得比较专…

Linux 基本开发工具的使用(yum、vim、gcc、g++、gdb、make/makefile)

文章目录 Linux 软件包管理器 - yum理解什么是软件包和yum如何查看/查找软件包如何安装软件如何实现本地机器和云服务器之间的文件互传如何卸载软件 Linux 编辑器 - vim 的使用vim 的基本概念vim 的基本操作vim 命令模式各命令汇总vim 底行模式各命令汇总vim 的简单配置 Linux …

4部署kibana:5601

kibana 是一个基于浏览器页面的Elasticsearch前端展示工具&#xff0c;, 是一个开源和免费的工具 Kibana可以为 Logstash 和 ElasticSearch 提供的日志分析友好的 Web 界面, 可以帮你汇总、分析和搜索重要数据日志 1.安装-所有的es节点 # tar xf kibana-6.4.1-linux-x86_64.t…

1.介绍一下TCP/IP模型和OSI模型的区别【中高频】

OSI模型 将 这个协议 划分为7个不同的层级&#xff0c;分别为物理层、数据链路层、网络层、传输层、会话层、表示层和应用层&#xff0c;而TCP/IP模型只有4个层级&#xff0c;分别为网络接口层、网络层、传输层和应用层&#xff0c;其中应用层在用户态&#xff0c;传输层及以下…

【反爬】拦截comBusiness.js disable-devtool.js

一、现象 无法使用ctrls保存网页&#xff0c;但是可以在设置菜单中可以保存&#xff1b;无法使用F12和ctrlshifti打开开发者窗口&#xff0c;但是可以在设置菜单中打开&#xff1b;打开开发者窗口后网站快速关闭&#xff0c;说明被检测到了&#xff1b; 二、涉及js 打开设置菜…

【11】子网

区块链子网概述 什么是子网&#xff1f; 子网是在较大网络上下文中运行的较小网络&#xff0c;因此由对应的“主网”&#xff0c;主网即包含多个子网的较大网络或具有隶属关系的上一级网络。子网允许在主网中进行一些独立的事务或控制网络参数。 对于互联网而言&#xff0c;…

爬虫基础入门之爬取豆瓣电影Top250-Re正则的使用

网址:豆瓣电影 Top 250 本案例所需要的模块 requests (用于发送HTTP请求)re (用于字符串匹配和操作) 确定需要爬取的数据 &#xff1a; 电影的名称电影的年份电影的评分电影评论人数 一. 发送请求 模拟浏览器向服务器发送请求 准备工作 -分析页面: F12 or 右击点击检查 查看…

论文笔记(七十二)Reward Centering(五)

Reward Centering&#xff08;五&#xff09; 文章概括摘要附录B 理论细节C 实验细节D 相关方法的联系 文章概括 引用&#xff1a; article{naik2024reward,title{Reward Centering},author{Naik, Abhishek and Wan, Yi and Tomar, Manan and Sutton, Richard S},journal{arX…

Flash-03

1-问题&#xff1a;Flash软件画两个图形&#xff0c;若有部分重合则变为一个整体 解决方法1&#xff1a;两个图形分属于不同的图层 解决方法2&#xff1a;将每个图形都转化为【元件】 问题2&#xff1a;元件是什么&#xff1f; 在 Adobe Flash&#xff08;现在称为 Adobe Anim…

ssh配置 远程控制 远程协作 github本地配置

0.设备版本 windows11 ubuntu24.0.4 1.1 在 Linux 上启用 SSH 服务 首先&#xff0c;确保 Linux 计算机上安装并启用了 SSH 服务。 安装和启动 OpenSSH 服务&#xff08;如果未安装&#xff09; # 在终端安装 OpenSSH 服务&#xff08;如果尚未安装&#xff09; sudo apt …

C语言数据结构—堆的应用及Topk问题

目录 1、堆排序 1、把数组先原地调整成堆 1.1 向上调整 1.2 向下调整 1.3 两种调整方式的时间复杂度分析 2、进行排序 1、堆排序 堆排序即利用堆的思想来进行排序&#xff0c;总共分为两个步骤&#xff1a; 1、建堆 升序&#xff1a;建大堆 降序&#xff1a;建小堆 2、利…

贪心算法精品题

1.找钱问题 本题的贪心策略在于我们希望就可能的保留作用大的5元 class Solution { public:bool lemonadeChange(vector<int>& bills) {std::map<int ,int> _map;for(auto ch:bills){if(ch 5) _map[ch];else if(ch 10){if(_map[5] 0) return false;else{_m…

【Blender】三、材质篇--01,Blender材质基础 原理化BSDF

0 00:00:05,460 --> 00:00:09,980 好 材质篇上一张呢 我们做了12个模型 我知道大家很想把它晒出来 1 00:00:10,440 --> 00:00:17,360 但是咱们先把材质学了吧 学材质 我们只要抓住那些对精髓的东西就好了 能够用手试出来的东西呢 你 2 00:00:17,530 --> 00:00:30,37…

博客系统完整开发流程

前言 通过前⾯课程的学习, 我们掌握了Spring框架和MyBatis的基本使用, 并完成了图书管理系统的常规功能开发, 接下来我们系统的从0到1完成⼀个项⽬的开发. 企业开发的流程 1. 需求评审(产品经理(PM)会和运营(想口号),UI,测试,开发等沟通) ,会涉及到背景/目标/怎么做,可能会有多…

iOS App的启动与优化

App的启动流程 App启动分为冷启动和热启动 冷启动&#xff1a;从0开始启动App热启动&#xff1a;App已经在内存中&#xff0c;但是后台还挂着&#xff0c;再次点击图标启动App。 一般对App启动的优化都是针对冷启动。 App冷启动可分为三个阶段&#xff1a; dyld&#xff1a…

一键导出数据库表到Excel

工作中&#xff0c;我们经常需要将数据库表导出到Excel&#xff0c;通常我们会用数据库编辑器之类的工具提供的导出功能来导出&#xff0c;但是它们的导出功能通常都比较简单。 这篇文章将介绍一种简单易用并且功能强大的导出方法。 新增导出 打开的卢导表工具&#xff0c;新…

1.1部署es:9200

安装es&#xff1a;root用户&#xff1a; 1.布署java环境 - 所有节点 wget https://d6.injdk.cn/oraclejdk/8/jdk-8u341-linux-x64.rpm yum localinstall jdk-8u341-linux-x64.rpm -y java -version 2.下载安装elasticsearch - 所有节点 wget ftp://10.3.148.254/Note/Elk/…

基于YOLO11深度学习的半导体芯片缺陷检测系统【python源码+Pyqt5界面+数据集+训练代码】

《------往期经典推荐------》 一、AI应用软件开发实战专栏【链接】 项目名称项目名称1.【人脸识别与管理系统开发】2.【车牌识别与自动收费管理系统开发】3.【手势识别系统开发】4.【人脸面部活体检测系统开发】5.【图片风格快速迁移软件开发】6.【人脸表表情识别系统】7.【…

财务运营域——营收稽核系统设计

摘要 本文主要介绍了营收稽核系统的背景、特点与作用。营收稽核系统的产生源于营收管理复杂性、财务合规与审计需求、提升数据透明度与决策效率、防范舞弊与风险管理、技术进步与自动化需求、多元化业务模式以及跨部门协作与数据整合等多方面因素。其特点包括自动化与智能化、…

SpringCloud系列教程:微服务的未来(二十五)-基于注解的声明队列交换机、消息转换器、业务改造

前言 在现代分布式系统中&#xff0c;消息队列是实现服务解耦和异步处理的关键组件。Spring框架提供了强大的支持&#xff0c;使得与消息队列&#xff08;如RabbitMQ、Kafka等&#xff09;的集成变得更加便捷和灵活。本文将深入探讨如何利用Spring的注解驱动方式来配置和管理队…