未加星标

【javascript】初识 NodeJS(一)

字体大小 | |
[前端(javascript) 所属分类 前端(javascript) | 发布者 店小二05 | 时间 2017 | 作者 红领巾 ] 0人收藏点击收藏
构建一个基础的 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 服务器就完成了。

本文前端(javascript)相关术语:javascript是什么意思 javascript下载 javascript权威指南 javascript基础教程 javascript 正则表达式 javascript设计模式 javascript高级程序设计 精通javascript javascript教程

分页:12
转载请注明
本文标题:【javascript】初识 NodeJS(一)
本站链接:http://www.codesec.net/view/534549.html
分享请点击:


1.凡CodeSecTeam转载的文章,均出自其它媒体或其他官网介绍,目的在于传递更多的信息,并不代表本站赞同其观点和其真实性负责;
2.转载的文章仅代表原创作者观点,与本站无关。其原创性以及文中陈述文字和内容未经本站证实,本站对该文以及其中全部或者部分内容、文字的真实性、完整性、及时性,不作出任何保证或承若;
3.如本站转载稿涉及版权等问题,请作者及时联系本站,我们会及时处理。
登录后可拥有收藏文章、关注作者等权限...
技术大类 技术大类 | 前端(javascript) | 评论(0) | 阅读(13)