自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 vscode extension 怎么区分dev & prod

vscode extension dev & prod

2023-08-07 09:47:02 1263

原创 vscode 源码学到的技巧

技巧列表将json格式中的非json替换将json格式中的非json替换 // First group matches a double quoted string // Second group matches a single quoted string // Third group matches a multi line comment // Forth group matches a single line comment // Fifth group matches a t

2023-08-04 14:28:18 152

原创 typescript 装饰器

ts 装饰器

2022-12-03 10:13:08 163 1

原创 开发好用软件

SwitchHostsswitchHosts 可以灵活切换不同的hosts,方便多项目开发mobaxtermwindows下的好用终端

2022-03-15 14:51:04 142

原创 uniapp echarts 踩坑

需求:用户在鼠标滑过echarts - line的时候,可以和上面的文字实现交互(echarts把数据传到外面)自定义formatter函数无效,解决方案参考这里想传值给父组件,发现hbx一直报错,然后就在不同的script里写了函数,renderjs中药调用另一个script中的method,可以使用this.$ownerInstance.callMethod("script中method定义的方法",要传递的数据)...

2021-09-10 10:48:55 518

原创 ecahrts 常用功能

tooltip去掉鼠标悬浮上去的那条线(改变样式)tooltip: { trigger: "axis", axisPointer: { // 线的样式 lineStyle: { width: 0 } } // 改变type axisPointer: { // 坐标轴指示器,坐标轴触发有效 type: 'shadow' // 默认为直线,可选为:'line' | 'shadow' }},x轴当

2021-09-09 16:06:07 123

原创 uniapp踩坑日记

坑自定义组件不能使用onLoad、onReady等生命周期,而要使用Vue提供的生命周期fixed定位如果被tabBar挡住,可以设置bottom:var(--window-bottom);hbx连接不上手机,android,iOS没有驱动,可以安装itools,确保iTunes可以连接到,然后打开app需要权限,可以参考hbx的提示信息uniapp的swiper是写死的150px高,改成自适应可以参考swiper怎么设置自适应高度,但是swiper绑定高度要改一下 :style="{ hei

2021-09-08 14:05:46 210

原创 git 相关

撤销上次commitgit reset --soft HEAD^注意,仅仅是撤回commit操作,您写的代码仍然保留。commit注释错误,想修改git commit --amend会进入默认vim编辑器,修改注释完毕后保存就好了。git stash常用的是git stash和git stash popgit stash save "save message" : 执行存储时,添加备注,方便查找,只有git stash 也要可以的,但查找时不方便识别。git stash list

2021-08-16 10:19:29 82

原创 React hooks个人理解

useEffectuseEffect会在每次DOM渲染后执行,不会阻塞页面渲染,包含了componentDidMount,componentDidUpdate,componentWillUnmount三个生命周期函数的执行时机useCallbackuseCallback 在依赖不变的情况下,它会返回相同的引用,避免子组件进行无意义的重复渲染useCallback缓存的是方法的引用,而useMemo缓存的则是方法的返回值。使用场景是减少不必要的子组件渲染...

2021-07-29 11:10:09 98

原创 取消异步请求

Promise通过改变 promise 的状态(一旦不是 pending 就不可改变)let cancelReq = null;function request(reqArgs) { return new Promise((resolve, reject) => { setTimeout(() => { resolve("result message"); }, 2000); cancelReq = function () { res.

2021-07-22 11:06:02 361

原创 js中i++和 ++i

首选两个都是自增1但是有所区别 let i = 0; let j = 0; console.log(i++); // 0 console.log(++j);// 1如果需要赋值也就是取i的时候, i++是先将i交出去在实现自增,++i则相反,先自增在把自增后的i交出去...

2021-04-20 10:23:46 367

原创 js 实现排序

function ArrayList() { this.array = []; ArrayList.prototype.insert = function (item) { this.array.push(item); }; // 交换位置 ArrayList.prototype.swap = function (m, n) { const temp = this.array[m]; this.array[m] = this.array[n]; th.

2021-04-19 16:41:50 84

原创 js 实现字典、图

字典function Dictionary() { this.items = {}; Dictionary.prototype.set = function (key, value) { this.items[key] = value; }; Dictionary.prototype.has = function (key) { return this.items.hasOwnProperty(key); }; Dictionary.prototype.rem

2021-04-19 15:14:30 107

原创 js实现二叉搜索树

function BinarySearchTree() { function Node(key) { this.key = key; this.left = null; this.right = null; } this.root = null; BinarySearchTree.prototype.insert = function (key) { const newNode = new Node(key); if (this.root ===

2021-04-18 19:48:30 138

原创 js实现集合

function Set() { this.items = {}; Set.prototype.add = function (value) { if (this.has(value)) return false; this.items[value] = value; return true; }; Set.prototype.has = function (value) { return this.items.hasOwnProperty(value);

2021-04-15 16:58:19 147

原创 js 实现栈、队列、链表

栈function Stack() { this.items = [];}// 添加一个新元素到栈顶位置Stack.prototype.push = function (item) { return this.items.push(item);};// 移除栈顶的元素 同时返回被移除的元素Stack.prototype.pop = function () { return this.items.pop();};// 返回栈顶的元素 不对栈做任何修改Stack.proto

2021-04-15 10:07:40 125

原创 redux-devtools安装

chrome市场上不去,建议用edgeedge的外接程序中找到reduc devtools,然后安装项目中需要安装redux-devtools-extensionnpm i -D redux-devtools-extension// index.jsimport { composeWithDevTools } from "redux-devtools-extension";import { createStore,applyMiddleware } from "redux"import ro

2021-04-13 18:03:34 261

原创 react-router使用

安装npm install --save react-router-dom基本使用import React from "react";import Home from "./pages/Home";import Mine from "./pages/Mine";import { BrowserRouter as Router, Route } from "react-router-dom";function App() { return ( <div className

2021-04-13 14:39:40 128

原创 react 跨域解决方案

方案一package.json中加入下面"proxy":"xxxx"这样的话页面发起的请求就不用加前面的前缀,记得重启项目方案二(推荐)安装http-proxy-middlewarenpm install http-proxy-middleware创建src/setupProxy.js文件里面内容为const proxy = require('http-proxy-middleware')module.exports = function (app) { app.use('

2021-04-13 13:56:40 211

转载 前端浏览器缓存

原文

2021-04-08 10:29:08 86

转载 前端安全

参考美团的两篇文章xsscsrf

2021-03-30 08:54:37 57

原创 vue中的makeMap函数

vue源码中的makeMap用在很多地方,主要是判断标签是原生标签还是用户自定义的组件但是标签很多,如果每判断一次都执行一次循环,累计下来,性能损耗还是很大的makeMap就是解决这个问题出现的// 源码function makeMap ( str, expectsLowerCase) { var map = Object.create(null); var list = str.split(','); for (var i = 0; i < list.length; i

2021-03-29 11:41:56 867

原创 nuxt 引入 scss

网上看到了好多方法,最后都是安装失败最后在官网发现了npm install --save-dev sass sass-loader@10 fibers

2021-02-25 22:18:22 640 2

原创 vue 知识点

computedcomputed中定义的数据其实是有默认参数的,指向this,可以通过解构拿到其他参数

2021-02-01 09:58:03 63

原创 vue 3 setup 试用

使用的是vue3(v:3.0.5)+ts(v:4.1.3)遇到的问题:defineEmit传入defineEmit一个定义好了string[]的数组变量,会报错,我试着直接传入数组,才不会出问题引入.d.ts文件会报错,在script中定义接口之类的不会报错...

2021-01-29 16:12:09 218

转载 js 运算符优先级

MDN

2021-01-19 13:43:41 91

原创 用过的正则

ip验证const pattern = /((2(5[0-5]|[0-4]\d))|[0-1]?\d{1,2})(\.((2(5[0-5]|[0-4]\d))|[0-1]?\d{1,2})){3}/g;pattern.test(value) // boolean

2021-01-15 14:41:11 73

原创 element-ui(plus) 按需加载和自定义主题

这里以element-plus为例,element-ui同理我这里使用的是element-plus官网中自定义主题的第二种 - 在项目中改变 SCSS 变量按需引入组件可查看官网基本上按着官网的教程走就可以实现我这里贴上我的代码// babel.config.js 修改后记得重启项目module.exports = { presets: ["@vue/cli-plugin-babel/preset"], plugins: [ [ "component", .

2021-01-11 10:41:31 10316 3

原创 ts 泛型 高级类型

typeof获取一个变量声明或对象的类型interface User{ name: string; age: number;}const user: User= { name: 'huxianc', age: 25 };type UserType= typeof user; // -> Userfunction func(x: number): number[] { return [x];}type Func = typeof func; // -> (x:.

2021-01-08 17:33:17 3126

原创 element-ui element-plus link - 分析

源代码地址 - linkversion:element-plus 1.0.1-beta.0link组件 相对比较简单<template> <a :class="[ 'el-link', type ? `el-link--${type}` : '', disabled && 'is-disabled', underline && !disabled && 'is-und.

2020-12-23 11:38:00 1217

原创 element-ui element-plus infinite-scroll - 分析

源代码地址 - infinite-scroll version:element-plus 1.0.1-beta.0infinite-scroll是指令,不是组件源码中涉及很多原生js属性,可以参考这里,对照观看import { nextTick } from 'vue'import { isFunction } from '@vue/shared'import throttle from 'lodash/throttle'import { entries } from '@eleme.

2020-12-23 11:06:17 1715 1

原创 js中的scrollTop、scrollHeight 、clientHeight、clientWidth、clientLeft、clientTop、offsetTop

scrollTopmdnElement.scrollTop 属性可以获取或设置一个元素的内容垂直滚动的像素数。一个元素的 scrollTop 值是这个元素的内容顶部(卷起来的)到它的视口可见内容(的顶部)的距离的度量。当一个元素的内容没有产生垂直方向的滚动条,那么它的 scrollTop 值为0。个人理解:就是上部分超出容器的高度clientHeight clientWidthmdn - clientHeight mdn - clientWidthclientHeight只读

2020-12-23 10:44:18 652

原创 element-ui element-plus image - 分析

源代码地址 - iamge源代码地址 - iamge-viewerversion:element-plus 1.0.1-beta.0image<template> <div ref="container" :class="['el-image', $attrs.class]" :style="$attrs.style" > <!-- 加载状态 --> <slot v-if="loading" name=.

2020-12-22 17:31:25 1639 1

原创 element-ui element-plus drawer - 分析

源代码地址 - drawerversion:element-plus 1.0.1-beta.0<template> <teleport to="body" :disabled="!appendToBody"> <transition name="el-drawer-fade" @after-enter="afterEnter" @after-leave="afterLeave" > <!.

2020-12-22 10:43:05 2634

原创 element-ui element-plus divider - 分析

源代码地址 - dividerversion:element-plus 1.0.1-beta.0<template> <div :class="['el-divider', `el-divider--${direction}`]"> <!-- 水平方向才会显示插槽 --> <div v-if="$slots.default && direction !== 'vertical'" :class=.

2020-12-22 09:07:03 1055

原创 element-ui element-plus dialog - 分析

源代码地址 - dialogversion:element-plus 1.0.1-beta.0index.vue<template> <!-- dialog是v-if控制渲染的 --> <template v-if="destroyOnClose && !visible"></template> <template v-else> <!-- vue3 新增组件 teleport to表示元素.

2020-12-21 17:50:50 3356

原创 element-ui element-plus trap-focus - 分析

源代码地址 - trap-focusversion:element-plus 1.0.1-beta.0这个指令只在dialog中使用了import { nextTick } from 'vue'import { on, off } from '@element-plus/utils/dom'import { obtainAllFocusableElements, EVENT_CODE } from '@element-plus/utils/aria'import type { Ob.

2020-12-21 16:18:17 1125

原创 element-ui element-plus overlay - 分析

源代码地址 - overlayversion:element-plus 1.0.1-beta.0<script lang="ts">import { createVNode, defineComponent, renderSlot } from 'vue'import { PatchFlags } from '@element-plus/utils/vnode'export default defineComponent({ name: 'ElOverlay', pr.

2020-12-21 15:36:20 1599

原创 element-ui element-plus container header footer aside mian - 分析

源代码地址 - container[源代码地址 - header]((https://github.com/element-plus/element-plus/blob/dev/packages/container/src/header.vue)[源代码地址 - footer]((https://github.com/element-plus/element-plus/blob/dev/packages/container/src/footer.vue)[源代码地址 - aside]((https:.

2020-12-21 15:19:09 705

原创 element-ui element-plus collapse-transition - 分析

源代码地址-collapse-transitionversion:element-plus 1.0.1-beta.0<template> <transition v-on="on"> <slot></slot> </transition></template><script lang='ts'>import { addClass, removeClass } from '@element-.

2020-12-21 14:55:06 1169

空空如也

空空如也

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

TA关注的人

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