抛开技术,我们先来聊聊你以及你和 JavaScript 的关系。本章的主要目的是想让你看看,对你而言 是否有必要继续阅读后续章节的内容。 如果你和我一样,那么你很早就开始利用 HTML 进行“开发” ,正因如此,你接触到了这个叫 JavaScript 有趣的东西,而对于 JavaScript,你只会基本的操作——为 web 页面添加交互。 而你真正想要的是“干货” ,你想要知道如何构建复杂的 web 站点——于是,你学习了一种诸如 PHP、Ruby、Java 这样的编程语言,并开始书写“后端”代码。 与此同时,你还始终关注着 JavaScript,随着通过一些对 jery,Prototype 之类技术的介绍,你慢 慢了解到了很多 JavaScript 中的进阶技能,同时也感受到了 JavaScript 绝非仅仅是 window.open() 那么简单。 不过,这些毕竟都是前端技术,尽管当想要增强页面的时候,使用 jery 总让你觉得很爽,但到最 后,你顶多是个 JavaScript 用户,而非 JavaScript 开发者。 然后,出现了 Node.js,服务端的 JavaScript,这有多酷啊? 于是,你觉得是时候该重新拾起既熟悉又陌生的 JavaScript 了。但是别急,写 Node.js 应用是一件事 情;理解为什么它们要以它们书写的这种方式来书写则意味着——你要懂 JavaScript。这次是玩真的 了。 问题来了:由于 JavaScript 真正意义上以两种,甚至可以说是三种形态存在(从中世纪 90 年代的作 为对 DHTML 进行增强的小玩具,到像 jery 那样严格意义上的前端技术,一直到现在的服务端 技术) ,因此,很难找到一个“正确”的方式来学习 JavaScript,使得让你书写 Node.js 应用的时候 感觉自己是在真正开发它而不仅仅是使用它。 因为这就是关键:你本身已经是个有经验的开发者,你不想通过到处寻找各种解决方案(其中可能 还有不正确的)来学习新的技术,你要确保自己是通过正确的方式来学习这项技术。 当然了,外面不乏很优秀的学习 JavaScript 的文章。但是,有的时候光靠那些文章是远远不够的。你 需要的是指导。 本书的目标就是给你提供指导。

业界有非常优秀的 JavaScript 程序员。而我并非其中一员。 我就是上一节中描述的那个我。我熟悉如何开发后端 web 应用,但是对“真正”的 JavaScript 以及 Node.js,我都只是新手。我也只是最近学习了一些 JavaScript 的高级概念,并没有实践经验。 因此,本书并不是一本“从入门到精通”的书,更像是一本“从初级入门到高级入门”的书。 如果成功的话,那么本书就是我当初开始学习 Node.js 最希望拥有的教程。

本书最适合与我有相似技术背景的读者:至少对一门诸如 Ruby、Python、PHP 或者 Java 这样面向 对象的语言有一定的经验;对 JavaScript 处于初学阶段,并且完全是一个 Node.js 的新手。 这里指的适合对其他编程语言有一定经验的开发者,意思是说,本书不会对诸如数据类型、变量、控 制结构等等之类非常基础的概念作介绍。要读懂本书,这些基础的概念我都默认你已经会了。 然而,本书还是会对 JavaScript 中的函数和对象作详细介绍,因为它们与其他同类编程语言中的函 数和对象有很大的不同。

最后,会和大家讨论如何设计一个“真正”完整的应用,剖析要完成该应用需要实现的不同模块,并 一步一步介绍如何来实现这些模块。 可以确保的是,在这过程中,大家会学到 JavaScript 中一些高级的概念、如何使用它们以及为什么 使用这些概念就可以实现而其他编程语言中同类的概念就无法实现。 该应用所有的源代码都可以通过本书Github¹代码仓库.

JavaScript 最早是运行在浏览器中,然而浏览器只是提供了一个上下文,它定义了使用 JavaScript 可 以做什么,但并没有“说”太多关于 JavaScript 语言本身可以做什么。事实上, JavaScript 是一门 “完整”的语言:它可以使用在不同的上下文中,其能力与其他同类语言相比有过之而无不及。 Node.js 事实上就是另外一种上下文,它允许在后端(脱离浏览器环境)运行 JavaScript 代码。

本书致力于教会你如何用 Node.js 来开发应用,过程中会传授你所有所需的“高级” JavaScript 知 识。本书绝不是一本“Hello World”的教程。

你正在阅读的已经是本书的最终版。因此,只有当进行错误更正以及针对新版本 Node.js 的改动进行 对应的修正时,才会进行更新。 本书中的代码案例都在 Node.js 0.4.9 版本中测试过,可以正确工作。

要实现在后台运行 JavaScript 代码,代码需要先被解释然后正确的执行。Node.js 的原理正是如此, 它使用了 Google 的 V8 虚拟机(Google 的 Chrome 浏览器使用的 JavaScript 执行环境) ,来解释和 执行 JavaScript 代码。 除此之外,伴随着 Node.js 的还有许多有用的模块,它们可以简化很多重复的劳作,比如向终端输出 字符串。 因此,Node.js 事实上既是一个运行时环境,同时又是一个库。 要使用 Node.js, 首先需要进行安装。关于如何安装 Node.js,这里就不赘述了,可以直接参考官方的 安装指南。¹安装完成后,继续回来阅读本书下面的内容。

读完本书之后,你将完成一个完整的 web 应用,该应用允许用户浏览页面以及上传文件。 当然了,应用本身并没有什么了不起的,相比为了实现该功能书写的代码本身,我们更关注的是如 何创建一个框架来对我们应用的不同模块进行干净地剥离。是不是很玄乎?稍后你就明白了。 本书先从介绍在 Node.js 环境中进行 JavaScript 开发和在浏览器环境中进行 JavaScript 开发的差异开 始。 紧接着,会带领大家完成一个最传统的“Hello World”应用,这也是最基础的 Node.js 应用。

发表回复

您的电子邮箱地址不会被公开。 必填项已用 * 标注