随笔分类 - node.js
摘要:今天要介绍的两个模块分别是assert和vm,下面我们就分别介绍。 使用assert做测试 node中,我们可以使用assert模块来测试代码。equal()和notEqual()分别作相等性和不等性的判断,第一个参数是期望值,第二个参数是真实值,第三个参数是异常信息,例子如下:var assert = require('assert');assert.equal(1, true, 'Truthy');assert.notEqual(1, true, 'Truthy');测试通过,不会有结果显示,但是一旦不通过就会有异常抛出,运行结果: equa
阅读全文
摘要:虽然node对操作系统做了很多抽象的工作,但是你还是可以直接和他交互,比如和系统中已经存在的进程进行交互,创建工作子进程。node是一个用于事件循环的线程,但是你可以在这个事件循环之外创建其他的进程(线程)参与工作。 进程模块 process模块允许你获得或者修改当前node进程的设置,不想其他的模块,process是一个全局进程,你可以直接通过process变量直接访问它。 process实现了EventEmitter接口,exit方法会在当进程退出的时候执行。因为进程退出之后将不再执行事件循环,所有只有那些没有回调函数的代码才会被执行。在下面例子中,setTimeout里面的语句...
阅读全文
摘要:今天介绍的是DNS和加密相关的api。 DNS dns包括两个主要的方法:resolve(),把域名转换成dns记录;reverse(),把ip地址转换成域名。 dns.resolve()包括三个参数:域名,记录类型和回调函数。var dns = require('dns');dns.resolve('yahoo.com', 'A', function(e,r) { if (e) { console.log(e); } console.log(r);} ); 回调函数返回两个参数,第一个是异常,第二个是处理结果。dns里面有一些方便的方法,如下面
阅读全文
摘要:I/O是使node与其他框架与众不同的很重要的一个部分,本章将解释它是如何实现node非堵塞I/O的。 Streams stream api是一个抽象接口,他帮助node中很多部分实现不间断输入和输出的操作。stream api为它的实现类提供了一些通用的方法和属性,streams可以是可读的、可写的或者两者都是,并且他们都实现了EventEmitter,可以emit事件。 可读streams 可读streams提供了一系列的方法和事件,使我们可以对数据源的数据进行访问。基本上,可读stream就是为了触发data事件,同时他提供了一些属性允许你对获取的数据大小和获取速度进程配置。...
阅读全文
摘要:node一个重要任务是用来创建web服务,接下来我们就学习与此相关的一个重要的api -- http。我们使用http.createServer()创建一个http服务的实例,用来处理来自客户的请求。http模块包含一些重要的内容,下面我们就来学习。 http服务器 我们先来看一个简单的例子,如何创建一个简单的服务器。require('http').createServer(function(req,res){ res.writeHead(200, {}); res.end('hello world');}).listen(8125); 上面的代码比较简单,使用
阅读全文
摘要:从今天开始,我们将介绍node的一些重要的api,首先向大家介绍的是events。他是node中相当重要的一个api,也是实现其他一些api的基础,对他有好的理解,会帮助你使用好其他的api。 如果你用javascript开发过浏览器的应用,那你一定很熟悉事件。但浏览器中的事件来源于dom,而不是javascript。dom中用户驱动的事件通过一系列树状元素(html/xml)的接口实现与用户的交互,当用户和dom交互的时候就会产生相应的事件。 1.EventEmitter node中不存在dom这个对象,所以他自己创建了EventEmitter类来实现基本的事件功能,node中其他...
阅读全文
摘要:1.异常处理 在我们进行代码开发的时候,异常的捕获处理是一个不能忽略的话题,那么怎么才能捕获到node中的异常呢?或许你最先想到的是try/catch的使用,如下例:var http = require('http')var opts = { host: 'sfnsdkfjdsnk.com', port: 80, path: '/'}try { http.get(opts, function(res) { console.log('Will this get called?') })}catch (e) { console.log
阅读全文
摘要:我们按照执行的方式,把I/O分为串行I/O和并行I/O。串行I/O是完成当前I/O之后,才会去执行下一个I/O。并行I/O要复杂些,但是更容易理解,就是几个I/O同时运行。有一点需要提醒的是,在串行I/O中一般是按照请求队列的顺序来执行请求的,并以这个顺序返回结果。并行I/O返回的结果没有任何的顺序可言。串行I/O和并行I/O可以组合起来工作,例如:有多组并行I/O,每组中包含不同数目的串行I/O。 在Node中我们假设所有的I/O无限延迟的,他们可能执行0到无限的时间,我们不知道也不能假设他们具体的执行时长。与其等待他们执行完毕,我们不如使用基于事件模式,当I/O执行完毕时使用回调函数...
阅读全文
摘要:今天要介绍的是node的事件循环机制,他是一些交互系统的基本概念,他更是javascript语言核心的一部分。因为对于使用浏览器的用户,javascript就是通过处理用户的click,mouse等相关的事件来处理用户的请求的。对于像node这样的服务器来说,事件循环也同样起到相当重要的作用,比如用来处理来自客户端的request请求。下面我们就对node的事件循环做个简单的介绍。 node采用单线程的处理机制,对所有的I/O请求采用非堵塞的工作方式。也就是说,对于http的请求,数据查询,文件的I/O等其他操作,系统不会堵塞当前线程而去等待他直到他返回结果;相反的,他们会立即执行当前请...
阅读全文
摘要:今天我们来完善twitter应用。首先回到昨天的例子。var express = require('express')var app = express()app.get('/', function(req, res) { res.send('Welcome to Node Twitter')})app.listen(8000) 这里我们使用express模块来代替第一讲中使用的http模块,但其实express底层仍然使用到了http模块,它会帮我们完成服务器的创建和监听。完成express实例的创建之后,我们需要监听请求事件,这里我们使用ge
阅读全文
摘要:今天带来的例子是如何创建一个类似于twitter的应用程序。 准备工作: 首先我们需要安装express模块,他是node开发web应用的mvc框架。安装express很简单,是使用npm命令(Node Package Manager)。点【开始】菜单,选择【所有程序】,找到【Node.js (x86)】,运行【Node.js command prompt】。命令行输入如下命令:npm install express回车:然后我们还需要安装jade模块: 现在还没有结束,找到你下载的express和jade文件,目录如下:C:\Users\XXXXXX\node_modules复制n...
阅读全文
摘要:这篇文章将通过开发一个简单聊天室的方式,介绍node.js的net模块。 一、第一版,只向客户端发送信息 我们先实现一个简单的版本,代码如下:var net=require('net');var chatServer=net.createServer();chatServer.on('connection',function(client){ client.write('hi!\n'); client.write('bye!\n'); client.end();})chatServer.listen(9001); 代码讲解: 1.
阅读全文
摘要:从今天开始,我将开始一个关于node.js的专题,是我读《node:up and running》的总结。第一课是关于node.js的安装,开发工具的介绍,以及如何创建我们的第一个服务:hello word。 window平台的node.js安装很简单,大家到http://nodejs.org/下载安装文件,直接安装就可。 开发工具推荐大家使用WebStorm,多node.js的支持相当的好。大家可以读的博文http://www.cnblogs.com/softlover/archive/2012/08/19/2646265.html了解这个软件的安装。 我们使用webstorm创建...
阅读全文
摘要:webstorm下载配置node失败解决办法
阅读全文