构建一个基础的 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 服务器就完成了。

【nodejs】初识 NodeJS(一)的更多相关文章

  1. 前端笔记之NodeJS(一)初识NodeJS&内置模块&特点

    一.NodeJS简介 NodeJS是开发服务器后台的东西,和PHP.JavaEE.python类似,和传统的浏览器的关注DOM的JS完全不同,将JavaScript触角伸到了服务器端.内核是Chrom ...

  2. 初识NodeJS

    1.JavaScript 模块化规范 浏览器环境 AMD Asynchronous Module Definition RequireJS CMD Common Module Definition S ...

  3. 初识NodeJS,一个基于GoogleV8引擎的Javascript运行环境

    思考 首先我们来思考一个问题:我们都知道几乎所有现代主流浏览器都全面支持了ECMAScript 5.1版标准,而JavaScript的标准是ECMAScript.那么我们就容易认为JavaScript ...

  4. Nodejs学习笔记(一)——初识Nodejs

    前言:目前工作的分内之事相对较为单一,希望可以通过工作之余的时间给自己充充电,只是没有一个学伴或大神带,只能说是摸索着前进.起初准备好好研究下Spring这个框架,下载了源码,结合书籍准备一探究竟,看 ...

  5. java程序员的NodeJS初识篇

    摘要 作为一个一直用java来写后端的程序员用NodeJS来写后台,实在不是很爽.这里记下这两个月的NodeJS学习所遇之坑,与java转NodeJS的同仁共勉.学习时间不长,若有理解错误,望指正. ...

  6. 【nodejs】初识 NodeJS(二)

    上一节我们构建了一个基础的 http 服务器,我们可以接收 http 请求,但是我们得做点什么吧 – 不同的 http 请求,服务器应该有不同的响应. 路由模块 处理不同的 http 请求在我们的代码 ...

  7. nodejs初识

    提到nodejs总离不开npm,因此首先要学些和了解npm.而对于npm.nodejs的了解都来源于菜鸟教程. nodejs学习地址:http://www.runoob.com/nodejs/node ...

  8. NodeJs学习一NodeJs初识

    一.前言 按照惯例,先扯淡,就因为这货,现在才有了各大公司招聘的全栈工程师,正是因为它,让以前只会写前端的人也能写起后端服务器代码来了.所以呢,你招一个会NodeJs的前端,它都能把后端干了,一个人干 ...

  9. 【nodejs】初识 NodeJS(四)

    上节我们把服务器.路由和请求处理程序结合在一起了,下面就编写一个具体的 web 应用. 上传图片的 web 应用 服务器模块(server.js) var http = require('http') ...

随机推荐

  1. BZOJ.5093.[Lydsy1711月赛]图的价值(NTT 斯特林数)

    题目链接 对于单独一个点,我们枚举它的度数(有多少条边)来计算它的贡献:\[\sum_{i=0}^{n-1}i^kC_{n-1}^i2^{\frac{(n-2)(n-1)}{2}}\] 每个点是一样的 ...

  2. PIVOT和UNPIVOT使用详解

    一.使用PIVOT实现数据表的列转行 建表语句: DROP TABLE STUDENT; CREATE TABLE STUDENT ( 学生编号 BYTE) NULL , 姓名 BYTE) NULL ...

  3. 英语口语练习系列-C32-建筑-述说时间-暮秋独游曲江

    词汇-building(建筑) entertainment Olympic-sized swimming pool tennis court basketball field football pit ...

  4. 基于AT89C51单片机烟雾传感器

    #include <reg51.h> #include <stdio.h> #define uchar unsigned char //宏定义无符号字符型 #define ui ...

  5. BZOJ5177 : [Jsoi2013]贪心的导游

    首先预处理出对于每个模数,所有被模数按结果从大到小排序的结果,那么对于一个询问,如果可以在$O(1)$时间内判断某个数字是否出现,则可以$O(1000)$回答. 考虑对序列进行分治,对于区间$[l,r ...

  6. BZOJ3457 : Ring

    根据Polya定理: \[ans=\frac{\sum_{d|n}\varphi(d)cal(\frac{n}{d})}{n}\] 其中$cal(n)$表示长度为$n$的无限循环后包含$S$的串的数量 ...

  7. BZOJ2948 : [Poi2001]绿色游戏

    维护一个保护集合$S$,表示哪些点$A$可能胜利. 首先将所有绿点加入$S$. $1.$对于一个不在$S$的$A$点,若它存在某个后继在$S$中,则将其加入$S$. $2.$对于一个不在$S$的$B$ ...

  8. [Vijos1532]区间 (差分约束)

    又是一题我不会的模板题…… 讲一下差分约束吧 差分约束 参考博客 如果一个系统由n个变量和m个约束条件组成,形成m个形如ai-aj≤k的不等式(i,j∈[1,n],k为常数),则称其为差分约束系统.— ...

  9. 【并查集】Connectivity @ABC049&amp;ARC065/upcexam6492

    Connectivity 时间限制: 1 Sec  内存限制: 128 MB 题目描述 There are N cities. There are also K roads and L railway ...

  10. 【最短路】道路重建 @upcexam5797

    时间限制: 1 Sec 内存限制: 128 MB 题目描述 小L的家乡最近遭遇了一场洪水,城市变得面目全非,道路也都被冲毁了.生活还要继续,于是市政府决定重建城市中的道路. 在洪水到来前,城市中共有n ...