自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 秒表计时器(Timeout 实现 Interval)

问题:setInterval 定时器不准确解决:const timerIdList = {};mySetInterval(fn: (time: number) => void, delay: number) { const key = Symbol(); const interval = () => { const start = Date.now(); this.timerIdList[key] = setTimeout(() => { con

2021-04-28 21:35:01 1294

原创 element-ui 的 dialog 实现拖拽、水平伸缩、双击头部放大

import Vue from 'vue';/* * 使用: * elementUI 的 dialog 上加上 v-dialogDrag 指令就可以实现弹窗的全屏和拉伸了。 * 给 dialog 设置 :close-on-click-modal="false" , 禁止点击遮罩层关闭弹出层 * 如果是 form 表单,不要将提交等按钮放置 el-form-item,以免在上下拉伸时被隐藏 */// v-dialogDrag: 弹窗拖拽+水平方向伸缩Vue.directive('d

2021-01-19 12:12:01 1637

原创 echarts 配置问题

饼图标签超出series: [ { type: 'pie', name: '数据来源', radius: ['40%', '60%'], avoidLabelOverlap: true, // 是否启用防止标签重叠策略 minAngle: 20, // 最小的扇区角度(0 ~ 360),用于防止某个值过小导致扇区太小影响交互 label: { fontSize: 14, fontWeight: 'bold', form

2020-10-13 12:47:17 865

原创 JSON

const obj = JSON.parse(jsonStr)const jsonStr = JSON.stringify(obj)但是以上方法存在弊端,要求 jsonStr 是严格的 json 格式解决:const a = '{\'a\': 1}';console.log(JSON.parse(a)); // 错误(非严格 json 格式)// 正确console.log(eval('(' + a + ')'));console.log((new Function('return '

2020-09-03 16:19:50 166

转载 Charles抓包与改写

一、 电脑端和手机端抓包MAC电脑端:1.打开charles,点击“proxy”—“proxy setting”;2.端口输入7777,点击“ok”:  3.点击“proxy”-“SSL Proxying Setting”;4.点击add,录入“*”后,点击“ok”;5.点击“Help”—“SSL Proxying”-“Install Charles Root Certificate”,录入管理员密...

2020-08-24 20:03:42 774

原创 vue——draggable 实现

export default { name: 'draggable', data() { return { dragging: false, // 是否激活拖拽状态 windowFrom: {}, // x、y 偏移量 isClick: true, // 是否点击事件,还是移动事件 }; }, created() { window.document.addEventListener('mouseup', this.onMouseUp

2020-08-14 17:16:35 605

原创 typescript——interface 和 type 的异同

相同点都可以描述一个对象或者函数interfaceinterface User { name: string age: number} interface SetUser { (name: string, age: number): void;}typetype User = { name: string age: number}; type SetUser = (name: string, age: number): void;都允许拓展(extends)inte

2020-08-13 20:59:48 317

原创 typescript——高级类型

Partialinterface Itest { webName: string; age: number; address: string;}type ant = Partial<Itest>;/* type ant = { webName?: string; age?: number; address?: string;} */Requiredinterface Itest { webName: string; age: number; a

2020-08-04 19:27:40 519

原创 typescript——(private、public、protected、static、abstract、readonly)

作用域当前类同一package其他packagepublic√√√protected√√√default√√×private√××作用域范围priavte本类可见public所有类可见protected本包和所有子类都可见(本包中的子类非子类均可访问,不同包中的子类可以访问,不是子类不能访问)default本包可见(即默认的形式)(本包中的子类非子类均可访问,不同包中的类及子类均不能访问)...

2020-08-04 19:23:19 1959

转载 单点登陆 SSO

同域下的单点登录(sso.a.com、app1.a.com、app2.a.com)统一通过sso.a.com 登录,但有以下两个问题:1、Cookie是不能跨域的,我们Cookie的domain属性是sso.a.com,在给app1.a.com和app2.a.com发送请求是带不上的。2、sso、app1和app2是不同的应用,它们的session存在自己的应用内,是不共享的。解决:1、sso登录以后,可以将Cookie的域设置为顶域,即.a.com,这样所有子域的系统都可以访问到顶域的Co

2020-07-13 22:57:39 449

原创 防爬虫

关闭浏览器调试 let debugflag = false endebug(false, function () { // 非法调试执行的代码(不要使用控制台输出的提醒) document.write('检测到非法调试, 请关闭调试终端后刷新本页面重试!'); document.write("<br/>"); document.w...

2020-04-26 17:20:53 1669

原创 vue 引入 svg(定义公共组件)

安装yarn add svg-sprite-loader使用index.jsimport Vue from 'vue'import SvgIcon from '@/components/SvgIcon' // svg组件// register globallyVue.component('svg-icon', SvgIcon);//自动引入 @/src/iconscons...

2020-04-21 17:35:17 1453

原创 百度、高德地图

导航const [startLngLat, endLngLat] = [[jd1, wd1], [jd2,wd2]];const url = flag ? `http://uri.amap.com/navigation?from=${startLngLat[0]},${startLngLat[1]}&to=${endLngLat[0]},${endLngLat[1]}&mo...

2020-04-19 16:43:28 576

原创 js 下载 base64 格式的图片

download() { this.resultDialog.picture.map((res, i) => { this.downloadFile(`证据 ${i + 1}.png`, res) // 此处 res 为 base64 数据图片 }) }, downloadFile(fileName, content) { ...

2020-02-23 12:52:55 3228 1

原创 react-native 使用字体图标 (react-native-vector-icons)

安装yarn add --save react-native-vector-icons # 下载库react-native link react-native-vector-icons # 自动关联安装关联后项目重启使用import Icon from 'react-native-vector-icons/AntDesign';<Icon name='user' size...

2020-02-08 19:56:29 340

原创 react-native 和 react-navigation

react-native 的 flex 默认方向是纵向的获取设备宽度、高度、分辨率<View> <Text>当前设备的宽度:{Dimensions.get('window').width}</Text> <Text>当前设备的高度:{Dimensions.get('window').height}</Text> <T...

2020-01-23 10:28:59 376

原创 react-native 错误

'React/RCTBridgeDelegate.h' file not found解决cd /iospod installcd ..react-native run-ios

2020-01-22 19:45:05 265

原创 二叉树、链表算法

// 创建节点function Node(data, left, right) { this.data = data this.left = left this.right = right this.show = () => this.data}// 二叉查找树function BST() { this.root = null th...

2020-01-09 17:23:08 296

转载 前端埋点实现及原理分析

正如在宏观介绍的博客中写到的,做用户行为分析的方式有“前端埋点”和“后端埋点”的区分,真好今天敲了一个坤哥整理的“前端埋点”的程序,理解了之后结合demo来简单讲解“前端埋点”如何做。前端埋点原理图:如上所示,从broswer到page,再到javascript以及后端backend,浏览器返回正常程序运行结果,本地文件中返回最终的log,这很像是在用户程序中埋下了一段“暗代码”,无形之中“...

2020-01-01 20:57:57 23641 3

原创 模糊搜索高亮显示

<!DOCTYPE html><html lang="en"><head> <meta charset="UTF-8"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <meta http-equiv="X-...

2020-01-01 20:27:33 525

原创 vue 错误整理

Duplicate keys detected: '0'. This may cause an update error原因:dom 父节点下 同一级 的两个循环<div> <div class="item1" v-for="(item,i) in list1" :key="i">{{item}}</div> <div class="i...

2019-12-25 15:36:50 185

原创 canvas 实现拖拽选框、放大缩小等功能

<template> <div class="edit-anchor-zone"> <div class="edit-toolbar"> <span class="toolbar-icon-wrap" :class="{'icon_active': isAnchorActive}"> <el-toolt...

2019-12-19 18:42:16 3529 2

原创 vue——自动化组件

<!-- 不同条件,使用不同的组件 --><component v-bind:is="markTool"></component>const toolMapper = { 0: ImageClassify, 1: ImageDraw, 2: VoiceLabel, 4: VideoClassify, 7: TextClassify}...

2019-12-12 16:29:46 290

原创 xcode 上架 ios

Missing Purpose String in Info.plist这是因为在app中使用到关于相机/相册/定位等功能,我们要告他们一下下常见的<!-- 相册 --> <key>NSPhotoLibraryUsageDescription</key> <string>App需要您的同意,才能访问相册</string> &...

2019-12-07 12:17:45 314

原创 XCode 错误

错误CordovaError: Promise rejected with non-error: “xcode-select: error: tool ‘xcodebuild’ requires Xcode, but active developer directory ‘/Library/Developer/CommandLineTools’ is a command line tools ...

2019-11-30 11:17:31 576

原创 typecript——错误信息

导入类似 jQuery、vant/lib 之类无 ts 声明的组件时错误提示import { Toast } from "vant/lib";编写 .d.ts 文件去声明declare module 'vant/lib' { export * from 'vant'}// 类似的还有在 vue 中引入 .vue 文件需要 declare 去声明declare module "*...

2019-11-28 16:25:42 2246

原创 类型检查

判断一个函数是否为 JavaScript 内置方法的方法function isNative(Ctor) { console.log(Ctor.toString()) // function slice() { [native code] } return typeof Ctor === 'function' && /native code/.test(Ctor...

2019-11-28 14:24:23 172

原创 vue——vue-router 原理

实现方式主要有以下两种:hash ---- 利用 URL 中的 hash(“#”,window.location.hash)----(默认方式)利用 History interface 在 HTML5 中新增的方法 >>详情点击// 根据 mode 确定 history 实际的类并实例化switch (mode) { case 'history': this....

2019-11-26 15:13:20 150

原创 Cordova 配置

插件使用(相机)在 www 文件下的 index.html 加入 (或 vue 的 index.html)<script src="cordova.js"></script>cordova.jsexport function camera() { return new Promise((resolve, reject) => { co...

2019-11-25 10:25:50 521

原创 linux 命令

linux 命令安装一些全局需要给权限sudo npm install -g cnpm --registry=https://registry.npm.taobao.org --verbose项目上线命令部署软件:Xshell(连接服务器)、Proxifier(启动代理通道)、WinSCP(文件拖拽部署工具)ssh -p 80 example.com # 登录堡垒机xxxxxxxx...

2019-11-24 08:51:22 147

原创 mac 问题

运行 vscode 导致发热严重在 setting.json 中配置以下 "search.followSymlinks": false, "files.exclude": { "**/.git": true, "**/.svn": true, "**/.hg": true, "**/CVS": true, ...

2019-11-24 08:49:39 272

转载 下载 apk 并打开

1.安装cordova plugin add cordova-plugin-file-transfercordova plugin add cordova-plugin-file-opener22.下载.apkvar fileTransfer = new window.FileTransfer()var uri = encodeURI('http://192.168.2.105:888...

2019-11-21 21:50:09 1851

原创 js——Fetch

关于 fetch取消 FetchES6以后Promise 出现解决地狱回调等不优雅的代码风格。个人理解这个更像是一个生产者和消费者的关系,查看 Promise文档,有以下两个方法Promise.race([promise1,promise2]) 传入多个Promise对象,等待最快对象完成Promise.all([promise1,promise2]) 传入多个Promise 对象,等待...

2019-11-21 09:58:01 183

原创 初识 three.js

认识 three.js官方文档安装yarn add three引入import * as THREE from 'three'使用 threeAnimation() { const scene = new THREE.Scene(); const camera = new THREE.PerspectiveCamera(75, window.in...

2019-11-15 10:59:33 428

原创 vue-router——message: "Navigating to current location (XXX) is not allowed"

解决方法:法一:重写规则import VueRouter from "vue-router";const [routerPush, routerReplace] = [VueRouter.prototype.push, VueRouter.prototype.replace];VueRouter.prototype.push = function push(location) { ...

2019-11-12 16:02:02 2043

原创 百度地图点聚合优化重写

/** * @fileoverview MarkerClusterer标记聚合器用来解决加载大量点要素到地图上产生覆盖现象的问题,并提高性能。 * 主入口类是<a href="symbols/BMapLib.MarkerClusterer.html">MarkerClusterer</a>, * 基于Baidu Map API 1.2。 * * @author B...

2019-11-10 11:00:09 639

原创 js——replace (驼峰式命名规则转换)

驼峰式命名规则转换function camelize(str) { return str.replace(/-(\w)/g, function (_, c) { return c ? c.toUpperCase() : '' })}console.log(camelize('hello-world')); // helloWorldreplacestr...

2019-11-10 00:02:17 1305

原创 微信开发公众号 JS-SDK

微信官网通过 config 接口注入权限验证配置wx.config({ debug: true, // 开启调试模式,调用的所有api的返回值会在客户端alert出来,若要查看传入的参数,可以在pc端打开,参数信息会通过log打出,仅在pc端时才会打印。 appId: '', // 必填,公众号的唯一标识 timestamp: '', // 必填...

2019-10-23 10:29:41 254

原创 webpack——搭建多页面之 glob

glob 在 webpack 中对文件的路径处理非常之方便,比如当搭建多页面应用时就可以使用 glob 对页面需要打包文件的路径进行很好的处理官方文档npm install glob -save-devconst glob = require('glob')try { entries = glob('src/pages/*/main.js', { sync: true })}...

2019-10-22 17:31:58 873

原创 react——react-router-dom 路由与 react-loadable 异步加载组件

import { BrowserRouter, Route } from 'react-router-dom';<BrowserRouter> {/* 用来跳转链接,注意在 BrowserRouter 内部 */} <Link to='/'><p>home</p></Link> <Link to='/detail'&...

2019-10-21 23:12:01 881

空空如也

空空如也

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

TA关注的人

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