nodejs概论(实操篇)
2016-04-30 11:06
615 查看
什么是模块?
模块分为原生模块(node.jsAPI提供的原生模块,在启动时已经被加载)和
文件模块(动态加载模块,主要由原生模块module来实现和完成。通过调
用node.js的require方法来实现加载)。
//调用原生API的方法
httpModule是require原生http模块返回的对象。类似java中类的对象。
//调用文件模块的方法
也可为
可以看出,文件模块是需要指定路径的。
返回对象test可以调用文件的那些属性和方法呢?
node.js中明确指出,只有exports和module.exports对象暴露给该外部的
属性个方法,可以使用require对象进行调用。
exports和module.exports是什么?可参考一下连接http://cnodejs.org/topic/5231a630101e574521e45ef8
例如如下模块
以上代码,只可通过require的对象调用name属性和happy方法。
可以通过打印对象,查看它所拥有的属性和方法
console.log(test);
[b]二、nodejs实现web解析DNS[/b]
1.需要用到那些模块
以下为源代码
getDNS.js
index.html
运行getDNS.js文件
在cmd中输入,如果getDNS文件的存放路径不再默认位置,需要先打开存放位置 cd C:nodejs/test/(假设我的文件存放目录为C盘的nodejs文件夹下的test文件夹内)
然后打开浏览器输入node.js的监听端口,即getDNS.就是文件中指定的端口:http://127.0.0.1:3000 ,服务器会返回页面到客户端
注意:上面的代码是无法使用form表单提交的,需要将getDNS.js中的代码进行修改
修改后如下:
以上就是通过nodejs实现一个DNS域名解析的网站。一个真正意义上的网站算是搭建完成了!!
纯手打,好累.....
模块分为原生模块(node.jsAPI提供的原生模块,在启动时已经被加载)和
文件模块(动态加载模块,主要由原生模块module来实现和完成。通过调
用node.js的require方法来实现加载)。
//调用原生API的方法
var httpModule =require('http');//加载http模块
httpModule是require原生http模块返回的对象。类似java中类的对象。
//调用文件模块的方法
var test =require('/path/.../test.js')
也可为
var test =require('/path/.../test')
可以看出,文件模块是需要指定路径的。
返回对象test可以调用文件的那些属性和方法呢?
node.js中明确指出,只有exports和module.exports对象暴露给该外部的
属性个方法,可以使用require对象进行调用。
exports和module.exports是什么?可参考一下连接http://cnodejs.org/topic/5231a630101e574521e45ef8
例如如下模块
/** * *exports test code * */ exports.name="danhuang";//exports暴露name属性 exports.happy=function(){console.log("mm")};//exports暴露happy方 法 function love(){console.log("520");}
以上代码,只可通过require的对象调用name属性和happy方法。
可以通过打印对象,查看它所拥有的属性和方法
console.log(test);
[b]二、nodejs实现web解析DNS[/b]
1.需要用到那些模块
以下为源代码
getDNS.js
//首先require加载需要的nodejs原生模块 var http=require("http"),//服务器创建 dns=require("dns"),//DNS查询 fs=require("fs"),//文件操作 url=require("url"),//url处理 querystring =require("querystring");字符串处理 //创建服务器 http.createServer(function(req,res){ //添加http响应的头信息 res.writeHead(200,{'Content-Type':'text/html'}); //获取当前index.html的路径 var readPath=_dirname+'/'+url.parse('index.html').pathname; //获取index.html的文件数据 var indexPage=fs.readFileSyns(readPath); //执行http响应返回到客户端 res.end(indexPage); }).listen(3000,"127.0.0.1");
index.html
<html> <head> <meta http-equiv="Content-Type" content="text/html;charset=UTF-8"> <title>DNS查询</title> </head> <body> <h1 style="text-aglin:center">DNS查询工具</h1> <div style="text-aglin:center"> <form action="/parse" method="post"> 查询DNS:<input type="text" name="search_dns"/> <input type="submit" value="查询" /> </form> </div> </body> </html>
运行getDNS.js文件
在cmd中输入,如果getDNS文件的存放路径不再默认位置,需要先打开存放位置 cd C:nodejs/test/(假设我的文件存放目录为C盘的nodejs文件夹下的test文件夹内)
node getDNS.js
然后打开浏览器输入node.js的监听端口,即getDNS.就是文件中指定的端口:http://127.0.0.1:3000 ,服务器会返回页面到客户端
注意:上面的代码是无法使用form表单提交的,需要将getDNS.js中的代码进行修改
修改后如下:
//首先require加载需要的nodejs原生模块 var http=require('http'),//服务器创建 dns=require('dns'),//DNS查询 fs=require('fs'),//文件操作 url=require('url'),//url处理 querystring =require("querystring");//字符串处理 //创建服务器 http.createServer(function(req,res){ //获取当前请求资源的路径 var pathname=url.parse(req.url).pathname; //设置返回客户端的数据格式 req.setEncoding("utf8"); //添加http响应的头信息 res.writeHead(200,{'Content-Type':'text/html'}); //处理不同的请求资源,分发处理 router(res,req,pathname); }).listen(8888,"127.0.0.1"); // console.log("server run at http://127.0.0.1:8888/"); function router (res,req,pathname) { switch(pathname){//根据pathname不同,执行不同的处理逻辑 case "/parse": parseDns(res,req)//执行域名解析 break; default: goIndex(res,req)//显示html页面 } } function goIndex (res,req) { //获取文件路径 var readPath =__dirname + '/' +url.parse('index.html').pathname; //读取html文件信息 var indexPage =fs.readFileSync(readPath); //通过res响应html数据到客户端 res.end(indexPage); } function parseDns (res,req) { var postData=""; //读取客户端传递的数据,并将数据添加到pastData中 req.addListener("data",function(postDataChunk){ postData += postDataChunk; }); //http响应html页面信息,数据接收完成,end函数触发 req.addListener("end",function(){ //getDNS异步域名解析,执行完成活回调执行function(domain,addresses){},domain是传递的域名参数,addresses是ip地址列表 var retData = getDns(postData,function(domain,addresses){ res.writeHead(200,{'Content-Type':'text/html'}); res.end("<html><head><meta http-equiv='Content-Type' content='text/html;charset=UTF-8'></head><div style='text-aglin:center'>Domain:<span style='color:red'>"+domain+"</span>IP:<span style='color:red'>"+addresses.join(',')+"</span></div></html>"); }); return; }); } function getDns (postData,callback) { //获取postdata数据中键值为search_dns的值 var domain=querystring.parse(postData).search_dns; //异步解析域名 dns.resolve(domain,function(err,addresses){ if(!addresses){ addresses=['域名不存在'] } callback(domain,addresses); }); }
以上就是通过nodejs实现一个DNS域名解析的网站。一个真正意义上的网站算是搭建完成了!!
纯手打,好累.....
相关文章推荐
- nodejs
- Irrlicht学习笔记(3)--CustomSceneNode
- 【LeetCode】Delete Node in a Linked List 解题报告
- LinkNode R4
- Reverse Nodes in k-Group
- node.js之this的困惑
- Node+Express+Jade
- Mac +WebStorm+nodeJs+Freemarker.js的安装与使用
- 获取当前页面url中的参数 coffeescript+node.js+angular
- Cisco VPP(4) node
- nodejs 发送邮件
- 快速搭建 node.js+express
- nodejs开发指南读后感
- 我的node之kafka实践
- 安装 nodejs图像处理模块 sharp
- 160429、nodejs--Socket.IO即时通讯
- [CareerCup] 17.13 BiNode 双向节点
- 设置Nodejs NPM全局路径
- 为什么我要用 Node.js? 案例逐一介绍
- Hadoop-2.3.0-cdh5.0.1完全分布式环境搭建(NameNode,ResourceManager HA)