自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(16)
  • 问答 (1)
  • 收藏
  • 关注

原创 用canvas中的getImageData方法获取像素点数据

getImageData作用: 用来获取canvas画布上指定矩形区域的像素数据;参数:参数含义x矩形的左顶点横坐标y矩形的左顶点纵坐标width矩形的宽度height矩形的高度返回值: 返回的是一个ImageData对象,该对象包含了三个只读属性:属性含义ImageData.widthImageData的宽度,用像...

2019-12-18 17:45:52 17799

原创 Linux下安装html-pdf报“PhantomJS not found on PATH”错误的解决办法

问题场景:使用html-pdf将html转换pdf文件,html-pdf依赖于phantomjs-prebuilt。phantomjs-prebuilt是用来安装PhantomJS的npm 安装器,安装html-pdf时会自动安装该依赖。然而,安装html-pdf插件的时候遇到了phantomjs-prebuilt装不上的问题:[root@localhost PROJECTSERVIC...

2019-12-17 17:09:33 1509

原创 React源码解析笔记---调度更新(二)

scheduleWorkexport function scheduleUpdateOnFiber( fiber: Fiber, expirationTime: ExpirationTime,) { // 判断有没有嵌套更新 checkForNestedUpdates(); warnAboutInvalidUpdatesOnClassComponentsInDEV(fibe...

2019-07-19 23:36:17 869

原创 React源码解析笔记---ReactDOM.render

import ReactDOM from 'react-dom';ReactDOM.render(<App />, document.getElementById('root));源码:这里只摘录了核心代码const ReactDOM: Object = { ... render( element: React$Element<any>, // ...

2019-07-15 21:48:54 668

原创 React源码解析笔记---调度更新(一)

流程:ReactDom.render => legacyRenderSubtreeIntoContainer (1. 创建root;2. …;3. 调度更新)调度更新unbatchedUpdates源码:...// 这里“相当于”执行了unbatchedUpdates的回调函数// 判断parentComponent是否为null, 然后分别调用root原型上的不同方法,// 这...

2019-07-15 21:42:54 687

原创 React源码解析笔记---React.Children

v16.8.6React.Children.mapmapChildrenfunction mapChildren(children, func, context) { if (children == null) { return children; } const result = []; mapIntoWithKeyPrefixInternal(children, ...

2019-07-09 14:08:05 162

原创 三种简单的排序方法js实现

一、冒泡排序冒泡排序规则冒泡排序是最慢的排序算法之一,之所以叫冒泡排序是因为它会依次(假设这里是正序)遍历数据,并两两比较相邻数据,并按照升序(或降序)将较大(或小)的数据往右移动,这样最大(或最小)的数据就会像气泡一样慢慢浮动到顶端。假如这里有一组降序排序的数据 5,4,3,2,1,想要将它按升序排序,用冒泡排序的过程如下图:冒泡排序的代码实现:function bubbleSort(...

2019-04-15 16:08:53 872

原创 图的深度优先搜索与广度优先搜索---js

参考书籍:《数据结构与算法JavaScript描述》1. 图图由边的集合以及顶点的集合组成。例如游戏中的地图,上面含有路线以及地点。地点就可以看作是顶点,路线看作是边。边将顶点连接起来,构成一条条路径。2. 构建图function Graph(v) { this.vertices = v; // 顶点个数 this.edges = 0; // 边的条数 this.vertices...

2019-03-21 15:18:48 216

原创 generator函数中yield表达式返回值与next参数及其应用

《ECMAScript 6 入门》中提到:遇到yield表达式,就暂停执行后面的操作,并将紧跟在yield后面的那个表达式的值,作为返回的对象的value属性值yield表达式本身没有返回值,或者说总是返回undefined。next方法可以带一个参数,该参数就会被当作上一个yield表达式的返回值。这几句话意思呢?看如下代码:function * gene(a, b) { ...

2018-12-15 21:56:57 1567

原创 为什么React要区分Class和function定义的组件?

React内部是通过调用组件的定义来获取被渲染的节点,而对于不同的组件定义方式,其获取节点的步骤也不一样。如下://function方式定义function Example() { return &amp;amp;lt;div&amp;amp;gt;this is a div&amp;amp;lt;/div&amp;amp;gt;;}const node = Example(props);// 类方式定义class Example exte...

2018-12-14 13:52:40 8812

原创 用commander.js构建自己的脚手架工具

随着前端技术的发展,工程化逐渐成为了一种趋势。但在实际开发时,搭建项目是一件很繁琐的事情,尤其是在对一个框架的用法还不熟悉的时候。于是很多框架都自带一套脚手架工具,在初始化前端项目的时候就可以不用自己从头搭建,只要在命令行输入初始化命令即可。那么,如果想自行开发出这样一个命令行工具来初始化自定义项目,该怎么做呢?研究的过程中,偶然间发现了commander.js这个模块,可以帮助命令行工具...

2018-06-26 16:12:34 7834 2

原创 Webpack笔记(三):管理文件输出与自动构建

一、管理文件输出项目结构:webpack-test |- package.json |- webpack.config.js |- dist |- index.html |- src |- index1.js |- index2.js |- node_modulesindex1.jsexport default function() ...

2018-03-22 17:21:12 599

原创 Webpack笔记(二):使用Loader

Loader 用于将模块的源代码进行转换(预处理)。在import或者加载文件时,通过不同的loader对不同格式的文件进处理,如:将不同语言的文件(如TypeScript)转换为JavaScript、将scss转换为css等等。一、使用官方文档给出三种使用loader的方法:配置:在 webpack.config.js 文件中的module关键字下指定loader 内联:在impo...

2018-03-20 09:47:31 387

原创 使用Node时报Error: spawn *** ENOENT错误原因

一般来说,报 Error: spawn *** ENOENT 错误的原因可总结为:A.  spawn方法参数不正确:child_process.spawn(command[, args][, options])@command:要执行的命令@args:参数列表(可选)@options:配置对象(可选)spawn方法使用给定的command命令来产生一个子进程,args为命令行参数,如果省略,则默认...

2018-03-14 17:26:27 70477 2

原创 Webpack笔记(一):安装配置

一、局部安装介绍:全局安装会导致不同项目中的webpack锁定到指定版本,也会导致使用不同webpack版本的项目构建失败,丧失了灵活性,因此推荐局部安装。a. 首先确保安装了Node.js的最新版本。b. 写这篇文章的时候,webpack已经到了4.1.0版本;c. 要安装最新版本或特定版本,请运行以下命令之一:npm install --save-dev webpa...

2018-03-08 17:48:21 198

转载 Unix中的select与epoll

来源:知乎首先我们来定义流的概念,一个流可以是文件,socket,pipe等等可以进行I/O操作的内核对象。不管是文件,还是套接字,还是管道,我们都可以把他们看作流。之后我们来讨论I/O的操作,通过read,我们可以从流中读入数据;通过write,我们可以往流写入数据。现在假定一个情形,我们需要从流中读数据,但是流中还没有数据,(典型的例子为,客户端要从socket读如数据,但是服

2017-09-06 17:16:20 217

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除