小马哥m
码龄6年
关注
提问 私信
  • 博客:14,486
    14,486
    总访问量
  • 21
    原创
  • 1,201,523
    排名
  • 2
    粉丝
  • 0
    铁粉

个人简介:Nothing is impossible

IP属地以运营商信息为准,境内显示到省(区、市),境外显示到国家(地区)
IP 属地:北京市
  • 加入CSDN时间: 2018-06-28
博客简介:

mj的博客

博客描述:
记录学习过程
查看详细资料
个人成就
  • 获得5次点赞
  • 内容获得5次评论
  • 获得31次收藏
创作历程
  • 5篇
    2021年
  • 4篇
    2020年
  • 16篇
    2019年
成就勋章
TA的专栏
  • node
  • webpack
  • 前端
    18篇
  • 小程序
  • js
    12篇
  • css
    2篇
  • vue
    1篇
  • 网络协议
    1篇
  • 其它
    6篇
兴趣领域 设置
  • 前端
    javascriptcssvue.jsreact.jses6webpack前端框架
  • 后端
    node.js
  • 网络与通信
    https
  • 微软技术
    typescript
  • 学习和成长
    面试
创作活动更多

如何做好一份技术文档?

无论你是技术大神还是初涉此领域的新手,都欢迎分享你的宝贵经验、独到见解与创新方法,为技术传播之路点亮明灯!

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

工作中如何使用 git

前言最近在网上有个真实发生的案例比较火,说的是一个新入职的员工,不会用 git 拉代码,第二天被开除。由此,可见 git 对我们工作的重要性,无论是前端后端,都是离不开 git 的,下面就让我们一探究竟吧。上面的案例引申出一个问题,入职一家新公司,你的 leader 给你分配了仓库的权限后,如何配置本地的git环境并拉取代码?莫慌,按照下面我讲的四个步骤走,保证你可以顺利使用 git 进行拉取代码! 下载 git 下载地址 ,选择自己系统对应的版本下载即可。 在你的电脑上生成 ssh
原创
发布博客 2021.06.18 ·
590 阅读 ·
0 点赞 ·
0 评论 ·
7 收藏

V8 执行 Javascript 过程

前言本文意在简单的介绍一下 V8 执行 JS 的过程,通过了解 V8 执行 JS 的过程,知道 JS 代码呈现在浏览器上到底做了什么。当然本人也是在陆续探索 V8 ,文章中如有不当之处,还望不吝指正,理性交流。众所周知,机器(CPU)只能识别机器码(二进制码),对于 JS 代码,它是识别不了的,所以当代码成为页面出现在屏幕上的时候,必然是做了很多的转译工作。V8 执行 Javascript 过程如上图所示,我们将一步步进行拆分分析:JS TO AST在 V8 引擎拿到 JS 代码
原创
发布博客 2021.06.18 ·
258 阅读 ·
0 点赞 ·
0 评论 ·
0 收藏

浏览器进程和js事件循环

浏览器是多进程的浏览器的简化理解浏览器是多进程的,市场上的大多数浏览器是用C#, C ,C++写的 浏览器之所以能够运行,是因为系统给它的进程分配了资源(cpu、内存) 简单点理解,每打开一个Tab页,就相当于创建了一个独立的浏览器进程 而js能够在浏览器上运行,是因为大名鼎鼎的 v8引擎⚠️注意: 可以这么理解,浏览器是平台载体,而js是运行在这个平台上的语言Chrome浏览器打开多个标签页, 在 任务管理器 中看到有多个进程(一个Tab页面一个独立进程外加一个主程) 同步和异步
原创
发布博客 2021.06.09 ·
360 阅读 ·
1 点赞 ·
0 评论 ·
1 收藏

数组reduce高级用法实践

作者:JowayYoung仓库:Github、CodePen博客:官网、掘金、思否、知乎公众号:IQ前端特别声明:原创不易,未经授权不得转载或抄袭,如需转载可联系笔者授权前言reduce作为ES5新增的常规数组方法之一,对比forEach、filter和map,在实际使用上好像有些被忽略,发现身边的人极少使用它,导致这个如此强大的方法被逐渐埋没。如果经常使用reduce,怎么可能放过如此好用的它呢!我还是得把他从尘土中取出来擦干净,奉上它的高级用法给大家。一个如此好用的方法不应...
转载
发布博客 2021.06.04 ·
418 阅读 ·
1 点赞 ·
0 评论 ·
6 收藏

ES6 尾调用和尾递归优化

尾调用优化尾调用之所以与其他调用不同,就在于它的特殊的调用位置。我们知道,函数调用会在内存形成一个“调用记录”,又称“调用帧”(call frame),保存调用位置和内部变量等信息。如果在函数A的内部调用函数B,那么在A的调用帧上方,还会形成一个B的调用帧。等到B运行结束,将结果返回到A,B的调用帧才会消失。如果函数B内部还调用函数C,那就还有一个C的调用帧,以此类推。所有的调用帧,就形成一个“调用栈”(call stack)。尾调用由于是函数的最后一步操作,所以不需要保留外层函数的调用帧,因为
转载
发布博客 2021.06.03 ·
544 阅读 ·
0 点赞 ·
0 评论 ·
0 收藏

浅谈函数柯里化

关于函数柯里化的定义:在计算机科学中,柯里化(Currying)是把接受多个参数的函数变换成接受一个单一参数(最初函数的第一个参数)的函数,并且返回接受余下的参数且返回结果的新函数的技术。  这段话听起来可能有一些抽象,但是如果用实际例子来解释可能会帮助我们更好地理解何为函数柯里化。看看下面这个问题,是一道前端面试中常考的题:如何实现add(2)(3)(4) = 9  当我第一次看到这个题目的时候我就在思考,add(2)后面为什么还能带(3)(4)呢?是不是因为add(2)返回的是一个函数,所
原创
发布博客 2020.06.23 ·
328 阅读 ·
0 点赞 ·
0 评论 ·
0 收藏

vuepress搭建个人博客

项目搭建#安装vuepress第一步就是进行vuepress进行安装: 如果使用npm来安装, Node.js版本需要 >=8 才可以yarn global add vuepress # 或者:npm install -g vuepress#注意如果你的现有项目依赖了 webpack 3.x,推荐使用 Yarn而不是 npm 来安装 VuePress。因为在这种情形下,npm 会生成错误的依赖树。#初始化项目创建项目目录blogmkdir blogcd bl
原创
发布博客 2020.06.19 ·
752 阅读 ·
1 点赞 ·
1 评论 ·
3 收藏

window命令行新建文件

touch是Linux环境下的命令,当我们在cmd中使用时会弹出以下问题在cmd中我们可以使用echo test>
原创
发布博客 2020.06.08 ·
1195 阅读 ·
0 点赞 ·
1 评论 ·
0 收藏

js位运算相关内容

位运算是直接进行二进制运算,所以位运算的执行效率是更高的,可以在项目中优先使用
原创
发布博客 2020.05.07 ·
124 阅读 ·
0 点赞 ·
0 评论 ·
0 收藏

微信小程序返回页面传参方法

1.可以用wx.setStorageSync()存储到本地2.使用小程序页面栈来设置需要传的值let pages = getCurrentPages() //获取页面栈let prevPage = pages[pages.length - 2] //获取上一个页面的实例prevPage.setData({ fileUrl: this.data.url //设置想要传过去的...
原创
发布博客 2019.12.27 ·
1090 阅读 ·
0 点赞 ·
0 评论 ·
1 收藏

Git工作中常用操作

Git是目前世界上最先进的分布式版本控制系统,它没有中央服务器,每个人的电脑就是一个完整的版本库,这样,工作的时候就不需要联网了,因为版本都是在自己的电脑上。既然每个人的电脑都有一个完整的版本库,那多个人如何协作呢?比如说自己在电脑上改了文件A,其他人也在电脑上改了文件A,这时,你们两之间只需把各自的修改推送给对方,就可以互相看到对方的修改了。工作原理 / 流程:Works...
原创
发布博客 2019.12.12 ·
145 阅读 ·
0 点赞 ·
0 评论 ·
1 收藏

获取对象拥有属性的方法及区别---for in、Object.hasOwnProperty、Object.getOwnPropertyNames、Object.keys

获取对象属性有好多种方法,每种方法也都有区别,下面具体说一下: const obj = { name: 'mj', age: 16, greet () { console.log('Hello ' + this.name) } } Object.prototype.printAge = function () { console....
原创
发布博客 2019.11.29 ·
371 阅读 ·
0 点赞 ·
0 评论 ·
1 收藏

深入学习js数据类型的转换规则

js中的数据类型js中共有八种内置数据类型,包括基本类型和对象类型。基本类型基本类型分为以下七种:string(字符串) boolean(布尔值) number(数字) BigInt(大于的整数) symbol(符号) null(空值) undefined(未定义)注意: string、number、boolean、null、undefined这...
原创
发布博客 2019.11.25 ·
214 阅读 ·
0 点赞 ·
0 评论 ·
0 收藏

websocket简单使用

随着 Web 的发展,用户对于 Web 的实时推送要求也越来越高,在 WebSocket 出现之前,大多数情况下是通过客户端发起轮询来拿到服务端实时更新的数据,因为 HTTP1.x 协议有一个缺陷就是通信只能由客户端发起,服务端没法主动给客户端推送。这种方式在对实时性要求比较高的场景下,比如即时通讯、即时报价等,显然会十分低效,体验也不好。为了解决这个问题,便出现了 WebSocke...
原创
发布博客 2019.11.22 ·
398 阅读 ·
0 点赞 ·
0 评论 ·
3 收藏

生成PayPal沙盒账号clientID 和 密钥的过程

因为最近项目中要引用PayPal支付,网上查了很多资料,这里把生成sandbox测试账号的client.app和client.secret过程记录一下第一步,浏览器输入“https://www.paypal.com”,注册一个PayPal的商家账户,如果公司有账号的话,直接用公司账号;第二步:注册好之后就可以用这个账号去登陆PayPal的开发者平台了,网址是“https://develop...
原创
发布博客 2019.11.20 ·
2868 阅读 ·
0 点赞 ·
0 评论 ·
1 收藏

前端删除node_modules最快的办法

安装 rimraf可以全局安装,每个项目都可以使用npm install rimraf -g //安装rimraf在项目里面打开命令行工具rimraf node_modules //删除文件
原创
发布博客 2019.11.18 ·
1255 阅读 ·
0 点赞 ·
0 评论 ·
0 收藏

LHS 和 RHS---你所不知道的JavaScript

目录1、LHS(Left Hand Side)和RHS(Right Hand Side)2、实例详解3、总结变量的赋值操作会执行两个动作, 首先编译器会在当前作用域中声明一个变量(如果之前没有声明过), 然后在运行时引擎会在作用域中查找该变量, 如果能够找到就会对它赋值。----《你所不知道的JavaScript(上)》P7而要讲的 LHS 和 RHS 就是上面说的对变...
原创
发布博客 2019.10.30 ·
681 阅读 ·
0 点赞 ·
0 评论 ·
1 收藏

js将秒转换为对应的时间字符串

将秒转换为对应的时间字符串,每个条件都return,可以自定义返回需要的时间/** * @param {Number|String} second 秒 * @returns {String} 转换后时间字符串 */const transformTime = (second = 0) => { if(isNaN(parseInt(second))) return; se...
原创
发布博客 2019.10.26 ·
594 阅读 ·
0 点赞 ·
0 评论 ·
0 收藏

彻底吃透 JavaScript 执行机制

执行 & 运行 首先我们需要声明下,JavaScript 的执行和运行是两个不同概念的,执行,一般依赖于环境,比如 node、浏览器、Ringo 等, JavaScript 在不同环境下的执行机制可能并不相同。而今天我们要讨论的 Event Loop 就是 JavaScript 的一种执行方式。所以下文我们还会梳理 node 的执行方式。而运行呢,是指JavaScript 的解析引擎。这...
转载
发布博客 2019.10.24 ·
226 阅读 ·
0 点赞 ·
0 评论 ·
0 收藏

手动实现new操作符

new操作符都做了什么function Person(name) { this.name = name}Person.prototype.sayName = function () { console.log(this.name)}const p = new Person('mj');console.log(p.name) // 'mj'p.sayName() // 'm...
原创
发布博客 2019.10.24 ·
439 阅读 ·
0 点赞 ·
0 评论 ·
0 收藏
加载更多