小蛮牧码者
码龄8年
关注
提问 私信
  • 博客:107,673
    社区:1
    107,674
    总访问量
  • 50
    原创
  • 416,348
    排名
  • 25
    粉丝
  • 0
    铁粉
  • 学习成就
IP属地以运营商信息为准,境内显示到省(区、市),境外显示到国家(地区)
IP 属地:北京市
  • 加入CSDN时间: 2016-06-21
博客简介:

qq_35385241的博客

查看详细资料
  • 原力等级
    成就
    当前等级
    4
    当前总分
    581
    当月
    2
个人成就
  • 获得57次点赞
  • 内容获得13次评论
  • 获得243次收藏
  • 代码片获得529次分享
创作历程
  • 1篇
    2023年
  • 15篇
    2022年
  • 22篇
    2021年
  • 21篇
    2020年
成就勋章
TA的专栏
  • js
    23篇
  • vue
    8篇
  • pomise
    5篇
  • AST
    1篇
  • 抽象语法树
  • 浏览器
    3篇
  • express
    3篇
  • svg
    1篇
  • mongoDB
    2篇
  • 事件
    1篇
  • JSON
    1篇
  • http
    1篇
  • 千分位
    1篇
  • css
    2篇
  • 小米面试
    1篇
兴趣领域 设置
  • 前端
    javascriptcssvue.jsreact.jses6webpackxhtml前端框架
  • 后端
    node.js
  • 移动开发
    flutter
  • 网络与通信
    https
  • 微软技术
    typescript
  • 学习和成长
    面试
创作活动更多

HarmonyOS开发者社区有奖征文来啦!

用文字记录下您与HarmonyOS的故事。参与活动,还有机会赢奖,快来加入我们吧!

0人参与 去创作
  • 最近
  • 文章
  • 代码仓
  • 资源
  • 问答
  • 帖子
  • 视频
  • 课程
  • 关注/订阅/互动
  • 收藏
搜TA的内容
搜索 取消

CommonJs模块化实现原理&ES Module模块化原理

我们在src/index.js中引入了a.js、b.js, webpack会把’src/a.js’、‘src/b.js’作为modules的key值,该模块内容作为modules的value值;如果是通过export default 方式导出的,那就在 exports 对象加一个 default 属性。进行node ./build.js后查看dist文件下。执行入口函数,为防止命名污染,封装成立即执行函数。
原创
发布博客 2023.12.11 ·
758 阅读 ·
7 点赞 ·
0 评论 ·
13 收藏

tapable最详细源码分析及手写实现

tapable整体介绍tapable 是一个类似于 Node.js 中的 EventEmitter的库,但更专注于自定义事件的触发和处理。const { SyncHook, SyncBailHook, SyncWaterfallHook, SyncLoopHook, AsyncParallelHook, AsyncParallelBailHook, AsyncSeriesHook, AsyncSeriesBailHook, AsyncSeriesWaterfallHook, Asyn
原创
发布博客 2022.04.12 ·
1241 阅读 ·
0 点赞 ·
2 评论 ·
6 收藏

V8 Promise源码全面解读

阅读本文你将收获什么?了解 V8 Promise 源码全过程,世界上不再有能困住你的 Promise 题目,我就是这么肯定这篇文章的干货仅仅了解或者实现了 Promise/A+ 规范,这与 JavaScript 的 Promise 中间还有很大的差距如果你在面试时将 Promise 回答到本文的深度,一定是收获 SP 或者 SSP offer 的利器,因为面试官大概率也不知道这些知识。你知道 浏览器 & Node 中真正的 Promise 执行顺序是怎么样的吗,如果你只是看过 Promise
转载
发布博客 2022.03.21 ·
519 阅读 ·
0 点赞 ·
0 评论 ·
0 收藏

记录webpack的source map使用详细说明

common.jsexport const show = () => { debugger document.write('hello webpack 11')}没有使用source-map,看一下调试效果:evaldevtool: 'eval'调试效果:eval - 每个模块都使用 eval() 执行,并且都有 //@ sourceURL。此选项会非常快地构建。主要缺点是,由于会映射到转换后的代码,而不是映射到原始代码(没有从 loader 中获取 source
原创
发布博客 2022.03.14 ·
2027 阅读 ·
0 点赞 ·
0 评论 ·
1 收藏

webpack中hash、chunkHash、contentHash的区别

webpack中hash、chunkHash、contentHash的区别hashHash:和整个项⽬的构建相关,只要项⽬⽂件有修改,整个项⽬构建的hash值就会更改。这样会导致缓存失效。项目中的文件只要有一个文件改变,那么整个项目文件的hash都会改变。chunkhashchunkhash:和webpack 打包的chunk 有关,不同的entry 会⽣成不同的chunkhash值只有在改变某个chunk的文件时,才会生成对应的hash。比如我改变了index依赖的base.less文件构
原创
发布博客 2022.03.10 ·
1145 阅读 ·
0 点赞 ·
0 评论 ·
0 收藏

详细记录如何在跨域请求中携带cookie

1. 搭建环境1.生成工程文件npm init 2.安装 expressnpm i express --save 3.新增app1.js,开启服务器3001const express = require('express')const app = express()const port = 3001// 设置`cookie`app.get("/login", (req, res) => { res.cookie("JESSIONID", "10101001", {
原创
发布博客 2022.02.28 ·
5336 阅读 ·
8 点赞 ·
6 评论 ·
28 收藏

在 Vue 中正确使用 防抖 和 节流

1. 观察者防抖1. 在 create() 钩子 里,创建 防抖回调,并将其赋值到实例上:this.debouncedWatch = debounce(…, 500)。2. 在 观察者 回调 watch.value() { … } 中 传入正确的参数 调用 this.debouncedWatch()。3. 最后,beforeUnmount() 钩子中 调用 this.debouncedWatch.cancel() ,在卸载组件之前,取消所有还在 pending 的 防抖函数执行。<temp
原创
发布博客 2022.02.28 ·
1002 阅读 ·
0 点赞 ·
0 评论 ·
1 收藏

箭头函数特殊性与普通函数的区别

参考:https://juejin.cn/post/7050492355056664612箭头函数没有[[Construct]]函数对象是一个支持[[Call]] 、 [[Construct]]内部方法的对象。每个支持[[Construct]]的对象必须支持[[Call]],也就是说,每个构造函数必须是一个函数对象。因此,构造函数也可以成为构造函数函数或构造函数对象。所以,想要对某个对象使用new,就得确保该对象具有 [[Construct]]这个内部方法。而箭头函数没有 [[Construct]]
原创
发布博客 2022.02.24 ·
367 阅读 ·
0 点赞 ·
0 评论 ·
0 收藏

将数组按指定大小分组

使用Array.from()创建新的数组, 这符合将生成的区块数。使用Array.slice()将新数组的每个元素映射到size长度的区块。如果原始数组不能均匀拆分, 则最终的块将包含剩余的元素。let chunk = (arr, size) => Array.from({ length: Math.ceil(arr.length / size)}, (v, i) => arr.slice(i * size, i * size + size));let arr = [1, 2, 3
原创
发布博客 2022.02.16 ·
678 阅读 ·
0 点赞 ·
0 评论 ·
1 收藏

Object.create()与new的具体实现与区别

Object.create与new区别function A() { this.name = 'abc';}A.prototype.a = 'a';A.prototype.showName = function () { return this.name;}var a1 = new A();var a2 = Object.create(A.prototype);从这个例子可以看出,a2只继承了A原型的属性和方法,a1 是构造函数 A 的实例,继承了构造函数 A 的属性
原创
发布博客 2022.02.14 ·
1072 阅读 ·
1 点赞 ·
0 评论 ·
1 收藏

VueRouter源码详细解读

路由模式1. hash使用 URL hash 值来作路由。支持所有浏览器,包括不支持 HTML5 History Api 的浏览器。Hash URL,当 # 后面的哈希值发生变化时,不会向服务器请求数据,可以通过 hashchange 事件来监听到 URL 的变化,从而进行跳转页面。2. history依赖 HTML5 History API 和服务器配置3. abstract支持所有 JavaScript 运行环境,如 Node.js 服务器端。如果发现没有浏览器的 API,路由会自动强制进
原创
发布博客 2022.01.21 ·
2429 阅读 ·
2 点赞 ·
0 评论 ·
3 收藏

解决ElementUI导航栏中的vue-router在3.0版本以上重复点菜单报错问题

解决ElementUI导航栏中的vue-router在3.0版本以上重复点菜单报错问题const originalPush = VueRouter.prototype.pushVueRouter.prototype.push = function push(location) { return originalPush.call(this, location).catch(err => err)}
原创
发布博客 2022.01.21 ·
546 阅读 ·
0 点赞 ·
0 评论 ·
0 收藏

Promise.all捕获错误

Promise.all默认只要有一个错误就直接返回错误。promise.all中任何一个promise 出现错误的时候都会执行reject,导致其它正常返回的数据也无法使用Promise.all([ Promise.resolve(1), Promise.reject('err'), Promise.resolve(2)]).then(res => { console.log(res)}).catch(err => { console.log('error', err)})
原创
发布博客 2022.01.14 ·
3841 阅读 ·
0 点赞 ·
0 评论 ·
1 收藏

vue3中ref、reactive、shallowRef、 shallowReactive、toRaw、unref、toRef、toRefs、customRef使用与区别

refreftoRef普通ref对象特殊ref对象不会和原始对象挂钩创建的ref对象,与原始对象挂钩重新渲染不会触发渲染-普通ref对象不会和原始对象挂钩重新渲染如下面的例子中, ref对象改变,视图已更新,原始数据json保持不变。<template> <div>b = {{b}}</div></template><script>import { ref } from '...
原创
发布博客 2022.01.13 ·
2543 阅读 ·
0 点赞 ·
0 评论 ·
4 收藏

vue3与vue2的详细区别

vue3与vue2区别
原创
发布博客 2022.01.10 ·
5331 阅读 ·
10 点赞 ·
0 评论 ·
23 收藏

Vite与webpack优势

Vite: 快缓存:依赖库缓存http缓存:源码协商缓存、模块强缓存esbuild: go语言 速度比webpack快10-100倍按需编译源码webpack 原生js编写的,性能不如go语言。
原创
发布博客 2022.01.06 ·
738 阅读 ·
0 点赞 ·
0 评论 ·
0 收藏

详解Vue.use使用与原理

Vue.use
原创
发布博客 2021.12.22 ·
1593 阅读 ·
0 点赞 ·
0 评论 ·
2 收藏

es6-promise源码重点分析难点解析

es6-promise源码重点分析难点解析
原创
发布博客 2021.12.20 ·
475 阅读 ·
0 点赞 ·
0 评论 ·
0 收藏

MutationObserver详解

MutationObserver用来监视 DOM 变动。DOM 的任何变动,比如节点的增减、属性的变动、文本内容的变动都会触发MutationObserver事件。但是,它与事件有一个本质不同:事件是同步触发,也就是说,DOM 的变动立刻会触发相应的事件;Mutation Observer 则是异步触发,DOM 的变动并不会马上触发,而是要等到当前所有 DOM 操作都结束才触发。Mutation Observer 有以下特点:它等待所有脚本任务完成后,才会运行(即异步触发方式)。它把 DOM 变动
原创
发布博客 2021.12.17 ·
40525 阅读 ·
15 点赞 ·
1 评论 ·
93 收藏

判断是否是数组的方法

var _isArray = void 0; if (Array.isArray) { _isArray = Array.isArray; } else { _isArray = function (x) { return Object.prototype.toString.call(x) === '[object Array]'; }; }
原创
发布博客 2021.12.15 ·
582 阅读 ·
0 点赞 ·
0 评论 ·
0 收藏
加载更多