上一篇文章中,我们已经建立了一个有缓冲机制的文件服务器,能给客户端响应附件类型的文件,其实,就爱莲(iLinkIT)而言,NodeJS的模块做到这样也就已经可以了,因为使用的场景就是电脑和手机之间,与部署在Internet上的服务器相比,安全性的要求是不高的.但是,我们这一系列文章的主要目的是学习,整到现在,我们只讲了服务器对客户端的响应,调用了response对象,但是对于客户端提交上来的请求(request对象),没有怎么关注过.本文就给服务器增加一点安全特性,服务器仅仅对特定的请求才响应,…
一.前言 本文目标 本文是博主总结了之前的自己在做的很多个项目的一些知识点,当然我在这里不会过多的讲解业务的流程,而是建立一个小demon,旨在帮助大家去更加高效 更加便捷的生成自己的node后台接口项目,本文底部提供了一个 蓝图,欢迎大家下载,start,实际上,这样的一套思路打下来,基本上就已经建立手撸了一个nodejs框架出来了.大多数框架基本上都是这样构建出来的,底层的Node 第二层的KOA 或者express,第三层就是各种第三方包的加持. 注意:本文略长,我分了两个章节 本文写了一…
通过上一篇文章“NodeJS服务器:一行代码 = 一个的HTTP服务器”,我们已经开启了NodeJS之旅,开发了一个监听在8000端口的HTTP服务器,虽然功能很简单,但是,已经让我们感受到用NodeJS开发服务器是一件简单.愉快的事情.现在,我们按着既定的目标----将电脑里的文件共享给手机,继续前进. 老规矩,先上一个图: 回到我们的项目目标,要实现的功能是:当有客户端向NodeJS服务器发送请求的时候,就读取电脑D:\下面的 ilinkit_logo.png的图片文件作为响应,反馈给客户端…
在大家的印象中,相当长一段时间里,JavaScript是一门脚本语言,一般不能成为某个项目的担纲主角,作用只是在浏览器里帮忙校验校验输入是不是正确,响应一下鼠标.键盘事件,或者让某个HTML元素动起来,搞点特效等等,相当于在剧组中帮忙递递毛巾,打打开水. 后来,AJAX这种数据交互模式的出现,催生了Web2.0的繁荣,让Web页面也能实现像桌面程序一样的效果,用户体验大大提升,但是,它想发挥价值,还必须和另外一个主角(浏览器)一起出场,如果和浏览器的关系搞得不好(不兼容),那么,后果会是非常糟糕…
从这一篇开始,我们进入技术讲解的话题,逐步实现用NodeJS实现文件的传送共享服务. 前文我们讲过,NodeJS是最擅长做网络服务器的,今天我们就来用NodeJS做一个最简单的服务器. 先看一幅图: 如图中所画,当一个小孩子还很小的时候,如果有叔叔阿姨跟他打招呼,逗他玩,他几乎用相同的方式回应. 今天我们要做的HTTP服务器也一样,启动之后,不管是那个客户端连接上来,它都统一用Hi回应. 1.下载安装NodeJS 推荐大家到官方网站:https://nodejs.org/ 下载最新版本的Node…
上一篇文章,我们已经实现了客户端向NodeJS服务器发出请求时,服务器从磁盘读取文件内容后,向客户端返回文件的数据.而对于爱莲(iLinkIT)的1对n的场景,即将文件共享出来之后,让多个用户同时下载,如果每个用户发起请求,我们都重新去磁盘读一下文件,那样岂不是效率低下?本文将重点改进一下效率和体验的问题. 老规矩,先上一个图: 因为对于一个具体的共享任务,文件是同一个的,我们可以只做一次读取文件的操作,把读取进来的文件数据先保存到缓冲区.当有客户端发送请求时,就从缓冲区读取数据响应对应的客户端…
上一篇文章,我们通过一个简单的例子,学习了NodeJS中对客户端的请求(request)对象的解析和处理,整个文件共享的功能已经完成.但是,纵观整个过程,还有两个地方明显需要改进: 首先,不能共享完毕之后,都通过Ctrl+C来关闭NodeJS服务器. 其次,如果仅仅能向客户端提供d:\ilinkit_logo.png文件的下载,是没有意义的,共享哪个文件,应该可以通过传入的参数来指定. 老规矩,先上一个图: 我们首先来实现退出功能,如果客户端向服务器提交了http://localhost:800…
随着移动互联网时代的到来,手机正在逐步替代其他的设备,手机是电话.手机是即时通讯,手机是相机,手机是导航仪,手机是钱包,手机是音乐播放器……. 除此之外,手机还是一个大大的U盘,曾几何时,我们用一根长长的数据线,将手机和电脑连接起来,将电脑上的内容拷贝到手机,或者将手机上的照片上传到电脑.但是,无线Wifi的普及,连接是一个常态,没过多久,我们就会问:“数据线”是什么东东? 没错,爱莲(iLinkIT)软件就是一款借助Wifi网络,实现手机和电脑之间文件传送的软件,可以把你电脑上的文件快速传送到…
很多 NodeJS 的开发者在抱怨异常处理太麻烦,我们会通过一些列博客梳理一下NodeJS中常见的异常处理的手段. 和大多数编程语言一样,在 NodeJS 里可以通过throw抛出一个异常: throw new Error('Catch me'); 为了捕获这个异常需要把代码包在Try Catch中: try{ throw new Error('Catch me'); }catch(e){ // error captured } 然而,由于 NodeJS 的异步特性,上述代码只需稍加改造就会失效…
前言 这里主要说一下之前使用Nodejs开发踩过的坑,只说坑不填坑,那就是赤裸地耍流氓,文中有大量的说明及填坑方法,了解的看官可以直接跳过. PS:说实话,Nodejs的坑确实蛮多的:但是上手简单,扩展包众多,让你的开发变得十分简易. 1.代码精简 尽量使用精简的代码,Nodejs 代码处理速度是异常慢的,不如其他主流语言,甚至不如python,使用精简代码也是对自己能力的提升与考验.我们在做卡地亚商城项目时,对方工程师要求同一函数内,同一变量不可以出现三次(loop中仅算作一次).代码精简了,…