Node.js中的基本操作

1、创建第一个http服务

var http = require('http');
//console.log(http)
http.createServer(function(request,response){
	/*http头部信息 状态码:200 */
	/*内容的类型:text/plain text/html text/xml(用得少)*/
	response.writeHead(200,{'Content-Type':'text/plain;charset=UTF-8'});
	/*向客户端发送数据*/
	response.end('我的第一个http服务');
}).listen(2048);
console.log('2048端口http服务已启动!')

2、读取文件(同步操作)

/*同步读取文件的例子*/
var fs = require('fs');
var data = fs.readFileSync('text.txt');
console.log(data.toString())
console.log('-------------')
console.log('JS执行结束')
/*
此操作形成阻塞。在读取文件过程中无法执行其他操作!
*/

3、读取文件(异步操作)

/*这是一个基于回调的非阻塞的文件读取例子*/
var fs = require('fs');
fs.readFile('text.txt',function(err,data){
	if(err) return err;
	console.log(data.toString());
})
console.log('-------------')
console.log('JS执行结束')
/*
不需要等待文件读取完成
可以在读取文件的同时执行接下来的代码
提高了js的性能
*/

4、绑定、触发一个事件

var events = require('events');
//EventsEmitter的一个实例
var EventEmitter = new events.EventEmitter();
/*
这里的事件名不同于浏览器上的各种事件
这里的事件名是一个标识
绑定了一个回调函数
*/ 
EventEmitter.on('xx123',function(){
	console.log('xx123事件已经被触发');
})
/*触发一个事件*/
EventEmitter.emit('xx123');
console.log(EventEmitter)

5、延时触发事件

/*第2个nodejs中事件的例子*/
var eventEmitter = require('events').EventEmitter;
var events = new eventEmitter();
events.on('timeout',function(){
	console.log('timeout事件已经被触发');
})
setTimeout(function(){
	events.emit('timeout');
},3000)
console.log(events);

6、触发事件并传参

/*第3个nodejs中事件的例子*/
var eventEmitter = require('events').EventEmitter;
var events = new eventEmitter();
events.on('xx1',function(a,b){
	console.log('xx1',a);
})
events.on('xx1',function(a,b){
	console.log('xx2',b);
})
events.emit('xx1','参数一','参数二')

7、Buffer与字符编码

const buf1 = Buffer.alloc(256);
let xx = buf1.write('小葱伴逗虎')
console.log(buf1);
console.log('写入的字节数:'+xx);
console.log(buf1.toString())
console.log(buf1.toString('utf8',3,6))

8、Buffer输出26个英文字母

/*批量输出26个英文字母*/
buf = Buffer.alloc(26);
for(var i=0;i<26;i++){
	buf[i]=i+97;
}
console.log(buf);
console.log(buf.toString());
console.log(buf.toString());

9、将Buffer转换为 JSON 对象

const buf1 = Buffer.from([0x1,0x2,0x3,0x4,0x5]);
const json = JSON.stringify(buf1)
console.log(buf1)
console.log(typeof json)
console.log(json)
console.log(typeof JSON.parse(json))
console.log(JSON.parse(json))
console.log(JSON.parse(json).data)

10、读取文件内容

/*引入fs文件模块*/
var fs = require('fs');
var data = '';
/*创建一个可读流 createReadStream */
var readStream = fs.createReadStream('input.txt')
/*设置可读流的文件编码 utf-8 */
readStream.setEncoding('utf8');
/*处理流的事件 data end error */
readStream.on('data',function(d){
	data += d;
})
readStream.on('end',function(){
	console.log(data)
})
console.log('读取完毕')

11、写入文件内容

var fs = require('fs');
/*准备写入的内容*/
var data = '这句话将被写入指定的文件中'
/*创建一个可以写入的流*/
var writeStream = fs.createWriteStream('write.txt');
/*设置编码*/
writeStream.write(data,'utf8');
/*标记文件末尾*/
writeStream.end();
writeStream.on('finsh',function(){
	console.log('内容写入完成啦!')
})
console.log('执行完毕')

12、将文件内容进行管道流操作复制

var fs = require('fs');
/*创建一个可读流 createReadStream*/
var readStream = fs.createReadStream('input.txt')
/创建一个可以写入的流*/
var writeStream = fs.createWriteStream('write_1.txt');
/*管道流操作*/
readStream.pipe(writeStream);
console.log('执行完毕!');

13、压缩文件

var fs = require('fs');
var zlib = require('zlib');
/*压缩文件*/
fs.createReadStream('input.txt')
	.pipe(zlib.createGzip())
	.pipe(fs.createWriteStream('input.txt.gz'));	
console.log('压缩完成!')

14、解压文件

var fs = require('fs');
var zlib = require('zlib');
/*解压缩文件*/
fs.createReadStream('input.txt.gz')
	.pipe(zlib.createGunzip())
	.pipe(fs.createWriteStream('output.txt'));	
console.log('解压缩完成!')

15、公开一个模块

/*引入外部的模块*/
var module_1 = require('./module_2');
//console.log(module_1);
module_1.demo1()
exports.demo1 = function(){
	console.log('这是模块二中的方法一')
}

15、公开整个模块

/*公开整个模块*/
function demo2(){
	this.a = 123;
	this.b = function(){
		console.log('这是整个模块中给b定义的函数');
	}
}
module.exports = demo2;
var module_4 = require('./module_3');
var xxobj = new module_4;
console.log(xxobj.a);
xxobj.b()

16、get请求服务

/*get 请求*/
var http = require('http');
var util = require('util');
var url = require('url');
http.createServer(function(req,res){
	res.writeHead(200,{
		'Content-Type':'text/plain;charset= utf-8'
	});
	res.end('响应内容')
}).listen(2048)
console.log('2048端口服务已启动!')
/*get 请求*/
var http = require('http');
var util = require('util');
var url = require('url');
http.createServer(function(req,res){
	res.writeHead(200,{
		'Content-Type':'text/plain;charset= utf-8'
	});
	var param = url.parse(req.url,true).query;
	res.write('姓名:' + param.name)
	res.write('\n') 
	res.write('年龄:' + param.age)
	res.end();
}).listen(2048)
console.log('2048端口服务已启动!')

17、post请求服务

/*post 请求*/
var http = require('http');
var querystring = require('querystring');
var formHtml = 
	'<form method="post">'+
		'姓名:<input name="name"><br>'+
		'年龄:<input name="age"><br>'+
		'<input type="submit">'+
	'</form>';
http.createServer(function(req,res){
	var body = '';
	req.on('data',function(d){
		body += d;
	});
	req.on('end',function(){
		body = querystring.parse(body);
		res.writeHead(200,{
			'Content-Type':'text/html;charset=utf-8'
		});
		if(body.name){
			res.write('姓名:' + body.name)
			res.write('<br/>') 
			res.write('年龄:' + body.age)
		}else{
			res.write(formHtml);
		}
		res.end();
	})
}).listen(2048)
console.log('2048端口服务已启动')

18、使用Express框架创建服务

需要先安装Express,使用命令:npm install express -save会生成文件夹:node_modules

/*第一个express例子,创建一个服务*/
var express = require('express');
var app = express();
app.get('/',function(req,res){
	res.send('第一个express例子,创建一个服务');
});
app.listen(2048,function(){
	console.log('2048端口服务已启动!')
})

19、Express 简单的路由

/*第二个express例子,简单的路由*/
var express = require('express');
var app = express();
app.get('/',function(req,res){
	res.send('第二个express例子,简单的路由<br><a href="/a">A页面</a><br><a href="/b">B页面</a><br><a href="/c">C页面</a>');
});
app.get('/a',function(req,res){
	res.send('这是A页面<br><a href="/a/a1">AA页面</a><br><a href="/">首页</a>');
});
app.get('/a/a1',function(req,res){
	res.send('这是AA页面<br><a href="/">首页</a>');
});
app.get('/b',function(req,res){
	res.send('这是B页面<br><a href="/b/b1">BB页面</a><br><a href="/">首页</a>');
});
app.get('/b/b1',function(req,res){
	res.send('这是BB页面<br><a href="/">首页</a>');
});
app.get('/c',function(req,res){
	res.send('这是C页面<br><a href="/c/c1">CC页面</a><br><a href="/">首页</a>');
});
app.get('/c/c1',function(req,res){
	res.send('这是CC页面<br><a href="/">首页</a>');
});
app.listen(2048,function(){
	console.log('2048端口服务已启动!')
})

20、Express 中间件、静态目录

此处需要创建静态文件夹:staticDev ,存放文件:index.html ,用于展示使用。

/*第三个express例子,静态目录*/
var express = require('express');
var app = express();
app.use(express.static('staticDev'));
app.listen(2048,function(){
	console.log('2048静态目录已经启动!')
})
//此时访问http://localhost:2048/ 可查看到事先准备好的index.html文件,并且可以在Network中看到响应的请求信息。
  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值