创建第一个应用
var http = require('http')
http.createServer(function(req,res) {
//发送http头部
//状态码200
//内容类型:text/plain
res.writeHead(200,{'Content-Type':'text/plain'});
//发送响应信息
res.end('hello world')
}).listen(8080)
- 第一行请求(require)Node.js 自带的 http 模块,并且把它赋值给 http 变量。
- 接下来我们调用 http 模块提供的函数: createServer 。这个函数会返回 一个对象,这个对象有一个叫做 listen 的方法,这个方法有一个数值参数, 指定这个 HTTP 服务器监听的端口号。
repl(交互式解释器)
ctrl + c - 退出当前终端。
ctrl + c 按下两次 - 退出 Node REPL。
ctrl + d - 退出 Node REPL.
向上/向下 键 - 查看输入的历史命令
tab 键 - 列出当前命令
.help - 列出使用命令
.break - 退出多行表达式
.clear - 退出多行表达式
.save filename - 保存当前的 Node REPL 会话到指定文件
.load filename - 载入当前 Node REPL 会话的文件内容。
回调函数
不阻塞:
var fs = require('fs');
var data = fs.readFile('ball.html',function(err,data) {
console.log(data.toString());
})
console.log('success')
阻塞:
var anoData = fs.readFileSync('cors.html')
console.log(anoData.toString())
console.log('success')
事件循环
Node.js 是单进程单线程应用程序,但是通过事件和回调支持并发,所以性能非常高。
Node.js 基本上所有的事件机制都是用设计模式中观察者模式实现。
var EventEmitter = require('events').EventEmitter;
var life = new EventEmitter();
life.setMaxListeners(5)//某个事件名出现的最多次数
life.on('dis',function() {
console.log('dis')
})
life.on('dis',function() {
console.log('dis')
})
life.on('dis',function() {
console.log('dis')
})
life.on('dis',function() {
console.log('dis')
})
life.on('ddd',water)
life.on('ddd',function(){
console.log('ddd2')
})
function water(){
console.log('ddd')
}
//life.removeListener('ddd',water)//移除事件
//life.removeAllListeners()
var ddd = life.emit('ddd')
var ss = life.emit('ss')
console.log(dis)
console.log(ddd)
console.log(ss)
console.log(life.listeners('dis').length)//某个事件的个数
console.log(EventEmitter.listenerCount(life,'dis'))//某个事件的个数