NodeJS服务器:一行代码 = 一个的HTTP服务器
从这一篇开始,我们进入技术讲解的话题,逐步实现用NodeJS实现文件的传送共享服务。
前文我们讲过,NodeJS是最擅长做网络服务器的,今天我们就来用NodeJS做一个最简单的服务器。
先看一幅图:

如图中所画,当一个小孩子还很小的时候,如果有叔叔阿姨跟他打招呼,逗他玩,他几乎用相同的方式回应。
今天我们要做的HTTP服务器也一样,启动之后,不管是那个客户端连接上来,它都统一用Hi回应。
1、下载安装NodeJS
推荐大家到官方网站:https://nodejs.org/ 下载最新版本的NodeJS。
以Windows为例,你可以下载.msi安装包,也可以单独下载node.exe文件。
为了项目讲诉的一致性,我们假设将NodeJS安装到d:\iLinkIT。
验证安装是否正确:
打开命令行工具,执行node -v,如果显示NodeJS的版本,则说明已经安装完毕,如下图所示。

2. 编写HTTP服务器端程序
打开一个文本编辑器,例如:Notepad++,输入如下代码,然后将文件另存为 ilinkit.js ,编码格式选择:utf-8格式。
var http = require( 'http' );
var server =http.createServer( function ( request ,response ){
response.end( 'Hi' );
} );
server.listen( 8000 );
console.log( 'HTTP服务器启动中,端口:8000.....' );
这样,一个HTTP服务器就写好了。细心的同学可能会说:标题党!明明不是一行代码嘛!
了解JavaScript的朋友都知道,把上面的代码放到同一行是没有问题的,另外,其实这个服务器最核心的部分,可以写成下面的形式:
http.createServer( function ( request ,response ){ response.end( 'Hi' ); } ).listen( 8000 );
当然了,我们不推荐这种方式,因为很难理解,我们可以在把JavaScript的功能都调通之后,发布时用压缩工具压缩代码。
下面我们逐行解释一下每行代码的含义,以序号来指代。
第1行:加载一个http的模块,加载成功后保存到一个名称为 http 的变量中。
第3行:调用http对象的createServer()函数,创建一个服务器,并传入一个匿名的回调函数,用来响应客户端的请求。
request,response是不是很熟悉?没错!和JSP等后台语言类似,
request代表了客户端的请求,客户端是用GET,还是用POST的方法提交的数据?提交的路径是什么?这些信息都通过request对象获取到。
response代表了服务端对客户端的响应,服务端是给客户端响应一个文本?还是响应一个文件?数据类型是什么?状态码是多少,这些信息都通过response对象向客户端响应。
第4行:表示不管客户端的请求是什么,服务端向客户端统一反馈一个文本:Hi。
第6行:启动的服务器,在端口8000监听客户端的请求。
第7行:console是NodeJS的全局属性,用来向标准输出设备(这里是命令行窗口)输出内容。
3. 测试HTTP的服务器的效果
启动命令行,进入到ilinkit.js 所在的目录,然后执行下面的语句:
>node ilinkit.js
这时候,显示如下的内容,表示HTTP服务器已经启动。

我们打开一个浏览器,输入:http://localhost:8000
浏览器将会显示:Hi
再输入:http://localhost:8000/helloworld
浏览器还是显示:Hi
......
因为我们这个简单的服务器,设计的逻辑就是,不管客户端的请求是什么,服务端的响应都是一样的Hi。
4. 退出NodeJS服务器
在命令行中,连续按2次 Ctrl + C 即可退出NodeJS。
至此,一个简单的HTTP服务器就已经完成了,它就像一个小婴儿,还不会说话,只会用Hi来对这个世界做出响应。
是不是很简单?希望能给你带来一个充满信心的开头^_^~
-----------------------爱莲(iLinkIT)系列文章------------------------------------------
NodeJS服务器:一行代码 = 一个的HTTP服务器的更多相关文章
- IM服务器:编写一个健壮的服务器程序需要考虑哪些问题
如果是编写一个服务器demo,比较简单,只要会socket编程就能实现一个简单C/S程序,但如果是实现一个健壮可靠的服务器则需要考虑很多问题.下面我们看看需要考虑哪些问题. 一.维持心跳 为何要维持心 ...
- Emmet快速语法—助力HTML/CSS一行代码一个页面
学会之后牛掰的场景如下 我们的目标就是用一行代码=>写下面这样的长长长长的HTML结构来. 如:table>(thead.text>th{手机1}*4)+(tbody.text$*4 ...
- 一行代码搭建 Python 静态服务器
如果电脑上安装有Python, 那么进入到目标文件夹,在终端中运行如下命令, 即可搭建映射当前目录的静态文件服务器: python -m SimpleHTTPServer 9000 默认端口号是800 ...
- 用nodejs搭建一个简单的服务器
使用nodejs搭建一个简单的服务器 nodejs优点:性能高(读写文件) 数据操作能力强 官网:www.nodejs.org 验证是否安装成功:cmd命令行中输入node -v 如果显示版本号表示安 ...
- 意外作出了一个javascript的服务器,可以通过js调用并执行任何java(包括 所有java 内核基本库)及C#类库,并最终由 C# 执行你提交的javascript代码! 不敢藏私,特与大家分
最近研发BDC 云开发部署平台的数据路由及服务管理器意外作出了一个javascript的服务器,可以通过js调用并执行任何java(包括 所有java 内核基本库)及C#类库,并最终由 C# 执行你提 ...
- 搭建一个Flv视频播放服务器
搭建一个Flv视频播放服务器 热度 15已有 11511 次阅读2009-11-2 22:27 |关键词:服务器 视频 flv 播放 文档 错漏 经过一天的努力,查了好多资料,终于搞定了Flv视频服务 ...
- nodejs 开发,手把手开始第一个服务器程序(原生)
此文章为原生 nodejs ,仅做学习使用 想学习 express 和 koa2 的小伙伴请绕路 此文章适合有HTML 和css .js 基础的小伙伴看哦 如果能帮到你,荣幸之至 文章纯手打,如有纰 ...
- 从0开始自己配置一个vps虚拟服务器(1)
我前几年买的虚拟机都被我荒废了,我已经配置过很多遍了,但是从来没有真的用过.因为我前几个月之前又新买了一个便宜的服务,准备写新的东西.供应商pacificrack,真的很烂,一直断,控制面板还打不开, ...
- Node学习(二) --使用http和fs模块实现一个简单的服务器
1.创建一个www目录,存储静态文件1.html.1.jpg. * html文件内容如下: 12345678910111213 <html lang="en">< ...
随机推荐
- AutoCAD按坐标打印图纸
前几天公司要求按坐标打印DWG文件,中间走了不少弯路,好在已经搞定了,整理一下分享给大家,希望后来人少走弯路. 1. 设计需求: 公司的图纸用AutoCAD2010做成,通常一个项目的所有图纸都存放在 ...
- 好记心不如烂笔头之JQuery学习,第二章
jQuery获取元素不需要担心元素不存在而报错,但是无论怎样 $("#xxx") 是一定会有返回值的,无论存不存在元素,那么依然是要对元素做判断的,判断的方法常见两种 1.看返回的 ...
- C++面试题:list和vector有什么区别?
原文:http://genwoxuevc.blog.51cto.com/1852984/503337 C++面试题:list和vector有什么区别?考点:理解list和vector的区别出现频率:★ ...
- 实例讲解Linux系统中硬链接与软链接的创建
导读 Linux链接分两种,一种被称为硬链接(Hard Link),另一种被称为符号链接(Symbolic Link).默认情况下,ln命令产生硬链接.硬链接与软链接的区别从根本上要从Inode节点说 ...
- 项目源码--Android迷幻岛屿综合游戏
下载源码 技术要点: 1.游戏开发综合技术 2.多线程机制实现游戏逻辑 3.自定义控件,系统控件等综合图层的使用 4.图层素材动画的综合技术 5.游戏算法的实现 6. OpenGL ES的综合使用 7 ...
- PHP|开发必知的良好实践
过滤.验证.转义 所有这些外部资源都不能完全相信 $_GET $_POST $_REQUEST $_COOKIE $argv php://stdin php://input file_get_cont ...
- Youth(青春)
Youth is not a time of life; it is a state of mind; it is not a matter of rosy cheeks, red lips and ...
- Java基础知识强化之IO流笔记83:NIO与IO
当学习了Java NIO和IO的API后,一个问题马上涌入脑海: 我应该何时使用IO,何时使用NIO呢?在本文中,我会尽量清晰地解析Java NIO和IO的差异.它们的使用场景,以及它们如何影响您的代 ...
- Android(java)学习笔记64:线程的控制
1. 线程休眠: Java中线程休眠指让正在运行的线程暂停执行一段时间,进入阻塞状态,通过调用Thread类的静态方法sleep得以实现. 当线程调用sleep进入阻塞状态后,在其休眠的时间内,该线程 ...
- 【Mood-18】github 使用指南
windows下使用教程: http://www.cnblogs.com/dongdong230/p/4211221.html repository not found error问题解决(需确定gi ...