初学Node(六)搭建一个简单的服务器
搭建一个简单的服务器
通过下面的代码可以搭建一个简单的服务器:
var http = require("http");
http.createServer(function(request,response){
response.writeHead(200,{"Content-Type":"text/plain"});
response.write("hello my first demo");
response.end();
}).listen("8080");
console.log("server start");
搭建一个简单的服务器需要依赖http模块,通过http.createServer()来生成一个服务器实例通过listen()来启动这个实例。
http.createServer()参数是一个函数,这个函数的两个参数分别为request和response,request记录着从前端到服务器的各种信息,response记录从服务器端到前端的各种信息。
request有三个重要的属性:request.url:表示请求的地址,request.method:表示请求的方式,request.headers:表示所有的请求头信息。
另外我们可以通过request.setEncoding()来设置请求的编码。
我们也可以通过on()来为request的事件来注册处理函数,request.on()有两个事件分别为data和end,data表示正在接收数据,end表示数据接收完成,我们从前台向服务器发送数据常用的方式就是get和post,对于get请求我们可以直接从url中提取出传输的数据,而post的数据一般是放在请求体中的此时我们就需要data这个事件来获取前台的发送数据,使用方式为:
var postData = "";
request.on("data",function(data){
postData +=data;
});
request.on("end",function(){
console.log(postData);
});
在开始的例子中response.writeHead用来设置http返回的头信息,write()的参数表示要写入的内容,end()用来将write()的内容写入到response对象中。
listen()函数表示启动当前的http实例,listen()函数可以接收两个参数,第一个参数表示要监听的端口,第二个参数表示要监听的地址,也就是只有请求地址符合listen()的设置,http.createServer()里面的函数才会执行,listen()的默认地址为localhost。
处理不同的请求
上面的例子对于所有的请求执行的操作都是一样的,在实际开发中这个情况是不存在,我们需要针对不同的URL来做不同的处理,此时我们就需要对request对象的url属性进行判断了:
var http = require("http");
var demo = http.createServer(function(request,response){
var path = request.url;
console.log(path);
switch(path){
case "/homepage":
response.writeHead(200,{"Content-Type":"text/plain"});
response.write("hello this is homepage");
response.end();
break;
case "/details":
response.writeHead(200,{"Content-Type":"text/plain"});
response.write("hello this is details");
response.end();
break;
default:
response.writeHead(404,{"Content-Type":"text/plain"});
response.write("sorry");
response.end();
break;
}
}).listen("8080");
console.log("server start");
返回一个html页面
上面的这些我们只是返回几个字而已,正常情况下我们返回的通常是一个完整的页面,如果我们在response.write()中拼一个html页面出来,就会很麻烦而且很容易出错,此时我们就可以利用fs模块来简化这个操作:
var http = require("http");
var fs = require("fs");
var demo = http.createServer(function(request,response){
var path = request.url;
if(path=="/register"){
fs.readFile("register.html",function(err,data){
response.writeHead(200,{"Content-Type":"text/html; charset=utf-8"});
response.write(data);
response.end();
});
}else{
response.writeHead(200,{"Content-Type":"text/plain"});
response.write("hello node");
response.end();
}
}).listen("8080");
console.log("server start");
初学Node(六)搭建一个简单的服务器的更多相关文章
- 用nodejs搭建一个简单的服务器
使用nodejs搭建一个简单的服务器 nodejs优点:性能高(读写文件) 数据操作能力强 官网:www.nodejs.org 验证是否安装成功:cmd命令行中输入node -v 如果显示版本号表示安 ...
- 【netty】(2)---搭建一个简单服务器
netty(2)---搭建一个简单服务器 说明:本篇博客是基于学习慕课网有关视频教学.效果:当用户访问:localhost:8088 后 服务器返回 "hello netty"; ...
- 利用 nodeJS 搭建一个简单的Web服务器(转)
下面的代码演示如何利用 nodeJS 搭建一个简单的Web服务器: 1. 文件 WebServer.js: //-------------------------------------------- ...
- 使用gitblit搭建一个简单的局域网服务器
使用gitblit搭建一个简单的局域网服务器 1.使用背景 现在很多使用github管理代码,但是github需要互联网的支持,而且私有的git库需要收费.有一些项目的代码不能外泄,所以,搭建一个局域 ...
- Golang学习-第二篇 搭建一个简单的Go Web服务器
序言 由于本人一直从事Web服务器端的程序开发,所以在学习Golang也想从Web这里开始学起,如果对Golang还不太清楚怎么搭建环境的朋友们可以参考我的上一篇文章 Golang的简单介绍及Wind ...
- Prism for WPF 搭建一个简单的模块化开发框架(六)隐藏菜单、导航
原文:Prism for WPF 搭建一个简单的模块化开发框架(六)隐藏菜单.导航 这个实际上是在聊天之前做的,一起写了,也不分先后了 看一下效果图,上面是模块主导航,左侧是模块内菜单,现在加一下隐藏 ...
- 学习用node.js建立一个简单的web服务器
一.建立简单的Web服务器涉及到Node.js的一些基本知识点: 1.请求模块 在Node.js中,系统提供了许多有用的模块(当然你也可以用JavaScript编写自己的模块,以后的章节我们将详细讲解 ...
- Node学习(二) --使用http和fs模块实现一个简单的服务器
1.创建一个www目录,存储静态文件1.html.1.jpg. * html文件内容如下: 12345678910111213 <html lang="en">< ...
- 轻松创建nodejs服务器(1):一个简单nodejs服务器例子
这篇文章主要介绍了一个简单nodejs服务器例子,本文实现了一个简单的hello world例子,并展示如何运行这个服务器,需要的朋友可以参考下 我们先来实现一个简单的例子,hello world ...
随机推荐
- 【原】SQL ROW_NUMBER() OVER
语法:ROW_NUMBER() OVER(PARTITION BY COLUMN ORDER BY COLUMN) SELECT ROW_NUMBER() OVER(ORDER BY CASE Col ...
- Query Object--查询对象模式(上)
回顾 上两篇文章主要讲解了我对于数据层的Unit Of Work(工作单元模式)的理解,其中包括了CUD的操作,那么今天就来谈谈R吧,文章包括以下几点: 什么是Query Object 基于SQL的实 ...
- win7左ctrl和左alt键互换
主要参考这篇文章: http://xyztony1985.blog.163.com/blog/static/3611782011752420104/ 感谢原博主 Windows Registry Ed ...
- JS移动端滑屏事件
来看看在pc上面的几个事件:onmousedown,onmousemove,onmouseup 我相信大家对这几个事件一定不陌生,第一个onmousedown表示鼠标按下,第二个onmousemove ...
- http--响应请求状态码
针对客户端向Web服务器发送的任意一个HTTP请求,不论在何种情况下得到一个响应,每个响应均具有一个由3位数字表示的状态码和相应的描述文字.不同数值的状态码体现了不同类型的响应状态,W3C对响应状态码 ...
- 使用Html5+C#+微信 开发移动端游戏详细教程 总目录
(一).序(关于作者创业失败的感想) (二).准备工作&开发环境 (三).使用html5引擎搭建游戏框架 (四).游戏中层的概念与设计 (五).游戏图像的加载与操作 (六).游戏界面布局与性能 ...
- 基于 Markdown 的开源的 Node.js 知识库平台
Raneto 是一个免费,开源的 Node.js 知识库平台,基于静态 Markdown 文件实现. Raneto 可以被称为静态网站生成器,因为它并不需要数据库支持.所有的内容都存储在 Markdo ...
- Microsoft OneScript 团队发布的最新一版在 SQL Server Management Studio 中运行的脚本,可以帮助我们获取更详细的版本信息。
该脚本有以下几点: 1. SQL Server 的主要版本.服务级别和版本类别 2. 已安装SP包.累计更新CU,历史更新的QFE\ GDR 3. 推荐当前SP包可以安装最新的CU,并给到相关资源地地 ...
- 3D拓扑自动布局之Node.js篇
上篇将3D弹力布局的算法运行在Web Workers后台,这篇我们将进一步折腾,将算法运行到真正的后台:Node.js,事先申明Node.js篇和Web Workers篇一样,在这个应用场景下并不能提 ...
- [Architect] Abp 框架原理解析(2) EventBus
本节目录 原理介绍 Abp源码分析 代码实现 原理介绍 事件总线大致原理: (1) 在事件总线内部维护着一个事件与事件处理程序相映射的字典. (2) 利用反射,事件总线会将实现 ...