Vue学习笔记3

news2024/12/24 8:23:02

Vue学习笔记3

  • 1.1 指针
  • 1.2 指令补充&nextTick
  • 2.1 Vue-cli
    • 2.1.1 Vue-cli创建项目
    • 2.1.2 启动流程&入口文件
    • 2.1.3 eslint修复
    • 2.1.4 单文件组件-注册
    • 2.1.5 单文件组件-通信
    • 2.1.6 单文件组件-生命周期
    • 2.1.7单文件组件-指令与过滤器
    • 2.1.8 反向代理&别名
  • 反向代理需要在vue.config.js文件中加入一段代码
  • 3.1 spa和路由引入
    • 3.1.1 spa&路由引入
    • vue-router
    • 3.1.2、一级路由
    • 3.1.3 重定向
    • 3.1.4 声明式导航
  • 3.2 嵌套路由
  • 3.3、编程式导航
  • 3.4 动态路由
    • 3.5 路由命名
  • 给路由组件加一个name属性
  • 然后通过name进行跳转
  • 3.6 路由模式

1.1 指针

指令:对于底层DOM操作的一种封装

封装在指令里面可以进行复用

<div id="box">
	<div v-hello=" 'red' "></div>
<div>
<script>
	//自定义指令
	//inserted第一个参数得到的就是这个元素,第二个参数是元素对象
	Vue.directive("hello",{
		//指令的生命周期
		inserted(el,binding){
		//第一次插入到父节点是触发
			el.style.background =binding。value
	},
	update(){
	}	
})
	new Vue ({
		el="box"
	})
</script>

指令的作用:
1. 指令在dom创建好之后就会触发
2. 有时数据引入我们的文件中时,难以判断dom创建的时间
3. 我们可以通过给引入数据的元素上加上自定义指令
4 .当某一个数据引入,dom节点创造好了以后就可以执行某一段行为

1.2 指令补充&nextTick

指令生命周期:
bind:只调用一次,指令第一次绑定到元素时调用。在这里可以进行一次性的初始化设置。
inserted∶被绑定元素插入父节点时调用(仅保证父节点存在,但不一定已被插入文档中)。
upiate :所在组件的VNode更新时调用,但是可能发生在其子VNode更新之前。指令的值
能发生了改变,也可能没有。但是你可以通过比较更新前后的值来忽略不必要的模板更新(详
的钩子函数参数见下)。
componentUpdated∶指令所在组件的VNode及其子VNode全部更新后调用。
unbind(销毁) :只调用一次,指令与元素解绑时调用。

Vue3与组件生命周期的区别:

Vue3中的生命周期与组件生命周期大致相同,仅仅没有了beforeCreate

nextTick:比updated执行的都完,只执行一次 不能复用只能独自使用

this.$nextTick(()=>{

},2000)

2.1 Vue-cli

2.1.1 Vue-cli创建项目

  • 全局定义 (Global definitions) 强制要求每个 component 中的命名不得重复
  • 字符串模板 (String templates) 缺乏语法高亮,在 HTML 有多行的时候,需要用到丑陋的 \
  • 不支持 CSS (No CSS support) 意味着当 HTML 和 JavaScript 组件化时,CSS 明显被遗漏
  • 没有构建步骤 (No build step) 限制只能使用 HTML 和 ES5 JavaScript,而不能使用预处理器,如 Pug (formerly Jade) 和 Babel

可以使用.vue文件

2.1.2 启动流程&入口文件

  1. 可以在packgae.json文件中直接运行脚本
  2. 或者在packgae.json文件的集成终端直接运行
  3. 使用npm run serve 或着npm start来启动
  4. 通过App.vue文件进

2.1.3 eslint修复

出现的原因:

在使用CLI时,语法规则非常苛刻,因此会出现许多错误

解决方案

  1. 在集成终端使用npm run lint 被赋值但没使用这种错误,这个方法无法修复 vscode自动修复eslint
  2. 安装eslint插件,并启用 有时这个插件用不了,可以先将其关闭,最后写完代码在启用,修复文件 先将其关闭,最后写完代码在启用,修复文件
  3. 在vue.config.js文件中添加以下代码
    module.export = { lintOnSave: false//暂时关闭代码格式检测 }

2.1.4 单文件组件-注册

"食用"方法:

  1. 内容写在template标签下 不能有两个相同的元素 兄弟标签 js部分必须使用ES6导出规范export default{}
  2. data使用函数式的写法 可以使用style标签写css,不需要写道行内 如果还需要在文件里引入子组件
  3. 先在外面创建一个.vue文件在里面写组件的内容 在将这个组件 通过 import 子组件名 from '子组件文件的地址’引入 全局写法:
  4. 还需要再父文件中注册组件 Vue.component(‘子组件名’ , 子组件文件名) 再需要使用 import Vue from
  5. 'vue’来引入一次 局部写法: 写components:{ 子组件名 }

2.1.5 单文件组件-通信

  • 父子通信和以前的写法相同
  • 插槽也能使用
  • 子组件的样式会被父组件的影响,插入样式时,先封装子组件的样式再封装父组件的样式,后封装的会影响前封装的
  • 只需要在子组件的style标签中加scoped就可以防止被覆盖

2.1.6 单文件组件-生命周期

与以前得生命周期一样 也可以从其他文件从在生命周期得阶段引入到文件 也可以引入axios文件来使用axios方法 需要在终端写npm i --save axios

2.1.7单文件组件-指令与过滤器

指令

先引入 import Vue from 'vue'
接着指令的方法与原来相同

过滤器

先在文件中使用Vue.filter("过滤器名称",()=>{需要修改的操作})声明即可用

2.1.8 反向代理&别名

在这里插入图片描述

反向代理需要在vue.config.js文件中加入一段代码

devServer: {
	port : 8000//随便改端口号
	proxy : {
		'/api' : {
		target: 'https ://*.*.com' ,//需要代理的网站
		host: '*.*.com ' ,
		changeOrigin :true,
		pathRewrite:{
				'自定义接口的名字':''//将自定义接口的名字转为空字符串
			}
		}
	}
}

  1. 在接口前端自定义一个名字是为了防止引入多个网址时’/api'相同
  2. 在vue文件中 @ 为别名,永远指向src绝对路径,在src下面引入文件时,只需要加@就能引入里面文件的绝对路径

3.1 spa和路由引入

3.1.1 spa&路由引入

在这里插入图片描述

import VueRouter from 'vue-router'
Vue.use(VueRouter)//注册路由插件
//配置表
const routes = [
{
path:"/film",
component:Films
}
}

vue-router

  • 根据不同的路径加载到不同的页面
    在这里插入图片描述

3.1.2、一级路由

  • 在main.js先引入router文件,并且将给文件渲染
  • 再创建几个组件
  • 在路由文件(index.js)中引入组件
  • 在根文件中加上router-view标签相当于slot标签
import 组件名称 from '组件相对地址'
Vue.ues(VueRouter)//注册路由插件,两个全局router-view router-link


const routes =[
{
	path:'/组件名',
	component:组件名称
}//有几个组件就写几次
]

const router =new VueRouter({
	routes
})

export default router

3.1.3 重定向

就是希望打开页面是就会指向我们希望出现的组件页面

const routes =[
	{
		path:'/组件名',
		component:组件名称
	},
	{
	path:'/',
	redirection:'/组件名'
	}
	]

如果想在输入一个未定义的组件,依旧是跳转到我们希望出现的组件页面

const routes =[
	{
		path:'*',
		component:组件名称
	},
	{
	path:'*',
	redirection:'/组件名'
	}
	]

3.1.4 声明式导航

第一种方法

  • 使用标签进行跳转组件(使用to=“组件绝对地址”)时,会自动给跳转的组件加上class,可以通过给这个class加上高亮属性,来使得点击某个图标跳转之后可以使得该图标保持高亮
  • 并且可以在这个标签中自定义class属性,通过active-class="class名称"的方式添加

第二种方法

  • 使用插槽的方式使用标签进行跳转组件(使用to=“组件绝对地址”),在这个标片中间再加一个
  • 标签,在存放组件
    <router-link>标签中加custom v-slot="{navigate,isActive}"属性
    <li>标签上@事件="navigate"属性
    isActive是判断是否在当前组件上,是的话就是true,否则是false,可以通过这一特性,添加动态class

3.2 嵌套路由

在父组件中再嵌套一个路由的方法

import 组件名称 from '组件相对地址'
import 子组件名称 from '子组件相对地址'
	Vue.ues(VueRouter)//注册路由插件,两个全局router-view router-link
	
	const routes =[
	{
		path:'/组件名',
		component:组件名称,
		children:[
			{
				path:'/组件名/子组件名',
				component:子组件名称,
			}
		]
	}
	]

重定向使其跳转到子组件

const routes =[
	{
		path:'/组件名',
		component:组件名称,
		children:[
			{
				path:'/组件名/子组件名',
				component:子组件名称,
			}
			{
				path:'*',
				redirect:'/组件名/子组件名'
			}
		]
	}
	]

3.3、编程式导航

  • 给值赋上事件,通过执行某个函数触发location.href = '#/组件名',使其跳转到那个组件页面
  • 给值赋上事件,通过执行某个函数触发this.$router.push('/组件名'),使其跳转到那个组件页面

3.4 动态路由

在这里插入图片描述

在路由文件中设置一个动态路由

const routes =[
	{
		path:'/组件名/:id',//通过id来获取组件
		component:组件名称
	}
	]

  • 在改组件中设置this.$route.params.id来获取id值,发送请求到后端

  • 在根组件中设置点击事件后,设置一个函数,参数就是id,通过this.$router.push(/组件名称/${id})的方式,使得创建一个组件

3.5 路由命名

给路由组件加一个name属性

const routes =[
		{
			name:'asd'
			path:'/组件名/:id',//通过id来获取组件
			component:组件名称
		}
		]

然后通过name进行跳转

const routes =[
		{
			name:'asd'
			path:'/组件名/:id',//通过id来获取组件
			component:组件名称
		}
		]

3.6 路由模式

  • 如果不想要地址出现#,可以使用history模式
  • 在分享时有些网站会加上#,使用这种模式不影响
  • 加入mode:'history'即可
const router =new VueRouter({
		mode:'history'
		routes
	})

弊端

  1. 不过这种模式要玩好,还需要后台配置支持。因为我们的应用是个单页客户端应用,如果后台没有正确的配置,当用户在浏览器直接访问http: //oursite.com/user/id就会返回404,这就不好看了。
  2. 如果出现了问题,就使用npm run build生成了dist文件夹,仍给后端

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

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

相关文章

二叉树进阶--二叉搜索树

目录 1.二叉搜索树 1.1 二叉搜索树概念 1.2 二叉搜索树操作 1.3 二叉搜索树的实现 1.4 二叉搜索树的应用 1.5 二叉搜索树的性能分析 2.二叉树进阶经典题&#xff1a; 1.二叉搜索树 1.1 二叉搜索树概念 二叉搜索树又称二叉排序树&#xff0c;它或者是一棵空树&#xff0c;…

144. 二叉树的前序遍历

144. 二叉树的前序遍历 Java代码&#xff1a;递归 public List<Integer> preorderTraversal(TreeNode root) {List<Integer> res new ArrayList<>();preOrder(root, res);return res; } private void preOrder(TreeNode root, List<Integer> res) {i…

【沐风老师】3DMAX几何投影插件Geometry Projection使用详解

【几何投影插件】 描述 3DMAX几何投影插件Geometry Projection&#xff0c;将一个或多个对象或它的顶点选择沿全局或局部 x、y 或 z 轴投影到另一个对象上。 适用版本 3dMax2013或更高版本 安装设置 插件的安装非常简单&#xff0c;解压后把插件脚本 “geometry_projectio…

SmartSoftHelp 数据库优化辅助软件

SmartSoftHelp 数据库高并发优化&#xff0c;数据库连接字符串优化&#xff0c;SQL耗时优化&#xff0c;SQL格式化&#xff0c;美化&#xff1f; 这些问题你都知道&#xff1f; 这不仅仅是一个软件&#xff0c;而是很多种解决方案&#xff01; 支持Netframework ,netcore后台…

移动设备安全管理基础指南

什么是移动安全管理 &#xff08;MSM&#xff09; 移动安全管理是指为保护企业中的移动设备和企业数据而采取的行动。这些操作可以进一步被归类为反应性的或主动的&#xff0c;基于该操作是在数据和设备被破坏之前还是之后执行的。除了管理移动设备外&#xff0c;大多数MDM解决…

验收测试分类

α测试 Alpha 是内测版本&#xff0c;即现在所说的CB。 此版本表示该软件仅仅是一个初步完成品, 通常只在软件开发者内部交流, 也有很少一部分发布给专业测试人员。 一般而言, 该版本软件的bug 较多, 普通用户最好不要安装。 β测试 Beta是公测版本&#xff0c;是对所有用户…

【算法】高精度

作者&#xff1a;指针不指南吗 专栏&#xff1a;算法篇 &#x1f43e;不能只会思路&#xff0c;必须落实到代码上&#x1f43e; 文章目录前言一、高精度加法二、高精度减法三、高精度乘法四、高精度除法前言 ​ 高精度即很大很大的数&#xff0c;超过了 long long 的范围&…

html标签手册

完整的HTML页面&#x1f4d1; ①基础标签&#x1f4d1;&#x1f4d1;&#x1f4d1; HTML <!DOCTYPE> 声明 !DOCTYPE声明必须是 HTML 文档的第一行&#xff0c;位于 html标签之前。 !DOCTYPE 声明不是 HTML 标签&#xff1b;它是指示 web 浏览器关于页面使用哪个 HTML 版…

硬件设计 之 CAN通信-DSView逻辑分析仪使用-CAN波形测试

CAN总线讲解 1.基本概念&#xff1a; **CAN&#xff0c;Controller Area Network&#xff0c;控制器局域网是用于解决汽车众多控制部件之间的数据交换而开发的一种串行数据通信总线。 ** 2.CAN总线电平&#xff1a; can总线采用差分电压传输数据&#xff0c;分别是CANH和CA…

QCon演讲实录(上):多云环境下应用管理与交付实践

作者&#xff1a;阿里云大数据基础工程技术团队——郭耀星 大家上午好&#xff01;我是来自阿里云大数据基础工程技术团队的郭耀星&#xff0c;花名雪尧。今天我很高兴能够来到QCon&#xff0c;与大家分享我的经验和心得。在当前的多云环境中&#xff0c;作为运维支撑团队&…

GPDB中的HASH JOIN解析

GPDB中的HASH JOIN机制Hash Join是利用hash函数来实现和加速数据库中JOIN操作的一类算法。主要优势是hash函数可以只通过一次运算就将键值映射到固定大小的hash值&#xff0c;仅用作等值join中。由于HASH JOIN的算法复杂度在平均情况下是O(n)&#xff0c;所以通常在大规模数据时…

【K3s】第15篇 使用containerd容器部署k3s集群

目录 1、文件准备 2、安装master节点 3、安装agent节点 4、查看详情信息 5、遇到问题 1、文件准备 安装docker yum install -y dockersystemctl status docker 增加docker国内镜像源 vi /etc/docker/daemon.json 添加内容为&#xff1a; { "registry-mirrors":…

MySQL:为什么说应该优先选择普通索引,尽量避免使用唯一索引

前言 在使用MySQL的过程中&#xff0c;随着表数据的逐渐增多&#xff0c;为了更快的查询我们需要的数据&#xff0c;我们会在表中建立不同类型的索引。 今天我们来聊一聊&#xff0c;普通索引和唯一索引的使用场景&#xff0c; 以及为什么说推荐大家优先使用普通索引&#xf…

面试题(二十四)数据结构与算法

9.1哈希 请谈一谈&#xff0c;hashCode() 和equals() 方法的重要性体现在什么地方&#xff1f; 考察点&#xff1a;JAVA哈希表 参考回答&#xff1a; Java中的HashMap使用hashCode()和equals()方法来确定键值对的索引&#xff0c;当根据键获取值的时候也会用到这两个方法。…

【OJ】本土化

&#x1f4da;Description: 激动人心的时刻到了&#xff01;我们开发的记账软件即将在欧美地区发布&#xff0c;但我希望能把本土化工作做得更好。所谓的本土化可不仅仅是把软件界面语言翻译成英语&#xff0c;还要根据当地的习俗来调整软件的使用方法。 比如我国在书写数字…

【yolov5】首次尝试目标检测利用prompt

1、打开prompt 2、切换到pytorch所在环境 conda activate freezing我的环境名是freezing&#xff0c;这里根据自己环境名去激活切换 3、进入到yolov5项目所在路径 激活完环境后立即执行指令当然是无效的&#xff0c;首先要进入到你的项目目录 首先看一下自己的项目在那个位…

MongoDB分片集群部署及实践

文章目录MongoDB分片集群部署及实践一、前言二、了解分片集群1.简介2.分片集群组件3.副本集模式三.安装部署1.分片集群环境2.安装1&#xff09;CPU 检测2&#xff09;修改机器名称3&#xff09;配置 hosts 文件4&#xff09;配置防火墙5&#xff09;创建目录6&#xff09;安装 …

PowerBI的使用和基本效果

1. 什么是PowerBI Power BI 是一套商业分析工具&#xff0c;用于在组织中提供见解。可连接数百个数据源、简化数据准备并提供即席分析。生成美观的报表并进行发布&#xff0c;供组织在 Web 和移动设备上使用。每个人都可创建个性化仪表板&#xff0c;获取针对其业务的全方位独…

加一-力扣66-java高效方案

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

PostgreSQL的下载安装教程(macOS、Windows)

postgresql是GIS服务端几乎不可避免要打交道的数据库。因为mysql的空间扩展真是不尽人意。所以想要学会GIS服务端知识,postgresql(下文简称pg)你是必须要会的。 首先要知道,pg是一个空间数据库,和普通数据库不同的是pg支持空间数据的存储与操作。这里所谓的空间数据一般指…