个人总结
白菜new
这个作者很懒,什么都没留下…
展开
-
移动端css适配方案
大多数时候开发页面需要做一定适配,这里记录两种1.设计图以PC为模板2.设计图以移动端为模板首先我们需要利用meta标签对viewport进行控制(如果不知道viewport可以先干完活去了解一下,不影响使用)content属性值:以下的meta标签即让当前viewport的宽度等于设备的宽度,同时不允许用户手动缩放;如果不这样设定好就会使用比屏幕宽的viewport,就会出现横向滚动条二、rem控制1.设计图以PC为模板代码如下:2.设计图以移动端为模板代码如下:......原创 2022-06-14 12:02:38 · 1818 阅读 · 1 评论 -
JavaScript 正则表达式获取url后的内容(第一个问号后的内容)
最近开发小程序遇到个需求,通过扫码进入小程序,需要获取到二维码带进来的内容。再将其转换为对象类型目标是获取问号后的数据,首先通过?将url分成两部分原创 2022-06-13 12:01:38 · 986 阅读 · 0 评论 -
一文了解python操作excel(使用openpyxl)
二、关于修改load_workbook(path) 获取工作本,path填写相对应地址查看所有工作表选择工作表max_row 最大行 min_row 最小行max_column 最大列 min_column 最小列修改某一单元格读取单条数据保存工作本三、关于删除删除表 remove(sheet)...原创 2022-06-02 14:30:15 · 838 阅读 · 0 评论 -
JavaScript 二进制转base64图片 and 对象转换为byte数组
二进制转base64图片 and 对象转换为byte数组原创 2022-05-26 14:07:39 · 1988 阅读 · 0 评论 -
解决 vite 中 import_meta.globEager is not a function的问题
项目场景:由于是旧项目通过vue-cli进行创建,使用的是webpack,随着业务的发展后台代码逐渐增多,本地开发每次等一两分钟。修改编译工具,改用vite问题描述接口、路由文件、store模块的自动化引入从require.context转为import.meta.globEager,启动vite,浏览器报错import_meta.globEager is not a function浏览器中定位错误发现,编译后的代码,将import_meta自动声明了解决方案:import.meta原创 2022-04-18 10:06:09 · 9050 阅读 · 5 评论 -
一道题带你了解js闭包
function Foo() { var i = 0; return function() { console.log(i++); }}var f1 = Foo(), f2 = Foo();f1();f1();f2();// 上面这个js程序输出的是什么()?A、 0 1 0B、 0 1 2C、 0 0 0D、 0 0 2答案留到最后!一般来说函数执行完后它的局部变量就会随着函数调用结束被销毁,但是此题Foo函数返回了一个匿名函原创 2021-10-11 09:00:15 · 104 阅读 · 0 评论 -
有趣的排序思想
一、计数排序统计每个数字出现的次数12133221232个3个2个1122233应用场景:简单的单值排序问题,排序问题中数据的值域很有限leetCode1122.数组的相对排序便是用到计数排序的思想var relativeSortArray = function(arr1, arr2) { let cnt = new Array(1001).fill(0); for (let x of arr1)原创 2021-10-08 17:37:46 · 68 阅读 · 0 评论 -
在js中获取vue文件的style标签下的内容
前言:由于业务需求,将页面内容转成pdf,前端需要提供整个页面的dom元素提供给后端,但样式并不是在行内而是在<style>标签里。解决方案:通过原生属性 document.styleSheets 读取vue单页面组件加载过的所有css样式const cssBlock = document.styleSheets有了获取到的css样式表就能遍历去找到我需要的,由于是伪数组,我们先用ES6解构一下;点开可以发现他的顺序是从页面初始化开始,大概率我们需要的样式会在最后,所以我们用re原创 2021-08-06 09:48:35 · 2262 阅读 · 0 评论 -
CSRF及XSS认识
CSRF (Cross-site request forgery): 跨站请求伪造即攻击者盗用了你的身份,以你的名义发送恶意请求CSRF攻击是源于WEB的隐式身份验证机制!WEB的身份验证机制虽然可以保证一个请求是来自于某个用户的浏览器,但却无法保证该请求是用户批准发送的!简单阐述CSRF攻击的思想:1.user 浏览并登陆信任 网站 A2.网站A 验证通过,在 user 产生A的Cookie3.user 在没有登出A网站的情况下,访问危险网站B4.网站B 要求访问 网站A ,发出一个请求(r原创 2021-07-26 18:02:44 · 92 阅读 · 0 评论 -
Vue3 compile模块①——学习编写AST抽象语法树
文章目录前言一、AST抽象语法树是什么?二、看一眼AST语法树三、写一下AST语法树第1步、语义拆分,将标签拆分成数组第2步、数组转换成树,利用递归实现AST总结前言最近在看vue3.0的compile模块,用到了AST抽象语法树,在网上找资料发现国内比较缺乏相关内容,看到热门的是用一个插件去解析和操纵JavaScript版的AST语法树,但我想了解的是单页面应用里的标签是怎么形成语法树的,自己能否学着写一下。一、AST抽象语法树是什么?AST(Abstract Syntax Tree)是源代原创 2021-07-09 17:32:08 · 860 阅读 · 2 评论 -
js字符串函数substr替换使用技巧
替换字符串前言一、思路二、运用前言最近在业务场景中有些电话号码、银行卡等信息需要将中间几位替换为*,自然的想到了substrsubstr() 方法可在字符串中抽取从 start 下标开始的指定数目的字符。stringObject.substr(start,length)一、思路我们从传入的参数有4个/** * @param {string} str 原字符串 * @param {number} start 开始替换的位置 * @param {number} stop 停止替换的位置原创 2021-07-06 17:20:47 · 1861 阅读 · 0 评论 -
js正则表达式获取文件名和后缀
获取文件名let fileName = file.name.replace(/(.*\/)*([^.]+).*/ig,"$2")获取文件名后缀// 匹配 . 之前除换行符以外的所有字符替换为""let fileType = file.name.replace(/.+\./, "")原创 2021-06-07 10:18:01 · 4390 阅读 · 1 评论 -
项目中遭遇监听input框操作报错 [object InputEvent]类型
发生场景在使用ant-design-vue的ui框架中,对查询表单做了个封装。希望在函数式组件监听input框修改内容时返回值。一开始是使用@input触发监听listeners[‘input’] (value)当输入内容时,便会报错[Vue warn]: Invalid prop: type check failed for prop “value”. Expected String, Number, got InputEvent 解决办法通过面向百度编程,我猜测由于vue双向绑定的关原创 2021-05-21 16:20:20 · 1317 阅读 · 0 评论 -
解决WebStorm编辑器的CSS文件链接图片时遇到泛红警告
前端Vue项目在WebStorm中打开,使用less语法链接的图片会受到编辑器的警告。我们只需打开File下的Settings,找到Webpack配置配置找到当前项目的node_modules@vue\cli-service\webpack.config.js确认稍等一下编辑器警告清除掉了...原创 2021-05-18 09:03:21 · 873 阅读 · 0 评论 -
学会就能看懂vue源码(一)—— 数据属性、访问器属性、Object.defineProperty方法、Object.getOwnPropertyDescriptors方法
学会就能看懂vue源码(一)前言数据属性访问器属性Object.definePropertyObject.getOwnPropertyDescriptors测验前言了解vue2双向绑定原理,决定从源码入手,引申了不少基础知识,决定记录一下。相信学会这些就能看懂双向绑定原理的部分源码了数据属性包含的是一个数据值的位置,在这可以对数据值进行读写。数据属性的四个特性:configurable :表示能否删除从而重新配置定义其属性,能否修改属性的特性,默认为trueenumerable :表示能否通原创 2021-05-12 14:19:42 · 433 阅读 · 1 评论 -
从浅入深——理解JSONP的实现原理
由于浏览器的安全性限制,不允许AJAX访问 协议不同、域名不同、端口号不同的 数据接口,浏览器认为这种访问不安全;可以通过动态创建script标签的形式,把script标签的src属性,指向数据接口的地址,因为script标签不存在跨域限制,这种数据获取方式,称作JSONP(注意:根据JSONP的实现原理,知晓,JSONP只支持GET请求);实现过程: 1.在客户端定义一个回调方法,预定义对数据的操作; 2.再把这个回调方法的名称,通过URL传参的形式,提交到服务器的数据接口; 3.服务器原创 2021-05-10 17:11:53 · 78 阅读 · 6 评论 -
使用toString判断所有js数据类型
文章目录前言一、toString二、上代码三、扩展判断变量为空前言由于JavaScript是一种解释型编程语言,声明变量并不需要定义类型,变量可以随时更改存储数据的类型。我们都知道 typeof 可以判断数据类型,但遇到 null 、array等其他数据类型时,就需要用到更为详细的toString了一、toStringtoString() 是 Object 的原型方法,调用该方法,默认返回当前对象的[[Class]]。其格式为[object Xxx] ,其中 Xxx 即为目标的类型二、上代码原创 2021-04-29 17:50:27 · 619 阅读 · 0 评论 -
使用原生 JS 完成头部吸顶操作
使用原生 JS 完成头部吸顶操作1.通过 querySelector 获取 product 元素节点,获取 product 对象 到其上级层顶部的间隔 offsetTop2.使用 onscroll 原生方法 监听滚动条滚动的高度3.当 滚动的高度 大于对象到其上级层顶部的间隔 则对 product 定位进行固定4.当 其他情况则清空 product 定位的属性(function (product , productTop , scrollT) { product = document原创 2021-03-09 09:52:41 · 218 阅读 · 0 评论 -
Vue2中如何使用函数式组件
Vue中如何使用函数式组件文章目录Vue中如何使用函数式组件**使用场景****什么是函数式组件****如何创建一个函数式组件****为什么使用函数式组件****简单的例子****业务场景下的函数式组件**使用场景Vue 推荐在绝大多数情况下使用 template 来创建你的HTML。但是现实的业务场景中经常会遇到根据用户权限判断,显示不同的按钮。接下来我们由浅入深,通过两个例子来了解。首先了解什么是函数式组件。什么是函数式组件函数式组件在 React 中非常流行,那在 Vue 中我们也可以玩原创 2020-08-11 14:36:44 · 3497 阅读 · 5 评论 -
简述TCPIP协议族各层
简述TCP/IP协议族各层应用层应用层决定了向用户提供应用服务时通信的活动FTP(File Transfer Protocol,文档传输协议)、DNS(Domain Name System,域名系统)、HTTP协议(HyperText Transfer Protocol,超文本传输协议)也处该层传输层传输层对上层应用层,提供处于网络连接中的两台计算机之间的数据传输。在传输层有两个性质不同的协议:TCP(Transmission Control Protocol,传输控制协议)和 UDP(Us原创 2020-06-16 15:42:13 · 553 阅读 · 0 评论 -
上班一个月的总结
实习了一个月,总体感觉是挺不错的。说到对自身变化有两点: 1.生活更规律了 2.学习重点的改变,相对激情褪去了些因为离公司较远,早上6点多起来,路途奔波,晚上6点下班,回到家将近8点,但也因此生活规律了起来,三餐也定时了。不再像放假那样,睡到几点就几点,起来随便吃点就学习。因为实习且公司项目组已分配好了,我中间两周都是没有工作的,大部分时间可以用来学习和看书。这间公司真的非常适合我,从1月开始系统学习前端,从基础的JS、ES6、客户端存储到框架React、Vue,到3、4月份便开始做笔试题、面原创 2020-05-17 22:16:51 · 196 阅读 · 0 评论