读《Node入门》笔记
《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入门》笔记相关推荐
- 读《我是一只IT小小鸟》笔记
很有幸当我在刚上大学迷茫之际,可以读到<我是一只IT小小鸟>这本书.书中写到很多就读IT方面的前辈的各种经验之谈,要知道当迷茫的时候很需要有人给你中肯的建议,而因为有了这本书中前辈们对后辈 ...
- 读《我是一只 IT 小小鸟》
读<我是一只 IT 小小鸟> 作为一个一向看重节操的体面人,即使面临许多 DDL 包括期中考试,在忙乱不堪的时候我也断不断告诫自己,不能迫于课程要求仅为了写出一篇笔记而去读书,以后更是如此 ...
- 《我是一只IT小小鸟》读书笔记(2)
本周阅读了<我是一只IT小小鸟>的第二部分,即居振梁的自述,这一部分与上一部分不同,我与这位前辈的共鸣不强,对其观点的反对之处却有一些. 先说我认同的观点吧. 首先,关于"课内& ...
- 同是IT小小鸟——《我是一只IT小小鸟》读书笔记
本文出处:http://blog.csdn.net/guoxiaopeng_cs/article/details/7803716 <我是一只IT小小鸟> 1.学长学姐们用他们自己的成长故事 ...
- 我是一只it小小鸟阅读笔记
"我们具有各自的独特性--我们兴趣各异,有不同的家庭背景,不同的知识储备,不同的思维方式--但在现实中,我们也会碰到类似的人生选择的关口,我们会犯类似的错误,有类似的迷惘,也会为类似的精彩鼓 ...
- 《我是一只IT小小鸟》目录I
以下是电子工业出版社博文视点新书<我是一只IT小小鸟>的目录I,欢迎围观. 目 录 I Contents I 蒋宇东 梦断计院,为梦前行 / 1 引子:我的感悟,我的忏悔 上篇·梦 ...
- 《我是一只IT小小鸟》连载九——掉进读书的兔子洞(5)
/*误打误撞,选择了出国深造*/ 掉进读书的兔子洞 徐宥 误打误撞,选择了出国深造 在找工作的同时,我出国的事情也没闲.我觉得直接靠寄材料申请计算机希望渺茫(我先前直接申请了几家数学和计算机,都是拒信 ...
- 《我是一只IT小小鸟》读后感
上了大学后我发现我没有像自己现象中那么刻苦,没有努力的充实自己.也忘了学习这门专业的初衷.以为老师推荐了这本<我是一只IT小小鸟>叫我们去阅读,一开始我只是把它当做作业去完成而已.读完后我 ...
- 我们的新书--《我是一只IT小小鸟》
<我是一只IT小小鸟>即将由电子工业出版社出版.这本书是由一群IT学子共同创造而成, 每个人分别讲述各自的成长经历.我参加了本书的创作队伍,本书的第一篇文章就是我对于自己大学生活的反思以及 ...
- 《我是一只IT小小鸟》连载
转自csdn,原文链接:http://blog.csdn.net/bvbook/archive/2009/08/18/4458803.aspx <我是一只IT小小鸟>连载之一--梦断计院( ...
最新文章
- 2016 Multi-University Training Contest 4 Bubble Sort(树状数组模板)
- move_uploaded_file()
- service能去调另外一个service吗_kubernetes的service和pod是如何关联的?
- 和平精英有电脑版吗_群雄逐鹿丨攀升电脑见证NEST和平精英王者诞生!
- xml TO json
- python解决高并发的方法
- 远离你的电脑,代码写得更好!
- 【vscode】程序员居然用vscode听网易云
- JAVA文件上传限制
- stylecloud:一款可以制作个性化词云图的 Python 神器
- Clustering by Passing Messages Between Data Points
- 那些优美的英文句子一
- python写的平行四边形_实现一个平行四边形
- 利用input[type=range]制作一个简易的音乐播放器
- TiDB简单介绍 以及 MySQL与TiDB查询性能对比实验
- Excel文本日期格式转为日期格式的方法
- CAD绘图设计中怎样删除CAD图层?怎样清理CAD图层文件?
- 三星I9220刷机包 新蜂ROM V4.1 高级设置 全透明天气插件
- 小米Q3财报解读:手机行业整体疲软之下,怎么做到互联网业务大爆发?
- MySQL的四种事务隔离级别