一、Intellj Idea下的初始工程
使用Idea创建的Node.js Express工程创建成功后运行,
访问localhost:3000即可以看到如下页面:
二、代码分析
第一个工程命名为PageIron,该项目的主要代码位于PageIron/bin/www文件中:
Node.js 应用的组成部分:
- 引入 required 模块:我们可以使用 require 指令来载入 Node.js 模块。
- 创建服务器:服务器可以监听客户端的请求,类似于 Apache 、Nginx 等 HTTP 服务器。
- 接收请求与响应请求
代码如下:
1. required模块:
扫描二维码关注公众号,回复:
1881673 查看本文章
-
/**
-
* Module dependencies.
-
*/
-
-
var app = require( '../app');
-
var debug = require( 'debug')( 'pageiron:server');
-
var http = require( 'http');
2.创建服务器
-
/**
-
* Get port from environment and store in Express.
-
*/
-
-
var port = normalizePort(process.env.PORT || '3000');
-
app.set( 'port', port);
-
-
/**
-
* Create HTTP server.
-
*/
-
-
var server = http.createServer(app);
3. 接受请求和相应
-
/**
-
* Listen on provided port, on all network interfaces.
-
*/
-
-
server.listen(port);
-
server.on( 'error', onError);
-
server.on( 'listening', onListening);
-
/**
-
* Event listener for HTTP server "error" event.
-
*/
-
-
function onError(error) {
-
if (error.syscall !== 'listen') {
-
throw error;
-
}
-
-
var bind = typeof port === 'string'
-
? 'Pipe ' + port
-
: 'Port ' + port;
-
-
// handle specific listen errors with friendly messages
-
switch (error.code) {
-
case 'EACCES':
-
console.error(bind + ' requires elevated privileges');
-
process.exit( 1);
-
break;
-
case 'EADDRINUSE':
-
console.error(bind + ' is already in use');
-
process.exit( 1);
-
break;
-
default:
-
throw error;
-
}
-
}
-
-
/**
-
* Event listener for HTTP server "listening" event.
-
*/
-
-
function onListening() {
-
var addr = server.address();
-
var bind = typeof addr === 'string'
-
? 'pipe ' + addr
-
: 'port ' + addr.port;
-
debug( 'Listening on ' + bind);
-
}
三、Node.js实例
如下是一个Node.js创建的实例:
-
var events = require( 'events');
-
var eventsEmmiter = new events.EventEmitter();
-
-
var connectHandler = function connected(){
-
console.log( 'connected');
-
eventsEmmiter.emit( 'data_received');
-
}
-
-
eventsEmmiter.on( 'connection', connectHandler);
-
eventsEmmiter.on( 'data_received', function(){
-
console.log( "数据接收成功");
-
});
-
-
eventsEmmiter.emit( 'connection');
-
console.log( '程序执行完毕');
$ node main.js
结果如下:
-
connected
-
数据接收成功
-
程序执行完
一、Intellj Idea下的初始工程
使用Idea创建的Node.js Express工程创建成功后运行,
访问localhost:3000即可以看到如下页面:
二、代码分析
第一个工程命名为PageIron,该项目的主要代码位于PageIron/bin/www文件中:
Node.js 应用的组成部分:
- 引入 required 模块:我们可以使用 require 指令来载入 Node.js 模块。
- 创建服务器:服务器可以监听客户端的请求,类似于 Apache 、Nginx 等 HTTP 服务器。
- 接收请求与响应请求
代码如下:
1. required模块:
-
/**
-
* Module dependencies.
-
*/
-
-
var app = require( '../app');
-
var debug = require( 'debug')( 'pageiron:server');
-
var http = require( 'http');
2.创建服务器
-
/**
-
* Get port from environment and store in Express.
-
*/
-
-
var port = normalizePort(process.env.PORT || '3000');
-
app.set( 'port', port);
-
-
/**
-
* Create HTTP server.
-
*/
-
-
var server = http.createServer(app);
3. 接受请求和相应
-
/**
-
* Listen on provided port, on all network interfaces.
-
*/
-
-
server.listen(port);
-
server.on( 'error', onError);
-
server.on( 'listening', onListening);
-
/**
-
* Event listener for HTTP server "error" event.
-
*/
-
-
function onError(error) {
-
if (error.syscall !== 'listen') {
-
throw error;
-
}
-
-
var bind = typeof port === 'string'
-
? 'Pipe ' + port
-
: 'Port ' + port;
-
-
// handle specific listen errors with friendly messages
-
switch (error.code) {
-
case 'EACCES':
-
console.error(bind + ' requires elevated privileges');
-
process.exit( 1);
-
break;
-
case 'EADDRINUSE':
-
console.error(bind + ' is already in use');
-
process.exit( 1);
-
break;
-
default:
-
throw error;
-
}
-
}
-
-
/**
-
* Event listener for HTTP server "listening" event.
-
*/
-
-
function onListening() {
-
var addr = server.address();
-
var bind = typeof addr === 'string'
-
? 'pipe ' + addr
-
: 'port ' + addr.port;
-
debug( 'Listening on ' + bind);
-
}
三、Node.js实例
如下是一个Node.js创建的实例:
-
var events = require( 'events');
-
var eventsEmmiter = new events.EventEmitter();
-
-
var connectHandler = function connected(){
-
console.log( 'connected');
-
eventsEmmiter.emit( 'data_received');
-
}
-
-
eventsEmmiter.on( 'connection', connectHandler);
-
eventsEmmiter.on( 'data_received', function(){
-
console.log( "数据接收成功");
-
});
-
-
eventsEmmiter.emit( 'connection');
-
console.log( '程序执行完毕');
$ node main.js
结果如下:
-
connected
-
数据接收成功
-
程序执行完