一、封装模块
新建一个test.js文件,上代码:
//test.js
function test() {
console.log("IT有些事儿,微信公众号:ITYXSE");
}
exports.testBegin = test();//等号后边跟函数同名
等号后面的test,指的是上面的函数名。等号前面的testBegin,是调用时的函数名(注意区别)
控制台打印:
好,最简单的基本封装模块好了。
二、调用模块
新建一个js文件。命名diaoyong.js,哈哈我随便起的名字,你们也随意,但是最好要让自己能第一时间区分,别一看到就懵逼,不知道是干啥用的。
//diaoyong.js
var test = require("./test");//调用模块
test.testBegin;
看,就这样,调用该模块的方法(注意方法名是test.js中exports后面的变量名)看控制台输出:
怎么样,是不是很简单啊
三、获得访问的路径
需要获取访问者需要访问的路径,方法是通过http的方法createServer,
具体看代码和注释:
//server.js
//调用http和URL模块
var http = require("http");
var url = require("url");
function onRequest(request, response) {
//获取url中的请求路径
var pathname = url.parse(request.url).pathname;
response.writeHead(200, {"Content-type": "text/plain"});
response.write(pathname);
response.end();
}
//创建一个服务器,监听80端口
http.createServer(onRequest).listen(80);
console.log("server is start!");
这个函数有两个参数:request和response,请求和响应。具体不用我说了,大家可以百度特么一下。
好,我们启动服务
在浏览器中输入localhost:80或者127.0.0.1:80,具体情况自己定,结果如下
那么,输入127.0.0.1:80/woshilujing,结果如下
怎么样,也很简单吧。
四、函数式编程
函数式编程,就是将函数做为参数进行传递。
下面先创建四个js文件,具体请看:
Server.js
//
var http = require("http");
var url = require("url");
//start函数中,第一个参数是route函数(来源于router模块),
// 第二个参数是一个对象(来源于index.js)
function start(route, handle) {
function onRequest(request, response) {
var pathname = url.parse(request.url).pathname;
console.log("请求路径是: " + pathname);
route(handle, pathname); //来源于上面的start的参数
response.writeHead(200);
response.write("请求路径是:" + pathname);
response.end();
}
http.createServer(onRequest).listen(80);
console.log("服务启动!!");
}
exports.start = start;
router.js
//判断是不是函数,是就执行函数。函数来源于index里加载的模块requestHandlers
function route(handle, pathname) {
console.log("发现请求路径: " + pathname);
if (typeof handle[pathname] === 'function') {
handle[pathname]();
} else {
console.log("没有此路径: " + pathname);
}
}
exports.route = route;
requestHandler.js
function start() {
console.log("请求 'start' 被调用");
}
function upload() {
console.log("请求 'upload' 被调用");
}
exports.start = start;
exports.upload = upload
Index.js
//调用了3个模块,然后声明了一个空的对象,
// 然后给这个对象声明了几个不同的变量(准确的说是函数变量),
// 他们分别对应requestHandlers这个模块的不同函数;
var server = require("./server"); //调用该模块
var router = require("./router");
var requestHandlers = require("./requestHandler");
var handle = {};
handle["/"] = requestHandlers.start;
handle["/start"] = requestHandlers.start;
handle["/upload"] = requestHandlers.upload;
//调用server这个模块的start方法,传两个参数,
// 分别是router模块的route方法和对象handle(包含3个函数变量)
server.start(router.route, handle);
好,启动服务:
浏览器访问http://127.0.0.1/start,控制台打印如下:
浏览器访问http://127.0.0.1/upload,控制台打印如下:
这里借用别人一张图来解释实现模式:
经过这么简单一讲,您是否对NodeJS编程感觉到了浓厚的兴趣了呢?个人认为,编程是门艺术,不需要过多的语言叙述,只要你亲自下手去敲,去理解,比听出来的效果要好。希望大家都能学好NodeJS,
最后希望多多关注我。
领取专属 10元无门槛券
私享最新 技术干货