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的子进程(child_process)调用系统命令的方法分享
Jun 05 NodeJs
在NodeJS中启用ECMAScript 6小结(windos以及Linux)
Jul 15 NodeJs
Nodejs异步回调的优雅处理方法
Sep 25 NodeJs
轻松创建nodejs服务器(10):处理POST请求
Dec 18 NodeJs
nodeJS代码实现计算交社保是否合适
Mar 09 NodeJs
用nodeJS搭建本地文件服务器的几种方法小结
Mar 16 NodeJs
详解NodeJS框架express的路径映射(路由)功能及控制
Mar 24 NodeJs
配置nodejs环境的方法
May 13 NodeJs
原生nodejs使用websocket代码分享
Apr 07 NodeJs
nodejs前端模板引擎swig入门详解
May 15 NodeJs
Mac下通过brew安装指定版本的nodejs教程
May 17 NodeJs
NodeJS读取分析Nginx错误日志的方法
May 14 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 header Content-Type类型小结
2011/07/03 PHP
thinkphp jquery实现图片上传和预览效果
2020/07/22 PHP
PHP获取redis里不存在的6位随机数应用示例【设置24小时过时】
2017/06/07 PHP
php实现mysql连接池效果实现代码
2018/01/25 PHP
JavaScript使用HTML5的window.postMessage实现跨域通信例子
2014/04/11 Javascript
Firefox中使用outerHTML的2种解决方法
2014/06/07 Javascript
jQuery中even选择器的定义和用法
2014/12/23 Javascript
javascript检查浏览器是否已经启用XX功能
2015/07/10 Javascript
jQuery+PHP星级评分实现方法
2015/10/02 Javascript
JavaScript如何实现在文本框(密码框)输入提示语
2015/12/25 Javascript
jQuery实现边框动态效果的实例代码
2016/09/23 Javascript
移动端滑动插件Swipe教程
2016/10/16 Javascript
纯JS代码实现隔行变色鼠标移入高亮
2016/11/23 Javascript
jQuery实现鼠标经过显示动画边框特效
2017/03/24 jQuery
VUE axios上传图片到七牛的实例代码
2017/07/28 Javascript
Egg.js 中 AJax 上传文件获取参数的方法
2018/10/10 Javascript
[02:09]2018DOTA2亚洲邀请赛TNC赛前采访
2018/04/04 DOTA
[01:01:22]VGJ.S vs OG 2018国际邀请赛淘汰赛BO3 第一场 8.22
2018/08/23 DOTA
不可错过的十本Python好书
2017/07/06 Python
Python使用Turtle模块绘制五星红旗代码示例
2017/12/11 Python
使用Python实现在Windows下安装Django
2018/10/17 Python
Python版名片管理系统
2018/11/30 Python
详解Python odoo中嵌入html简单的分页功能
2019/05/29 Python
python实现日志按天分割
2019/07/22 Python
python批量处理多DNS多域名的nslookup解析实现
2020/06/28 Python
Python如何使用27行代码绘制星星图
2020/07/20 Python
python装饰器代码深入讲解
2021/03/01 Python
HTML5 Canvas玩转酷炫大波浪进度图效果实例(附demo)
2016/12/14 HTML / CSS
材料物理专业大学毕业生求职信
2013/10/15 职场文书
《母亲的恩情》教学反思
2014/02/13 职场文书
班级寄语大全
2014/04/10 职场文书
星级党支部申报材料
2014/05/31 职场文书
教师考察材料范文
2014/06/03 职场文书
学生党员一帮一活动总结
2014/07/08 职场文书
小学班主任事迹材料
2014/12/17 职场文书
大型强子对撞机再次重启探索“第五种自然力”
2022/04/29 数码科技