Nodejs入门边读边想边记(-)
Node入门>>一本全面的Node.js教程网站地址:http://www.nodebeginner.org/index-zh-cn.html
本文记录我在阅读上面这个网站的过程中得到的一些体会及需要记录的地方。
就像这样,我们传递一个东西,然后服务器利用这个东西来完成一些事。嗨那个叫路由的东西,能帮我把这个路由一下吗?
但是服务器其实不需要这样的东西。它只需要把事情做完就行,其实为了把事情做完,你根本不需要东西,你需要的是动作。也就是说,你不需要名词,你需要动词。
分析的只管分析,路由的工作交给路由来完成
在现在的实现下,路由过程会在路由模块中“结束”,并且路由模块并不是真正针对请求“采取行动”的模块,否则当我们的应用程序变得更为复杂时,将无法很好地扩展。
在这里我们得做个决定:是将requestHandlers模块硬编码到路由里来使用,还是再添加一点依赖注入?虽然和其他模式一样,依赖注入不应该仅仅 为使用而使用,但在现在这个情况下,使用依赖注入可以让路由和请求处理程序之间的耦合更加松散,也因此能让路由的重用性更高。
同样的,路由仅仅处理路由工作,低耦合会提高模块的重用性
下面一段来自msdn的介绍:http://msdn.microsoft.com/en-us/magazine/cc163419.aspx
在C++或C#中,当我们谈到对象,指的是类或者结构体的实例。对象根据他们实例化的模板(就是所谓的类),会拥有不同的属性和方法。但在 JavaScript里对象不是这个概念。在JavaScript中,对象就是一个键/值对的集合 -- 你可以把JavaScript的对象想象成一个键为字符串类型的字典。
JavaScript的对象仅仅是键/值对的集合,它又怎么会拥有方法呢?好吧,这里的值可以是字符串、数字或者……函数!
大量的关系映射,可以使用关联数组来完成,这样,会使程序变得干净、整洁。
Node.js会将POST数据拆分成很多小的数据块,然后通过触发特定的事件,将这些小数据块传递给回调函数。这里的特定的事件有data事件(表示新的小数据块到达了)以及end事件(表示所有的数据都已经接收完毕)。
以下是测试中可能出现的一些问题,用注释做了解释
function show(response){ console.log("Request handler 'show' was called"); fs.readFile("tmp/guitarbg.jpg","binary",function(error,file){//这里读取的是程序所在目录下的tmp文件夹 if(error){ response.writeHead(500,{"Content-Type":"text/plain"}); response.write(error+"\n"); response.end(); }else{ response.writeHead(200,{"Content-Type":"image/png"}); response.write(file,"binary"); response.end(); } }) }
function upload(response,request){ console.log("Request handler 'upload' was called."); var form = new formidable.IncomingForm(); form.uploadDir = 'D:/tmp';//windows下可能出现“..no such file or directory..”的错误,导致此错误的问题是文件夹权限不足或者是目录不存在,在这里使用uploadDir重新指定临时文件所在目录 console.log("about to parse"); form.parse(request,function(error,fields,files){ console.log("parsing done"); console.log("file path:"+files.upload.path); fs.renameSync(files.upload.path,"tmp/guitarbg.jpg"); response.writeHead(200,{"Content-Type":"text/html"}); response.write("receive image:<br>"); response.write("<img src='/show' />"); response.end(); }); }
Nodejs入门边读边想边记(-)的更多相关文章
- NodeJS入门简介
NodeJS入门简介 二.模块 在Node.js中,以模块为单位划分所有功能,并且提供了一个完整的模块加载机制,这时的我们可以将应用程序划分为各个不同的部分. const http = require ...
- nodejs入门教程之http的get和request简介及应用
nodejs入门教程之http的get和request简介及应用 前言 上一篇文章,我介绍了nodejs的几个常用的模块及简单的案例,今天我们再来重点看一下nodejs的http模块,关于http模块 ...
- nodeJs 5.0.0 安装配置与nodeJs入门例子学习
新手学习笔记,高手请自动略过 安装可以先看这篇:http://blog.csdn.net/bushizhuanjia/article/details/7915017 1.首先到官网去下载exe,或者m ...
- NodeJS入门(四)—— path对象
很快Node就会迎来4.0的时代,届时将并入现有的iojs,所以先前写过的iojs入门系列直接更名为NodeJS入门. 本篇开始将逐个介绍Node的各主要模块,依循API文档走一遍,但会给出比API文 ...
- 01.Nodejs入门之Helloworld
说明:本文章可供有一定js基础的朋友参考nodejs入门,本文未讲解nodejs的安装,如有需要的同学可以加QQ3382260752找我,进行交流学习. 1.新建文件夹helloworld demo, ...
- 57.NodeJS入门--环境搭建 IntelliJ IDEA
转自:https://blog.csdn.net/wang19891106/article/details/51127133 NodeJS入门–环境搭建 IntelliJ IDEA 本人也刚开始学习N ...
- 二、NodeJS入门——准备工作(2)——MongoDB安装以及客户端Robomongo安装和使用
目录 1.介绍 2.下载地址 3.MongoDB安装过程 4.MongoDB的使用 5.MongoDB添加管理员账户 6.RoboMongo安装过程 ...
- NodeJS入门--环境搭建 IntelliJ IDEA
NodeJS入门–环境搭建 IntelliJ IDEA 本人也刚开始学习NodeJS,所以以此做个笔记,欢迎大家提出意见. 1.首先 下载安装NodeJS,下载安装IntelliJ IDEA 2.接下 ...
- Nodejs入门【转载】保留备用
关于 本书致力于教会你如何用Node.js来开发应用,过程中会传授你所有所需的“高级”JavaScript知识.本书绝不是一本“Hello World”的教程. 状态 你正在阅读的已经是本书的最终版. ...
随机推荐
- linux下apache2的虚拟主机配置
1,起因 在一星期前吧,大波说既然咱们有了自己的服务器,二级域名了.可以考虑怎样每人一个域名,分别指向我们各自的空间.想法挺好,避免我们个人的东西放在同一主页上.那就做吧 2,第一次尝试 (1)在域名 ...
- 工作随记--div最小高度
给div添加最小高度 min-height:1000px;//IE7\FF height:100%;//IE6\IE7\FF 这个很重要,IE6定死高度后,需要再加上这条,才能自动延伸. _heigh ...
- 自签名配置HTTPS
基于AFN3.0 1.将后台提供的.cer文件文件保存至本地 2.在封装的网络请求工具类中为AFN的AFSecurityPolicy属性赋值 -(AFSecurityPolicy *)customSe ...
- @Html.AntiForgeryToken() 源码分析,表单防伪码的生成
源码来自MVC4@Html.AntiForgeryToken() 源码分析 public MvcHtmlString AntiForgeryToken() { return new MvcHtmlSt ...
- SKlearn中分类决策树的重要参数详解
学习机器学习童鞋们应该都知道决策树是一个非常好用的算法,因为它的运算速度快,准确性高,方便理解,可以处理连续或种类的字段,并且适合高维的数据而被人们喜爱,而Sklearn也是学习Python实现机器学 ...
- PAT天梯赛L3-007 天梯地图
题目链接:点击打开链接 本题要求你实现一个天梯赛专属在线地图,队员输入自己学校所在地和赛场地点后,该地图应该推荐两条路线:一条是最快到达路线:一条是最短距离的路线.题目保证对任意的查询请求,地图上都至 ...
- B.Grid with Arrows-The 2019 ICPC China Shaanxi Provincial Programming Contest
BaoBao has just found a grid with $n$ rows and $m$ columns in his left pocket, where the cell in the ...
- myeclipse svn 在线安装
https://www.cnblogs.com/sxdcgaq8080/p/6000446.html http://subclipse.tigris.org/update_1.8.x
- ubuntu 的 python从2.* 升级到3.*
1.在ubuntu 的终端中用代码下载最新的Python sudo apt-get install python3 2.用命令删除usr/bin/目录下的默认python link文件root@sal ...
- Luogu P4144 大河的序列 贪心+脑子
首先向颜神犇致敬...还是自己太菜,又不仔细思考,上来就翻题解$qwq$ 首先有一种贪心方法:即,$ans=2*max(dirty_i)$ 证明:若现在的答案为$ans$,考虑一个新的数$x$对答案的 ...