node

node的优势:

  • 非阻塞
  • 单线程
  • 事件驱动

http - 模块

hello world

a. 全局方法require()是用来导入模块的,一般直接把 require() 方法的返回值赋值给一个变量,在 JavaScript 代码中直接使用此变量即可 。require(“http”) 就是加载系统预置的 http 模块

b. http.createServer 是模块的方法,目的就是创建并返回一个新的web server对象,并且给服务绑定一个回调,用以处理请求。

c. 通过 http.listen() 方法就可以让该 HTTP 服务器在特定端口监听。

var http = require('http');

  http.createServer(function (req, res) {

    res.writeHead(200, {'Content-Type': 'text/plain'});
    res.end('Hello World\n');

  }).listen(1337, "127.0.0.1");

  console.log('Server running at http://127.0.0.1:1337/');

模块加载

模块名称以 “./“开始的,比如 require(“./myModule.js”)用来加载与当前JavaScript同一目录下的myModule.js 模块。

myModule.js

console.log(‘hello jiahao!’);

var name = ’jiahao’;               // 私有熟悉

this.location = ‘hangZhou’;        // 共有属性

this.showLog = function(){         // 共有方法
     console.log(‘hi,jiaHao!’);
}

myTest.js

var myModule = require(‘./myModule.js’);

myModule.showLog();               // hi,jiahao

myModule.name;                    // undefiend

myModule.location                 // hangZhou

私有方法我们在模块以外是取不到的,所以是undefined。共有属性和共有方法的声明需要在前面加上 this 关键字。

fs 模块(文件模块)

fs模块所有的方法都提供了异步和同步两种

api 说明
readFile 异步读取文件,后面的function是回调函数
var fs = require('fs');

fs.readFile('./myModule.js', function (err, data) {

  if (err) throw err;
  console.log('successfully');

});

console.log('async');

events 模块

node 采用的是事件驱动的模式,其中的很多模块都会产生各种不同的事件,可由模块来添加事件处理方法,所有能够产生事件的对象都是事件模块中的 EventEmitter 类的实例.

a. 使用require()方法添加了events模块并把返回值赋给了一个变量

b. new events.EventEmitter()这句创建了一个事件触发器,也就是所谓的事件模块中的 EventEmitter 类的实例

c. on(event, listener)用来为某个事件 event 添加事件处理方法监听器

d. emit(event, [arg1], [arg2], […]) 方法用来产生事件。以提供的参数作为监听器函数的参数,顺序执行监听器列表中的每个监听器函数。

var events = require("events");

var emitter = new events.EventEmitter();

emitter.on("myEvent", function(msg) {
    console.log(msg);
});

emitter.emit("myEvent", "Hello World.");

EventEmitter 类中的方法都与事件的产生和处理相关:

  1. addListener(event, listener) 和 on(event, listener) 这两个方法都是将一个监听器添加到指定事件的监听器数组的末尾

  2. once(event, listener) 这个方法为事件为添加一次性的监听器。该监听器在事件第一次触发时执行,过后将被移除

  3. removeListener(event, listener) 该方法用来将监听器从指定事件的监听器数组中移除出去

  4. emit(event, [arg1], [arg2], […]) 刚刚提到过了。

node & express & jade 入门

var express = require('express');

var app = express();

app.get('/', function(req, res){
    res.send('hello world');
    console.log('hello world');
});

app.listen('8808');
require() 用于在当前模块中加载和使用其他模块;此方法是模块的基础,使用中大概有路径的概念就行。PS:JS文件可以去掉”.js”后缀.
exports 表示模块的导出对象,用于导出模块的属性和公共方法
app.listen() app.listen() 就是在给定的主机和端口上监听请求,这个和node中http模块的http.createServer(function(){…}).listen()效果一致;