
Nodejs学习之路
文章平均质量分 92
zdplife
千里之行始于足下,一步一个脚印,终会成功
展开
-
新一代 web 框架 Koa 源码学习
Koa 就是一种简单好用的nodejs-Web 框架。它的特点是优雅、简洁、表达力强、自由度高。本身代码只有1000多行。koa一个中间件框架,其提供的是一个架子,而几乎所有的功能都需要由第三方中间件完成,它只是node原生的http的一个封装,再加入中间件元素,koa 不在内核方法中绑定任何中间件, 它仅仅提供了一个轻量优雅的函数库,使得编写 Web 应用变得得心应手Koa目前分为两个版本:原创 2018-01-26 16:33:02 · 3564 阅读 · 0 评论 -
Node.js 如何处理 cpu 密集型问题
总所周知,Node.js 中的异步 I/O 编程特点,非常适合处理 I/O 密集型的情况,但是由于 javascript 单线程的特点,使 Node.js 对于处理 CPU 密集型问题却成为了 Node.js 的弱项,如果遇到 CPU 密集型问题,我们该怎么处理呢,下面我总结了几个相关处理方法:创建子进程:Node.js 的 child_process 模块提供了创建工作子进程的方式来弥补单线...原创 2019-03-13 20:09:13 · 3036 阅读 · 0 评论 -
浅谈 Node.js 中的异步编程原理和实践
由于 JavaScript 是单线程运行的,如果单线程的所有程序都是同步执行的,那么一旦某段程序调用堵塞,整个线程就挂起了。所以 JavaScript 天生是异步的。Node.js 使用的主要编程语言是 JavaScript,采用异步编程,其主要特点如下:单线程相比多线程而已,最大的劣势就是无法充分使用利用多核 CPU。但是单线程也避免了多线程中的存在的一些问题:线程的创建和上下文切换开销...原创 2019-03-12 20:31:45 · 2922 阅读 · 0 评论 -
Node.js 中妙用 Module.prototype._compile 函数
在上篇文章 Nodejs 模块机制及源码分析 中,通过分析 Nodejs 中模块的加载源码,基本理解了 NodeJs 的模块加载原理,其中 Module.prototype._compile 函数主要用于对于第三方 js 文件进行编译加载,所以我们可以巧妙的在 Module.prototype._compile 运行前后执行一些自己的代码,就能实现出意向不到的效果。最近在看赵坤大神的 《Node...原创 2019-03-07 16:35:41 · 1571 阅读 · 0 评论 -
Node.js 模块机制及源码分析
Node.js 采用 CommonJS 模块化规范,让 JavaScript 成为了一门真正能够适应大型工程的语言,在 Node.js 中使用模块非常简单,通过 require 一些想要的包,然后需要产出的代码通过 module.exports 导出。但是除了 require 和 exports 以外,关于 NodeJs 的模块加载机制还有哪些需要了解呢?它的源码是如何实现的呢?模块分类C/...原创 2019-03-06 22:59:58 · 1720 阅读 · 0 评论 -
Node.js 中的错误处理和常用调试方法
Error 类1. Error 分类Error : 通用的错误类型,如: new Error(‘error!!!’)SyntaxError : 语法错误,如: require(‘vm’).runInThisContext(‘binary ! isNotOk’)ReferenceError : 引用错误,如引用一个未定义的变量,如: doesNotExistTypeError : 类型错...原创 2019-03-08 20:04:47 · 4108 阅读 · 0 评论 -
学习 Node.js 内存管理和垃圾回收机制
JavaScript 的标准 ECMAScript 里没有对 GC 做相关的要求,因此 JavaScript 的 GC 机制完全由引擎决定:一般存在三种垃圾回收的方法:stop-the-world: 它指的是在执行垃圾回收的过程中,会暂停程序的执行增量式 GC(incremental),即程序不需要等到垃圾回收完全结束才能重新开始,在垃圾回收的过程中控制权可以根据情况临时交给程序执行并发...原创 2019-03-08 15:01:23 · 608 阅读 · 0 评论 -
《ECMAScript 6 入门》学习笔记
ES6简介ES6既是一个历史名词,也是一个泛指,含义是5.1版以后的JavaScript的下一代标准,涵盖了ES2015、ES2016、ES2017等等;ECMAScript 和 JavaScript 的关系是,前者是后者的规格,后者是前者的一种实现(另外的 ECMAScript 方言还有 Jscript 和 ActionScript);let和const命令let和const声明的...原创 2019-03-01 16:50:40 · 430 阅读 · 0 评论 -
《你不知道的javascript》学习笔记
严格模式ES5中引入严格模式,严格模式与非严格模式的一些区别:严格模式下,禁止隐式或自动的创建全局变量;严格模式下,禁止使用with函数,会根据所传对象创建一个全新的作用域,有性能消耗,不建议使用;严格模式下,eval(…)在运行时有其自己的词法作用域,意味着其中的声明无法修改所在的作用域,有性能消耗,不建议使用;严格模式下,不能使用默认绑定,function中this是undefin...原创 2019-03-01 09:07:55 · 182 阅读 · 0 评论 -
学习使用 NodeJs 中 async-hooks 模块
Async Hooks 是 Node8 新出来的特性,提供了一些 API 用于跟踪 NodeJs 中的异步资源的生命周期。属于内置模块,可以直接引用:let asycnHooks = require('async_hooks');之所以会引入 async_hooks 模块,是因为在异步调用中我们很难正确的追踪异步调用的处理逻辑及关系。而 async_hooks 模块友好的解决了上述问题,...原创 2018-12-22 19:52:08 · 5585 阅读 · 6 评论 -
Nodejs 定制化你自己的REPL
Node 官方提供了 repl 模块,实现一个交互式解析器,它可以作为一个独立程序使用或者嵌入到其它应用中:node 命令使用如果你已经安装了 node,那么你可以在命令行直接输入 node 命令便可以进入一个交互式 javascript 命令行界面,这里你可以敲一些 javascript 表达式,甚至你都可以把它当成计算器使用:$ node> new Date()2018-12-...原创 2018-12-06 15:54:51 · 772 阅读 · 0 评论 -
Egg 源码分析之 egg-cluster
接着前两篇关于 egg-core 源码分析的文章 egg-core 源码分析一 和 egg-core 源码分析二,今天来看一下 egg-cluster 的源码实现逻辑。NodeJs 中 javascript 的执行是单线程的,所以一个进程只能使用一个 CPU,为了最大可能的使用服务器资源,一般我们可以使用下面三种方式实现:同一台机器上部署多个 Node 服务,使用不同的端口,然后用 Ngin...原创 2018-11-11 16:49:50 · 3926 阅读 · 3 评论 -
Egg 源码分析之 egg-core
我们团队现在开发的node项目都是基于koa框架实现的,虽然现在也形成了一套团队内的标准,但是在开发的过程中也遇到了一些问题:由于没有统一的规范,新人上手和沟通成本比较高,容易出现错误仅局限于目前需求进行设计,扩展性不高系统部署及配置信息维护成本较高业务代码实现起来不是很优雅,比如(1)关于文件的引入,到处的require,经常会出现忘记require或者多余的require问题(2)因...原创 2018-10-18 15:34:51 · 3496 阅读 · 0 评论 -
结合项目来谈谈 Puppeteer
Puppeteer 是 Chrome 开发团队在 2017 年发布的一个 Node.js 包,用来模拟 Chrome 浏览器的运行。我们团队从 Puppeteer 刚发布出来就开始成为忠实用户了(主要是因为 PhantomJs 坑太多了),本文主要在介绍 Puppeteer 的同时,结合我们平时的实践做一个分享。学习 Puppeteer 之前我们先来了解一下 Chrome DevTool Pro...原创 2019-08-01 22:16:35 · 5391 阅读 · 7 评论