NODE.js入门手册

上传人:QQ15****706 文档编号:96772722 上传时间:2019-08-28 格式:PDF 页数:77 大小:823.81KB
返回 下载 相关 举报
NODE.js入门手册_第1页
第1页 / 共77页
NODE.js入门手册_第2页
第2页 / 共77页
NODE.js入门手册_第3页
第3页 / 共77页
NODE.js入门手册_第4页
第4页 / 共77页
NODE.js入门手册_第5页
第5页 / 共77页
点击查看更多>>
资源描述

《NODE.js入门手册》由会员分享,可在线阅读,更多相关《NODE.js入门手册(77页珍藏版)》请在金锄头文库上搜索。

1、 NODE.JS 入门手册 关于关于 本书致力于教会你如何用 Node.js 来开发应用,过程中会传授你所有所需 的“高级”JavaScript 知识。本书绝不是一本“Hello World”的教程。 状态状态 你正在阅读的已经是本书的最终版。因此,只有当进行错误更正以及针对 新版本 Node.js 的改动进行对应的修正时,才会进行更新。 本书中的代码案例都在 Node.js 0.4.9 版本中测试过,可以正确工作。 读者对象读者对象 本书最适合与我有相似技术背景的读者: 至少对一门诸如 Ruby、 Python、 PHP 或者 Java 这样面向对象的语言有一定的经验;对 JavaScrip

2、t 处于初 学阶段,并且完全是一个 Node.js 的新手。 这里指的适合对其他编程语言有一定经验的开发者,意思是说,本书不会 对诸如数据类型、变量、控制结构等等之类非常基础的概念作介绍。要读 懂本书,这些基础的概念我都默认你已经会了。 然而,本书还是会对 JavaScript 中的函数和对象作详细介绍,因为它们与 其他同类编程语言中的函数和对象有很大的不同。 本书结构本书结构 读完本书之后,你将完成一个完整的 web 应用,该应用允许用户浏览页面 以及上传文件。 当然了,应用本身并没有什么了不起的,相比为了实现该功能书写的代码 本身,我们更关注的是如何创建一个框架来对我们应用的不同模块进行干

3、 净地剥离。 是不是很玄乎?稍后你就明白了。 本书先从介绍在 Node.js 环境中进行 JavaScript 开发和在浏览器环境中进 行 JavaScript 开发的差异开始。 紧接着,会带领大家完成一个最传统的“Hello World”应用,这也是最基础 的 Node.js 应用。 最后,会和大家讨论如何设计一个“真正”完整的应用,剖析要完成该应用 需要实现的不同模块,并一步一步介绍如何来实现这些模块。 可以确保的是,在这过程中,大家会学到 JavaScript 中一些高级的概念、 如何使用它们以及为什么使用这些概念就可以实现而其他编程语言中同 类的概念就无法实现。 该应用所有的源代码都可

4、以通过 本书 Github 代码仓库. 目录目录 关于 o 状态 o 读者对象 o 本书结构 JavaScript 与 Node.js o JavaScript 与你 o 简短申明 o 服务器端 JavaScript o “Hello World” 一个完整的基于 Node.js 的 web 应用 o 用例 o 应用不同模块分析 构建应用的模块 o 一个基础的 HTTP 服务器 o 分析 HTTP 服务器 o 进行函数传递 o 函数传递是如何让 HTTP 服务器工作的 o 基于事件驱动的回调 o 服务器是如何处理请求的 o 服务端的模块放在哪里 o 如何来进行请求的“路由” o 行为驱动执行

5、o 路由给真正的请求处理程序 o 让请求处理程序作出响应 不好的实现方式 阻塞与非阻塞 以非阻塞操作进行请求响应 o 更有用的场景 处理 POST 请求 处理文件上传 o 总结与展望 JavaScript 与与 Node.js JavaScript 与你与你 抛开技术,我们先来聊聊你以及你和 JavaScript 的关系。本章的主要目的 是想让你看看,对你而言是否有必要继续阅读后续章节的内容。 如果你和我一样,那么你很早就开始利用 HTML 进行“开发”,正因如此, 你接触到了这个叫 JavaScript 有趣的东西,而对于 JavaScript,你只会基 本的操作为 web 页面添加交互。

6、而你真正想要的是“干货”,你想要知道如何构建复杂的 web 站点 于 是, 你学习了一种诸如 PHP、 Ruby、 Java 这样的编程语言, 并开始书写“后 端”代码。 与此同时, 你还始终关注着 JavaScript, 随着通过一些对 jQuery, Prototype 之类技术的介绍,你慢慢了解到了很多 JavaScript 中的进阶技能,同时也 感受到了 JavaScript 绝非仅仅是 window.open() 那么简单。 . 不过,这些毕竟都是前端技术,尽管当想要增强页面的时候,使用 jQuery 总让你觉得很爽, 但到最后, 你顶多是个 JavaScript用户, 而非 Jav

7、aScript 开发者。 然后,出现了 Node.js,服务端的 JavaScript,这有多酷啊? 于是, 你觉得是时候该重新拾起既熟悉又陌生的JavaScript了。 但是别急, 写 Node.js 应用是一件事情;理解为什么它们要以它们书写的这种方式来 书写则意味着你要懂 JavaScript。这次是玩真的了。 问题来了: 由于 JavaScript 真正意义上以两种,甚至可以说是三种形态 存在 (从中世纪 90 年代的作为对 DHTML 进行增强的小玩具, 到像 jQuery 那样严格意义上的前端技术,一直到现在的服务端技术),因此,很难找 到一个“正确”的方式来学习 JavaScri

8、pt,使得让你书写 Node.js 应用的时 候感觉自己是在真正开发它而不仅仅是使用它。 因为这就是关键: 你本身已经是个有经验的开发者,你不想通过到处寻 找各种解决方案(其中可能还有不正确的)来学习新的技术,你要确保自 己是通过正确的方式来学习这项技术。 当然了,外面不乏很优秀的学习 JavaScript 的文章。但是,有的时候光靠 那些文章是远远不够的。你需要的是指导。 本书的目标就是给你提供指导。 简短申明简短申明 业界有非常优秀的 JavaScript 程序员。而我并非其中一员。 我就是上一节中描述的那个我。 我熟悉如何开发后端 web 应用, 但是对“真 正”的 JavaScript

9、 以及 Node.js,我都只是新手。我也只是最近学习了一些 JavaScript 的高级概念,并没有实践经验。 因此,本书并不是一本“从入门到精通”的书,更像是一本“从初级入门到高 级入门”的书。 如果成功的话, 那么本书就是我当初开始学习 Node.js 最希望拥有的教程。 服务端服务端 JavaScript JavaScript 最早是运行在浏览器中,然而浏览器只是提供了一个上下文, 它定义了使用 JavaScript 可以做什么,但并没有“说”太多关于 JavaScript 语言本身可以做什么。事实上,JavaScript 是一门“完整”的语言: 它可以 使用在不同的上下文中,其能力与

10、其他同类语言相比有过之而无不及。 Node.js 事实上就是另外一种上下文,它允许在后端(脱离浏览器环境) 运行 JavaScript 代码。 要实现在后台运行 JavaScript 代码,代码需要先被解释然后正确的执行。 Node.js 的原理正是如此,它使用了 Google 的 V8 虚拟机(Google 的 Chrome 浏览器使用的 JavaScript 执行环境),来解释和执行 JavaScript 代码。 除此之外,伴随着 Node.js 的还有许多有用的模块,它们可以简化很多重 复的劳作,比如向终端输出字符串。 因此,Node.js 事实上既是一个运行时环境,同时又是一个库。 要

11、使用 Node.js,首先需要进行安装。关于如何安装 Node.js,这里就不赘 述了,可以直接参考官方的安装指南。安装完成后,继续回来阅读本书下 面的内容。 “Hello World” 好了, “废话”不多说了, 马上开始我们第一个 Node.js 应用: “Hello World”。 打开你最喜欢的编辑器,创建一个 helloworld.js 文件。我们要做就是向 STDOUT 输出“Hello World”,如下是实现该功能的代码: console.log(“Hello World“); 保存该文件,并通过 Node.js 来执行: node helloworld.js 正常的话,就会在

12、终端输出 Hello World 。 好吧,我承认这个应用是有点无趣,那么下面我们就来点“干货”。 一个完整的基于一个完整的基于 Node.js 的的 web 应用应用 用例用例 我们来把目标设定得简单点,不过也要够实际才行: 用户可以通过浏览器使用我们的应用。 当用户请求 http:/domain/start 时,可以看到一个欢迎页面,页 面上有一个文件上传的表单。 用户可以选择一个图片并提交表单,随后文件将被上传到 http:/domain/upload,该页面完成上传后会把图片显示在页面上。 差不多了, 你现在也可以去 Google 一下, 找点东西乱搞一下来完成功能。 但是我们现在先不

13、做这个。 更进一步地说,在完成这一目标的过程中,我们不仅仅需要基础的代码而 不管代码是否优雅。我们还要对此进行抽象,来寻找一种适合构建更为复 杂的 Node.js 应用的方式。 应用不同模块分析应用不同模块分析 我们来分解一下这个应用,为了实现上文的用例,我们需要实现哪些部分 呢? 我们需要提供 Web 页面,因此需要一个 HTTP服务器 对于不同的请求,根据请求的 URL,我们的服务器需要给予不同的 响应,因此我们需要一个路由,用于把请求对应到请求处理程序 (request handler) 当请求被服务器接收并通过路由传递之后, 需要可以对其进行处理, 因此我们需要最终的请求处理程序 路由

14、还应该能处理 POST 数据,并且把数据封装成更友好的格式传 递给请求处理入程序,因此需要请求数据处理功能 我们不仅仅要处理 URL 对应的请求,还要把内容显示出来,这意味 着我们需要一些视图逻辑供请求处理程序使用,以便将内容发送给 用户的浏览器 最后,用户需要上传图片,所以我们需要上传处理功能来处理这方 面的细节 我们先来想想,使用 PHP 的话我们会怎么构建这个结构。一般来说我们 会用一个 Apache HTTP 服务器并配上 mod_php5 模块。 从这个角度看,整个“接收 HTTP 请求并提供 Web 页面”的需求根本不需 要 PHP 来处理。 不过对 Node.js 来说,概念完全

15、不一样了。使用 Node.js 时,我们不仅仅 在实现一个应用,同时还实现了整个 HTTP 服务器。事实上,我们的 Web 应用以及对应的 Web 服务器基本上是一样的。 听起来好像有一大堆活要做,但随后我们会逐渐意识到,对 Node.js 来说 这并不是什么麻烦的事。 现在我们就来开始实现之路,先从第一个部分-HTTP 服务器着手。 构建应用的模块构建应用的模块 一个基础的一个基础的 HTTP 服务器服务器 当我准备开始写我的第一个“真正的”Node.js 应用的时候, 我不但不知道怎 么写 Node.js 代码,也不知道怎么组织这些代码。 我应该把所有东西都放进一个文件里吗?网上有很多教程

16、都会教你把所 有的逻辑都放进一个用 Node.js 写的基础 HTTP 服务器里。但是如果我想 加入更多的内容,同时还想保持代码的可读性呢? 实际上,只要把不同功能的代码放入不同的模块中,保持代码分离还是相 当简单的。 这种方法允许你拥有一个干净的主文件(main file),你可以用 Node.js 执行它;同时你可以拥有干净的模块,它们可以被主文件和其他的模块调 用。 那么,现在我们来创建一个用于启动我们的应用的主文件,和一个保存着 我们的 HTTP 服务器代码的模块。 在我的印象里,把主文件叫做 index.js 或多或少是个标准格式。把服务器 模块放进叫 server.js 的文件里则很好理解。 让我们先从服务器模块开始。在你的项目的根目录下创建一个叫 server.js 的文件,并写入以下代码: var http =

展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 办公文档 > 其它办公文档

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号