《Node入门》

中文乱码的问题还没解决,网上找的方法没作用啊。以后再看看。

代码:

  • index.js
/*** 启动器* Created by Z on 2017/4/19.*/function say(value) {console.log(value);
}function excute(Function, value) {Function(value);
}
excute(say, 'are you ok');excute(function (value) {//匿名函数
    console.log(value);
}, 'don\'t break my heart');// ------------------var server = require('./server');//调用模块
var route = require('./routes');
var requestHandlers = require('./requestHandlers');var handler = {};
handler['/'] = requestHandlers.start;
handler['/start'] = requestHandlers.start;
handler['/upload'] = requestHandlers.upload;
handler['/showImg'] = requestHandlers.showImg;server.start(route.route, handler);

  • server.js
/*** 服务* Created by Z on 2017/4/19.*/
var http = require("http");
var url = require("url");function start(route, handler) {function onRequest(request, response) {// var postDate = "";// request.setEncoding("utf8");// request.url 和 url.parse(request.url).pathname 相同var pathname = url.parse(request.url).pathname;//请求路径名称//-------阻塞式-------//只有一个response在执行 同步// console.log(pathname);// var result = route(handler, pathname);//将参数传递到路由//
        // console.log('**************'+result);// response.writeHead(200, {"Content-Type": "text/plain"});// response.write(result);// response.end();// -------改进后-------//多个response 异步// route(handler, pathname, response);// /**//  * 监听传过来的数据//  */// request.addListener("data", function (postDataChunk) {//     postDate += postDataChunk;//     console.log('数据块:'+postDataChunk);//     console.log('获取到请求数据:'+postDate);//
        // });//
        // /**//  * 监听 所有数据传输完成后 穿递给路由//  */// request.addListener("end",function () {//     route(handler,pathname,response,postDate);// });//-------4-------
route(handler, pathname, response, request);};http.createServer(onRequest).listen(8888);
};exports.start = start;

  • rotes.js
/*** 路由器* Created by Z on 2017/4/20.*/// function route(handler, path, response,postData) {//     console.log('that path is: ' + path);
//     if (typeof handler[path] === 'function') {//         return handler[path](response,postData);
//     } else {//         console.log('找不到处理程序:' + path);
//
//         response.writeHead(404, {"Content-Type": "text/plain"});
//         response.write("404 Not Found");
//         response.end();
//     }
// };//图片上传不需要再使用postData
function route(handler, path, response, request) {console.log('that path is: ' + path);if (typeof handler[path] === 'function') {return handler[path](response, request);} else {console.log('找不到处理程序:' + path);response.writeHead(404, {"Content-Type": "text/plain"});response.write("404 Not Found");response.end();}
};
exports.route = route;

  • requestHandlers.js
/*** 请求处理程序* Created by Z on 2017/4/20.*/// var exec = require("child_process").exec;
var fs = require("fs");
var querystring = require("querystring");//在idea中引用别的模块 需要在package.json文件中注册
// 如: "formidable": "~1.1.1"var formidable = require("formidable");// function start(response, postData) {function start(response, request) {//-------阻塞-------// function sleep(milliSeconds) {//     var startTime = new Date().getTime();//     while (new Date().getTime() < startTime + milliSeconds) {//         console.log(new Date().getTime());//     }//暂停一段时间 10000=10S。// }//
    // sleep(10000);//-------2-------// var content = 'empty';//这里和书上不一样,不会延迟10秒,而且还乱码// exec("dir c:",//     {timeout: 10000, maxBuffer: 20000 * 1024},//     function (error, stdout, stderr) {//     console.log(stdout);//
    //     response.writeHead(200, {"Content-Type": "text/plain"});//     response.write(stdout);//     response.end();//
    //     //-------2-------//     // content = stdout;// });//-------3-------// var body = '<html>' +//     '<head>' +//     '<meta http-equiv="Content-Type" content="text/html; ' +//     'charset=UTF-8" />' +//     '</head>' +//     '<body>' +//     '<form action="/upload" method="post">' +//     '<textarea name="text" rows="20" cols="60"></textarea>' +//     '<input type="submit" value="Submit text" />' +//     '</form>' +//     '</body>' +//     '</html>';var body = '<html>' +'<head>' +'<meta http-equiv="Content-Type" ' +'content="text/html; charset=UTF-8" />' +'</head>' +'<body>' +'<form action="/upload" enctype="multipart/form-data" ' +'method="post">' +'<input type="file" name="upload">' +'<input type="submit" value="Upload file" />' +'</form>' +'</body>' +'</html>';response.writeHead(200, {"Content-Type": "text/html"});response.write(body);response.end();// -------2-------// return content;// -------1-------// console.log('---start---');// return 'Hello Start!';
}//-------4------
// function upload(response, postData) {//     response.writeHead(200, {"Content-Type": "text/plain"});
//     response.write('上传数据为:\n' + postData);
//     response.end();
// }function upload(res, req) {var form = new formidable.IncomingForm();form.uploadDir = "../images";form.parse(req, function (error, fields, files) {// 报错:cross-device link not permitted, rename XXXXX// http://blog.csdn.net/starrexstar/article/details/8048722// 是由于Node.js安装的盘符和写的地方不在一个盘符,跨目录重命名文件导致的问题。可以多些下面一句话,重设临时上传路径
fs.renameSync(files.upload.path, '../images/test.jpg');res.writeHead(200, {"Content-Type": "text/html"});res.write("received image:<br/>");res.write("<img src='/showImg' />");res.end();});
}function showImg(response, postData) {fs.readFile("../images/test.jpg", "binary", function (error, file) {if (error) {response.writeHead(500, {"Content-Type": "text/plain"});response.write('错误' + error);response.end();} else {response.writeHead(200, {"Content-Type": "image/jpg"});response.write(file, "binary");response.end();}})
}exports.start = start;
exports.upload = upload;
exports.showImg = showImg;

准备再深入了解一下。

转载于:https://www.cnblogs.com/6324/p/6743859.html

读《Node入门》笔记相关推荐

  1. 读《我是一只IT小小鸟》笔记

    很有幸当我在刚上大学迷茫之际,可以读到<我是一只IT小小鸟>这本书.书中写到很多就读IT方面的前辈的各种经验之谈,要知道当迷茫的时候很需要有人给你中肯的建议,而因为有了这本书中前辈们对后辈 ...

  2. 读《我是一只 IT 小小鸟》

    读<我是一只 IT 小小鸟> 作为一个一向看重节操的体面人,即使面临许多 DDL 包括期中考试,在忙乱不堪的时候我也断不断告诫自己,不能迫于课程要求仅为了写出一篇笔记而去读书,以后更是如此 ...

  3. 《我是一只IT小小鸟》读书笔记(2)

    本周阅读了<我是一只IT小小鸟>的第二部分,即居振梁的自述,这一部分与上一部分不同,我与这位前辈的共鸣不强,对其观点的反对之处却有一些. 先说我认同的观点吧. 首先,关于"课内& ...

  4. 同是IT小小鸟——《我是一只IT小小鸟》读书笔记

    本文出处:http://blog.csdn.net/guoxiaopeng_cs/article/details/7803716 <我是一只IT小小鸟> 1.学长学姐们用他们自己的成长故事 ...

  5. 我是一只it小小鸟阅读笔记

    "我们具有各自的独特性--我们兴趣各异,有不同的家庭背景,不同的知识储备,不同的思维方式--但在现实中,我们也会碰到类似的人生选择的关口,我们会犯类似的错误,有类似的迷惘,也会为类似的精彩鼓 ...

  6. 《我是一只IT小小鸟》目录I

    以下是电子工业出版社博文视点新书<我是一只IT小小鸟>的目录I,欢迎围观. 目  录 I Contents I 蒋宇东  梦断计院,为梦前行  /  1 引子:我的感悟,我的忏悔 上篇·梦 ...

  7. 《我是一只IT小小鸟》连载九——掉进读书的兔子洞(5)

    /*误打误撞,选择了出国深造*/ 掉进读书的兔子洞 徐宥 误打误撞,选择了出国深造 在找工作的同时,我出国的事情也没闲.我觉得直接靠寄材料申请计算机希望渺茫(我先前直接申请了几家数学和计算机,都是拒信 ...

  8. 《我是一只IT小小鸟》读后感

    上了大学后我发现我没有像自己现象中那么刻苦,没有努力的充实自己.也忘了学习这门专业的初衷.以为老师推荐了这本<我是一只IT小小鸟>叫我们去阅读,一开始我只是把它当做作业去完成而已.读完后我 ...

  9. 我们的新书--《我是一只IT小小鸟》

    <我是一只IT小小鸟>即将由电子工业出版社出版.这本书是由一群IT学子共同创造而成, 每个人分别讲述各自的成长经历.我参加了本书的创作队伍,本书的第一篇文章就是我对于自己大学生活的反思以及 ...

  10. 《我是一只IT小小鸟》连载

    转自csdn,原文链接:http://blog.csdn.net/bvbook/archive/2009/08/18/4458803.aspx <我是一只IT小小鸟>连载之一--梦断计院( ...

最新文章

  1. 2016 Multi-University Training Contest 4 Bubble Sort(树状数组模板)
  2. move_uploaded_file()
  3. service能去调另外一个service吗_kubernetes的service和pod是如何关联的?
  4. 和平精英有电脑版吗_群雄逐鹿丨攀升电脑见证NEST和平精英王者诞生!
  5. xml TO json
  6. python解决高并发的方法
  7. 远离你的电脑,代码写得更好!
  8. 【vscode】程序员居然用vscode听网易云
  9. JAVA文件上传限制
  10. stylecloud:一款可以制作个性化词云图的 Python 神器
  11. Clustering by Passing Messages Between Data Points
  12. 那些优美的英文句子一
  13. python写的平行四边形_实现一个平行四边形
  14. 利用input[type=range]制作一个简易的音乐播放器
  15. TiDB简单介绍 以及 MySQL与TiDB查询性能对比实验
  16. Excel文本日期格式转为日期格式的方法
  17. CAD绘图设计中怎样删除CAD图层?怎样清理CAD图层文件?
  18. 三星I9220刷机包 新蜂ROM V4.1 高级设置 全透明天气插件
  19. 小米Q3财报解读:手机行业整体疲软之下,怎么做到互联网业务大爆发?
  20. MySQL的四种事务隔离级别

热门文章

  1. Linux主要的系统目录及其简单描述
  2. Python命令行版本的员工管理系统
  3. C语言:从键盘输入三个数,求最值问题
  4. Docker 中的网络管理与集群构建
  5. flume与kafka的整合
  6. DButils入门及结果处理器选择
  7. Android:是时候掌握WebView与Js的交互技术了
  8. C#强制关闭Excel进程(通过COM使用Excel时)
  9. 巴基斯坦削减光伏发电上网电价或影响清洁能源发展前景
  10. 宽字符与Unicode