自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(91)
  • 收藏
  • 关注

原创 html2Canvas截取百度地图问题整理及解决方案

2.页面图片转base64,开启foreignObjectRendering页面打点能截取但地图瓦片和页面图片出不来,开启useCORS也无效。解决办法:gif转png再转base64或者若此gif没使用则直接删掉该节点再截图。1.开启foreignObjectRendering 原因是地图打点中含有svg。这个问题是因为地图中打点中引入了gif。

2024-02-05 13:41:44 1126 2

原创 React-hook

React Hook是React 16.8版本之后添加的新属性,用最简单的话来说,React Hook就是一些React提供的内置函数,这些函数可以让函数组件和类组件一样能够拥有组件状态(state)以及进行副作用(side effect)但是不要什么业务都使用hook,请在合适的时候使用hook,否则会造成性能问题.(能不用的时候就不能,当遇到性能不好优化的时候,自然会想到使用它)

2022-10-17 13:28:53 489 1

原创 React-到hook之前的过渡技术

有些组件会有自己本地的状态(state), 当它们的值由于用户的操作而发生改变时,组件就会重新渲染。对于父组件,也就是Context生产者,需要通过一个静态属性childContextTypes声明提供给子组件的Context对象的属性,并实现一个实例getChildContext方法,返回一个代表Context的纯对象。如果要Context发挥作用,需要用到两种组件,一个是Context生产者(Provider),通常是一个父节点,另外是一个Context的消费者,通常是一个或者多个子节点。

2022-10-14 11:18:44 569

原创 React-class类篇

全称:, React 使用 JSX 来替代常规的 JavaScript。JSX 是一个看起来很像 XML 的 JavaScript 语法扩展。我们不需要一定使用 JSX,但它有以下优点:JSX 执行更快,因为它在编译为 JavaScript 代码后进行了优化。它是类型安全的,在编译过程中就能发现错误。使用 JSX 编写模板更加简单快速。作用: 用来创建react虚拟DOM(元素)对象;注意1: 它不是字符串, 也不是HTML/XML标签注意2: 它最终产生的就是一个JS对象。

2022-10-12 17:50:10 383

原创 Vue3-公共数据配置&&插件配置&&网络配置&&路由配置&&数据仓库配置pinia

因为v2使用公共配置时一般绑定在原型上无论是否使用都在每一个组件的this链上,这样的设计不太友好,v3提供了专门公共数据配置的方式: globalProperties getCurrentInstance。参数2:配置的选项对象,即state、getters、actions,其中state的写法必须是函数,为了避免在服务端交叉请求导致的状态数据污染,而且必须是箭头函数,为了更好的TS类型推导。箭头函数的使用:(ps:虽然鼓励但是依然提供了非es6玩家的使用方式 内部可以用this代表state)

2022-09-23 22:01:04 789

原创 Vue3-常用的Composition API(组合API)

script setup> 语法糖里面的代码会被编译成组件setup()函数的内容,不需要通过return暴露声明的变量、函数以及import引入的内容,即可在使用,并且不需要些export default{}这意味着与普通的 只在组件被首次引入的时候执行一次不同, 中的代码会在每次组件实例被创建的时候执行。setup不能是一个async函数,因为返回值不再是return的对象,而是Promise,模板看不到return对象中的属性。

2022-09-18 14:06:16 1642

原创 Vue3-环境集成

【代码】Vue3-环境集成。

2022-09-16 21:35:59 207

原创 Vue-CSS样式穿透

中的scoped所致,当 标签有 scoped 属性时,它的 CSS 只作用于当前组件中的元素。}}发现颜色并没有修改此时需要样式穿透,需要用到深度选择器。}}

2022-09-16 00:23:05 231

原创 egg-token码的生成与验证

1、用户第一次登录,服务器通过数据库校验其UserId和Password合法,则再根据随机数字+userid+当前时间戳 再经过DES加密生成一个token串2、Token是在服务端产生的。如果前端使用用户名/密码向服务端请求认证,服务端认证成功,那么在服务端会返回Token给前端。前端可以在每次请求的时候带上 Token 证明自己的合法地位3、token的生成一般是采用uuid保证唯一性,当用户登录时为其生成唯一的token,存储一般保存在数据库中。

2022-09-15 23:22:19 1115

原创 Vue-引入ElementUI&&use底层原理

还有一种是将这个插件的逻辑封装成一个对象,最后将在 install 编写业务代码暴露给 Vue 对象。这样做的好处是可以添加任意参数在这个对象上方便将 install 函数封装得更加精简,可拓展性也比较高。但是呢这种再main.js中去挂载的写法不太利于管理和维护,代码比较混乱,2.再main.js中引入并挂载到vm对象中。

2022-09-15 20:33:33 574

原创 Vue-管理状态仓库Vuex

Vuex是一个状态管理工具,采用集中式存储管理应用的所有组件的状态,并且以相应的规则保证状态可预测的方式发生改变。本质就是把组件的共享状态和触发修改状态的函数抽离出来,这样就能获得状态或者触发行为。引入vuex;全局注册Vuex,Vue.use(Vuex);创建一个Vuex仓库,仓库里面可以包含五个选项:state(状态)、getters(对状态的过滤)、mutations(状态修改)、actions(异步提交修-改状态信息)、modules(模块);

2022-09-15 00:45:06 517 1

原创 Vue-路由详解

abstract 是vue路由中的第三种模式,本身是用来在不支持浏览器API的环境中,充当fallback,而不论是hash还是history模式都会对浏览器上的url产生作用,本文要实现的功能就是在已存在的路由页面中内嵌其他的路由页面,而保持在浏览器当中依旧显示当前页面的路由path,这就利用到了abstract这种与浏览器分离的路由模式。

2022-09-12 01:11:59 600

原创 Vue-动态组件、缓存组件、异步组件

当我们希望页面中的某个地方,在不同组件之间进行动态切换,这时候除了条件渲染,还可以使用动态组件。

2022-09-11 14:28:26 444

原创 Vue-中央事件总线(bus)

通过创建一个新的vm对象,专门统一注册事件,供所有组件共同操作,达到所有组件随意隔代传值的效果也就是:各个组件内部要传输的数据或者要执行的命令信息,靠bus来通信。我们知道子组件向父组件传值可以通过将自定义事件的方法来进行,那么如果我们把事件绑定在所有组件都能访问的地方,然后想要给某个组件通信,直接触发这个事件。//1.触发x组件的a事件: x.$emit("a事件",参数...)//2.给x组件绑定a事件 x.$on("a事件",监听器函数)

2022-09-09 22:44:29 3341

原创 Vue-依赖注入(provide-inject)

也就是说,在父组件只要声明了provide,在其子组件,孙组件,曾孙组件等能形成上下游关系的组件中交互,无论多深都能通过inject来访问provider中的数据。在该对象中,它支持ES6中Symbol作为key,但只在原生支持等环境下可工作。注意:provide和inject绑定并不是可响应的,这是刻意为之,然而如果你传入了一个可监听的对象,那么气对象的属性还是可监听的。这对选项允许一个祖先组件向其所有子孙后代组件注入一个依赖,不论组件层次有多深,并在起上下游关系成立的时间里始终生效。

2022-09-09 00:51:19 3237

原创 Vue-获取组件($root-$parent-$children-$refs)

如果正在尝试使用$children来进行数据绑定,考虑使用一个数组配合v-for来生成子组件,并且使用Array作为真正的来源。和$root 类似,$parent property 可以用来从一个子组件访问父组件的实例。它提供了一种机会,可以在后期随时触达父级组件,以替代将数据以 prop 的方式传入子组件的方式。原理:再入口文件main.js中对Vue的原型设置一个属性并绑定vm对象,后面的子组件都能访问这个根节点。Vue子组件可以通过$root属性访问父组件实例的属性和方法。

2022-09-08 23:31:48 2131

原创 Vue-多层传值($attrs&&$listeners)

可以理解为多级组件嵌套传值,比如父组件向孙组件传值Vue 2.4版本开始,新增了$attrs 和 $listeners方法用于隔代传值$attrs: 用于传递属性 inheritAttrs: false,(这个属性可以让传递的属性不显示在标签上)$listeners: 用于传递方法。

2022-09-08 22:30:27 382

原创 Vue-双向绑定==>sync&&v-model

比如:当我们子组件实现购物车增减,父组件中的总价也随之改变使用属性和自定义事件来双向绑定。

2022-09-08 02:19:01 335

原创 Vue-加载流程&&DIFF算法

1.每一个组件在加载时都会调用vue内部的render函数来把这个组件的tamplate选项的模板解析为一个JS对象,这个对象跟DOM节点对象"长得一模一样",就是为了后来的渲染。然后用新的树和旧的树进行比较(diff),记录两棵树差异。然后用新的树和旧的树进行比较(diff),记录两棵树差异。把第二棵树所记录的差异应用到第一棵树所构建的真正的DOM树上(patch),视图就更新了。把第二棵树所记录的差异应用到第一棵树所构建的真正的DOM树上(patch),视图就更新了。找到对应的真实dom,称为el。

2022-09-07 23:24:27 259

原创 Vue-代理配置&&axios二次封装

为了省略每次请求时都需要添加代理配置的api 例如axios(‘/server/ajax1’)因为打包时自动给我们生成了服务器,去请求我们自己的后端服务器时,会导致端口不对从而跨域。要使每个子组件都能使用axios,需要在组件的原型链上配置axios工具,并配置公共网址。在Vue框架中,我们使用相对网络路径去请求我们后端服务器时,会存在跨域,配置好了我们就可以跨域请求我们的后端服务器了。方法一:后端egg中配置跨域服务。组件中使用this.$axios进行请求。此时需要对axios进行二次封装。

2022-09-07 01:09:30 320

原创 Vue-组件的自定义事件

顾名思义就是自己打造的事件,包含事件名,事件回调等,定义好之后去给组件使用。也是一种组件间的通信方式,适用于子组件==>父组件。因为通过属性传值是单向的,有时候我们需要子组件的data 数据交给父组件使用:通过在子组件上定义自定义事件,在子组件中通过$emit 来触发事件;子组件的事件被触发并传参,事件处理函数可以接收到子组件的数据;事件绑定的事件处理函数在父组件上,故可在事件处理函数中用到子组件的数据值来修改父组件的数据。

2022-09-06 23:42:50 219

原创 Vue-插槽

没有指定插槽名就是默认插入到插槽,不给插槽插入数据的话,就会使用组件的slot中的数据插槽名不用使用引号引起来,直接写变量名插入的内容必须是template标签或者组件 不能是原生的元素。

2022-09-06 23:02:15 90

原创 Vue-组件&&单文件组件&&组件的属性&&属性传值&&CSS局部样式

# 组件是什么组件是可复用的 Vue 实例,主要用于开发中 具有相同特征不同数据的模块 把它集成为一个组件 供重复利用# 全局组件**规则:**- 组件的属性不能用大写字母- 组件的名字可以用驼峰命名法,但是使用的时候必须用连字符- 全局注册的组件使用时不能使用单标签(不会报错,但是只能使用一次 多次使用只显示第一个)- 注册的组件不要跟系统标签同名# 局部组件一个vm实例可以有多个局部组件,但是只能供当前vm实例使用# 单文件组件vue中的单文件组件是以.vue扩展名结尾的文件,在这个文件中封

2022-09-05 23:57:28 563

原创 Vue-vue中的window.onload=>nextTick

都应该考虑是否是因为本需要在dom执行完再执行,然而实际却在dom没有执行完就执行了代码,如果是就考虑使用将逻辑放到nextTick中,有的时候业务操作复杂,有些操作可能需要更晚一些执行,放在nextTick中仍然没有达到预期效果,这个时候可以考虑使用setTimeout,将逻辑放到宏任务中。{Object} [context]:回调函数执行的上下文环境,不传默认是自动绑定到调用它的实例上。{Function} [callback]:回调函数,不传时提供promise调用。

2022-09-05 20:24:43 3892

原创 Vue-生命周期函数

vue组件对象在创建到销毁的过程中,在某一种条件成立的时刻,系统会去调用vue中设定的函数 这些函数都叫做生命周期函数1.页面第一次加载时哪些调用?在页面第一次加载时,只有创建前后和挂载前后会被调用;而更新前后第一次构建不会调用,以后每次data被更新了就会调用2.网络请求应该在什么钩子中,为什么?可以放在data生成以后更新数据之前的所有钩子中具体的根据业务需求来;常见的放在created或者mounted中​因为网络请求下来的数据 常常会存在data容器中。

2022-09-05 19:44:50 221

原创 Vue-自定义指令&&自定义指令的钩子函数

除了默认设置的核心指令( v-model 和 v-show 等),Vue 也允许注册自定义指令。在Vue里,代码复用的主要形式和抽象是组件。然而,有的情况下,仍然需要对纯 DOM 元素进行底层操作,这时候就会用到自定义指令。全局指令:Vue.directive(参数1,参数2)参数1:指令的名称。注意,在定义的时候,指令的名称前面,不需要加 v- 前缀。但是, 在调用的时候,必须 在指令名称前 加上 v- 前缀来进行调用。

2022-09-05 18:56:34 272 2

原创 Vue-计算属性和属性监听器

什么是计算属性模板内的表达式非常便利,但是设计它们的初衷是用于简单运算的。在模板中放入太多的逻辑会让模板过重且难以维护,也就是当逻辑比较复杂时,应该使用计算属性。

2022-09-05 02:26:04 354

原创 Vue-条件渲染和循环渲染

v-if是通过动态的创建或移除元素来实现元素的显示和隐藏。这样引起的问题是:arr 数组新增一项数据时,会对每一项再做一遍v-if 循环,然后for 循环渲染。渲染过程为:对arr每一项先做map循环判断v-if给出的条件,再做一遍for 循环渲染。1.v-for循环普通数组:v-for=“(em,index) in arr1”2.v-for循环对象数组:v-for=“(em,index) in arr2”3.v-for迭代对象:v-for=“(em, index) in arr3”...

2022-08-31 00:21:08 1042

原创 Vue-样式绑定

2.对象型:class=“{class类名:布尔值}”//可以写多个类名,这里是用布尔值做判断,可以写表达式,值做布尔判断,如歌为true就获取到该类名,如果为false就没有该类名。3.数组型:class=“[变量名,“类名一”]” //可以写多个类名;数组里面变量直接写变量名,如果直接是类名则要加双引号。也可以使用 v-bind:style 或 :style 直接给 HTML 元素绑定样式,它也有对应的对象语法与数组语法。1.变量型:class=“变量名” //这个变量名为下面data里面写的。...

2022-08-30 22:34:23 141

原创 Vue-事件

Vue的按键修饰符使用v-on:event.xxx,其中event为按键事件,xxx为键码或键码别名,如v-on:keydown.13或v-on:keydown.enter就表示:当按下回车键时才触发keydown方法。事件触发方法时的参数传递:可以传递普通参数,也可以传递事件对象$event,设置参数不传参时。与按键别名不同的是,修饰键和 keyup 事件一起用时,事件引发时必须按下正常的按键。可以看见点击div2时只冒泡了它的事件,点击div3时只冒泡了div3和div2。...

2022-08-30 19:10:27 511

原创 Vue-基础指令

v-cloak==>加上这个属性的标签相当于在构建虚拟节点的时候就会有这个属性,等data的数据生成的时候,这个标签会自动去掉这个属性,可以利用这个特性来在css中把这个元素在加载初期写样式(隐藏)补充:v-html,v-text指令操作,或者css中加[v-cloak]{display:none}解决vue第一次加载的时候 页面上使用的数据会闪烁。1.普通插值表达式插入数据: 在标签尖括号中使用{{}}插入js表达式:变量,函数调用,三目运算等等。标准写法: v-bind:src=“变量”...

2022-08-30 00:48:47 79

原创 Vue-集成环境

( ) TypeScript// TypeScript是一个JavaScript(后缀.js)的超集(后缀.ts)包含并扩展了。( ) Linter / Formatter // 代码风格检查和格式化(如:ESlint)2.vue create app //创建vue项目环境 app为项目名,可以随便取。1.npm install @vue/cli -g //将官方脚手架下载到全局配置。( ) Babel //转码器,可以将ES6代码转为ES5代码,从而在现有环境执行。...

2022-08-29 22:48:04 845

原创 webpack打包工具

webpack可以看作是打包模块化 javascript 的工具,在webpack 里一切文件皆模块,通过 loader 转换文件,通过 plugin 注入钩子,最后输出由多个模块组合成的文件,webpack 专注构建模块化项目;分析项目结构,找到JavaScript模块以及其它的一些浏览器不能直接运行的拓展语言(Scss,TypeScript等),并将其打包为合适的格式以供浏览器使用。相同业务或功能聚集到一起,就是代码一块一块的写 ,一坨代码一个业务或者功能代码模块化有什么好处?...

2022-08-26 23:25:18 330

原创 GET和POST请求的区别

有文件时:前端通过表单对象,let fdata = new FormData(),使用它的append方法添加字段和文件,文件使用file表单.files获取 获取到的是一个files数组。axios.post(“url”,{key:value}),后端通过 this.ctx.request.body 获取字段,获取到的是对象{key:value}形式。从支持的字符集来看:GET方式只能支持ASCII字符,向服务器传的中文字符可能会乱码,POST支持标准字符集,可以正确传递中文字符。

2022-08-20 23:10:47 825

原创 DOM操作--防抖和节流

在事件被触发n秒后再执行回调,如果在这n秒内又被触发,则重新计时。比如:登录注册按钮,当用户点击时会向后端发送数据;但当用户一直点击,如果我们不设置防抖,则会导致后台服务器一直接受这个数据,从而导致崩溃;所以必须设置防抖,来规定n秒后触发我们的业务,如果在n秒内点击了则重新计时。指连续触发事件但是在n秒中只执行一次函数。节流会降低函数的执行频率。比如:将mousemove事件触发的频率降低。...

2022-08-08 00:14:15 229

原创 nodeJs--egg框架介绍

简单来说:egg.js 是『约定优先于配置』的一个 Node.js web 框架,基于MVC设计思想设计的。提供基于 Egg 定制上层框架的能力高度可扩展的插件机制内置多进程管理基于 Koa 开发,性能优异框架稳定,测试覆盖率高渐进式开发。...

2022-08-07 21:30:27 2493

原创 nodeJS--axios和fetch

简单来说:axios就是将原生AJAX进行封装,使用Promise实现的,它会生成Promise对象,方便我们进行网络请求的一种工具;使用时需要导入axios.js。封装原理代码看之前写的。

2022-08-07 00:07:35 1325

原创 nodeJs--使用MVC思想封装路由

路由: 指不同的网址去执行不同的分支或者程序。

2022-08-04 19:43:00 195

原创 nodeJs--async/await

async/await是es7推出的一套关于异步的终极解决方案;主要作用就是转异步为同步。

2022-08-03 23:33:00 2094

原创 nodeJS--封装AJAX

我们只需将open的网址改为url,然后响应数据后,使用业务函数去接受这个数据并调用。主要解决异步深层嵌套(回调地狱)的问题,它提供了简洁的API使得异步操作更加容易。利用回调函数思想,将url和业务函数作为参数传进去;调用then取出正确数据。...

2022-08-03 21:22:55 87

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除