
nodejs
文章平均质量分 77
Meiko丶
这个作者很懒,什么都没留下…
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
j s中类型检测方法
在js中的类型检测目前我所知道的是三种方式,分别有它们的应用场景:1、typeof:主要用于检测基本类型.typeof undefined;//=> undefinedtypeof 'a';//=> stringtypeof 1;//=> numbertypeof true;//=> booleantypeof {};//=> objecttypeof [];//=> objecttypeof function() {};//=> f原创 2020-06-12 15:22:48 · 220 阅读 · 0 评论 -
Object.create()和new object()和{}的区别
Object.create()介绍Object.create(null) 创建的对象是一个空对象,在该对象上没有继承 Object.prototype 原型链上的属性或者方法,例如:toString(), hasOwnProperty()等方法Object.create()方法接受两个参数:Object.create(obj,propertiesObject) ;obj:一个对象,应该是新创建的对象的原型。propertiesObject:可选。该参数对象是一组属性与值,该对象的属性名称将是新原创 2020-06-04 16:55:05 · 672 阅读 · 0 评论 -
symbol
概述ES5 的对象属性名都是字符串,这容易造成属性名的冲突。比如,你使用了一个他人提供的对象,但又想为这个对象添加新的方法(mixin 模式),新方法的名字就有可能与现有方法产生冲突。如果有一种机制,保证每个属性的名字都是独一无二的就好了,这样就从根本上防止属性名的冲突。这就是 ES6 引入Symbol的原因。ES6 引入了一种新的原始数据类型Symbol,表示独一无二的值。它是 Java...原创 2020-01-20 17:13:00 · 192 阅读 · 0 评论 -
parseInt() parseFloat() Number()
Number、parseInt、parseFloat比较一、//字符串转换成数字1、letstr='aa100'console.log(Number(str))//NaNconsole.log(parseInt(str))//NaNconsole.log(parseFloat(str))//NaN2、letstr='0aa100'console.log(N...原创 2020-01-20 15:41:21 · 254 阅读 · 0 评论 -
转发:几个常见的 NodeJS 误区
很多不熟悉 NodeJS 的开发者,总是对 NodeJS 抱有怀疑态度,其中的原因基本是对其具有误解,而这些误解往往又最终导致自己放弃 NodeJS 的学习。在这篇文章里,我将会尽可能言简意赅的介绍和解释这些误区的所在之处,并不遗余力地挽留那些正在迷茫中的人,同时增强正在使用 NodeJS 的开发者们的信心。一、NodeJS 是一门服务器语言这个错误非常明显,NodeJS 是一个使用 Ch...转载 2019-12-23 14:06:12 · 319 阅读 · 0 评论 -
egg多进程
Worker 是 Egg 中对于多进程模型的具体实现。因此,在介绍 Worker 前,我们先浅谈一下什么是多进程模型。CPU、操作系统和进程 CPU 是计算机中的计算单元,其能力和行为也非常单纯:接收到指令进行计算,将计算结果返回。而并不关注计算谁,由谁来进行调度。 操作系统 用于调度计算资源,每个操作系统都会遵循一定的规则,来调度分配,谁当前能够得到计算机的计算...转载 2019-12-12 14:57:23 · 2124 阅读 · 0 评论 -
nodejs event emitter
Node.js 所有的异步 I/O 操作在完成时都会发送一个事件到事件队列。Node.js 里面的许多对象都会分发事件:一个 net.Server 对象会在每次有新连接时触发一个事件, 一个 fs.readStream 对象会在文件被打开的时候触发一个事件。 所有这些产生事件的对象都是 events.EventEmitter 的实例。EventEmitter 类events 模块只提供...原创 2019-10-31 16:58:32 · 259 阅读 · 0 评论 -
node process
process对象用于处理与当前进程相关的事情,它是一个全局对象,可以在任何地方直接访问到它而无需引入额外模块。 它是EventEmitter的一个实例。事件'exit'当进程将要退出时触发。这是一个在固定时间检查模块状态(如单元测试)的好时机。需要注意的是 'exit' 的回调结束后,主事件循环将不再运行,所以计时器也会失效:process.on('exit', functio...原创 2019-10-31 14:42:01 · 202 阅读 · 0 评论 -
js判断对象是否为空,是否含有一个属性,删除一个属性,清空对象,清空数组
var p={hello:1};console.log(Object.keys(p).length)//判断对象是否为空console.log(p.hasOwnProperty('hello'))//判断对象是否含有某一个属性var arr=[1,2,3]console.log(arr)arr.length=0//清空一个数组,或者直接arr=[]console.log(arr)...原创 2018-12-14 10:26:19 · 1192 阅读 · 0 评论 -
fs模块
前面的话 fs文件系统用于对系统文件及目录进行读写操作,本文将详细介绍nodejs中的文件系统 概述 文件 I/O 是由简单封装的标准 POSIX 函数提供的。 通过 require('fs') 使用该模块。 所有的方法都有异步和同步的形式。 异步形式始终以完成回调作为它最后一个参数。 传给完成回调的参数取决于具体方法,但第一个参数总是留给异常。 如果操作成功完成,则...转载 2018-12-03 10:34:07 · 347 阅读 · 0 评论 -
nodejs性能优化
1、使用最新版本的 Node.js仅仅是简单的升级 Node.js 版本就可以轻松地获得性能提升,因为几乎任何新版本的 Node.js 都会比老版本性能更好,为什么?Node.js 每个版本的性能提升主要来自于两个方面:V8 的版本更新; Node.js 内部代码的更新优化。例如最新的 V8 7.1 中,就优化了某些情形下闭包的逃逸分析,让 Array 的一些方法得到了性能提升:...原创 2018-11-28 16:39:02 · 1168 阅读 · 1 评论 -
js filter
filter()方法创建一个新数组, 其包含通过所提供函数实现的测试的所有元素。 返回一个新的数组,但是也不改变原来的数组var words = ['spray', 'limit', 'elite', 'exuberant', 'destruction', 'present'];function f(word) { if (word.length>6){ ...原创 2019-09-05 19:34:45 · 117 阅读 · 0 评论 -
bluebird promise
之前在社区上看到说,实际上es6中的primise的实现其实不如一些非官方的promise实现效率高,比如bluebird中的promise的效率是es6中promise效率的3倍。那么我们看看bluebird中的promise。Promise 是 JavaScript 开发中的一个重要概念。按照 Promises/A+ 规范的定义,Promise 表示的是一个异步操作的最终结果。与 Prom...转载 2018-11-28 16:21:14 · 660 阅读 · 0 评论 -
sequelize raw
查询的时候会用到一个参数raw原始查询默情况下,Sequlize人为查询结构创建实例,通过这个实例可以进行数据的更新、删除等操作。有时候我只需要显示数据集,而不需要进行处理,这时可以通过设置raw选项来返回原始数据:// 增加 raw 选项后,会返回数据库中的原始结果Project.findAll({ where: { ... }, raw: true })...原创 2019-02-14 10:13:47 · 1534 阅读 · 0 评论 -
JavaScript 中 call()、apply()、bind() 的用法
apply 和 call 的区别ECMAScript 规范给所有函数都定义了 call 与 apply 两个方法,它们的应用非常广泛,它们的作用也是一模一样,只是传参的形式有区别而已。apply( )apply 方法传入两个参数:一个是作为函数上下文的对象,另外一个是作为函数参数所组成的数组。var obj = { name : 'linxin'}function ...原创 2019-07-10 14:20:36 · 112 阅读 · 0 评论 -
nodes event 模块
event模块是nodejs系统中十分重要的一个模块,使用该模块我们可以实现事件的绑定的触发,为什么我们需要这个模块呢,因为nodejs是单线程异步的。一、什么是单线程异步: 我们可以从JavaScript来理解,就是存在一个等待执行队列,每当有代码行为产生,我们便将其随机放到等待执行队列,但是由于单线程的原因,我们一次只能处理一个任务,只有在当线程空闲时才能处理下一个任务,...原创 2019-08-15 10:59:47 · 185 阅读 · 0 评论 -
map item function 内部await调用方式
async function fetchRepoInfos () { // load repository details for this array of repo URLs const repos = [ { url: 'https://api.github.com/repos/fs-opensource/futureflix-starter-kit' ...原创 2019-08-15 11:51:14 · 338 阅读 · 0 评论 -
js 短路
短路表达式:作为"&&"和"||"操作符的操作数表达式,这些表达式在进行求值时,只要最终的结果已经可以确定是真或假,求值过程便告终止,这称之为短路求值。这是这两个操作符的一个重要属性。一个最简单的例子:foo = foo||bar;这行代码是什么意思?答案://如果foo存在,值不变,否则把bar的值赋给fooif(!foo) foo = bar;...原创 2019-09-06 11:15:24 · 330 阅读 · 0 评论 -
generator函数和yield
在MDN上,对yield的第一句解释就是:Theyieldkeyword is used to pause and resume a generator function.// yield这个关键字是用来暂停和恢复一个遍历器函数(的运行)的。这也就是yield的所有解释了,可谓大道至简,然并卵,深层的意思不去挖掘,根本还是没法用它,还是老老实实做老古董。关键字yield没...原创 2019-10-09 15:05:22 · 673 阅读 · 1 评论 -
nodejs原理
即使还没有用nodejs写过什么项目,但是,核心中的核心,原理中的原理,maybe已经掌握到了。先说nodejs和java对于并发处理上到区别。java是最熟悉的了,所有人都知道,java在处理并发业务的时候是直接开一个线程去做。如下图所示即使新开了线程,在并发更高的情况下,还是会出现等待,这是必然的。多个线程的并行运行,cpu会不断的在线程的上下文之间切换,会增加服务器的负担,多...原创 2018-08-10 18:16:57 · 4493 阅读 · 1 评论 -
js Date
var myDate=new Date();console.log(myDate.getTime()) //1543282597644console.log(myDate) //2018-11-27T01:32:34.520Zconsole.log(myDate.toString()) //Tue Nov 27 2018 09:32:34 GMT+0800 (CST)console.l...原创 2018-11-27 10:27:12 · 191 阅读 · 0 评论 -
global
在浏览器中我们有window对象用于挂载全局的变量,在Node中我们有global对象可以进行挂载,很多共用的属性就可以挂载到global对象上了,本身它自己也拥有很多的属性。在一个js文件中,如果不用var,let,const定义一个变量,那么等于直接定义了一个全局变量,可以在其他的js文件中直接引用。在a.js中定义a=10 //这种定义相当于global.a=10在b.j...原创 2018-11-29 14:35:24 · 237 阅读 · 1 评论 -
v8GC
朴灵_ 大师 的两篇文章,贴在了一起。 前言本文基于我在 Node.js 基金会主办的 Node Live Beijing 的分享,因为微软准备了一个翻译,现场临时把英文的分享改成中文了,有点磕巴。加上分享时长有限很多地方没有展开,于是现在事后来用文字再详细写一下这个题目。本文是该系列的第一篇,第二篇请点这里:解读 V8 GC Log(二): 堆内外内存的划分与 GC 算法,第三篇还在编写...转载 2018-11-29 10:40:07 · 735 阅读 · 0 评论 -
promise,async,await
Promise 是异步编程的一种解决方案:从语法上讲,promise是一个对象,从它可以获取异步操作的消息;从本意上讲,它是承诺,承诺它过一段时间会给你一个结果。promise有三种状态:pending(等待态),fulfiled(成功态),rejected(失败态);状态一旦改变,就不会再变。创造promise实例后,它会立即执行。promise是用来解决两个问题的:回调地狱,代码难以维...原创 2018-11-13 16:15:58 · 259 阅读 · 0 评论 -
js原型链(看了一个大神 的博客,觉得真的是挖到了宝藏一样)
原型的基本概念要想真正理解js的原型和原型链的概念,必须且只要记住以下几点即可:▶ 一切都是对象(看似如此)。undefined, number, string, boolean四种属于简单的值类型,不是对象,使用基本类型变量可以调用方法是因为产生了包装对象(临时的)。剩下的几种情况——函数、数组、对象、null、new Number(10)都是对象,他们都是引用类型。▶ 所有的对...转载 2018-11-13 15:27:40 · 259 阅读 · 0 评论 -
js变量提升hoisting
作用域(Scoping)什么是作用域?我对作用域的理解是只会对某个范围产生作用,而不会对外产生影响的封闭空间。在这样的一些空间里,外部不能访问内部变量,但内部可以访问外部变量。c语言的变量分为全局变量和局部变量,全局变量的作用范围是任何文件和函数访问(当然,对于非变量定义的其他c文件,需要使用extern关键字进行申明,使用static关键字也可以将作用范围限定在当前文件中),局部变...转载 2018-11-13 15:09:10 · 245 阅读 · 0 评论 -
egg(蛋)
egg是什么?我们做后端应用的开发,都是基于MVC这种模式,虽然是一个统一的程序设计思想,但是在实现上肯定是千奇百怪,不同的人对框架的设计一定是不同的,那么对于一个团队的开发来讲,就带来了难度,正所谓众口难调。egg是基于js的后端开发服务框架,奉行一个理念约定优于配置,按照统一的一套约定进行应用开发。约定优于配置,当我第一次在egg文档中看到这句话的时候还是挺亲切的,因为以前在看spri...原创 2018-08-27 15:23:27 · 1305 阅读 · 0 评论 -
nodejs中的闭包,this
一、什么是闭包?官方”的解释是:闭包是一个拥有许多变量和绑定了这些变量的环境的表达式(通常是一个函数),因而这些变量也是该表达式的一部分。相信很少有人能直接看懂这句话,因为他描述的太学术。其实这句话通俗的来说就是:JavaScript中所有的function都是一个闭包。不过一般来说,嵌套的function所产生的闭包更为强大,也是大部分时候我们所谓的“闭包”。看下面这段代码:funct...原创 2018-08-01 15:36:49 · 2814 阅读 · 1 评论 -
express源码分析
Express是一基于Node的一个框架,用来快速创建Web服务的一个工具,为什么要使用Express呢,因为创建Web服务如果从Node开始有很多繁琐的工作要做,而Express为你解放了很多工作,从而让你更加关注于逻辑业务开发。举个例子:创建一个很简单的网站:1. 使用Node来开发:var http = require('http');var url = require(...转载 2018-08-01 15:27:44 · 582 阅读 · 1 评论 -
关于原型和原型链,讲的真好
From:https://www.jianshu.com/p/dee9f8b14771一. 普通对象与函数对象JavaScript 中,万物皆对象!但对象也是有区别的。分为普通对象和函数对象,Object 、Function 是 JS 自带的函数对象。下面举例说明var o1 = {}; var o2 =new Object();var o3 = new f1();funct...转载 2018-08-01 10:38:37 · 8677 阅读 · 2 评论 -
nodejs 中的foreach,map
这两天碰见一个有意思的事情, var t=[1,2,3,4,5]; t.forEach(function (data) { console.log(data) })我现在想中间的时候结束foreach,有人说可以return false,但是我测试之后发现只是结束了当前循环,后面的循环还是会继续执行。还有一种就是使用异常来终...原创 2018-08-09 09:55:06 · 4376 阅读 · 0 评论 -
node原理,事件循环,setTimeout/setImmediate/process.nextTick的差别
事件循环Node.js 在主线程里维护了一个事件队列,当接到请求后,就将该请求作为一个事件放入这个队列中,然后继续接收其他请求。当主线程空闲时(没有请求接入时),就开始循环事件队列,检查队列中是否有要处理的事件,这时要分两种情况:如果是非 I/O 任务,就亲自处理,并通过回调函数返回到上层调用;如果是 I/O 任务,就从 线程池 中拿出一个线程来处理这个事件,并指定回调函数,然后继续循环队列中...原创 2018-11-14 14:23:06 · 847 阅读 · 0 评论 -
pm2
PM2是node进程管理工具,可以利用它来简化很多node应用管理的繁琐任务,如性能监控、自动重启、负载均衡等,而且使用非常简单。 安装npm install -g pm2 常用命令 1 2 3 4 5 6 7 8 9 10 11 12 13 14 ...原创 2018-11-14 15:52:45 · 549 阅读 · 0 评论 -
egg.js 解决路由映射过多的两种方案
一、需求egg.js 在配置路由的过程中如果将所有的路由全部放在 app/router.js 里面,难免显得太过于臃肿了。而 egg 本身提供了两种方案用于解决路由映射过多的问题。二、通过 require 解决这种方式无非是将不同的路由在不同的文件中配置,然后在去 require,而我在 koa-generator-postbird 这个 koa2 的脚手架中也是这么规范的。要...转载 2018-11-22 17:20:18 · 1650 阅读 · 0 评论 -
js内置对象
JS所有内置对象属性和方法汇总对象什么的,程序员可是有很多呢...JS三大对象对象,是任何一个开发者都无法绕开和逃避的话题,她似乎有些深不可测,但如此伟大和巧妙的存在,一定值得你去摸索、发现、征服。我们都知道,JavaScript有3大对象,分别是本地对象、内置对象和宿主对象。在此引用ECMA-262(ECMAScript的制定标准)对于他们的定义: 本地对象...转载 2018-11-15 10:57:39 · 218 阅读 · 0 评论 -
js数据类型
js中有六种数据类型,包括五种基本数据类型(Number,String,Boolean,Undefined,Null),和一种复杂数据类型(Object)。typeof 操作符由于js中的变量是松散类型的,所以它提供了一种检测当前变量的数据类型的方法,也就是typeof关键字.typeof 123 //Numbertypeof 'abc' //Stringtype...转载 2018-11-20 17:04:15 · 143 阅读 · 0 评论 -
setTimeout/setImmediate/process.nextTick的差别
前言根据上一篇文章,我们可知,node对回调事件的处理完全是基于事件循环的tick的,因此具有几大特征:1、在应用层面,JS是单线程的,业务代码中不能存在耗时过长的代码,否则可能会严重拖后续代码(包括回调)的处理。如果遇到需要复杂的业务计算时,应当想办法启用独立进程或交给其他服务进行处理。2、回调是不精确,因为前面的原因,setTimeout并不能得到准确的超时回调。3、不...转载 2018-11-12 18:02:42 · 766 阅读 · 0 评论 -
package-lock.json 与 package.json 关系
package-lock.json是当 node_modules 或 package.json 发生变化时自动生成的文件。这个文件主要功能是确定当前安装的包的依赖,以便后续重新安装的时候生成相同的依赖,而忽略项目开发过程中有些依赖已经发生的更新。查阅资料得知,自npm 5.0版本发布以来,npm i的规则发生了三次变化。**1、npm 5.0.x 版本,不管package.js...原创 2018-11-12 17:12:59 · 274 阅读 · 0 评论 -
exports 和 module.exports
在浏览器端 js 里面,为了解决各模块变量冲突等问题,往往借助于 js 的闭包把左右模块相关的代码都包装在一个匿名函数里。而 Nodejs 编写模块相当的自由,开发者只需要关注 require,exports,module 等几个变量就足够,而为了保持模块的可读性,很推荐把不同功能的代码块都写成独立模块,减少各模块耦合。在 node 的 js 模块里可以直接调用 exports 和 modul...转载 2018-11-12 16:59:22 · 331 阅读 · 0 评论 -
nodejs中一个经典的题for+settimeout
for (var i = 0; i < 5; i++) { setTimeout(function() { console.log(i); }, 1000);}首先肯定的是,最后打印的结果不是0,1,2,3,4最后的结果是5,5,5,5,5因为 setTimeout 的 console.log(i); 的i是 var 定义的,所以是函数级的作用域,不属于 fo...原创 2018-07-23 10:35:21 · 1013 阅读 · 1 评论