前端笔记 --- vue框架

目录

基础知识

指令的修饰符

计算属性

watch侦听器的写法

Vue的生命周期

工程化开发&脚手架 VUE CLI

组件注册的方式

scoped样式冲突与原理

data

组件之间的关系和组件通信

v-model详解

sync修饰符

Dom介绍

操作HTML标签

总结

ref 和 $refs

$nextTick

自定义指令

安装axios

安装less

前端基于json设计临时用的“接口”

插槽

1.默认插槽

2.后备内容(默认值)

3.具名插槽

4.作用域插槽(是插槽的一个 传参语法)

单页应用程序(SPA)& 路由介绍

路由的基本使用

VueRouter的使用(5 + 2)

组件分类

路由模块封装

声明式导航

定义

两个类名

自定义类名

跳转传参

路由重定向

Vue路由-404

模式设置

编程式导航

两种跳转方式

跳转传参

跳转方式一(通过路径跳转):

跳转方式二(通过name命名路由跳转):

嵌套二级路由(子路由)

返回上一页

组件缓存

基于VueCli自定义创建项目

ESLint代码规范

vuex

定义与作用

构建vuex[多组件数据共享]环境

创建一个空仓库

提供&访问vuex的数据(核心概念 --- state状态)

核心概念:mutations

辅助函数 mapMutations

核心概念:actions

辅助函数:mapActions

核心概念:getters

分模块

vant组件库

Element组件库

项目中的vw适配问题(开发移动端必须要考虑的)

商城项目学习

图形验证码功能实现

api接口模块

Toast轻提示

响应拦截器统一处理错误提示

登录权证信息存储

vuex持久化处理---storage存储模块

loading效果

基于全局前置守卫,进行页面访问拦截处理

搜索---历史记录管理 功能实现

v-model实现组件数据父传子(常用)

mixins混入

打包优化

利用ElmentUI组件实现的节流处理

Vue3


基础知识

创建一个Vue实例,

插值表达式,

响应式,

各种指令。。。

发请求都是异步的原因:发起请求为异步的主要原因是为了避免阻塞页面的渲染和交互。如果前端发起请求是同步的,那么在请求返回之前,浏览器会一直等待,页面就会被阻塞,用户无法进行其他操作,这会给用户带来不好的体验。

route获取数据,router跳转。

v-html:

自定义属性且可以动态设置。

双向绑定指令v-model :可以让数据 与 视图 进行双向绑定

filter实现删除操作:

methods: {del(id){this.booksList = this.booksList.filter(i => i.id !== id)console.log(id)}
}

unshift实现对数组元素的增加:

add(){if(!this.subject){alert('请输入科目')return}if(typeof this.score !== "number"){alert('请输入正确的数据')return}this.list.unshift({id: +new Date(),subject: this.subject,score: this.score})this.subject = ''this.score = ''
}

reduce实现对数据求和的计算

computed: {totalScore(){return this.list.reduce((sum,item) => sum + item.score,0)}
},

class:与css样式有关

指令的修饰符

计算属性

watch侦听器的写法

1.简单写法 ----> 监视简单类型的变化

watch: {数据属性名 (newValue, oldValue) {一些业务逻辑 或 异步操作。 },'对象.属性名' (newValue, oldValue) {一些业务逻辑 或 异步操作。 }
}

2.完整写法

watch: {// watch 完整写法数据属性名: {deep: true, // 深度监视(针对复杂类型)immediate: true, // 是否立刻执行一次handlerhandler (newValue) {console.log(newValue)}}
}

Vue的生命周期

问题:

解决:

生命周期函数(钩子函数):

VUE生命周期过程中,会自动运行一些函数,被称为 [生命周期钩子] 。让开发者可以在【特定阶段】运行自己的代码。

工程化开发&脚手架 VUE CLI

看package.json文件:

创建项目的方法:

方法一:vue create 项目名 (目前我的电脑只有 命令提示符和Git Bath能获取到全局vue,终端和WebStorm终端获取不到)

方法二:npm create vue@latest

项目目录介绍

根组件:App.vue

没有安装less依赖。

组件注册的方式

局部注册:只能在注册的组件内使用

全局注册:所有组件内都可以使用

注意:

组件名规范 --> 大驼峰命名法:如HmHeader

技巧:
一般都用局部注册,如果发现确实是通用组件,再抽离到全局。

scoped样式冲突与原理

data

组件之间的关系和组件通信

Props:

props 定义:组件上注册的一些自定义属性。

props校验

非父子关系的通信

event bus 事件总线(拓展)(只是简单场景用这个)

步骤:

例子:

发布方 接收方

非父子通信-provide-inject(拓展)

v-model详解

原理:

对v-model进行拆解

表单类组件封装

表单类组件封装 & v-model简化代码

sync修饰符

Dom介绍

DOM树是一个层次结构,其中每个HTML标签都可以视为一个节点。这些节点包括但不限于:

  • 文档节点:代表整个HTML文档,通常以document对象表示。
  • 元素节点:代表HTML中的标签,例如<div>, <p>, <input>等。
  • 文本节点:代表元素内的文本,例如<p>Hello, world!</p>中的"Hello, world!"。
  • 属性节点:代表元素的属性,例如<img src="image.jpg">中的src属性。

HTML标签与DOM节点

操作HTML标签

通过DOM API,我们可以访问并操作这些元素节点:

  • 获取节点
    • document.getElementById('id'):根据ID获取一个特定的元素节点。
    • document.querySelector('selector'):使用CSS选择器获取第一个匹配的元素节点。
    • document.querySelectorAll('selector'):使用CSS选择器获取所有匹配的元素节点。
  • 创建节点
    • document.createElement('tagName'):创建一个新的元素节点。
    • document.createTextNode('text'):创建一个新的文本节点。
  • 插入节点
    • parentElement.appendChild(childNode):向父节点添加一个新的子节点。
    • parentElement.insertBefore(newNode, referenceNode):在参考节点之前插入一个新节点。
  • 修改节点
    • element.setAttribute('attr', 'value'):设置元素的属性值。
    • element.innerHTML = 'content':更改元素内部的内容。
  • 删除节点
    • parentElement.removeChild(childNode):从父节点中移除一个子节点。
总结

DOM提供了操作HTML文档的API,而HTML标签则是DOM树中的元素节点。通过这些API,我们可以获取、创建、修改和删除这些节点,从而动态地改变网页的内容和布局。

ref 和 $refs

作用:利用 ref 和 $refs 可以用于获取dom元素,或 组件实例
特点:查找范围 ---> 当前组件内(更精确稳定)

作用一:(获取dom,即获取HTML的各种标签)

作用二:

$nextTick

vue的底层是异步dom更新的。

自定义指令

全局注册

指令的值

需求:实现一个 color 指令 - 传入不同的颜色,给标签设置文字颜色。

总结:

自定义 v-loading 指令

安装axios

npm install axios 或者 yarn add axios

然后再:import axios from 'axios'

axios请求都是异步的。

安装less

npm install --save-dev less less-loader

  1. less: 这是一个 CSS 预处理器,允许你使用变量、嵌套规则、混合、函数等特性来编写更简洁、可维护的 CSS 代码。
  2. less-loader: 这是一个 Webpack 加载器,用于将 .less 文件转换为浏览器可以理解的 CSS。

  • npm install: 这是 npm (Node Package Manager) 的 install 命令,用于安装 Node.js 包。
  • --save-dev: 这个选项告诉 npm 将安装的包添加到 package.json 文件的 devDependencies 部分。这意味着这些包只在开发过程中需要,并不是生产环境必需的。
  • less: 这是要安装的第一个包的名称。
  • less-loader: 这是要安装的第二个包的名称。

前端基于json设计临时用的“接口”

插槽

1.默认插槽

2.后备内容(默认值)

3.具名插槽

默认插槽无法满足,需要使用具名插槽。

4.作用域插槽(是插槽的一个 传参语法)

单页应用程序(SPA)& 路由介绍

路由的基本使用

VueRouter的使用(5 + 2)

npm install vue-router@3.6.5

组件分类

路由模块封装

好处:
拆分模块,利于维护
快速引入组件:
基于 @ 指代 src 目录,从 src目录 出发找组件

声明式导航

定义

两个类名

自定义类名

跳转传参

目标:在跳转路由时,进行传值。

方法一:

方法二:

两种方法比较:

方法二补充:

路由重定向

Vue路由-404

模式设置

编程式导航

两种跳转方式

方法一:

上面的写法分为简写和完整写法

方法二:

跳转传参

同样是查询参数传参动态路由传参。

跳转方式一(通过路径跳转)既可以使用查询参数传参也可以使用动态路由传参。

跳转方式二(通过路由名字跳转)也是一样的,既可以使用查询参数传参也可以使用动态路由传参。

跳转方式一(通过路径跳转)

1.查询参数传参:

简写方式:

比如:

或者(完整写法)

组件内参数的接收方式:

比如:

2.动态路由传参:

第一步:先去配置动态路由

然后:

简写方式:

this.$router.push(`/路径/参数值`)

或者(完整写法):

比如:


 

组件内参数的接收方式:

比如:

跳转方式二(通过name命名路由跳转):

1.查询参数传参

参数接收方式:

2.动态路由传参

第一步:先去配置动态路由

const router = new VueRouter({router: [...,{name: 'search',path: 'search/:words?',component: Search}]
})

然后

比如:

参数接收方式;

嵌套二级路由(子路由)

通过 children 配置项,可以配置嵌套子路由。

步骤:
第一步:在children配置项中,配规则

比如


第二步:准备二级路由出口

比如

返回上一页

组件缓存

组件缓存keep-alive

举例:

进入缓存的组件时会自动访问生命周期钩子函数:activated()

离开缓存的组件时会自动访问生命周期钩子函数:deactivated()

总结:

项目案例实现的步骤:

基于VueCli自定义创建项目

Linter:ESLint代码规范

Vuex也可以勾上。

ESLint代码规范

https://standardjs.com/rules-zhcn.html

JavaScript Standard Style (standardjs.com)

解决方法:

手动修正。。。

自动修正:装插件,。。。。。

vuex

定义与作用

构建vuex[多组件数据共享]环境
创建一个空仓库

npm install vuex@3

或者npm install vuex@3 -force

提供&访问vuex的数据(核心概念 --- state状态)

严格模式:

核心概念:mutations

传参语法:

注意点:

辅助函数 mapMutations

核心概念:actions

辅助函数:mapActions

核心概念:getters

分模块

模块创建

访问模块中的state

访问模块中的getters

模块中的mutation的调用语法

模块中的action的调用语法

vant组件库

第一步:

导入方式:

1.全部导入

2.按需导入(自动按需导入)

(npm i babel-plugin-import -D)

Element组件库

安装和使用请看官网!!!!!

项目中的vw适配问题(开发移动端必须要考虑的)

使用npm安转插件:

npm i postcss-px-to-viewport@1.1.1 -D

商城项目学习

图形验证码功能实现

api接口模块

Toast轻提示

响应拦截器统一处理错误提示

登录权证信息存储

vuex持久化处理---storage存储模块

loading效果

基于全局前置守卫,进行页面访问拦截处理

搜索---历史记录管理 功能实现

v-model实现组件数据父传子(常用)

mixins混入

可提供在所有的Vue组件中可复用的一些数据或者方法或者生命周期函数。

导入方法:

打包优化

指令:

npm run build

首屏加载慢:单页应用程序的缺点。

解决方法:(路由懒加载)

异步组件改造举例:

------->

利用ElmentUI组件实现的节流处理

步骤

  1. 安装 Lodash:用于节流处理。
npm install lodash --save
  1. 创建 Loading 实例:在请求拦截器中创建 Loading 实例,并在请求开始时显示,请求结束时隐藏。
  2. 节流处理:使用 Lodash 的 throttle 函数来控制 Loading 的显示和隐藏。

具体操作看wgxm项目。

Vue3

未完待续。。。

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

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

相关文章

智能双剑合璧:基于语音识别与大模型的技术沙龙笔记整理实战

智能双剑合璧&#xff1a;基于语音识别与大模型的技术沙龙笔记整理实战 ——记一次网络安全技术沙龙的高效知识沉淀 引言&#xff1a;当网络安全遇上AI生产力工具 在绿盟科技举办的"AI驱动的未来网络安全"内部技术沙龙中&#xff0c;笔者亲历了一场关于网络安全攻…

数据结构(蓝桥杯常考点)

数据结构 前言&#xff1a;这个是针对于蓝桥杯竞赛常考的数据结构内容&#xff0c;基础算法比如高精度这些会在下期给大家总结 数据结构 竞赛中&#xff0c;时间复杂度不能超过10的7次方&#xff08;1秒&#xff09;到10的8次方&#xff08;2秒&#xff09; 空间限制&#x…

使用 UNIX 命令在设计中搜索标识符:vcsfind 的入门指南

在现代软件开发和硬件设计中&#xff0c;快速准确地定位和搜索特定标识符是提高开发效率的关键。本文将介绍如何使用 UNIX 命令 vcsfind 在设计中搜索标识符&#xff0c;帮助您更高效地管理您的项目。 什么是 vcsfind&#xff1f; vcsfind 是一个强大的 UNIX 命令行工具&#x…

第56天:Web攻防-SQL注入增删改查盲注延时布尔报错有无回显错误处理审计复盘

#知识点 1、Web攻防-SQL注入-操作方法&增删改查 2、Web攻防-SQL注入-布尔&延时&报错&盲注 一、增删改查 1、功能&#xff1a;数据查询 查询&#xff1a;SELECT * FROM news where id$id 2、功能&#xff1a;新增用户&#xff0c;添加新闻等 增加&#xff1a;IN…

跳表实现学习

1.介绍 2.源码 跳表节点&#xff1a; /* ZSETs use a specialized version of Skiplists */ /*** brief 定义跳跃表节点的数据结构。* * 该结构体用于表示跳跃表中的一个节点&#xff0c;包含元素、分数、后向指针和多层链表信息。*/ typedef struct zskiplistNode {sds ele;…

Python:正则表达式

正则表达式的基础和应用 一、正则表达式核心语法&#xff08;四大基石&#xff09; 1. ​元字符&#xff08;特殊符号&#xff09;​ ​定位符 ^&#xff1a;匹配字符串开始位置 $&#xff1a;匹配字符串结束位置 \b&#xff1a;匹配单词边界​&#xff08;如 \bword\b 匹配…

EB-Cable许可管理中的数据安全与隐私保护

在数字化时代&#xff0c;数据安全与隐私保护已成为企业关注的重中之重。作为专业的电缆管理软件&#xff0c;EB-Cable许可管理不仅在功能丰富和操作便捷方面表现出色&#xff0c;更在数据安全与隐私保护方面为用户提供了坚实的保障。本文将详细介绍EB-Cable许可管理在数据安全…

串口通信函数汇总-ing

谢谢各位佬的阅读&#xff0c;本文是我自己的理解&#xff0c;如果您发现错误&#xff0c;麻烦请您指出&#xff0c;谢谢 首先谈谈我自己对于串口的理解&#xff0c;随便拿一个嵌入式的板子&#xff0c;它上面有两个引脚&#xff0c;一个是rx&#xff0c;一个是tx&#xff0c;r…

如何用HTML5 Canvas实现电子签名功能✍️

&#x1f916; 作者简介&#xff1a;水煮白菜王&#xff0c;一位前端劝退师 &#x1f47b; &#x1f440; 文章专栏&#xff1a; 前端专栏 &#xff0c;记录一下平时在博客写作中&#xff0c;总结出的一些开发技巧和知识归纳总结✍。 感谢支持&#x1f495;&#x1f495;&#…

大模型开源的工具包有哪些特殊符号可以使用;SEP 是什么

大模型开源的工具包有哪些特殊符号可以使用 目录 大模型开源的工具包有哪些特殊符号可以使用自定义特殊token:special_tokens=True一、**对话轮次分隔符(必选)**二、**系统提示标记(提升指令理解)**三、**中文特色分隔符(贴合书写习惯)**四、**开源模型专属符号(按文档…

控制系统分类

文章目录 定义与特点1. 自治系统&#xff08;Autonomous System&#xff09;与非自治系统&#xff08;Non-Autonomous System&#xff09;自治系统非自治系统 2. 线性系统&#xff08;Linear System&#xff09;与非线性系统&#xff08;Nonlinear System&#xff09;线性系统非…

通过 ElasticSearch的Python API和`curl` 命令获取Elasticsearch 所有索引名称

导言 在大数据管理和实时搜索场景中&#xff0c;Elasticsearch 是一款不可或缺的工具。无论是开发调试、数据维护&#xff0c;还是系统监控&#xff0c;快速列出所有索引名称都是一个高频需求。本文将手把手教你如何通过 Python 客户端连接 Elasticsearch&#xff0c;并用两种方…

2024年广州市智能网联汽车创新实践年度报告

政策法规方面&#xff0c;积极推进《广州市智能网联汽车创新发展条例》的制定和发布&#xff0c;不断完善法规标准体系&#xff0c;为产业创新发展营造良好政策环境&#xff1b;技术创新方面&#xff0c;企业加大研发投入&#xff0c;在自动驾驶算法、车联网安全等关键领域取得…

计算机操作系统(一) 什么是操作系统

计算机操作系统&#xff08;一&#xff09; 什么是操作系统 前言一、什么是操作系统二、操作系统的作用三、推动操作系统发展的主要动力总结&#xff08;核心概念速记&#xff09;&#xff1a; 前言 当你打开电脑、点击应用、播放音乐时&#xff0c;是谁在背后默默协调这一切&…

韦伯望远镜的拉格朗日点计算推导过程,包含MATLAB和python运动轨迹仿真代码

研究过程 起源与提出&#xff1a;1687 年牛顿提出 “三体问题”&#xff0c;旨在研究三个可视为质点的天体在相互之间万有引力作用下的运动规律&#xff0c;但因运动方程过于复杂&#xff0c;难以得到完全解。欧拉的贡献1&#xff1a;1767 年&#xff0c;瑞士数学家莱昂哈德・…

Gateway:网关路由与登录鉴权

在微服务架构中&#xff0c;用户登录和身份校验的处理方式确实与单体应用有所不同。在单体架构中&#xff0c;一旦用户通过身份验证&#xff0c;其会话信息可以在整个应用范围内共享&#xff0c;所有模块都能访问到用户信息。然而&#xff0c;在微服务架构下&#xff0c;每个服…

【结构光相机的精度极限】

1. 光源波长&#xff08;(\lambda)&#xff09; 光源波长是决定结构光相机精度极限的核心因素之一。根据光学衍射极限理论&#xff0c;光的波长越短&#xff0c;能够分辨的细节越小&#xff0c;精度越高。 理论依据&#xff1a; 根据瑞利判据&#xff08;Rayleigh Criterion&…

Vision Transformer (ViT):将Transformer带入计算机视觉的革命性尝试(代码实现)

Vision Transformer (ViT)&#xff1a;将Transformer带入计算机视觉的革命性尝试 作为一名深度学习研究者&#xff0c;如果你对自然语言处理&#xff08;NLP&#xff09;领域的Transformer架构了如指掌&#xff0c;那么你一定不会对它在序列建模中的强大能力感到陌生。然而&am…

【实战ES】实战 Elasticsearch:快速上手与深度实践-8.1.1基于ES的语义搜索(BERT嵌入向量)

&#x1f449; 点击关注不迷路 &#x1f449; 点击关注不迷路 &#x1f449; 点击关注不迷路 文章大纲 基于Elasticsearch与BERT的语义搜索架构设计与实战1. 传统搜索的局限性与语义搜索的崛起1.1 关键词搜索 vs 语义搜索1.2 Elasticsearch向量检索演进历程关键版本特性对比 2.…