node 笔记

node 服务器特点:

  • 不依赖其它特定的Web服务器软件(如Tomcat、Apache、Nginx、IIS……)
  • Node.js代码处理请求的逻辑
  • Node.js代码负责Web服务器的各种“配置”

1、使用 http 模块创建 web 服务器

var http = require('http');//引用node的核心模块 http ,核心模块也需引用

/**
 *此方法需要定义在 创建服务器之前
 */
var requestHandler = function (req,res){
	res.end('hello');//response.end方法表明响应内容已完结,response有很多方法
}

var myServer = http.createServer(requestHandler);//参数为一个request方法,当请求发生时,将传递给requestHandler方法2个参数request和response

myServer.listen(12345);
console.log('web server startup on port 12345');
#startup
node createHttpServer.js
[root@VM_18_255_centos server]# node createHttpServer.js 
web server startup on port 12345
[root@VM_18_255_centos /]# curl 127.0.0.1:12345
hello

2、使用 Express 创建 web 服务器

首先加载安装 express 模块,参照 我的博客 

var express = require('express');

var app = express();//创建一个express实例

//在express中使用路由来实现对相迎进行控制
app.get('/',function(req,res){
	res.end('hello\n');
});

app.listen(12346,function afterListen(){
	console.log('listen on 12346');
});

[root@VM_18_255_centos express]# node expressServer.js 
listen on 12346
[root@VM_18_255_centos /]# curl 127.0.0.1:12346       
hello

使用express generator生成应用模板

npm install -g express-generator
express expressHello
cd expressHello
npm install

默认执行脚本是 bin/www 文件,默认端口号是3000

node bin/www
[root@VM_18_255_centos ~]# curl 127.0.0.1:3000
<!DOCTYPE html><html><head><title>Express</title><link rel="stylesheet" href="/stylesheets/style.css"></head><body><h1>Express</h1><p>Welcome to Express</p></body></html>

 

 

express 静态文件服务

使用 express 静态服务的中间件

var express = require('express');

var app = express();//创建一个express实例

app.use(express.static('./public'));//使用express静态服务中间件,指定目录为 public

//在express中使用路由来实现对相迎进行控制
app.get('/',function(req,res){
	res.end('hello\n');
});

app.listen(12346,function afterListen(){
	console.log('listen on 12346');
});
#test在public目录下,路径直接填写public下的相对路径
curl 127.0.0.1:12347/test.txt
[root@VM_18_255_centos /]# curl 127.0.0.1:12347/test.txt
this is a file for test express static server!

路由:

•将不同的请求,分配给相应的处理函数

•区分:路径、请求方法

三种路由方法:

•path

app.get('/',function(req,res){
    res.end('hello\n');
});

•Router

var Router = express.Router();
/**
 *http://mydomain.com/post/add
 *http://mydomain.com/post/list
 */
Router.get('/add',function(req,res){
	res.end('add\n');
});
Router.get('/list',function(req,res){
	res.end('list\n');
});

app.use('/post',Router);//加到路由上
var express = require('express');

var app = express();//创建一个express实例

app.use(express.static('./public'));

//在express中使用路由来实现对相迎进行控制
app.get('/',function(req,res){
	res.end('hello\n');
});

var Router = express.Router();
/**
 *http://mydomain.com/post/add
 *http://mydomain.com/post/list
 */
Router.get('/add',function(req,res){
	res.end('add\n');
});
Router.get('/list',function(req,res){
	res.end('list\n');
});

app.use('/post',Router);//加到路由上


app.listen(12348,function afterListen(){
	console.log('listen on 12346');
});

[root@VM_18_255_centos /]# curl -X POST 127.0.0.1:12348/article    
post
[root@VM_18_255_centos /]# curl -X GET 127.0.0.1:12348/article
get

•route

/*route*/
app.route('/article')
	.get(function(req,res){
		res.end('get\n');
	})
	.post(function(req,res){
		res.end('post\n');
	});
var express = require('express');

var app = express();//创建一个express实例

app.use(express.static('./public'));

//在express中使用路由来实现对相迎进行控制
app.get('/',function(req,res){
	res.end('hello\n');
});

var Router = express.Router();
/**
 *http://mydomain.com/post/add
 *http://mydomain.com/post/list
 */
Router.get('/add',function(req,res){
	res.end('add\n');
});
Router.get('/list',function(req,res){
	res.end('list\n');
});

app.use('/post',Router);//加到路由上

/*route*/
app.route('/article')
	.get(function(req,res){
		res.end('get\n');
	})
	.post(function(req,res){
		res.end('post\n');
	});

app.listen(12348,function afterListen(){
	console.log('listen on 12349');
});

[root@VM_18_255_centos /]# curl -X POST 127.0.0.1:12348/article    
post
[root@VM_18_255_centos /]# curl -X GET 127.0.0.1:12348/article
get

路由参数

//路由参数
app.param('newsId',function(req, res, next, newsId){
	req.newsId = newsId;//执行读取news操作
	next();
});

app.get('/news/:newsId',function(req,res){
	res.end('newsId: '+req.newsId+'\n');
});
var express = require('express');

var app = express();//创建一个express实例

app.use(express.static('./public'));

//在express中使用路由来实现对相迎进行控制
app.get('/',function(req,res){
	res.end('hello\n');
});

var Router = express.Router();
/**
 *http://mydomain.com/post/add
 *http://mydomain.com/post/list
 */
Router.get('/add',function(req,res){
	res.end('add\n');
});
Router.get('/list',function(req,res){
	res.end('list\n');
});

app.use('/post',Router);//加到路由上

/*route*/
app.route('/article')
	.get(function(req,res){
		res.end('get\n');
	})
	.post(function(req,res){
		res.end('post\n');
	});

//路由参数
app.param('newsId',function(req, res, next, newsId){
	req.newsId = newsId;//执行读取news操作
	next();
});

app.get('/news/:newsId',function(req,res){
	res.end('newsId: '+req.newsId+'\n');
});

app.listen(12349,function afterListen(){
	console.log('listen on 12349');
});

[root@VM_18_255_centos /]# curl 127.0.0.1:12349/news/123
newsId: 123

3、创建 TCP 服务器

    创建服务端

var net = require('net');
const HOST = '127.0.0.1';
const PORT = 12315;

var clientHandler = function(socket){
	console.log('one client is connected!');
	socket.on('data',function(data){
		console.log(socket.remoteAddress,socket.remotePort,'send',data.toString());//buffer,使用toString转换

		socket.write('server send to client\n');
	});

	socket.on('close',function(){//当连接断开出发,此时socket已经销毁,所以socket.remoteAddress,socket.remotePort为空
		console.log(socket.remoteAddress,socket.remotePort,'disconnected');
	});
};

var app = net.createServer(clientHandler);
app.listen(PORT,HOST);//注意顺序
console.log('server listen on ',PORT);
[root@VM_18_255_centos tcpServer]# node tcpServer.js 
server listen on  12315
one client is connected!
127.0.0.1 52274 send hello server
[root@VM_18_255_centos ~]# telnet 127.0.0.1 12315
Trying 127.0.0.1...
Connected to 127.0.0.1.
Escape character is '^]'.
hello server
server send to client
[root@VM_18_255_centos ~]# netstat -antp | grep 12315
tcp        0      0 127.0.0.1:12315         0.0.0.0:*               LISTEN      9599/node           
tcp        0      0 127.0.0.1:12315         127.0.0.1:52274         ESTABLISHED 9599/node           
tcp        0      0 127.0.0.1:52274         127.0.0.1:12315         ESTABLISHED 9696/telnet 

    创建客服端

var net = require('net');
const HOST = '127.0.0.1';
const PORT = 12315;

var tcpClient = net.Socket();

tcpClient.connect(PORT, HOST, function(){
	console.log('connect success');
});

tcpClient.on('data',function(data){
	console.log(data.toString());
});

-------------------------------------------------未完  续?

转载于:https://my.oschina.net/forwy/blog/870245

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值