了不起的node.js读书笔记之node.js中的特性


Posted in Javascript onDecember 22, 2014

环境的变化带来了技术大跃进,机遇和挑战同时到来。基于我js也没有学,只好赶鸭子上架一起学了。(>?<)

了不起的node.js读书笔记之node.js中的特性

1.先读读书

一开始就不知死活地看《深入浅出node.js》,弄得团团转,看完才知道这本书是要一定基础的。在网上搜刮到了41页的《node入门》,自己学着搭建了一个Web应用。并且在刷新成就感后,就抱读《了不起的node.js》。现准备看完这本书后再回读《深入浅出node.js》。

2.搭建环境 运行git上的例程(3次报错)

在官网下载msi后,一路next。输入命令npm install时,报错"npm ERR! not found: git"。原因是新电脑没有按照git。

安装外部依赖包时,报错"gyp ERR! configure error",原因也是Python环境没有。而且这个依赖包只能在低版本下安装。最后一次报错是"MSBUILD:error MSB3428:未能加载Visual C++组件"VCBuild.exe"",在安装.net framework 2.0 SDK和mvs2005后还是报错。果断弃了。

3.第一个Web应用

在运行完"Hello World"后,开始编写一个完全基于Node的Web应用。首先需要启动服务器模块,http模块中的createServer函数返回的对象有一个listen([PORT])方法监听端口。这个函数的参数很奇怪,是一个函数定义。在JavaScript中,一个函数可以作为另一个函数接收一个参数,参数函数就叫匿名函数。而使用这种方法的原因是node采用了基于事件驱动的回调。当服务器在单进程接收到一个请求时,就会调用这个函数来处理这个请求。当有相应的事件发生时,createServer函数就调用这个函数来回调。

了不起的node.js读书笔记之node.js中的特性

在完成接收http请求后,我们就要处理请求了。首先,我们抽象地把请求提出不同的URL和GET、POST参数。这里用到了两个内部模块URL(解析URL)、Query String(处理查询字符串)。并且通过依赖注入的方式把router模块添加进去。接着,需要完成处理请求的模块,才完善路由。请求先全部通过一个对象(handle)进行模块间的传递,并让处理程序能做出响应。一般来说,让请求处理程序通过onRequest函数直接返回(return())他们要展示给用户的信息。不过,在进行阻塞操作时会非常耗时,所以我们要使用非阻塞操作。使用回调,通过将函数作为参数传递给其他需要花时间做处理的函数。相比采用将内容传递给服务器的方式,我们这次采用将服务器“传递”给内容的方式。就是将response对象(从服务器的回调函数onRequest()获取)作为函数参数通过路由传递给处理程序。这样,处理程序就可以调用该对象上的函数。

接下来再进行处理环节,通过表单来上传图片,这里用到了外部依赖包formidable来接收图片。这个模块就是用来处理表单和上传文件的。首先使用var form = new formidable.IncomingForm();来获得一个表单对象。这个对象的parse方法可以解析处理表单数据。我们就很简单地把文件保存起来。而保存文件则使用了fs模块。通过重命名方法来指定保存的位置,通过使用同步的方法renameSync()可以使得保存文件行为先于展示图片行为。

展示图片则十分简单,通过fs的readFile方法读取文件,在其回调函数中使用response.write(file, "binary")就可以在浏览器中展示图片。

总结一下:通过这个例程,我们了解到了node.js中的特性,如单线程、异步、事件驱动等。其中一些抽象概念也通过例程展示了一遍,但还需深入了解。通过例程学习就是需要在不懂时查阅资料,这种学习方法也是很好的Input-Person-Output型的方法。

Javascript 相关文章推荐
动态为事件添加js代码示例
Feb 15 Javascript
getComputedStyle与currentStyle获取样式(style/class)
Mar 19 Javascript
引用其它js时如何同时处理多个window.onload事件
Sep 02 Javascript
使用Chrome调试JavaScript的断点设置和调试技巧
Dec 16 Javascript
javascript设计模式Constructor(构造器)模式
Aug 19 Javascript
JavaScript数据操作_浅谈原始值和引用值的操作本质
Aug 23 Javascript
自定义require函数让浏览器按需加载Js文件
Nov 24 Javascript
javascript实现文字无缝滚动效果
Aug 26 Javascript
微信小程序将字符串生成二维码图片的操作方法
Jul 17 Javascript
JavaScript函数apply()和call()用法与异同分析
Aug 10 Javascript
VueJS 组件参数名命名与组件属性转化问题
Dec 03 Javascript
简单说说如何使用vue-router插件的方法
Apr 08 Javascript
jQuery+ajax中getJSON() 用法实例
Dec 22 #Javascript
IE8中动态创建script标签onload无效的解决方法
Dec 22 #Javascript
javascript的日期对象、数组对象、二维数组使用说明
Dec 22 #Javascript
javascript中的遍历for in 以及with的用法
Dec 22 #Javascript
Jquery实现图片预加载与延时加载的方法
Dec 22 #Javascript
javascript定义变量时加var与不加var的区别
Dec 22 #Javascript
javascript操作字符串的原生方法
Dec 22 #Javascript
You might like
手冲咖啡应该是现代精品咖啡店的必备选项吗?
2021/03/03 冲泡冲煮
详解PHP用substr函数截取字符串中的某部分
2016/12/03 PHP
magento后台无法登录解决办法的两种方法
2016/12/09 PHP
PHP实现表单提交数据的验证处理功能【防SQL注入和XSS攻击等】
2017/07/21 PHP
Laravel框架Blade模板简介及模板继承用法分析
2019/12/03 PHP
PHP实现简单注册登录系统
2020/12/28 PHP
基于jQuery的合并表格中相同文本的相邻单元格的代码
2011/04/06 Javascript
基于JQuery的列表拖动排序实现代码
2013/10/01 Javascript
String.prototype实现的一些javascript函数介绍
2013/11/22 Javascript
jquery 提示信息显示后自动消失的具体实现
2013/12/18 Javascript
jQuery中siblings()方法用法实例
2015/01/08 Javascript
javascript顺序加载图片的方法
2015/07/18 Javascript
jQuery实现将div中滚动条滚动到指定位置的方法
2016/08/10 Javascript
jQuery基本过滤选择器用法示例
2016/09/09 Javascript
AngularJS API之copy深拷贝详解及实例
2016/09/14 Javascript
浅谈html转义及防止javascript注入攻击的方法
2016/12/04 Javascript
js数字滑动时钟的简单实现(示例讲解)
2017/08/14 Javascript
JavaScript实现连连看连线算法
2019/01/05 Javascript
JavaScript中常用的简洁高级技巧总结
2019/03/10 Javascript
Vue  webpack 项目自动打包压缩成zip文件的方法
2019/07/24 Javascript
Node.js安装详细步骤教程(Windows版)详解
2019/09/01 Javascript
layui给下拉框、按钮状态、时间赋初始值的方法
2019/09/10 Javascript
中级前端工程师必须要掌握的27个JavaScript 技巧(干货总结)
2019/09/23 Javascript
python避免死锁方法实例分析
2015/06/04 Python
python中print()函数的“,”与java中System.out.print()函数中的“+”功能详解
2017/11/24 Python
Python 创建空的list,以及append用法讲解
2018/05/04 Python
python中的RSA加密与解密实例解析
2019/11/18 Python
Python发送手机动态验证码代码实例
2020/02/28 Python
OpenCV+python实现膨胀和腐蚀的示例
2020/12/21 Python
Python爬虫爬取微博热搜保存为 Markdown 文件的源码
2021/02/22 Python
华三通信H3C面试题
2015/05/15 面试题
PyQt 如何创建自定义QWidget
2021/03/24 Python
主管会计岗位职责
2014/03/13 职场文书
餐饮服务食品安全责任书
2014/07/25 职场文书
交通事故代理词范文
2015/05/23 职场文书
单位更名证明
2015/06/18 职场文书