Node.js v0.10.31API手冊-文件夹 Events(事件) Node里面的很多对象都会分发事件:一个net.Server对象会在每次有新连接时分发一个事件, 一个fs.readStream对象会在文件被打开的时候发出一个事件. 全部这些产生事件的对象都是events.EventEmitter的实例. 你能够通过require("events")来訪问该模块. 通常,事件名是驼峰命名 (camel-cased) 的字符串.只是也没有强制的要求,不论什么字符串都是能够使用的.…
Node.js v0.10.31API手冊-文件夹 控制台 Object 用于向 stdout 和 stderr 打印字符.类似于大部分 Web 浏览器提供的 console 对象函数,在这里则是输出到 stdout 或 stderr. 当输出目标是一个终端或者文件时,console函数是同步的(为了防止过早退出时丢失信息).当输出目标是一个管道时它们是异步的(防止堵塞过长时间). 也就是说,在以下的样例中,stdout 是非堵塞的,而 stderr 则是堵塞的. $ node script.j…
原版的API品种,这是从以前的翻译和翻译风格不同 Node.js v0.10.31API手冊-文件夹 DNS 使用 require('dns') 引入此模块. dns 模块中的全部方法都使用了 C-Ares,除了 dns.lookup 使用了线程池中的 getaddrinfo(3). C-Ares 比 getaddrinfo 要快得多,但系统解析器相对于其他程序的操作要更固定. 当一个用户使用 net.connect(80, 'google.com') 或 http.get({ host: 'g…
本节会重点分析内存和进程奔溃,并且会给出相应的监控方法. 本系列所有的示例源码都已上传至Github,点击此处获取. 一.内存 虽然在 Node.js 中并不需要手动的对内存进行分配和销毁,但是在开发中因为程序编写问题也会发生内存泄漏的情况. 所以还是有必要了解一些 Node.js 开放的内存操作和常见的内存泄漏场景. 1)内存指标 Node.js 项目在启动后(例如 node index.js),会创建一个服务进程.进程是具有独立功能的程序在一个数据集合上运行的过程,它是系统进行资源分配和调度…
市面上成熟的 Node.js 性能监控系统,监控的指标有很多. 以开源的 Easy-Monitor 为例,在系统监控一栏中,指标包括内存.CPU.GC.进程.磁盘等. 这些系统能全方位的监控着应用的一举一动,并且可以提供安全提醒.在线分析.导出真实状态等服务. 本专题分为上下两个篇章,会简单分析下在 Node.js 环境中的几个资源瓶颈,包括CPU .内存和进程奔溃,并且会给出相应的监控方法. 本系列所有的示例源码都已上传至Github,点击此处获取. 一.CPU 在 Linux 系统中,可以通…
Events 是 Node.js 中最重要的核心模块之一,很多模块都是依赖其创建的,例如上一节分析的流,文件.网络等模块. 比较知名的 Express.KOA 等框架在其内部也使用了 Events 模块. Events 模块提供了EventEmitter类,EventEmitter 也叫事件触发器,是一种观察者模式的实现. 观察者模式是软件设计模式的一种,在此模式中,一个目标对象(即被观察者对象)管理所有依赖于它的观察者对象. 当其自身状态发生变化时,将以广播的方式主动发送通知(在通知中可携带一…
一.Windows配置 (1)官网(http://nodejs.org)选择Node.js的Windows系统(32位和64位)最新版本. (2)下载完成后,执行MSI的安装文件. (3)安装完成,查看Node.js启动文件目录(右键单击Node.js启动快捷方式),启动文件目录一般默认情况下是在“C:\Program\nodejs\node.exe”. (4)将node.exe可执行文件路径添加到Windows的环境便令中:运行cmd,进入dos操作命令窗口,输入node -v查看是否安装成功…
虽然 Node.js 是单线程的,但是在融合了libuv后,使其有能力非常简单地就构建出高性能和可扩展的网络应用程序. 下图是 Node.js 的简单架构图,基于 V8 和 libuv,其中 Node Bindings 为 JavaScript 和 C++ 搭建了一座沟通的桥梁,使得 JavaScript 可以访问 V8 和 libuv 向上层提供的 API. 本系列所有的示例源码都已上传至Github,点击此处获取. 一.术语解析 接下来会对几个与 Node.js 相关的术语做单独的解析,其中…
HTTP(HyperText Transfer Protocol)即超文本传输协议,是一种获取网络资源(例如图像.HTML文档)的应用层协议,它是互联网数据通信的基础,由请求和响应构成. 在 Node.js 中,提供了 3 个与之相关的模块,分别是 HTTP.HTTP2 和 HTTPS,后两者分别是对 HTTP/2.0 和 HTTPS 两个协议的实现. HTTP/2.0 是 HTTP/1.1 的扩展版本,主要基于 Google 发布的 SPDY 协议,引入了全新的二进制分帧层,保留了 1.1 版…
文件系统是一种用于向用户提供底层数据访问的机制,同时也是一套实现了数据的存储.分级组织.访问和获取等操作的抽象数据类型. Node.js 中的fs模块就是对文件系统的封装,整合了一套标准 POSIX 文件 I/O 操作的集合,包括文件的读写.删除.遍历.重命名等操作. fs 模块中的所有方法都提供了三种形式:回调.同步和 Promise ,其中 Promise 是在 Node.js 的版本 10 中引入的. 本系列所有的示例源码都已上传至Github,点击此处获取. 一.三种形式 在回调形式的方…
在 Node.js 中,提供了console模块,这是一个简单的调试控制台,其功能类似于浏览器提供的 JavaScript 控制台. 本系列所有的示例源码都已上传至Github,点击此处获取. 一.原理 与浏览器一样,Node.js 也提供了一个全局变量 console(实例化 Console 类),可调用 log().error() 等方法. 1)同步还是异步 console 的方法既不像浏览器中那样始终同步,也不像 Node.js 中的流那样始终异步. 是否为同步取决于链接的是什么流以及操作…
Socket.IO 是一个建立在 WebSocket 协议之上的库,可以在客户端和服务器之间实现低延迟.双向和基于事件的通信. 并且提供额外的保证,例如回退到 HTTP 长轮询.自动重连.数据包缓冲.多路复用等. WebSocket 是一种基于 TCP 协议在服务器和浏览器之间提供全双工和低延迟通道的通信协议. 注意,Socket.IO 不是 WebSocket 的实现.尽管 Socket.IO 确实在可能的情况下使用 WebSocket 进行传输,但它为每个数据包添加了额外的元数据. 这就是为…
转载请注明出处:葡萄城官网,葡萄城为开发者提供专业的开发工具.解决方案和服务,赋能开发者. 原文参考:https://dzone.com/articles/node-dependency-management-part2 在上篇介绍Node.js依赖关系管理的文章中,我们介绍了关于Node.js模块的基础知识,如何使用module.exports和require方法处理依赖项,以及文件夹依赖项(folder dependencies)的工作方式和工作原理. 今天我们将继续从这一点出发,来了解如何…
在 JavaScript 中,一般只处理字符串层面的数据,但是在 Node.js 中,需要处理网络.文件等二进制数据. 由此,引入了Buffer和Stream的概念,两者都是字节层面的操作. Buffer 表示一块专门存放二进制数据的缓冲区.Stream 表示流,一种有序.有起点和终点的二进制传输手段. Stream 会从 Buffer 中读取数据,像水在管道中流动那样转移数据. 本系列所有的示例源码都已上传至Github,点击此处获取. 一.Buffer Buffer 是 JavaScript…
在 Node.js 中,提供了 error 模块,并且内置了标准的 JavaScript 错误,常见的有: EvalError:在调用 eval() 函数时出现问题时抛出该错误. SyntaxError:调用不符合 JavaScript 的语法时抛出该错误. RangeError:超出可接受值的集合或范围,例如数组越界. ReferenceError:访问未定义的变量时抛出该错误. TypeError:参数或变量的类型有问题时抛出该错误. URIError:使用全局的 URI 处理函数发生问题时…
http://logio.org/ 1.先装好node.js $ yum install nodejs 2.安装log.io $sudo npm install -g log.io --user "root" 3.启动log.io server $nohup log.io-server & 4.修改配置文件 vim ~/.log.io/harvester.conf exports.config = { nodeName: "application_server&quo…
模块化是一种将软件功能抽离成独立.可交互的软件设计技术,能促进大型应用程序和系统的构建. Node.js内置了两种模块系统,分别是默认的CommonJS模块和浏览器所支持的ECMAScript模块. 其中,ECMAScript模块是在8.5.0版本中新增的,后面又经过了几轮的迭代.本文若无特别说明,那么分析的都是CommonJS模块. 顺便说一句,本系列分析的是Node.js的最新版本18.0.0,在Github上下载源码后,可以关注下面3个目录. ├── deps 第三方依赖 ├── lib…
流是Nodejs的高级应用,掌握流的使用,才能真正胜任NodeJS开发. Nodejs中,流是基于事件的API,用于管理和处理数据,而且效率很好! 什么是流? 流是一个抽象接口,Node 中有很多对象实现了这个接口. 例如,对http 服务器发起请求的request 对象就是一个 Stream,还有stdout(标准输出)等. 流的四种类型 dable - 可读操作. Writable - 可写操作. Duplex - 可读可写操作. Transform - 操作被写入数据,然后读出结果. 流的…
post请求 form.html <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>Document</title> </head> <body> <form action="http://127.0.0.1:3000/dopost" method=&quo…
fs 模块是文件操作的封装,它提供了文件的读取.写入.更名.删除.遍历目录.链接等 POSIX 文件系统操作.与其他模块不同的是,fs 模块中所有的操作都提供了异步的和同步的两个版本, 例如读取文件内容的函数有异步的 fs.readFile() 和同步的fs.readFileSync(). 1.fs.readFile fs.readFile(filename,[encoding],[callback(err,data)])是最简单的读取文件的函数.它接受一个必选参数 filename,表示要读取…
前言 如果你看过 2018 Node.js 的用户报告,你会发现 Node.js 的使用有了进一步的增长,同时也出现了一些新的趋势. Node.js 的开发者更多的开始使用容器并积极的拥抱 Serverless Node.js 越来越多的开始服务于企业开发 半数以上的 Node.js 应用都使用远端服务 前端开发者们开始越来越多的关心和参与到后端和全栈中去 可以看到越来越多的前端开发者们具备了全栈的能力,更多的核心应用开始基于 Node.js 开发,而其中,保障应用的稳定性是每一个开发者的"头等…
v0.12悠长的开发周期(已经过去九个月了,并且还在继续,是有史以来最长的一次)让核心团队和贡献者们有充分的机会对性能做一些优化.本文会介绍其中最值得注意的几个. 支持塞住模式的可写流 现在可写流可以支持“塞住(corked)”模式,类似于你执行man tcp时见到的socket选项TCP_CORK和TCP_NOPUSH. 当被塞住时,写到流中的数据会排队直到流被重新开塞(uncorked).这样Node.js可以将比较小的写操作合并成比较大的,从而减少系统调用和TCP往返.   http模块已…
现在上一个项目,如果没有APM监控服务或应用的运行性能参数,等于是一架没有盲降系统的飞机正在盲降,结果会很悲催.出现了访问失效等问题时,都很难判定是性能瓶颈还是一个藏的深的bug,汇报的时候一顿眼晕,这样的结果可定是要被人分分钟的各种撕. 目前还没有像样的给node.js项目应用的APM开源项目,暂且先羡慕嫉妒下给java用的PinPoint. 不用开源的就用专业的APM提供商的产品,先解决问题,国内有很多专业提供商,也是不错. New Relic也是被推荐的一家,集成进node.js特别方便.…
版本:apache2.2+node.js(v.10.25) 系统环境:ubuntu 12.04(LTS) 32位 因为有些模块并没有开启 所以需要使用以下命令开启该模块 windows下则直接在httpd.conf里面将LoadModule前面的#删除即可 在配置之前需要使用proxy模块以及proxy_http模块,执行以下命令: a2enmod proxy a2enmod proxy_http 然后重启apache 命令如下: service apache2 restart 找到/etc/a…
1.什么是npm npm是Node.js的包管理器,它允许开发人员在Node.js的应用程序中创建,共享,重用模块.之前我们通过node的官网的安装程序安装了Node.js,那么npm就已经装好了的. 既然npm是Node.js的包管理器,那么什么是包呢? 包:包是一个文件夹,将模块封装起来,用于发布,更新,依赖管理,版本控制.你可以简单的把包理解成就是一个文件夹.package.json描述包的一些信息 模块:一个实现某些特定功能的文件,以实现模块化编程. 2.如何使用npm为node.js安…
http://ourjs.com/detail/52a914f0127c763203000008 大家都知道PayPal是另一家迁移到Node.js平台的大型公司,Jeff Harrell的这篇博文 Node.js at PayPal  解释了为什么从Java迁移出来的原因: 开发效率提高一倍(2个人用更少的时间干了5个人的活), 性能提高一倍, 代码量减少33%, 文件减少40%: (小编: 个人认为深层次原因是Java正在越来越走向封闭,而且变得越来越复杂而且oracle正在对Java收费,…
近期想尝试一下英特尔的基于WebRTC协同通信开发套件,所以须要在本地搭建Node.js Web的开发測试环境. 这里讲的是CentOS 下的搭建方法.使用Windows的小伙伴请參考: <Node.js入门>Windows 7下Node.js Web开发环境搭建笔记 Node.js是什么? 我们看看百科里怎么说的? JavaScript是一种执行在浏览器的脚本,它简单.轻巧.易于编辑,这样的脚本通经常使用于浏览器的前端编程,可是一位开发人员Ryan有一天发现这样的前端式的脚本语言能够执行在s…
原创作者: sailtseng 1. 安装 Oracle 11g express  详见: <Windows 7 x64 安装 Oracle 11g Express> 2. 安装 Microsoft Visual Studio 2012 Express   在 Microsoft 官网注册并下载 Visual Studio 2012 Express for Windows Desktop, 运行安装. 3. 安装 Node.js (当前最新版本为v0.10.18)   在 Node.js 官网…
大家都知道PayPal是另一家迁移到Node.js平台的大型公司,Jeff Harrell的这篇博文 Node.js at PayPal  解释了为什么从Java迁移出来的原因: 开发效率提高一倍(2个人用更少的时间干了5个人的活), 性能提高一倍, 代码量减少33%, 文件减少40%: (小编: 个人认为深层次原因是Java正在越来越走向封闭,而且变得越来越复杂而且oracle正在对Java收费,参见: Oracle计划发布收费版JVM , 这促使了越来越多的公司加入了去Java化的队伍) 外…
前言 由于高版本的node.js导致gulp执行build命令失败,我需要在Windows下卸载掉已有的node.js并安装一个多版本管理工具nvm-windows,方便切换不同版本的node.js. nvm是Linux下常用的一个node.js多版本管理工具,但是nvm不能在Windows下使用,在GitHub上有个项目叫nvm-windows,可以让我们在Windows下对node.js进行多版本管理. nvm-windows的下载地址:https://github.com/coreybut…