自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(42)

原创 JS 阻止浮层弹窗下滚动

1. 利用移动端的 touchmove 阻止默认行为 _preventEvent(e){ e.preventDefault(); } // 禁用 document.documentElement.addEventListener('touchmove', this._preventEvent, {passive: false}) // 解除禁用 document.documentElement.removeEventListener('touchmove', this._pre

2020-10-23 14:19:45 20

原创 【Jump】 js 控制页面的滚动

<!DOCTYPE html><html lang="en"><head> <meta charset="UTF-8"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <title>jump</title> <style> #box { background-color: pi

2020-10-22 11:38:44 11

原创 三种主流的跨域解决方案(vue-cli3 package.json中配置跨域)

协议 - 域名 - 端口号 只要有一个不相同就是跨域,解决方案如下1. Http Proxy 代理在 vue-cli3 中取消了配置文件 vue.config.js,网上的跨域处理多为新建配置文件,对于有代码洁癖的我这样是不允许的,在读了一番文档后,结合网上的实现方案得到如下解决方案在 package.json 中加入 vue 字段(下面的代码段)如果请求的地址不是 /api,借助 pathRewrite 将 /api 替换我用的是 axios 进行网络请求,在封装 axios 时设置 base

2020-09-04 22:36:22 132 3

原创 vue - symbol方式引入阿里巴巴字体库

官方链接找到想要使用的图标,添加入库添加到自己的项目(提前建好)进入项目5. 我的是vue项目,在 public - index.html 中添加复制的地址6. 在 App.vue 的 style 中写入样式.icon { width: 1em; height: 1em; vertical-align: -0.15em; fill: currentColor; overflow: hidden;}使用 并设置自己的样式

2020-08-22 22:47:39 40

原创 img标签加载错误403,浏览器地址栏能正常显示

描述在 img 标签加载其他网站的图片,一直返回错误 403解决这是比较常见的反盗链技术反盗链详情找到原因后我们就有解决方案了,在标签上添加 referrerpolicy="no-referrer<img src="xxx" alt="img" referrerpolicy="no-referrer">MDN...

2020-08-19 10:24:49 32

原创 JS 中的数据类型检测(含jquery源码es6实现)

数据类型检测typeof原理:直接在计算机底层基于类型的值(二进制)进行检测typeof null // objecttypeof /^1/ // objecttypeof new Date() // objecttypeof function(){} // function弊端:typeof 不能区别 普通对象/数组对象/正则对象/日期对象会错误的将 null 检测为 objectinstanceof原理: 检测当前实例是否属于这个类,只

2020-08-11 09:51:30 57

原创 关于数组/对象的遍历 for in for of

let arr = [3, 4, 5] let obj = { "a": "val_a", "b": "val_b", "c": "val_c" } for (let i in arr) { console.log(i); // 0 1 2 } for (let i of arr) { con...

2020-08-10 16:53:13 35

原创 前端中的二进制

ArrayBufferArrayBuffer:用来表示通用的、固定长度的原始二进制数据缓冲区。它是一个字节数组,通常在其他语言中称为 byte arrayTypedArrayTypedArray :它是一个指定特定元素类型(Int8Array)的统称,详情见 MDNlet buffer = new ArrayBuffer(8); // 8个字节的ArrayBufferconsole.log(buffer.byteLength); // 8字节const int8Array = new

2020-07-17 17:54:56 996 1

原创 200行代码实现简易的 mvvm - vue

第一个知识点 - Object.defineProperty()说明: 直接在一个对象上定义一个新属性,或者修改一个对象的现有属性,并返回此对象。备注: 应当直接在 Object 构造器对象上调用此方法,而不是在任意一个 Object 类型的实例上调用。在这里我们需要了解 get 和 set 方法const data = {}let value = ''Object.defineProperty(this.data, "msg", { get(){ /

2020-07-17 16:04:40 75

原创 JS 中的 compose 函数 绘图分析函数执行过程

在函数式编程中,经常会出现多个函数组合,像这样: const add1 = (x) => x + 1 const mul3 = (x) => x * 3 const div2 = (x) => x / 2 add1(mul3(div2(add1(6)))) // 11.5这样虽然能够完成计算,但是可读性很差,所以我们需要构造一个函数完成上面的功能: function compose(...funcs) { if (funcs.le

2020-07-05 17:16:34 85

原创 canvas web 跟随鼠标绘制矩形框

<!DOCTYPE html><html lang="en"><head> <meta charset="UTF-8"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <title>跟随鼠标绘制矩形框</title> <style> #canvas {

2020-06-30 15:30:08 139

原创 js 手写 new、create 方法

let obj = {}let func = function() {}console.log('对象的 __proto__:', obj.__proto__);console.log('对象的 prototype', obj.prototype);// prototype 是函数所特有的属性console.log('函数的 __proto__:', func.__proto__);console.log('函数的 prototype:', func.prototype);functi

2020-06-26 15:33:10 140

原创 js 中 Array 常用方法原理

经常会忘记数组的方法,因此将常用的方法用js实现,通过实现原理来加深印象function deepCopy(target) { let result const type = typeof target if (type === 'object') { if (target === null) return target if (Array.isArray(target)) return target.map(item => deepCo.

2020-06-26 15:29:00 89

原创 TCP三次握手四次挥手总结

概念标志位ACK - 确认序号的标志,ACK=1表示确认号有效,ACK=0表示报文不含确认序号信息SYN - 连接请求序号标志,用于建立连接,SYN=1表示请求连接FIN - 结束标志,用于释放连接,为1表示关闭本方数据流序号 - 表示发送的数据字节流,确保TCP传输有序,对每个字节编号seq - x (123123123)ack - x+1 (123123124)三次握手第一次发送请求建立连接报文, SYN = 1,seq = x,等待服务端确认, 客户端进入 S

2020-06-24 10:35:27 56

原创 vue h5 video 多视频无缝切换

思路页面中创建两个 video 标签在组件加载时同时加载两个视频资源(autoplay),暂时不播放的视频在 canplay 事件中调用暂停方法,使之实现预加载使用绝对定位将预加载的视频移出可视窗口第一个视频结束后,通过 ended 事件播放之前预加载的视频,同时将当前 src 切换为下一个需要播放的视频地址,完成缓存核心代码 <video ref="video" :class="{'video-hide':!playVideoTag}" autoplay @ended="onE

2020-06-17 20:23:13 612 3

原创 vue router 路由跳转获取不到参数

问题:路由传参一直不能获取到参数, 未出现报错原因:混淆 query 和 params 的使用方法, 在使用 params 传参时错误的使用了 path 方法代码:错误写法 ... this.$router.push({ path: '/HealthDetectionChildNav', params: { title: item['name'], actionList: item['actionList'] }

2020-06-13 14:29:26 361

原创 python安装nltk遇到的坑

错误描述错误1 ERROR: Command errored out with exit status 1: command: 'c:\users\administrator\appdata\local\programs\python\python35\python.exe' -u -c 'import sys, setuptools, tokenize; sys.argv[0] = '"'"'C:\\Users\\ADMINI~1\\AppData\\Local\\Temp\\pip-inst

2020-05-14 12:58:54 797

原创 弹性布局 - Flex(Flexible Box)

弹性布局 - Flex(Flexible Box)1.原理给父盒子指定 display:flex 控制子盒子的位置和排列方式2.父项属性flex-direction:设置主轴的方向row :x轴正方向(默认)row-reverse:x轴负方向column:y轴正方向column-reverse:y轴负方向justify-content:设置主轴上的子元素的排列方式(使用时...

2020-05-07 23:33:16 54

原创 JS性能优化之减少回流重绘次数

1. 重绘 - Repaint当render tree中的一部分元素的样式改变(宽高、大小、位置等不变)导致页面重建如:color backgroundColor visibility…每个页面至少需要一次回流,就是在页面第一次加载的时候2. 回流 - Reflow元素的大小或者位置发生了变化(当页面布局和几何信息发生变化的时候),触发了重新布局导致渲染树重新计算布局和渲染...

2020-05-01 10:45:25 146

原创 浏览器渲染原理

第1阶段 Request通过URL向服务器发送请求,web服务端返回html文本-代码字符串DNS解析TCP三次握手四次挥手HTTP/HTTPS/HTTP2第2阶段 Response拿到代码后,浏览器在内存中开辟一块栈内存,用来给代码提供执行环境;同时分配一个主线程去一行一行的执行代码第3阶段 执行代码执行方式取出一行代码,进栈执行 -> 执行完出栈当浏览器...

2020-04-27 22:30:58 49

原创 JavaScript高级程序设计(第三版)学习笔记第11章

DOM 扩展1. 选择符APISelectors API 使浏览器原生支持CSS查询querySelector // body元素 document.querySelector("body"); // 根据id document.querySelector("#content"); // 类名为bd的第一个元素 document.querySelector(".bd")...

2020-04-23 22:09:37 51

原创 JavaScript高级程序设计(第三版)学习笔记第10章

1. 节点层次节点关系操作节点- appendChild- insertBefore- replaceChild- removeChild- cloneNode(true) // 深克隆- cloneNode(false)

2020-04-23 21:00:23 53

原创 JavaScript高级程序设计(第三版)学习笔记8章

BOM(Browser Object Model)-浏览器对象模型1. window 对象window 对象扮演着 ECMAScript 中 Global对象的角色,因此全局声明的对象或者方法会变成 window对象的属性和方法窗口的可视区域大小 打开新窗口 window.open("http://www.baidu.com")定时器 // 超时调用 ...

2020-04-22 21:18:36 45

原创 javascript 闭包的理解

function fn(){ var y = 999; return function(){ console.log(y); // 999 return y; } } var f = fn(); f(); // 999ECStack Execution Context Sta...

2020-04-21 22:38:16 52

原创 JavaScript高级程序设计(第三版)学习笔记第7章

函数表达式1. 定义函数的方式 //函数声明 function functionName(){} // 函数表达式 var functionName = function(){}2. 递归3. 闭包闭包是指有权访问另一个函数作用域中的变量的函数定义一个变量声明变量(declare)创建值- 基本值 存在于栈中- 引用值 存在于堆中复制(d...

2020-04-21 21:50:39 53

原创 JavaScript高级程序设计(第三版)学习笔记第6章

面向对象的程序设计1.理解对象1.1 属性类型ECMAScript 中有两种属性:数据属性和访问器属性、1. 数据属性数据属性包含一个数据值的位置。在这个位置可以读取和写入值。数据属性有4个描述其行为的特性Configurable - 表示能否通过delete删除属性从而重新定义属性,能否修改属性的特征,或者能否把属性修改为访问器属性,默认值为trueEnumerable - ...

2020-04-19 21:37:50 61

原创 JavaScript高级程序设计(第三版)学习笔记5章

第5章 引用类型1. Obejct2. Array创建数组 var colors = new Array(3) // [,,] var colors = new Array("red") // ["red"] var colors = []数组的length属性不是只读的,可以通过这个属性向数组的末尾添加或删除项 var colors = ["red",...

2020-04-16 20:51:03 77

原创 JavaScript高级程序设计(第三版)学习笔记4章

第4章 作用域和内存1. 基本类型和引用类型基本类型:Undefined Null Boolean Number String引用类型:Object基本类型,可以对其进行赋值操作,而引用类型相当于是一个指针,可以添加方法、属性函数传参时基本类型会传递值,引用类型会传递指针,因此在函数内部修改引用类型的值其外部也会改变2. 没有块级作用域可以在函数外部访问到内部定义的变量的值...

2020-04-13 21:37:49 46

原创 JavaScript高级程序设计(第三版)学习笔记1-3章

第1章1. 简介JavaScript:专为网页交互设计的脚本语言,包含三部分ECMAScript - 提供核心语言功能欧洲计算机制造商协会(ECMA,European Computer Manufacturers Association)DOM - 文档对象模型,提供访问和操作网页内容的方法和接口BOM - 浏览器对象模型,提供与浏览器交互的方法和接口第2章1. <...

2020-04-11 19:11:10 69

原创 .eslintrc.js

module.exports = { root: true, parserOptions: { parser: 'babel-eslint', sourceType: 'module' }, env: { browser: true, node: true, es6: true }, extends: ['plugin:vue/rec...

2019-12-03 18:38:48 53

原创 新建vue项目流程

安装全局脚手架 npm install vue-cli -g创建模板 vue init webpack APIShow对工程设置运行 cd APIShow npm run dev

2019-12-01 21:42:30 53

原创 c# winform vlcControl 播放视频列表

项目中用到vlcControl控件播放多个视频,但是该控件并没有这个特性,参考stackoverflow一位大佬代码。 // 首先构建一个视频路径的列表 List<string> playList = new List<string>(); string[] allFiles; allFiles = Directory.GetFiles(videoPat...

2019-11-26 20:22:50 591

原创 call,apply,bind 用法及原理

改变js中函数内部的this指向示例: 使fn函数中的this指向obj对象注: apply 只能接收数组作为参数

2019-10-14 18:49:07 47

原创 postman mock 前端模拟后台接口数据

2019-10-08 17:37:55 191

原创 Vue 中的 v-bind 说明

最近在学习Vue, v-bind一直搞不懂,感觉属性绑定这个概念很模糊,通过以下例子解释v-bind.这是未加v-bind示例<input type="button" value="按钮" title="msg" id="app"><script> let app = new Vue({ el: '#app', data: ...

2019-08-14 20:21:17 67

原创 解决跨域问题 Django-ajax

实现功能前端向后端跨域发出请求,将小写字母转为大写,动态添加到网页。服务器端(python-Django)views.pydef upWords(request): # get方法 callBack = request.GET.get('callback') # 返回时建议使用占位符拼接,不然会解析错误 return HttpResponse("%s('%...

2019-07-28 16:59:27 61

原创 Ajax (菜鸟教程)学习笔记

什么是AJAXAJAX 是一种用于创建快速动态网页的技术。通过在后台与服务器进行少量数据交换,AJAX 可以使网页实现异步更新。这意味着可以在不重新加载整个网页的情况下,对网页的某部分进行更新。创建对象var xmlhttp;if (window.XMLHttpRequest){ // IE7+, Firefox, Chrome, Opera, Safari 浏览器执行代...

2019-07-28 16:36:18 85

原创 Django 中将HTTP转换为HTTPS [已成功]

问题描述:在实现通过H5实现录音功能的时候需要调用用户的录音模块,但是chrome浏览器不能正常调用麦克风,经过一番查询,得知需要将HTTP转换为HTTPS。有问题的状态解决后的状态解决方法1.安装python-django需要的库 pip install django-extensions pip install django-werkzeug-debugger-run...

2019-04-19 21:26:46 1338 1

原创 Python 出现 PermissionError: [Errno 13] Permission denied

在运行Django时候一直出现错误 :PermissionError: [Errno 13] Permission denied错误原因:在后端代码中读取了文件,却没有关闭。解决方法:添加关闭文件指令: xx.close()...

2019-04-19 20:39:36 3857

原创 python-sqlite3方法

sqlite3connection — 数据库连接对象 conn = sqlite3.connect('weatherModule.db') # 连接数据库 conn = sqlite3.connect('weatherModule.db', check_same_thread=False) # 如果多线程访问需要设置关键字 cur = conn.cursor() ...

2019-03-03 22:53:42 240

空空如也

空空如也

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