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 相关文章推荐
使用forever管理nodejs应用教程
Jun 03 NodeJs
Google官方支持的NodeJS访问API,提供后台登录授权
Jul 29 NodeJs
Nodejs实现的一个静态服务器实例
Dec 06 NodeJs
Nodejs学习笔记之Global Objects全局对象
Jan 13 NodeJs
深入浅析NodeJs并发异步的回调处理
Dec 21 NodeJs
Express与NodeJs创建服务器的两种方法
Feb 06 NodeJs
nodejs操作mongodb的填删改查模块的制作及引入实例
Jan 02 NodeJs
nodejs中各种加密算法的实现详解
Jul 11 NodeJs
nodejs读取图片返回给浏览器显示
Jul 25 NodeJs
NodeJS有难度的面试题(能答对几个)
Oct 09 NodeJs
nodejs实现UDP组播示例方法
Nov 04 NodeJs
Nodejs实现WebSocket代码实例
May 19 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
PHP5 面向对象程序设计
2008/02/13 PHP
PHP查询网站的PR值
2013/10/30 PHP
PHP各种异常和错误的拦截方法及发生致命错误时进行报警
2016/01/19 PHP
javascript 嵌套的函数(作用域链)
2010/03/15 Javascript
使用jQuery插件创建常规模态窗口登陆效果
2013/08/23 Javascript
JavaScript中的关联数组问题
2015/03/04 Javascript
浅析Javascript中bind()方法的使用与实现
2016/05/30 Javascript
js中window.open的参数及注意注意事项
2016/07/06 Javascript
Vue.js实现拖放效果的实例
2016/09/30 Javascript
Vue.js基础知识小结
2017/01/13 Javascript
Javascript中引用类型传递的知识点小结
2017/03/06 Javascript
利用JS hash制作单页Web应用的方法详解
2017/10/10 Javascript
Js判断H5上下滑动方向及滑动到顶部和底部判断的示例代码
2017/11/15 Javascript
axios中cookie跨域及相关配置示例详解
2017/12/20 Javascript
Vue中的slot使用插槽分发内容的方法
2018/03/01 Javascript
Vue源码解读之Component组件注册的实现
2018/08/24 Javascript
webuploader分片上传的实现代码(前后端分离)
2018/09/10 Javascript
python处理圆角图片、圆形图片的例子
2014/04/25 Python
Python编写Windows Service服务程序
2018/01/04 Python
Python进度条实时显示处理进度的示例代码
2018/01/30 Python
python实现字符串加密成纯数字
2019/03/19 Python
Pytorch使用MNIST数据集实现CGAN和生成指定的数字方式
2020/01/10 Python
python实现批量修改文件名
2020/03/23 Python
详解CSS中iconfont的使用
2015/08/04 HTML / CSS
canvas学习和滤镜实现代码
2018/08/22 HTML / CSS
mysql_pconnect()和mysql_connect()有什么区别
2012/05/25 面试题
党的群众路线批评与自我批评发言稿
2014/10/16 职场文书
群众路线教育实践活动方案
2014/10/31 职场文书
2014年教师教学工作总结
2014/11/08 职场文书
2014个人年度工作总结
2014/12/15 职场文书
黄山导游词
2015/01/31 职场文书
幼儿园教师个人总结
2015/02/05 职场文书
2015年高校辅导员工作总结
2015/04/20 职场文书
商务信函英语问候语
2015/11/10 职场文书
浅谈@Value和@Bean的执行顺序问题
2021/06/16 Java/Android
vue生命周期钩子函数以及触发时机
2022/04/26 Vue.js