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实用示例 缩址还原
Dec 28 NodeJs
Google官方支持的NodeJS访问API,提供后台登录授权
Jul 29 NodeJs
Jquery通过ajax请求NodeJS返回json数据实例
Nov 08 NodeJs
详解NodeJs支付宝移动支付签名及验签
Jan 06 NodeJs
NodeJS收发GET和POST请求的示例代码
Aug 25 NodeJs
windows系统下更新nodejs版本的方案
Nov 24 NodeJs
nodejs搭建本地服务器轻松解决跨域问题
Mar 21 NodeJs
利用nodeJs anywhere搭建本地服务器环境的方法
May 12 NodeJs
nodejs require js文件入口,在package.json中指定默认入口main方法
Oct 10 NodeJs
详解nodejs 开发企业微信第三方应用入门教程
Mar 12 NodeJs
详解微信小程序-获取用户session_key,openid,unionid - 后端为nodejs
Apr 29 NodeJs
如何让Nodejs支持H5 History模式(connect-history-api-fallback源码分析)
May 30 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
jQuery 源码分析笔记
2011/05/25 PHP
php设计模式 Composite (组合模式)
2011/06/26 PHP
PHP使用flock实现文件加锁的方法
2015/07/01 PHP
Html中JS脚本执行顺序简单举例说明
2010/06/19 Javascript
js控制的回到页面顶端goTop的代码实现
2013/03/20 Javascript
浅析JS刷新框架中的其他页面 && JS刷新窗口方法汇总
2013/07/08 Javascript
javascript控制在光标位置插入文字适合表情的插入
2014/06/09 Javascript
textarea不能通过maxlength属性来限制字数的解决方法
2014/09/01 Javascript
js实现固定显示区域内自动缩放图片的方法
2015/07/18 Javascript
jQuery实现Tab菜单滚动切换的方法
2015/09/21 Javascript
jQuery实现的导航下拉菜单效果
2016/07/04 Javascript
js轮播图透明度切换(带上下页和底部圆点切换)
2017/04/27 Javascript
详解webpack 多入口配置
2017/06/16 Javascript
js实现前端图片上传即时预览功能
2017/08/02 Javascript
DVA框架统一处理所有页面的loading状态
2017/08/25 Javascript
基于wordpress的ajax写法详解
2018/01/02 Javascript
在vue中使用v-bind:class的选项卡方法
2018/09/27 Javascript
JS前端知识点总结之内置对象,日期对象和定时器相关操作
2019/07/05 Javascript
[56:00]2018DOTA2亚洲邀请赛 4.6 淘汰赛 VP vs TNC 第二场
2018/04/10 DOTA
Python3实现生成随机密码的方法
2014/08/23 Python
Python实现根据指定端口探测服务器/模块部署的方法
2014/08/25 Python
python写xml文件的操作实例
2014/10/05 Python
详解PyTorch手写数字识别(MNIST数据集)
2019/08/16 Python
Python实现随机取一个矩阵数组的某几行
2019/11/26 Python
PyCharm中关于安装第三方包的三个建议
2020/09/17 Python
SOA的常见陷阱或者误解是什么
2014/10/05 面试题
最新的互联网创业计划书
2014/01/10 职场文书
给实习单位的感谢信
2014/02/01 职场文书
素食餐饮项目创业计划书
2014/02/02 职场文书
《小白兔和小灰兔》教学反思
2014/02/18 职场文书
2014小学植树节活动总结
2014/03/10 职场文书
关于诚信的活动方案
2014/08/18 职场文书
党员违纪检讨书怎么写
2014/11/01 职场文书
医院见习总结
2015/06/24 职场文书
市场营销计划书
2019/04/24 职场文书
Js类的构建与继承案例详解
2021/09/15 Javascript