当前位置: 首页 > 编程笔记 >

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

萧卜霸
2023-03-14
本文向大家介绍了不起的node.js读书笔记之node.js中的特性,包括了了不起的node.js读书笔记之node.js中的特性的使用技巧和注意事项,需要的朋友参考一下

环境的变化带来了技术大跃进,机遇和挑战同时到来。基于我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函数就调用这个函数来回调。

  在完成接收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型的方法。

 类似资料:
  • 本文向大家介绍了不起的node.js读书笔记之node的学习总结,包括了了不起的node.js读书笔记之node的学习总结的使用技巧和注意事项,需要的朋友参考一下 这周做项目做得比较散(应该说一直都是这样),总结就依据不同情境双开吧~这篇记录的是关于node的学习总结,而下一篇是做项目学到的web前端的知识。 1.HTTP篇   node的HTTP模块在第一篇时接触过,这里来学习几个例程中出现的A

  • 本文向大家介绍了不起的node.js读书笔记之mongodb数据库交互,包括了了不起的node.js读书笔记之mongodb数据库交互的使用技巧和注意事项,需要的朋友参考一下  这周的学习主要是nodejs的数据库交互上,并使用jade模板一起做了一个用户验证的网站。主要是遇到了一下几个问题。 1.mongodb版本过低   npm ERR! Not compatible with your op

  • 问题内容: 我在Express中有一个SSL服务器,该服务器不能在所有浏览器上运行(除非用户手动信任该网站),因为某些浏览器需要链证书(我们有自己的中间证书)。我已经将中间证书和连锁证书放在一个.crt文件中。链+中间证书在变量中。它似乎不起作用。我正在使用http://www.digicert.com/help并正在进行检查,但是它似乎没有返回中间+链证书。 这是我的设置方法: 在Firefox

  • 本文向大家介绍Node.js中的模块机制学习笔记,包括了Node.js中的模块机制学习笔记的使用技巧和注意事项,需要的朋友参考一下 Javascript自诞生以来,曾经没有人拿它当做一门编程语言。在Web 1.0时代,这种脚本语言主要被用来做表单验证和网页特效。直到Web 2.0时代,前端工程师利用它大大提升了网页上的用户体验,JS才被广泛重视起来。在JS逐渐流行的过程中,它大致经历了工具类库、组

  • 本文向大家介绍bootstrap读书笔记之CSS组件(上),包括了bootstrap读书笔记之CSS组件(上)的使用技巧和注意事项,需要的朋友参考一下 bootstrap三大核心之二。 包括glyphicon图标,下拉菜单(dropdown),按钮组(button group)....等等。一. 图标字体 bootstrap3提供了200多个免费图标字体。认为它是一个字。 arial-hidden

  • 本文向大家介绍整理java读书笔记十五之java中的内部类,包括了整理java读书笔记十五之java中的内部类的使用技巧和注意事项,需要的朋友参考一下 内部类是指在一个外部类的内部再定义一个类。类名不需要和文件夹相同。 *内部类可以是静态static的,也可用public,default,protected和private修饰。(而外部顶级类即类名和文件名相同的只能使用public和default