前端
文章平均质量分 53
你才不是没有故事的女同学
这个作者很懒,什么都没留下…
展开
-
项目中暗黑适配的想法
暗黑模式适配在vue项目中一开始没有下面这套最新方案的时候,我们在每个需要适配暗黑模式的页面都得根据媒体查询写适配,现在,只要和设计师商量好,我们使用对应的变量即可。之前方案:.inputNumber { padding: 0.28rem 0.2rem 0; .input { margin-top: 0.4rem; .tip { height: 0.2rem; line-height: 0.2rem;原创 2021-08-01 18:40:11 · 298 阅读 · 1 评论 -
rem初始化
const docEl = document.documentElementconst dpr = window.devicePixelRatio || 1const BASE_SIZE = 100;const deviceWidth = docEl.clientWidthfunction setRemUnit () { docEl.style.fontSize = deviceWidth / BASE_SIZE * dpr + 'px'}window.addEventListene原创 2021-07-25 21:04:17 · 201 阅读 · 0 评论 -
js一个数组元素被另一个数组完全包含
数组arr2的元素完全被数组arr1完全包含自己总结了下面几种方法,同时也用了 performance.now() 去检测性能总体来说,数据量大时,用Set和Map执行时间最短执行时间最短的按下面的方式来说,Set方式执行时间最短没有做复杂类型的判断,有需要的可以自己在下面的函数进行拓展// 生成随机字符串function randomString(e) { e = e || 32; var t = "ABCDEFGHJKMNPQRSTWXYZabcdefhijkmnprstwx原创 2021-06-10 14:24:24 · 750 阅读 · 0 评论 -
TCP链接
三次握手客户端向服务端发送SYN包,将SYN位置为1,序列号seq随机一个数为x,进入SYN_SEND状态服务端收到SYN包,需要确认SYN包,将确认号为x+1(seq+1),同时自己也要发送一个SYN包给客户端,序列号seq随机一个数为y,(即SYN和ACK包),进入SYN_RECV状态客户端收到SYN和ACK包,确认SYN包,将确认号为y+1(seq+1),序列号(seq = x + 1),发送ACK包给服务端,此时,客户端和服务端都进入ESTA_LISHED状态image-2021040523原创 2021-04-06 00:00:16 · 92 阅读 · 0 评论 -
输入url后发生了什么
先来个大概:dns查询,查询到url对应的IP建立tcp链接,三次握手http发起请求关闭tco链接,四次挥手客户端获取到数据进行解析获取html构建DOM树,css获取CSSOM输,经过attachment合成Render渲染树,显示到页面上下面对以上几点进行展开,看看具体都发生了什么,细节都有些什么dns查询未完待续。。。...原创 2021-03-25 23:55:00 · 65 阅读 · 0 评论 -
git操作记录
第一周周一创建新建文件夹mkdir 文件名新建文件touch fileName (我在vscode无法使用)查看当前路径pwd将当前目录变成一个git可以管理的仓库(初始化仓库)git init将文件添加到git仓库(暂存区)git add readme1.txt readme2.txt //一次可以提交多个将文件提交到当前支git commit -m "文件名"版本版本回退查看当前工作区与缓存区状态git status 对比文件区别git diff re原创 2021-03-23 23:58:04 · 86 阅读 · 0 评论 -
说说你了解的设计模式
单例模式:**好处:**减少全局变量,全局对象被污染问题实现:懒汉式let ShopCar = (function () { let instance; function init() { /*这里定义单例代码*/ return { buy(good) { this.goods.push(good); }, goods: [], }; } return { getInstance: functio原创 2021-03-21 23:45:19 · 238 阅读 · 0 评论 -
手写promise
今天先实现了简洁版的promiseclass Promise1 { static PENDING = "Pending" static FULFILLED = "Fulfilled" static REJECTED = "Rejected" constructor(executor) { this.initValue() this.initBind() try { executor(this原创 2021-03-18 00:06:26 · 62 阅读 · 0 评论 -
说说你对闭包的理解
要理解闭包,首先得先知道js的作用域和词法作用域作用域作用域就是用于确定变量在何处以及如何查找变量的规则作用域就是查找变量的地方作用域链:从下往上找,从该函数作用域中,一直往上面的作用域中找,如果找到了就停止寻找并返回,直到全局作用域中。JavaScript也是有编译过程的console.log(name); // 输出undefinedvar name = 'iceman'; 编译的时候在作用域中声明了一个name属性运行的时候给这个name赋值js在预编译后执行代码时就会进原创 2021-03-16 23:55:52 · 167 阅读 · 0 评论 -
手写bind函数
// 实现bindFunction.prototype._bind = function (newThis, ...bRet) { // 原来函数的this,这里是fn let oldThis = this return function (...rRet) { return oldThis.apply(newThis, [...bRet, ...rRet]) }}function fn() { console.log(this) // fn console.log(a原创 2021-03-15 21:00:34 · 83 阅读 · 0 评论 -
说说你对js的继承的了解
说说你对js的继承的了解什么是继承js中,继承是一种允许我们在已有类的基础上创建新类的机制;它可以使用现有类的所有功能,并在无需重新编写原来的类的情况下对这些功能进行扩展为什么要有继承提高代码的重用性、较少代码的冗余继承的相关实现想要实现继承,就得有个被继承的父类// 最上层函数function Animal(name) { this.name = name || 'Animal' this.eat = function (food) { console.log(`${thi原创 2021-03-09 21:44:13 · 191 阅读 · 0 评论 -
说说你对this的理解
说说你对this的理解在我的印象中,一直有这么一句话 “谁调用,this指向谁”,但在工作的时候,还是有时候会感到疑惑,所以决定好好的了解一下这个this这个时候我们不能知道this会指向谁function fn() { console.log(this);}下面两种情况,this的指向又不同function fn() { console.log(this);}let obj = {fn};fn(); // windowobj.fn(); // obj其实this的指原创 2021-03-03 20:54:33 · 489 阅读 · 2 评论