人生苦短,我用node
Node.JS是一个模块化的生态系统,早设计之初前辈们就致力于把node设计成模块化,简单的阐述模块化就是:你想要使用什么功能的时候你必须先引入模块才能使用,node模块分为系统模块和自定义模块。比如说你需要使用http构建服务端,那你就必须先引入http模块,http属于系统模块。
系统模块:就是nodejs自带的模块不需要下载可以直接使用比如、http创建服务端、fs文件请求、url等。nodejs官网https://nodejs.org/en/的文档可以查看到所有的node系统模块。
自定义模块:你也可以自定义模块,你也可以使用别人的模块,或把自己的模块给别人使用,npm就是用来储存模块的地方,可以把npm简单的理解为一个储存全世界程序员自定义模块的网站。node的有些功能是必须要下载模块才能使用,比如说mysql模块和一些框架模块,下载模块就必须使用npm。把你的模块不断完善并且升级,有些写得好的慢慢就变成了框架。
http模块
——
http模块用于快速构建Server服务,处理request请求,并且response响应给前端web页面。
const http=require('http');
var server=http.createServer(function(resquest,response){
response.write("hello,world!");
response.end();
});
server.listen(8080);
现在当你访问localhost:8080端口的时候,你就会得到服务端返回的hello world!
ok你的第一个程序成功了。
fs模块
——
fs模块主要用于文件读写功能。
让request请求文件的时候我们需要读出文件:
const fs=require('fs');
var server=http.createServer(function(request,response){
var file_name='./www'+request.url;
fs.readFile(file_name,function(err,data){
if(err){
response.write("404");
}else{
response.write(data);
}
response.end();
});
});
写入文件:
const fs=require('fs');
fs.writeFile('222.txt','hello world!',function(err){
//第一个参数请求的文件名,第二个参数写入的内容,最后回调函数
if(!err){
console.log('写入成功');
}
});
url模块
——
url模块可以得到文件路径、get请求数据、host、path等。
使用url模块可以把request.url对象解析为:
Url {
protocol: null,
slashes: null,
auth: null,
host: null,
port: null,
hostname: null,
hash: null,
search: null,
query: 'name=王花花&age=30',
pathname: '/user.html',
path: '/user.html',
href: '/user.html' }
query键里面储存了get请求的数据,但是数据格式为'name=王花花&age=30'字符串,利用url模块的第二个参数true可以将query数据解析为对象path
const http=require('http');
const urlLib=require('url');
http.createServer(function(request,response){
var obj=urlLib.parse(request.url,true);
//urlLib的第二个参数加上true,就是pathname数据对象化,不然是字符串
const GET=obj.query;
}).listen(8080);
querystring模块
——
主要用于数据字符串格式解析为对象格式。
因为post数据无法通过request.url拿到,只能通过字符串接收,而且post数据是分段接收,而且是储存为字符串格式,那就要用到querystring模块解析。
const http=require('http');
const querysting=require('querystring');
http.creatServer(function(request,response){
var str='';
requst.on('data',function(data){
str+=data;
});
request.on('end',function(){
const POST=querystring.parse(str);
});
}).listen(8080);
构建完整Server
——
掌握了上面的node几大系统模块你就可以构建一个完整了server服务器,带get、post数据请求、和文件请求。
const http=require('http);
const fs=require('fs');
const urlLib=require('url');
const querystring=require('querystring');
http.creatServer(function(request,response){
//GET
var obj=urlLib.parse(request.url,true);
var url=obj.pathname;
//用于拼接文件路径
const GET=obj.query;
//POST
var str='';
request.on('data',function(data){
str+=data;
});
request.on('end',function(){
const POST=querystring.parse(str);
});
//文件请求
var file_name='./www'+url;
fs.readFile(file_name,function(err,data){
if(err){
response.write('404');
}else{
response.write(data);
}
});
}).listen(8080);
当然上面的服务器并不能满足请求响应数据,只写了数据接收部分,具体业务逻辑的时候,要根据是否有接口来判断是请求文件还是请求接口。
领取专属 10元无门槛券
私享最新 技术干货