文章目录
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中看到响应的请求信息。