Node.js学习(3) 按模块实现业务

本文介绍如何使用Node.js创建一个简单的DNS解析网站,包括服务器创建、业务逻辑控制、DNS解析及首页展示等步骤。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

学习实现一个简单的DNS解析网站
(1) 首先要创建服务器,由入口模块完成;
(2) 然后应该有一个业务逻辑控制,通过路由模块实现;
(3) 服务器收到用户输入的域名后,交给业务处理模块处理,即DSN解析模块;
(4) 给用户显示信息的功能交给首页展示模块。

1.入口模块(index.js)
/*
自定义入口模块 index.js
*/

// 加载两个公共模块
var http = require(‘http’),
url = require(‘url’);

//加载自定义路由模块
var router = require(‘./router.js’);

//创建http服务
http.createServer(function(req, res){
var pathname = url.parse(req.url).pathname; //获取当前请求资源的url路径
req.setEncoding(“utf8”); //设置返回客户端页面的数据格式
res.writeHead(200, { ‘Content-Type’:’text/html’ });
router.router(res, req, pathname); //调用router方法处理url路由
}).listen(3000, “127.0.0.1”);

//打印运行log
console.log(‘Server is running at localhost’);

2.路由处理模块(route.js)
/*
自定义路由模块 router.js
*/

//加载自定义DNS解析模块和首页展示模块
var ParseDns = require(‘./parse_dns.js’),
MainIndex = require(‘./main_index.js’);

//创建router方法,并将该方法提供给外部调用
exports.router = function(res, req, pathname){
switch(pathname){
case “/parse”:
ParseDns.parseDns(res, req); //执行DNS解析
break;
default:
MainIndex.goIndex(res, req); //响应HTML到客户端
}
}

3.DNS解析模块(parse_dns.js)
/*
自定义DNS解析模块 parse_dns.js
*/

// 加载两个公共模块
var querystring = require(‘querystring’),
dns = require(‘dns’);

//创建parseDns方法,并将该方法提供给外部调用
exports.parseDns = function(res, req){
var postData = “”;
req.addListener(“data”, function(postDataChunk){
postData += postDataChunk;
});

//HTTP相应HTML信息
req.addListener(“end”, function(){
var retData = getDns(postData, function(domain, addresses){
res.writeHead(200, { ‘Content-Type’:’text/html’ });
res.end(“

Domain:”
+ domain + “
IP:” + addresses.join(‘,’) + “
“);
});
return;
});
}

//模块私有方法
function getDns(postData, callback){
var domain = querystring.parse(postData).search_dns;
//异步解析域名
dns.resolve(domain, function(err, addresses){
if(!addresses){
addresses = [‘不存在域名’];
}
//在异步函数 getDns 执行结束后,执行 callback 函数,将执行结果 domain 和 addresses 返回到回调函数中处理.
callback(domain, addresses);
});
}

4.首页展示模块(main_index.js)
/*
自定义首页展示模块 main_index.js
处理首页逻辑信息.
*/

// 加载两个公共模块
var fs = require(‘fs’),
url = require(‘url’);

//定义goIndex跳转首页函数,供外部调用
exports.goIndex = function(res, req){
var readPath = __dirname + ‘/’ + url.parse(‘index.html’).pathname;
var indexPage = fs.readFileSync(readPath);
res.end(indexPage);
}

运行 index.js,可以实现DNS解析的功能。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

ZackarySun

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值