Vue知识总结-中

VUE-生命周期

  • 生命周期概述
    • 生命周期也常常被称为生命周期回调函数/生命周期函数/生命周期钩子
    • 生命周期是Vue在关键时刻帮我们调用的一些特殊名称的函数
    • 生命周期函数的名字不能更改,但函数的具体内容是由我们程序员自己编写的
    • 生命周期函数中的this指向是vm或组件实例对象 
  • 生命周期钩子
    • beforecreate
      • 此时,无法通过vm访问到data中的数据、methods中的方法
    • 初始化:数据监测、数据代理(在beforecreate和create之间进行)
    • create
      • 此时可以通过vm访问到data中的数据、methods中配置的方法
    • beforemount
      • 页面呈现的是未经Vue编译的DOM结构
      • 所有对DOM的操作最终都不奏效
    • mounted
      • 页面呈现的是经过Vue编译的DOM结构
      • 对DOM的操作都奏效(尽可能避免操作DOM),到此Vue初始化结束,一般在此进行
        • 开启定时器、发送网络请求、订阅消息、绑定自定义事件      
    • beforeupdate
      • 此时:数据是最新的,但页面是旧的,即页面和数据还未同步
    • updated
      • 此时页面和数据保持同步
    • beforedestroy
      • vm中所有的:data、methods、指令等都处于可用状态,马上执行销毁过程,一般在此进行
        • 关闭定时器、取消订阅消息、解绑自定义事件等首尾工作
    • destroyed
      • vue销毁完成
  • 常用的生命周期钩子
    • mounted:主要包含发送ajax请求,启动定时器,绑定自定义事件,订阅消息等,相当于【初始化操作】
    • beforeDestroy:清除定时器、解绑自定义事件、取消订阅消息等,相当于【收尾操作】
  • 关于销毁Vue实例
    •  销毁 后借助Vue开发者工具看不到任何信息
    • 销毁后自定义事件会失败,但原生DOM事件依然有效
    • 一般不会在beforeDestroy操作数据,因为即便操作数据也不会再触发更新流程了 

VUE-组件

每个组件就是实现应用中的局部功能的代码和资源的集合
模块和组件
  • 模块
    •  由于js文件很多很复杂,因此为了复用js、简化js编写、提高js运行效率,所以将一个js中可复用的js抽取独立为一个个模块
  • 模块化
    •  当应用中的js都以模块来编写,那这个应用就是一个模块化的应用
  • 组件
    •  由于一个界面功能可能很复杂,因此为了复用编码,简化项目编码,提高运行效率,所以将局部功能代码独立出来一个个组件(html+js+css+image等)
    • 非单文件组件:即一个文件中包含了n个组件(Vue工程化项目采取的都是单文件组件)
  • 组件化
    •  当应用中的界面功能都以组件来编写,那这个应用就是一个组件化的应用
Vue使用组件的步骤
  • 定义组件
    • 可以使用Vue.extend(options)创建【可简写为const test = options】,其中options和new Vue(options)时传入的几乎一样,区别如下:
      • 不定义el配置项:因为最终所有的组件都要经过一个vm管理,由vm的el决定服务哪个容器
      • data必须写成函数:为了避免组件被复用时,数据存在引用关系
  • 注册组件
    • 局部注册:new Vue()时传入components配置项
    • 全局注册:Vue.component('组件名',组件)
  • 使用组件
    • 在需要使用组件的页面中使用组件标签,比如:<test></test>或者<test/>(仅可用于脚手架项目,否则会导致其后的组件不能正常渲染)
  • 注意
    • 组件名
  • 一个单词组成
    • 字母全部小写,如:student
    • 首字母大写:Student(推荐采用该命名方式】)
  • 多个单次组成
    • 采用kebab-case命名:my-student
    • 采用CamelCase命名:MyStudent(仅支持脚手架项目,推荐采用该命名方式)
  • 备注
    • 组件名尽可能避免HTML中已有的元素名称,如h2,H2等
    • 使用name配置项指定组件在开发者工具中呈现的名字(防止他人在注册自己的组件时任意改名)
VueComponent
  • 组件本质是一个名为VueComponent的构造函数,是由Vue.extend创建组件时生成的
  • 在使用组件时,Vue在解析组件时会帮我们创建组件的实例对象,即调用new VueComponent(options)
  • 每次调用Vue.extend(options)返回的都是一个全新的VueComponent!!!
  • 关于this指向
    • 在组件配置中,data函数、methods中函数、watch中函数、computed函数等都是指向【VueComponent实例对象,可简称vc】
    • 在new Vue()配置中,data函数、methods中函数、watch中函数、computed函数等都是指向【Vue实例对象,简称vm】
  • 重要的内置关系
    • VueComponent.prototype._proto_ === Vue.prototype,该关系可以让VueComponent组件实例对象访问到Vue原型上的属性和方法    

VUE-ref属性

  • ref属性常用来给元素或子组件注册引用信息(id的替代者)
  • 应用在html标签上获取的是真实DOM元素,应用在组件标签上是组件实例对象(vc)
  • 使用方式
    • 示例:<h1 ref="xxx">...</h1>或者<Student ref="xxx"></Student>
    • 获取:this.$refs.xxx

VUE-props配置项

  • 功能就是让组件本身接收外部传过来的数据,然后组件本身中的props进行接收对应数据
  • 传递数据:如<Demo name="xxx"/>
  • 接收数据:配置项props:['name'](只接受); 或者props:{name:string}(限制类型)或者props:{name:{type:String,required:true,default:'test'}}(限制类型、必要性、默认值)
  • 注意
    • props是只读的,Vue底层会监测你对props的修改,如果进行修改,就会发出警告,若业务需要修改,请复制props的内容到data配置项中一份,然后通过读取data中对应的属性实现数据的修改

VUE-mixin混入

  • 功能就是把多个组件公用的配置项提取到一个混合对象js文件,再进行混合对象的暴露,在需要使用该混合对象的组件进行引入即可使用
  • 使用方式
    • 第一步定义混合,如:{data(){},methods:{}...}
    • 第二步使用混入,如
      • 全局混入:Vue.mixin{xxx}
      • 局部混入:mixins:['xxx']

    
VUE-插件plugin

  • 功能就是用来增强Vue,本质就是包含install方法的一个对象的js文件,install的第一个参数时Vue,第二个及后续参数是插件使用者传递的数据
  • 定义插件
  • 对象.install = function(Vue,options)    {
    • //下面定义的所有方法即可直接被组件调用
      • //添加全局过滤器
      •  Vue.filter(...)
      • //添加全局指令
      • Vue.directive(...)
      • //配合全局混入/合
      • Vue.mixin()
      • //添加实例方法
      • Vue.prototype.$myMethod = function(){...}
      • Vue.prototype.$myProperty = xxx
  • 使用插件
    • 引入插件js文件然后Vue.use(引入插件时的名称)

VUE-scoped样式

  • 在组件的style加上scoped可以让样式在局部生效,防止冲突,即<style scoped>    

VUE-脚手架

  • Vue脚手架[也称为vue cli(command line interface)]是Vue官方提供的用于Vue项目开发的标准化开发工具/平台(脚手架文档:https://cli.vuejs.org/zh/)
  • 脚手架项目具体使用步骤
    • 注意:在执行第一步前,需要配置npm淘宝镜像(防止因网速慢导致下载中断):npm config set registry https://registry.npm.taobao.org
    • 第一步:仅第一次执行,全局安装@vue/cli:npm install -g @vue/cli
    • 第二步:切换到要创建项目的目录,再创建项目:vue create xxx
    • 第三步:启动项目:npm run serve 
Vue不同版本
  • vue.js与vue.runtime.xxx.js
    • vue.js是完整版Vue,包含了核心功能和模板解析器
    • vue.runtime.xxx.js是运行版Vue,只包含核心功能,没有模板解析器
    • 注意:我们在开发过程中,引用的vue采用的就是vue.runtime.esm.js【无模板解析器】,所以我们不能在new Vue时传入template配置项,而只能通过render函数接收到createElement元素去指定具体内容(比如在指定vue服务App容器时)
vue.config.js配置文件 
  • Vue脚手架隐藏了所有webpack相关配置,可以通过vue inspect> output.js查看脚手架默认配置
  • 创建vue.config.js文件可以对脚手架进行个性化定制(比如可修改入口文件main.js名字)【可参考https://cli.vuejs.org/zh】

扩展

webStorage
  • 称为浏览器存储,包括localStorage和sessionStorage
  • 存储内容大小一般支持5MB左右(不同浏览器可能不一样)
  • 浏览器端通过window.sessionStorage和window.localStorage属性来实现本地存储机制
  • 相关API
    • xxxStorage.setItem('key','value'); //添加键值到存储中,若存在该键名,则更新其对应的值
    • xxxStorage.getItem('key'); //获取该key对应的值
    • xxxStorage.removeItem('key'); //获取该key对应的值
    • xxxStorage.getItem('key'); //从存储中移除该键值
    • xxxStorage.clear(); //清空存储中所有数据
  • 注意
    • SessionStorage存储的内容会随着浏览器窗口关闭而消失
    • LocalStorage存储的内容需要手动清除才会消失
    • xxxStorage.getItem('key');当获取该key对应的值不存在时,则会返回null,JSON.parse(null)结果依然是null

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

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

相关文章

【Flutter 开发实战】Dart 基础篇:从了解背景开始

想要学会用 Flutter 开发 App&#xff0c;就不可避免的要学习另一门很有意思的编程语言 —— Dart。很多小伙伴可能在学习 Flutter 之前可能都没听说过这门编程语言&#xff0c;我也是一样&#xff0c;还以为 Dart 是为了 Flutter 而诞生的&#xff1b;然而&#xff0c;当我们去…

【嵌入式】Makefile 学习笔记记录 | 嵌入式Linux

文章目录 前言一、Makefile的引入——最简单的gcc编译过程二、Makefile的规则三、Makefile的语法3.1、通配符3.2、假想目标 .phony3.3、即时变量 延时变量 四、Makefile的函数4.1、foreach4.2、filter4.3、wildcard4.4、patsubst 五、Makefile升级5.1、包含头文件在内的依赖关系…

Force Yc 第六引导公告网页源码

Force Yc 第六引导公告网页源码,HTML源码&#xff0c;本地双击index.html即可运行,内容体积小&#xff0c;美观大气&#xff0c;二次元风格,喜欢的朋友可以拿去研究 蓝奏云&#xff1a;https://wfr.lanzout.com/iZsjv1kexkod

西电期末1035.可构造三角形个数

一.题目 二.分析与思路 依旧是遍历判断&#xff0c;三角形任意两边之和大于第三边&#xff0c;读题&#xff01;&#xff01;&#xff01;&#xff1a;连续的三个数&#xff01;&#xff01;&#xff01; 三.代码实现 #include<bits/stdc.h>//万能头 int main() {int …

机器视觉篇

1&#xff1a;实现LCD显示文字 实验名称&#xff1a;LCD 版本&#xff1a; v1.0 日期&#xff1a; 2022.12 作者&#xff1a; 01Studio 说明&#xff1a;编程实现LCD显示信息。需要将01Studio.bmp文件发送到开发板 import lcd,image,utimelcd.init() #初始化LCD lcd.clear(lcd…

嵌入式培训机构四个月实训课程笔记(完整版)-Linux系统编程第五天-Linux消息共享内存练习题(物联技术666)

更多配套资料CSDN地址:点赞+关注,功德无量。更多配套资料,欢迎私信。 物联技术666_嵌入式C语言开发,嵌入式硬件,嵌入式培训笔记-CSDN博客物联技术666擅长嵌入式C语言开发,嵌入式硬件,嵌入式培训笔记,等方面的知识,物联技术666关注机器学习,arm开发,物联网,嵌入式硬件,单片机…

案例介绍|钡铼助力2023年全国职业院校技能大赛工业网络智能控制与维护赛项

如今&#xff0c;越来越多的企业开始意识到数字制造和工业物联网已经成为工业自动化中大规模生产的核心驱动力。这其中&#xff0c;工业网络作为基础设施&#xff0c;是实现工厂设备联网与数据采集&#xff0c;建设数字工厂的基础和前提&#xff0c;甚至成为关乎数字工厂能否真…

【动态规划】C++算法312 戳气球

作者推荐 【动态规划】【字符串】扰乱字符串 本文涉及的基础知识点 动态规划 LeetCode312 戳气球 有 n 个气球&#xff0c;编号为0 到 n - 1&#xff0c;每个气球上都标有一个数字&#xff0c;这些数字存在数组 nums 中。 现在要求你戳破所有的气球。戳破第 i 个气球&…

PIG框架学习2——资源服务器的配置详解

一、前言 1、pig资源服务器的配置 Spring Security oauth2相关的依赖是在pigx-common-security模块中引入的&#xff0c;其他模块需要进行token鉴权的&#xff0c;需要在微服务中引入pigx-common-security模块的依赖&#xff0c;从而间接引入相关的Spring security oauth2依赖…

环境中碳循环

含碳的物质有CO2、CO、CH4、糖类、脂肪和蛋白质等&#xff0c;碳循环以CO2为中心&#xff0c;CO2被植物、藻类利用进行光合作用&#xff0c;合成植物性碳&#xff1b;动物摄食植物就将植物性碳转化为动物性碳&#xff1b;动物和人呼吸放出CO2&#xff0c;有机碳化合物被厌氧微生…

nodejs安装、nodejs环境变量配置、npm安装、vue安装

官网下载链接:https://nodejs.org/en/download/ 个人下载版本&#xff1a;node-v20.10.0-x64.msi&#xff0c;下载完成后&#xff0c;点击安装&#xff0c;除了更换安装目录&#xff0c;其他直接下一步即可 安装完成后执行&#xff1a;npm -v 下面开始配置环境变量&#xf…

Spring应用的部署与管理

一、前言 部署是将开发好的应用发布到服务器上&#xff0c;使其能够被用户访问的关键步骤。Spring框架提供了灵活的部署选项&#xff0c;本文将介绍Spring应用的常见部署方式和一些建议&#xff0c;帮助开发者顺利将应用投放到生产环境。 二、传统部署方式&#xff1a;WAR包 传…

Github 2024-01-08开源项目周报 Top14

根据Github Trendings的统计&#xff0c;本周(2024-01-08统计)共有14个项目上榜。根据开发语言中项目的数量&#xff0c;汇总情况如下&#xff1a; 开发语言项目数量Python项目5TypeScript项目3C项目2Dart项目1QML项目1Go项目1Shell项目1Rust项目1JavaScript项目1C#项目1 免费…

【一】使用vue-cli创建vue3的helloworld项目

不再推荐使用vue-cli命令创建vue3的项目&#xff0c;vue-cli 是 Vue 早期推出的一款脚手架&#xff0c;使用 webpack 创建 Vue 项目。后期推荐使用 create-vue&#xff0c;create-vue 是 Vue3 的专用脚手架&#xff0c;使用 vite 创建 Vue3 的项目(关注【二】使用create-vue创建…

XML技术分析05

一、DOM 使用DOM扫描器程序&#xff1a;DOM扫描器是一种非常通用的程序&#xff0c;它不需知道用户定制的XML标记的确切含义。DOMAPI具有某些能把任何数据存储到树形结构中的接口。扫描器具有一组实现了这些接口的类&#xff0c;可以实例化这些类的对象。 这些接口和类…

GEE数据集——Cloud Score+ S2_HARMONIZED数据集

简介 Cloud Score 是一种用于中高分辨率光学卫星图像的质量评估&#xff08;QA&#xff09;处理器。Cloud Score S2_HARMONIZED数据集是由统一的哨兵-2 L1C数据集制作的&#xff0c;Cloud Score的输出可用于识别相对清晰的像素&#xff0c;并有效去除L1C&#xff08;大气顶部&…

2024.1.3力扣每日一题——从链表中移除节点

2024.1.3 题目来源我的题解方法一 递归方法二 栈方法三 反转链表方法四 单调栈头插法 题目来源 力扣每日一题&#xff1b;题序&#xff1a;2487 我的题解 方法一 递归 当前节点对其右侧节点是否删除无影响&#xff0c;因此可以对其右侧节点进行递归移除。 若当前节点为空&am…

ElasticSearch 性能优化

提升写入性能 使用 bulk 接口批量写入 节省重复创建连接的网络开销通过进行基准测试来找到最佳的批处理数量 延长 refresh 的时间间隔 通过延长 refresh&#xff08;刷新&#xff09;的时间间隔可以降低段合并的频率&#xff0c;段合并十分耗费资源默认的刷新频率为1s&…

论文阅读记录SuMa SuMa++

首先是关于SuMa的阅读&#xff0c;SuMa是一个完整的激光SLAM框架&#xff0c;核心在于“基于面元(surfel)”的过程&#xff0c;利用3d点云转换出来的深度图和法向量图来作为输入进行SLAM的过程&#xff0c;此外还改进了后端回环检测的过程&#xff0c;利用提出的面元的概念和使…

LeetCode-加一(66)

题目描述&#xff1a; 给定一个由整数组成的非空数组所表示的非负整数&#xff0c;在该数的基础上加一。 最高位数字存放在数组的首位&#xff0c; 数组中每个元素只存储单个数字。 你可以假设除了整数 0 之外&#xff0c;这个整数不会以零开头。 思路&#xff1a; 这里主要分…