【nodejs】初识 NodeJS(一)

时间:2024-01-07 12:48:44

构建一个基础的 http 服务器

需要引用 http 模块,http 模块是 node.js 的内置模块。

var http = require('http');

http.createServer(function(request, response) {
console.log('Request received...');
response.writeHead({'Content-type': 'text/plain'});
response.write('Hello node.js');
response.end();
}).listen(8888);
console.log('server start...');

保存以上代码为 server.js,打开终端(可以是 cmd)通过 node 运行 server.js,当然前提是先要进入 server.js 所在的目录。

node server

浏览器打开 http://localhost:8888/ 可以看到页面上显示 Hello node.js 。

切换到终端,可以看到输出了一些东西:

server start...
Request received...
Request received...

请注意,当我们在服务器访问网页时,我们的服务器可能会输出两次 Request received...。那是因为大部分服务器都会在你访问 http://localhost:8888/ 时尝试读取 http://localhost:8888/favicon.ico

进阶 - 模块

编写稍大一点的程序时一般都会将代码模块化。在 nodejs 中,一般将代码合理拆分到不同的 js 文件中,每一个文件就是一个模块,而文件名称就是模块名。

那么如何把 server.js 封装成模块?很简单,看下面代码:

var http = require('http');

function start() {
function onRequest(request, response) {
console.log('request received...');
response.writeHead({
'Content-type': 'text/plain'
});
response.write('Hello node.js');
response.end();
} http.createServer(onRequest).listen(8888);
console.log('server start...');
} exports.start = start;

以上代码就是将 server.js 封装为模块了,并且导出 start 方法。

exports 是当前模块的导出对象,用于导出当前模块的公有方法和属性。

引用模块,并调用模块的方法

其实在 server.js 中,就已经学会了如何引用模块以及使用模块的方法:

var http = require('http');    // 引用 http 模块

http.createServer();    // 调用 http 模块的方法

require 函数用于在当前模块中加载和使用别的模块,传入一个模块名,返回一个模块导出对象(exports)。模块名可使用相对路径(以 ./ 开头),或者是绝对路径(以 / 或 c: 之类的盘符开头)。另外,模块名中的 .js 扩展名可以省略。

新建主文件 index.js 文件(与 server.js 同级),在 index.js 中启动 http 服务器:

var server = require('./server');

server.start();

在终端启动服务:

node index

浏览器打开 http://localhost:8888/ 可以看到页面上显示 Hello node.js,OK,和之前一样。

这样构建一个基础的 http 服务器就完成了。