nodejs创建web服务器之hello world程序


Posted in NodeJs onAugust 20, 2015

Node.js 最主要的应用是服务器序。

设计Node.js 的一个主要目的是提供高度可扩展的服务器环境。这是我们在本章开篇介绍过的Node 和V8 引擎有所区别的地方。Node 除了用V8 引擎来解析JavaScript 外,还提供了高度优化的应用库,用来提高服务器效率。比如说,HTTP模块是专为快速非阻塞式HTTP 服务器而用C 重新编写的。让我们看一下Node 采用HTTP 服务器的“Hello World”经典例子

var http=require('http');//引入核心HTTP模块

/*创建服务器*/

var server=http.createServer(function(req,res){
  res.writeHead(200,{"Content-type":'text/html'});
  res.end('hello world');
});

/*监听IP以及端口*/

server.listen(8124,'127.0.0.1',function(){
  console.log('服务器创建成成功:127.0.0.1:8124');
});

运行代码如下所示

ZXD@ZXD-PC /K/work/learn/nodejs/cvs01
$ node app

服务器创建成成功:127.0.0.1:8124

nodejs创建web服务器之hello world程序

这个示例代码首先通过require 方法把HTTP 库包含到程序中来。有许多语言都有包含其他库这一方法,Node 用的是CommonJS 模块风格。

当前需要了解的是,HTTP 库所具有的功能已经赋给了http 对象。

下一步,我们需要一个HTTP 服务器。PHP 等其他语言需要在类似Apache 这样的服务器中运行,而Node 和它们不同,因为Node 本身就是Web 服务器。

但这同样意味着我们需要先创建该服务器。下一行代码调用HTTP 模块的一个工厂模式方法
(createServer)来创建新的HTTP 服务器。新创建的HTTP 服务器并没有赋值给任何变量,它只会成为存活在全局范围内的匿名对象。

我们可以通过链式调用来初始化服务器,并告诉它监听在8124 端口。当调用createServer 的时候,我们传了一个匿名函数作为参数。此函数绑定在新创建服务器的事件监听器上进行request 事件处理。消息事件是JavaScript 和Node 的核心。在这个例子中,每当一个新的访问请求到达Web 服务器,它都将调用我们指定的函数方法来处理。我们称这类方法为回调(callback)。因为每当一个事件发生时,我们将回调监听此事件的所有函数。

示例二:

由于跑到另一个城市,手头没电脑,dom framework不能如期发布,趁此学习一些新东西。这时期最迫切的需要是寻求一个超轻量的后端来架起我的框架,于是触爪伸向传说中的Server-Side Javascrpt。后端JS最出名无疑是Ryan Dahl的node.js,另一个是aptana IDE提供商搞出的jaxer。

首先下载node.js,然后解压到E盘,改名为node,然后开始菜单输入cmd,用cd命令切换到nodejs的解压目录:

nodejs创建web服务器之hello world程序

第一个例子:hello world。

在node目录下建立hello.js文件,然后在里面输入:

var sys = require("sys"); 
sys.puts("Hello world");

然后我们在命名台中输入命令node hello.js,就能看到命名台输出结果Hello world。

第二个例子:hello world2。

好了,这次我们试从游览器中输出hello world。在node目录下建立http.js,然后输入:

var sys = require("sys"), 
  http = require("http"); 
http.createServer(function(request, response) { 
  response.sendHeader(200, {"Content-Type": "text/html"}); 
  response.write("Hello World!"); 
  response.close(); 
}).listen(8080); 
sys.puts("Server running at http://localhost:8080/");

然后我们在命名台中输入命令node http.js,在浏览器输入http://localhost:8080/

nodejs创建web服务器之hello world程序

nodejs创建web服务器之hello world程序

第三个例子:hello world2。

node.js提供一个Buffer类用于转换不同编码的字符串。

目前支持三种类型:'ascii','utf8'与'binary'。详见这里

var Buffer = require('buffer').Buffer, 
buf = new Buffer(256), 
len = buf.write('\u00bd + \u00bc = \u00be', 0); 
console.log(len + " bytes: " + buf.toString('utf8', 0, len));

第四个例子:hello world3

//synopsis.js 
//synopsis 摘要, 梗概,大纲 
var http = require('http'); 
  
http.createServer(function (request, response) { 
 response.writeHead(200, {'Content-Type': 'text/plain'}); 
 response.end('Hello World\n'); 
}).listen(8124); 
  
console.log('Server running at http://127.0.0.1:8124/');
NodeJs 相关文章推荐
NodeJs中的非阻塞方法介绍
Jun 05 NodeJs
nodejs通过phantomjs实现下载网页
May 04 NodeJs
基于Nodejs利用socket.io实现多人聊天室
Feb 22 NodeJs
NodeJs下的测试框架Mocha的简单介绍
Feb 22 NodeJs
nodejs中全局变量的实例解析
Mar 07 NodeJs
NodeJS学习笔记之Module的简介
Mar 24 NodeJs
用Nodejs搭建服务器访问html、css、JS等静态资源文件
Apr 28 NodeJs
nodejs后台集成ueditor富文本编辑器的实例
Jul 11 NodeJs
在Debian(Raspberry Pi)树莓派上安装NodeJS的教程详解
Sep 19 NodeJs
Nodejs监控事件循环异常示例详解
Sep 22 NodeJs
Nodejs实现WebSocket代码实例
May 19 NodeJs
nodejs各种姿势断点调试的方法
Jun 18 NodeJs
windows下安装nodejs及框架express
Aug 07 #NodeJs
使用DNode实现php和nodejs之间通信的简单实例
Jul 06 #NodeJs
iPhone手机上搭建nodejs服务器步骤方法
Jul 06 #NodeJs
nodejs爬虫抓取数据之编码问题
Jul 03 #NodeJs
nodejs爬虫抓取数据乱码问题总结
Jul 03 #NodeJs
nodejs导出excel的方法
Jun 30 #NodeJs
nodejs实现获取当前url地址及url各种参数值
Jun 25 #NodeJs
You might like
PHP实现简单的新闻发布系统实例
2015/07/28 PHP
php封装的page分页类完整实例
2016/10/18 PHP
php DES加密算法实例分析
2019/09/18 PHP
JS去除字符串的空格增强版(可以去除中间的空格)
2009/08/26 Javascript
Knockoutjs的环境搭建教程
2012/11/26 Javascript
javascript模拟php函数in_array
2015/04/27 Javascript
js实现下拉菜单效果
2017/03/01 Javascript
d3.js入门教程之数据绑定详解
2017/04/28 Javascript
微信小程序--组件(swiper)详细介绍
2017/06/13 Javascript
简述vue中的config配置
2018/01/23 Javascript
Angular4学习笔记router的简单使用
2018/03/30 Javascript
了解ESlint和其相关操作小结
2018/05/21 Javascript
vue项目首屏打开速度慢的解决方法
2019/03/31 Javascript
javascript之分片上传,断点续传的实际项目实现详解
2019/09/05 Javascript
微信小程序页面渲染实现方法
2019/11/06 Javascript
python使用点操作符访问字典(dict)数据的方法
2015/03/16 Python
举例讲解Python设计模式编程的代理模式与抽象工厂模式
2016/01/16 Python
如何安装多版本python python2和python3共存以及pip共存
2018/09/18 Python
利用ctypes获取numpy数组的指针方法
2019/02/12 Python
python查找重复图片并删除(图片去重)
2019/07/16 Python
CSS3中:nth-child和:nth-of-type的区别深入理解
2014/03/10 HTML / CSS
RentCars.com巴西:汽车租赁网站
2016/08/22 全球购物
印度尼西亚电子产品购物网站:Kliknklik
2018/06/05 全球购物
初中女生自我鉴定
2013/12/19 职场文书
元宵节晚会主持人串词
2014/03/25 职场文书
房产代理公证处委托书
2014/04/04 职场文书
2014年六一儿童节演讲稿
2014/05/23 职场文书
党的群众路线对照检查材料思想汇报
2014/09/25 职场文书
学习三严三实心得体会
2014/10/13 职场文书
社区党员群众路线教育实践活动心得体会
2014/11/03 职场文书
学生保证书
2015/01/16 职场文书
道歉的话语大全
2015/05/12 职场文书
《落花生》教学反思
2016/02/16 职场文书
Python爬虫中urllib3与urllib的区别是什么
2021/07/21 Python
详解Mysql事务并发(脏读、不可重复读、幻读)
2022/04/29 MySQL
Python中的协程(Coroutine)操作模块(greenlet、gevent)
2022/05/30 Python