好好学习,天天向上。
这是一个连载,记录偶学习nodejs的笔记。
函数传递:在nodejs中 函数和变量一样,可以当成参数进行传递
- function say (v) {
-
console.log(v);
-
}
-
-
function execute(sf, v) {
-
sf(v);
-
}
-
execute(say, 'show');
匿名函数:这是js特有的组织方式,它的定义可以节省一个定义函数名字,也就是不用起名字啦。
- execute(function(v){console.log(v)}, 'show');
基于事件驱动的回调函数:其实到现在还是不太明白,大概就是这样的
- var http = require("http");
-
-
http.createServer(function(request, response) {
- console.log('callback');
-
response.writeHead(200, {"Content-Type":"text/plain"});
-
response.write("
你好 世界
");
-
response.end();
-
}).listen(8881);
-
-
console.log('run:');
当用 nodejs.exe 打i开文件时,命令行会直接输出run:.....
当用浏览器打开 local...:8001 命令行会输出callback...
让写的server 变成一个node模块:- //server.js
-
var http = require("http");
-
function start() {
-
http.createServer(function(request, response) {
-
console.log('callback');
-
response.writeHead(200, {"Content-Type":"text/plain"});
-
response.write("
你好 世界
");
-
response.end();
-
}).listen(8881);
-
console.log('run:');
-
}
-
exports.start =start;
将server.js中的代码 用start函数包含,并赋值到 exports
- //index.js
-
var server = require("./server");
-
server.start();
这里执行nodejs.exe index.js 将执行server的函数。
加入路由用来处理程序:加入路由规则才能按需要处理不同的模块,如url中 /start /upload 分别代表两个功能。
- //新建 route_heat.js
- function start () {
-
console.log('is start');
-
}
-
-
function upload () {
-
console.log('is upload');
-
}
-
-
exports.start = start;
-
-
exports.upload = upload;
用来处理路由的返回结果。
- //index.js
-
var server = require("./server");
-
var route = require("./route");
-
var routeheat = require('./route_heat');
-
-
-
var handle = {}
-
handle["/"] = routeheat.start;
-
handle["/start"] = routeheat.start;
-
handle["/upload"] = routeheat.upload;
-
server.start(route.route, handle);
加入路由处理结果模块,并创建路由映射关系对象。并在start函数中 加入关系对象。
- //server.js
-
var http = require("http");
-
var url = require("url");
-
-
function start(route, handle) {
-
http.createServer(function(request, response) {
-
//console.log('callback');
-
var pathname = url.parse(request.url).pathname;
-
//console.log('run:'+ (typeof route));
-
route(handle, pathname);
-
//console.log(pathname);
-
response.writeHead(200, {"Content-Type":"text/plain"});
-
response.write("
你好 世界
");
-
response.end();
-
}).listen(8881);
-
console.log('run:');
-
}
-
exports.start =start;
在server中接收处理对象和url,pathname传递到 route函数中。
- //route.js
-
function route(handle, pathname) {
-
console.log('About route:' + pathname);
-
if (typeof handle[pathname] === 'function') {
-
handle[pathname]();
-
} else {
-
console.log('is not pathname>'+pathname);
-
}
-
}
-
-
exports.route = route;
在route函数中判断url中 / 后面对应的路由,并返回结果。
阅读(1928) | 评论(0) | 转发(0) |