Node.js从入门到实战(一)

一、Intellj Idea下的初始工程

使用Idea创建的Node.js Express工程创建成功后运行,


访问localhost:3000即可以看到如下页面:


二、代码分析

第一个工程命名为PageIron,该项目的主要代码位于PageIron/bin/www文件中:


Node.js 应用的组成部分:

  1. 引入 required 模块:我们可以使用 require 指令来载入 Node.js 模块。
  2. 创建服务器:服务器可以监听客户端的请求,类似于 Apache 、Nginx 等 HTTP 服务器。
  3. 接收请求与响应请求 

代码如下:

1. required模块:

扫描二维码关注公众号,回复: 1881673 查看本文章
  1. /**
  2. * Module dependencies.
  3. */
  4. var app = require( '../app');
  5. var debug = require( 'debug')( 'pageiron:server');
  6. var http = require( 'http');

2.创建服务器

  1. /**
  2. * Get port from environment and store in Express.
  3. */
  4. var port = normalizePort(process.env.PORT || '3000');
  5. app.set( 'port', port);
  6. /**
  7. * Create HTTP server.
  8. */
  9. var server = http.createServer(app);

3. 接受请求和相应

  1. /**
  2. * Listen on provided port, on all network interfaces.
  3. */
  4. server.listen(port);
  5. server.on( 'error', onError);
  6. server.on( 'listening', onListening);
  1. /**
  2. * Event listener for HTTP server "error" event.
  3. */
  4. function onError(error) {
  5. if (error.syscall !== 'listen') {
  6. throw error;
  7. }
  8. var bind = typeof port === 'string'
  9. ? 'Pipe ' + port
  10. : 'Port ' + port;
  11. // handle specific listen errors with friendly messages
  12. switch (error.code) {
  13. case 'EACCES':
  14. console.error(bind + ' requires elevated privileges');
  15. process.exit( 1);
  16. break;
  17. case 'EADDRINUSE':
  18. console.error(bind + ' is already in use');
  19. process.exit( 1);
  20. break;
  21. default:
  22. throw error;
  23. }
  24. }
  25. /**
  26. * Event listener for HTTP server "listening" event.
  27. */
  28. function onListening() {
  29. var addr = server.address();
  30. var bind = typeof addr === 'string'
  31. ? 'pipe ' + addr
  32. : 'port ' + addr.port;
  33. debug( 'Listening on ' + bind);
  34. }

三、Node.js实例

如下是一个Node.js创建的实例:

  1. var events = require( 'events');
  2. var eventsEmmiter = new events.EventEmitter();
  3. var connectHandler = function connected(){
  4. console.log( 'connected');
  5. eventsEmmiter.emit( 'data_received');
  6. }
  7. eventsEmmiter.on( 'connection', connectHandler);
  8. eventsEmmiter.on( 'data_received', function(){
  9. console.log( "数据接收成功");
  10. });
  11. eventsEmmiter.emit( 'connection');
  12. console.log( '程序执行完毕');
代码文件命名为main.js,使用如下命令运行:

$ node main.js
结果如下:

  1. connected
  2. 数据接收成功
  3. 程序执行完

一、Intellj Idea下的初始工程

使用Idea创建的Node.js Express工程创建成功后运行,


访问localhost:3000即可以看到如下页面:


二、代码分析

第一个工程命名为PageIron,该项目的主要代码位于PageIron/bin/www文件中:


Node.js 应用的组成部分:

  1. 引入 required 模块:我们可以使用 require 指令来载入 Node.js 模块。
  2. 创建服务器:服务器可以监听客户端的请求,类似于 Apache 、Nginx 等 HTTP 服务器。
  3. 接收请求与响应请求 

代码如下:

1. required模块:

  1. /**
  2. * Module dependencies.
  3. */
  4. var app = require( '../app');
  5. var debug = require( 'debug')( 'pageiron:server');
  6. var http = require( 'http');

2.创建服务器

  1. /**
  2. * Get port from environment and store in Express.
  3. */
  4. var port = normalizePort(process.env.PORT || '3000');
  5. app.set( 'port', port);
  6. /**
  7. * Create HTTP server.
  8. */
  9. var server = http.createServer(app);

3. 接受请求和相应

  1. /**
  2. * Listen on provided port, on all network interfaces.
  3. */
  4. server.listen(port);
  5. server.on( 'error', onError);
  6. server.on( 'listening', onListening);
  1. /**
  2. * Event listener for HTTP server "error" event.
  3. */
  4. function onError(error) {
  5. if (error.syscall !== 'listen') {
  6. throw error;
  7. }
  8. var bind = typeof port === 'string'
  9. ? 'Pipe ' + port
  10. : 'Port ' + port;
  11. // handle specific listen errors with friendly messages
  12. switch (error.code) {
  13. case 'EACCES':
  14. console.error(bind + ' requires elevated privileges');
  15. process.exit( 1);
  16. break;
  17. case 'EADDRINUSE':
  18. console.error(bind + ' is already in use');
  19. process.exit( 1);
  20. break;
  21. default:
  22. throw error;
  23. }
  24. }
  25. /**
  26. * Event listener for HTTP server "listening" event.
  27. */
  28. function onListening() {
  29. var addr = server.address();
  30. var bind = typeof addr === 'string'
  31. ? 'pipe ' + addr
  32. : 'port ' + addr.port;
  33. debug( 'Listening on ' + bind);
  34. }

三、Node.js实例

如下是一个Node.js创建的实例:

  1. var events = require( 'events');
  2. var eventsEmmiter = new events.EventEmitter();
  3. var connectHandler = function connected(){
  4. console.log( 'connected');
  5. eventsEmmiter.emit( 'data_received');
  6. }
  7. eventsEmmiter.on( 'connection', connectHandler);
  8. eventsEmmiter.on( 'data_received', function(){
  9. console.log( "数据接收成功");
  10. });
  11. eventsEmmiter.emit( 'connection');
  12. console.log( '程序执行完毕');
代码文件命名为main.js,使用如下命令运行:

$ node main.js
结果如下:

  1. connected
  2. 数据接收成功
  3. 程序执行完

猜你喜欢

转载自blog.csdn.net/plpldog/article/details/80869021