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中使用monk访问mongodb
Jul 06 NodeJs
基于NodeJS的前后端分离的思考与实践(五)多终端适配
Sep 26 NodeJs
详解nodejs 文本操作模块-fs模块(三)
Dec 22 NodeJs
Ajax异步文件上传与NodeJS express服务端处理
Apr 01 NodeJs
详解nodejs爬虫程序解决gbk等中文编码问题
Apr 06 NodeJs
NodeJs使用Mysql模块实现事务处理实例
May 31 NodeJs
详解HTTPS 的原理和 NodeJS 的实现
Jul 04 NodeJs
Windows下快速搭建NodeJS本地服务器的步骤
Aug 09 NodeJs
Windows下使用Nodejs运行js的方法
Sep 02 NodeJs
nodejs连接mysql数据库及基本知识点详解
Mar 20 NodeJs
如何让Nodejs支持H5 History模式(connect-history-api-fallback源码分析)
May 30 NodeJs
详解NodeJS模块化
Jun 15 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加速 eAccelerator配置和使用指南
2009/06/05 PHP
jQuery向下滚动即时加载内容实现的瀑布流效果
2016/01/07 PHP
Yii2框架引用bootstrap中日期插件yii2-date-picker的方法
2016/01/09 PHP
thinkPHP+PHPExcel实现读取文件日期的方法(含时分秒)
2016/07/07 PHP
PHP实现的只保留字符串首尾字符功能示例【隐藏部分字符串】
2019/03/11 PHP
PHP示例演示发送邮件给某个邮箱
2019/04/03 PHP
iis6+javascript Add an Extension File
2007/06/13 Javascript
判断ie的两种简单方法
2013/08/12 Javascript
javascript:window.open弹出窗口的位置问题
2014/03/18 Javascript
IE浏览器不支持getElementsByClassName的解决方法
2014/08/27 Javascript
简介JavaScript中的setDate()方法的使用
2015/06/11 Javascript
微信小程序 Record API详解及实例代码
2016/09/30 Javascript
vue实现ajax滚动下拉加载,同时具有loading效果(推荐)
2017/01/11 Javascript
vue 设置路由的登录权限的方法
2018/07/03 Javascript
详解vue微信网页授权最终解决方案
2019/06/16 Javascript
使用axios请求时,发送formData请求的示例
2019/10/29 Javascript
vue 翻页组件vue-flip-page效果
2020/02/05 Javascript
[03:26]《DAC最前线》之EG经理自述DOTA2经历
2015/02/02 DOTA
python 图片验证码代码
2008/12/07 Python
Flask入门教程实例:搭建一个静态博客
2015/03/27 Python
Python爬虫爬取一个网页上的图片地址实例代码
2018/01/16 Python
Python selenium实现微博自动登录的示例代码
2018/05/16 Python
python实现多进程代码示例
2018/10/31 Python
使用python实现离散时间傅里叶变换的方法
2019/09/02 Python
Python中使用socks5设置全局代理的方法示例
2020/04/15 Python
新建文件时Pycharm中自动设置头部模板信息的方法
2020/04/17 Python
Python如何将函数值赋给变量
2020/04/28 Python
施华洛世奇天猫官方旗舰店:SWAROVSKI
2017/04/17 全球购物
体操比赛口号
2014/06/10 职场文书
公务员政审材料
2014/12/23 职场文书
廉洁自律个人总结
2015/02/14 职场文书
2015年政治教研组工作总结
2015/07/22 职场文书
中职班主任培训心得体会
2016/01/07 职场文书
高二英语教学反思
2016/03/03 职场文书
理解深度学习之深度学习简介
2021/04/14 Python
Java移除无效括号的方法实现
2021/08/07 Java/Android