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中简单实现Javascript Promise机制的实例
Dec 06 NodeJs
NodeJS学习笔记之(Url,QueryString,Path)模块
Jan 13 NodeJs
nodejs加密Crypto的实例代码
Jul 07 NodeJs
NodeJS与HTML5相结合实现拖拽多个文件上传到服务器的实现方法
Jul 26 NodeJs
解析NodeJS异步I/O的实现
Apr 13 NodeJs
nodejs Assert中equal(),strictEqual(),deepEqual(),strictDeepEqual()比较
Sep 18 NodeJs
Nodejs中使用phantom将html转为pdf或图片格式的方法
Sep 18 NodeJs
nodejs操作mongodb的填删改查模块的制作及引入实例
Jan 02 NodeJs
nodejs+mongodb+vue前后台配置ueditor的示例代码
Jan 02 NodeJs
webstorm中配置nodejs环境及npm的实例
May 15 NodeJs
NodeJS实现自定义流的方法
Aug 01 NodeJs
Nodejs文件上传、监听上传进度的代码
Mar 27 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
如何选购合适的收音机
2021/03/01 无线电
php里array_work用法实例分析
2015/07/13 PHP
浅析PHP反序列化中过滤函数使用不当导致的对象注入问题
2020/02/15 PHP
JCalendar 日历控件 v1.0 beta[兼容IE&Firefox] 有文档和例子
2007/05/30 Javascript
jQuery each()小议
2010/03/18 Javascript
用jquery写的菜单从左往右滑动出现
2014/04/11 Javascript
JavaScript DOM元素尺寸和位置
2015/04/13 Javascript
JavaScript函数节流和函数防抖之间的区别
2017/02/15 Javascript
React-router 4 按需加载的实现方式及原理详解
2017/05/25 Javascript
javascript实现Java中的Map对象功能的实例详解
2017/08/21 Javascript
微信小程序webview与h5通过postMessage实现实时通讯的实现
2019/08/20 Javascript
vue瀑布流组件实现上拉加载更多
2020/03/10 Javascript
基于原生js实现九宫格算法代码实例
2020/07/03 Javascript
[01:18]PWL开团时刻DAY10——一拳超人
2020/11/11 DOTA
python3.0 模拟用户登录,三次错误锁定的实例
2017/11/02 Python
在python 中实现运行多条shell命令
2019/01/07 Python
Python实现监控Nginx配置文件的不同并发送邮件报警功能示例
2019/02/26 Python
Python实现随机取一个矩阵数组的某几行
2019/11/26 Python
python-视频分帧&多帧合成视频实例
2019/12/10 Python
python模拟实现斗地主发牌
2020/01/07 Python
Django 项目布局方法(值得推荐)
2020/03/22 Python
利用css3制作3D样式按钮实现代码
2013/03/18 HTML / CSS
详解HTML5通讯录获取指定多个人的信息
2016/12/20 HTML / CSS
英国最大的独立家具零售商:Furniture Village
2016/09/06 全球购物
英国最大的美妆产品在线零售商之一:Beauty Bay
2017/09/29 全球购物
毕业生自荐信的主要内容
2013/10/29 职场文书
后勤部长岗位职责
2013/12/14 职场文书
自动化职业生涯规划书范文
2014/01/03 职场文书
中专生毕业个人鉴定
2014/02/26 职场文书
老公爱的承诺书
2014/03/31 职场文书
咖啡店创业计划书范文
2014/09/15 职场文书
先进班集体申报材料
2014/12/26 职场文书
2015年行政工作总结范文
2015/04/09 职场文书
幼儿园托班开学寄语(2015秋季)
2015/05/27 职场文书
2016高考寄语集锦
2015/12/04 职场文书
初中班主任心得体会
2016/01/07 职场文书