webpack 流程解析 (5) module reslove

2021-10-24
阅读 5 分钟
2.9k
上文说道我们拿到了构建modlule的factory,和依赖等关键数据,通过addModuleTree经过factorizeQueue的控制走到了factory.create。这个时候就开始了reslove过程。本文主要分析,NormalModuleFactory 内部 beforeResolve,factorize,resolve, afterResolve 这几个钩子。

webpack 流程解析(4): 开始构建

2021-10-16
阅读 3 分钟
2.1k
这里触发了make钩子注册的回调,还记得我在初始化部分提到的EntryPlugin吗?在这里注册了一个钩子回调,触发了 compilation.addEntry

webpack 流程解析(3) 创建compilation对象

2021-10-11
阅读 4 分钟
2.5k
webpack初始化完成之后,则会通过传入的options.watch来判断是否要开启watch,如果开启watch则会执行watch的流程,如果是run,则会执行run的流程,本系列只关注主线,所以我们直接从run开始,watch感兴趣的同学可以自行研究研究

webpack 流程解析(2):参数初始化完成

2021-10-08
阅读 5 分钟
3.1k
上文说到 webpack 准备好了参数,要创建 compiler对象了。创建完之后,则会执行 compiler.run 来开始编译,本文将阐述 new Compiler 到 compiler.run()中间的过程。整体过程都发生在createCompiler这个函数体内。

webpack 流程解析(1):小弟先帮我看看对不对之 weback-cli

2021-10-07
阅读 1 分钟
2.2k
compiler对象是一个全局单例,它负责把控整个webpack打包的构建流程。本文将会介绍在 new compiler 之前,webpack做了什么

深入理解 JS 中的类型转化

2020-12-10
阅读 2 分钟
1.5k
哪些操作能导致类型转换呢if 条件判断为 false 的值 -> false undefined null 0 '' NaN运算符操作常见的运算符 + - * /+ 比较特殊除了相加之外 还有字符串拼接的含义1)数字和非字符串相加 {代码...} 2)非数字相加 {代码...} valueOf / toString对象的原型链上有 valueOf 和 toString 两个方法 {代码...} symbol[toP...

从零实现一个 promise

2020-12-10
阅读 3 分钟
4.4k
构造函数入参 executor 自执行函数。会在在 new 的时候同步执行,传入 resolve 和 reject 状态扭转函数。自执行函数内部根据异步任务执行结果(成功或失败)调用状态扭转函数,把状态传递给后续的 then。

一道打印顺序引发的血案

2020-12-09
阅读 4 分钟
1.3k
对 promise1 来说:Promise.resolve() 会立即执行then(res => console.log(1)).then... 会放入本轮的微任务

export default 为何突然没用了?

2020-04-16
阅读 4 分钟
13.5k
export default命令用于指定模块的默认输出。显然,一个模块只能有一个默认输出,因此export default命令只能使用一次。本质上,export default就是输出一个叫做default的变量或方法,然后系统允许你为它取任意名字。

happy pack 原理解析

2019-11-18
阅读 14 分钟
11.2k
本质上, happypack 是用通过 js 的多进程来实现打包加速,需要注意的是,创建子进程和子进程和主进程之间通信也是有开销的,当你的 loader 很慢的时候,可以加上 happypack,否则,可能会编译的更慢!

nest.js、egg.js、midway,express、koa的区别

2019-09-27
阅读 2 分钟
12.7k
        随着nest.js框架逐渐火起来,对于没有接触过nest的小伙伴可能会疑惑nest是什么?在你了解了nest.js是什么的前提下,你可能会疑惑nest.js与传统的koa、express有什么区别?针对这两个问题,结合了网上的一些文章,做一个简单的总结。        

函数式编程(二)

2019-06-09
阅读 3 分钟
1.7k
高阶函数 满足以下两点的函数: 函数可以作为参数被传递 函数可以作为返回值输出 叫高阶函数,很显然js中的函数满足高阶函数的条件。 函数作为参数: {代码...} 函数作为返回值: {代码...} 高阶函数与函数式编程有什么关系?通过上一篇我们知道函数式编程采用纯函数,那怎么把不纯的函数转化为一个纯函数呢?通过把不纯的...

区块链笔记(4)用JS写个简单的区块链原型

2019-05-28
阅读 5 分钟
3k
如前所述区块链模型的组成部分,包括区块,区块构成的区块链,以及保存区块链的数据持久层等。一个超简单的UML类图如下:由于我是前端的,业余看了这么久区块链的理论,还是手痒痒谢谢代码,把这个类用JavaScript实现一下。写完之后发现目前阶段,对于区块链原型来说还是太过简单,不过如果说用来做前端面试题,考察下面...

React Hooks 解析(上):基础

2019-04-19
阅读 6 分钟
23.7k
React Hooks 是从 v16.8 引入的又一开创性的新特性。第一次了解这项特性的时候,真的有一种豁然开朗,发现新大陆的感觉。我深深的为 React 团队天马行空的创造力和精益求精的钻研精神所折服。本文除了介绍具体的用法外,还会分析背后的逻辑和使用时候的注意事项,力求做到知其然也知其所以然。

哈希摘要算法

2019-04-11
阅读 7 分钟
4.6k
最近在看一些NPM库的时候总是看到各种哈希签名算法,之前工作中也有用到过签名算法,但并没有深入理解过其中的原理,于是找了点资料稍微了解了一下,总结了这篇文章。

React中禁止页面滚动

2019-03-21
阅读 2 分钟
14.4k
最近用react做了一个H5端的页面,主要实现了一个弹层滑动选择的功能,效果如图:遇到了一个问题,当在底部弹出层进行滚动选择城市区划时,蒙版后的页面也会随着滚动。

函数式编程(一)

2019-03-15
阅读 2 分钟
1.8k
什么是函数式编程 函数式编程是一种编程范式,常见的编程范式有以下三种: 命令式编程 声明式编程 函数式编程 函数式编程的本质是将计算描述为一种表达式求值。在函数式编程中,函数作为一等公民,可以在任何地方定义(在函数内或函数外),可以作为函数的参数和返回值,可以对函数进行组合。 函数式编程的准则:不依赖...

React Fiber 原理介绍

2019-02-22
阅读 3 分钟
66k
在 React Fiber 架构面世一年多后,最近 React 又发布了最新版 16.8.0,又一激动人心的特性:React Hooks 正式上线,让我升级 React 的意愿越来越强烈了。在升级之前,不妨回到原点,了解下人才济济的 React 团队为什么要大费周章,重写 React 架构,而 Fiber 又是个什么概念。

React 最佳实践

2019-02-08
阅读 5 分钟
12.8k
在日常开发和 Code Review 的时候,常常会发现一些共性的问题,也有很多值得提倡的做法。本文针对 React 技术栈,总结了一些最佳实践,对编写高质量的代码有一定的参考作用。

装饰器与元数据反射(4)元数据反射

2019-02-02
阅读 3 分钟
3.9k
本篇内容包括如下部分: 为什么JavaScript中需要反射 元数据反射API 基本类型序列化 复杂类型序列化 为什么JavaScript中需要反射? 关于反射的概念,摘自百度百科 在计算机科学领域,反射是指一类应用,它们能够自描述和自控制。也就是说,这类应用通过采用某种机制来实现对自己行为的描述(self-representation)和监测...

装饰器与元数据反射(3)参数装饰器

2019-02-02
阅读 3 分钟
1.5k
之前已经分别介绍了方法装饰器、属性装饰器和类装饰器,这篇文章我们来继续关注这些话题: 参数装饰器 装饰器工厂 我们将围绕以下这个例子,来探讨这些概念: {代码...} 参数装饰器 TypeScript对于参数装饰器的声明如下 {代码...} 如下我们为类Person的saySomething方法的参数添加一个参数装饰器 {代码...} 最终被编译为...

装饰器与元数据反射(2)属与类性装饰器

2019-02-02
阅读 4 分钟
1.8k
上一篇文章中,我们讨论了TypeScript源码中关于方法装饰器的实现,搞明白了如下几个问题: 装饰器函数是如何被调用的? 装饰器函数参数是如何传入的? __decorate函数干了些什么事情? 接下来我们继续属性装饰器的观察。 属性装饰器 属性装饰器的声明标识如下: {代码...} 如下我们为一个类的属性添加了一个名为@logProp...

装饰器与元数据反射(1)方法装饰器

2019-02-01
阅读 4 分钟
3.5k
首先来根据上面的标识,实现一个名为log的方法装饰器。使用装饰器的方法很简单:在装饰器名前加@字符,写在想要装饰的方法上,类似写注释的方式:

VS Code插件开发介绍(二)

2018-12-27
阅读 2 分钟
12k
在上一篇文章里,我简要介绍了 VSCode 插件开发的基本流程,同时讲解了如何获取文件夹绝对路径和用户输入的方法。最近又开发了一个新的插件,主要用途是替换当前编辑文件的内容。google 了一圈,发现介绍这方面的文章很少,特此记录一下,希望对有类似需求的人有一些帮助。

React 16 升级总结

2018-12-27
阅读 2 分钟
14k
目前 React 最新的版本是 16.7.0,基于全新的 React Fiber 架构,有众多激动人心的新功能。由于是大版本升级,考虑到业务的稳定性,我们团队大概等了一年的时间,终于鼓起勇气着手升级的事情,特以此文来记录升级过程中遇到的坑。

优雅的在React组件中注册事件

2018-12-12
阅读 3 分钟
4.3k
在React的开发中,我们经常需要在 window 上注册一些事件, 比如按下 Esc 关闭弹窗, 按上下键选中列表内容等等。比较常见的操作是在组件 mount 的时候去 window 上监听一个事件, 在组件 unmount 的时候停止监听事件。下面给大家介绍几个骚操作。

Redux and Router

2018-12-07
阅读 8 分钟
5.3k
并且,如果路由有参数改变(很多时候页面状态的参数会在路由中体现),这段代码是无法检测的,还需要在componentWillReceiveProps里去处理逻辑。

Immutable

2018-12-07
阅读 3 分钟
17.1k
说immutable之前,首先看下什么是mutable。js在原生创建数据类型即是mutable,可变的。const只是浅层次的防篡改,层级一深就没辙了。

react+graphql起手和特性介绍(三)

2018-12-02
阅读 8 分钟
2.5k
紧接上篇react+graphql起手和特性介绍(二),介绍完graphql与koa的服务搭建和graphql的一些常用特性,接下来我们介绍下在react中如何使用graphql我们使用create-react-app创建react应用:

react+graphql起手和特性介绍(二)

2018-12-02
阅读 7 分钟
3.4k
紧接第一篇文章,react+graphql起手和特性介绍(一),我们接下来实现resolver,和自定义请求上下文,来完成创建用户,发帖,查看所有帖子的功能首先,我们进行自定义请求上下文,来模拟数据库和会话,保存我们的用户数据,帖子数据,登录状态。在server目录下创建context.js文件。