Node.js模块化之require对象

人生苦短,我用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);

当然上面的服务器并不能满足请求响应数据,只写了数据接收部分,具体业务逻辑的时候,要根据是否有接口来判断是请求文件还是请求接口。

  • 发表于:
  • 原文链接:http://kuaibao.qq.com/s/20180125G0SAUM00?refer=cp_1026

扫码关注云+社区