Node.js学习:介绍篇



Node.js 是个很棒的新技术,但是除非您本来就是个很厉害的 Javascript 工程师,否则要想熟练的掌握这门技术还是有点让人小恼火的。可这也是为啥我们要来学习这个系列!如果您是真打算学习使用 Node.js , 这儿算是来着了。

初步介绍

在这个系列里,我们使用 Node 来创建一个简单的博客引擎,就象他们所使用的 Ruby Rails等工具做的一样。这一系列文章主要告诉你,Node 是如何工作的,也包括他是如何和当前很流行的网站开发的框架协同工作的,比方说Express 或者是 Getty. 看完这个系列应该能让你了解 Node 的内部工作机制,可以做内部代码调整,以达到您的需要。

安装

在我开始介绍什么是 Node, 以及为啥要用他之前,让我们先从Node 的安装开始吧。因为这安装说起来容易,可也确实要花点时间。

Node 还是很新的技术,做为现在很活跃的开发环境,最好还是用源码进行安装。 换句话说, Node 的安装并没有太多依赖条件, 所以他的编译复杂性并不会比你以前安装过的那些程序更难。 可以在 Node.js的官网上面拿到所需的代码。 浏览下载页面,你会发现有很多选择。 如果您要做 Git安装,那么就做一个代码库的镜像,然后从那里直接安装。 或者你也可以直接从这里提供的链接下载 tarball 文件来安装。我会从 tar 文件进行安装。

下载过程需要花点时间,那我们就用这个时间来说一个重要的事,在 Windows 上要给Node 留一个端口,会有专门的指导文件告诉你,如何把 Cygwin 或者是 MinGW安装在Windows 上面。网站上还有一些二进制的安装包,也可以选来安装,在写这篇文章之时,主要的安装环境还就是 Unix Linux. Windows安装时,你可以点安装指导文件,跟着安装指导文件的说明一步步来,或者也可以安装在 Linux 的各个版本上,比方说Ubuntu.

下载完后,只要用 tar –vxf 解开安装包,并且用cd 进到该解压缩创建的目录之下。首先我们得执行 ./configure , 然后 make 最后是make install. 这个过程要花点时间,所以让安装在后台运行吧,我们趁这个时间再聊点别的,为啥Node会在网站开发圈引起这么大的振动?

介绍 Node

如果您是第一次接触 Node 相关的文章或视频,可能会嘀咕,有那么多成熟的网站开发的框架可选了,这Node 还有啥特别的地方值得学习。对于初学者来说,这个理由很重要: Node 是服务器上的 JavaScript, 让我们面对他,如果您做为网站开发人员,爱他也好恨他也罢,在某种程度上都得和 JS 一起工作。使用 JS做为您后端开发语言,就和在前端一样好,你也无须要不在不同的内容间不断切换。

好,我知道你现在可能在想: 所以 Node 就是运行在服务器上的JavaScript嘛,那没问题,但过去也存在了很多试图在服务器上运行的 JavaScript框架,最后不都死翘翘了。

什么让 Node和其他应用不同?

那么,简单来说: Node 就是服务器端JavaScript,也是做的最好的。 对于那些传统的,利用 JS的, 使用 MVC 网站框架的 ,我只能说Node和他们都完成不一样, 什么意思呢?我们从V8开始讲起。

V8算是一款精巧的可以实时进行编译的应用,他能够让用户使用其他动态语言,比方说:Python Ruby, 这些动态加载语言的速度达到象 javascript 一样快。利用一些基准工具测测,你会惊到的。 V8 JavaScript 一般会是在在某些 JVM为基础的程序之上的,比方 Clojure 以及 java, 以及 编译语言,比方 在很多情况下使用的 Go.

另外一个重要的陈述就是事件 I/O, 这事儿就大了。 在创建一个网站服务器时,一般你有两个选择,去处理多并发连接请求。 第一: 传统的路线是采用网站服务器,比方 Apache,他是利用线程来处理进来的连接请求。 另外一个方法,就是采用 Node 以及另外一些非常快的现代服务器架构,比方 Nginx Thin,他们都是在事件循环中使用一个单的,非阻塞型的线程。这里就是为啥要用 javaScript ,最闪亮的原因了, 因为JavaScript 设计出来就是被应用在这种单线程事件事件循环为基础的环境下:浏览器!  Javascipt 可能在这种封闭的环境下传递信息,让以事件为基础的程序非常简单。 你要做的就是调用一个函数,去执行一些类型的 I/O,然后把相应的信息传递给回递函数,javaScript自动创建一个终止,确保正确的状态会被长久的保留,甚至在调用函数过了很长时间,或者已经失效。但这些都是一些术语,我相信你更想看一些实际的代码。 我也将加快速度,等安装完成,我们就可以开始试试我们最新的,好玩的 node了。

确定安装

查看一下后台,似乎我们的安装程序已经完成; 让我来快速检查一下,确定程序已经安装好了。 做这个很简单:就在终端命令行里运行一下 node – version 即可, 你应该可以看到一些提示信息,告诉你当前正在运行的 Node 的最新版本是什么, 我这里的,是 0.4.5 当你看到这些提示信息,就表示 Node 已经准备好了,您可以开始写第一个 Node 的应用了。使用 cd命令回到根目录下,创建一个新的目录以包括我们这个项目的所有代码。 我这里就把这个目录取名叫做 blog, 然后使用cd 命令进到该目录下。

Node – 服务器端的框架

不同于其它的框架,Node 并不会就严格限定于做为网站开发。实际上,你可以把 Node 当成一个框架,用在各种服务器端的开发。使用 Node 你可以建立IRC 服务器,聊天室服务器,或者,在后续的一些教程中会提及的, 做为http 的服务器。 对于一个程序员来说,所有的语言介绍都来自于 “Hello World”的经典事例,我们也从这儿开始吧。

Hello World

首先我们创建一个文件名字叫做 app.js. 现在Node 已经可以提供大量的库文件,所以在开发以事件为基础的服务器来说,会相当容易。 要想使用这些库文件,你只需要简单的在所要使用的函数里面包括进去这个模块就好了。 需要调用的函数会返回一个对象,以表示你要传递进来的模块,您可以把这个对象抓取到变量中。在创建 HTTP 服务器时, Node 就会提供一个 http 的库。 让我们继续前进吧,请求 HTTP 库,同时把返回的对象赋给 http变量。

接下来,我们就要真正开始创建服务器了。 http 库文件提供了一个函数,叫做 CreateServer. 该函数启动一个回调函数,并且返回一个新的服务器对象。

当这个HTTP请求建好以后, 监听功能就会被调用, HTTP 请求就会建立成对象,同时响应会被传递进函数中。 我们可以再次使用监听功能中的响应对象,把响应送回到浏览器上。 要做到家个, 我们要先出正确的 HTTP头信息, 这里,我们调用响应对象中的 writeHead 函数.

writeHead  函数带有几个参数。 头一个就是一个整数,表示的是请求的状态代码,我们这里应该是 200, 就是表示 OK的意思。 第二个是一个对象容器,里面装满了所有的响应头文件,我们后面都要用到设置的。在这个例子里,我们只是把 content-type设置为 text/plain, 表示我们要求返回的都是纯文本。

一旦我们设置好了头文件,就可以传送这些数据了。 要做这事,你需要调用 write 函数,并把要传递的数据传递给他。 在里,让我们在响应对象里面调用 write 函数 并且把字符串 hello world 传递给他。

实际传送响应时,我们需要给服务器一个信号,表示我们已经完成了封装响应; 这个功能是通过调用 response.end来实现的。 end 函数也允许我们传数据, 所以我们就可以简化一下服务器端的代码,把早前我们调用的 write 函数去掉,而是把 Hello World 这个字串放在 end 函数里面进行传递。

现在我们已经创建好了服务器,我们就需要启动他去监听新的请求了。

这个就很简单了:在服务器的对象内调用监听函数,并给他传递一个端口参数去监听; 在这个例子里,我们的端口号是 8000. 监听函数也可以带其它可选的参数,比方说主句的 URL, 但因为我们这个例子是在本地运行的,所以我们暂时先不用这个参数。

最后让我们也打印出一些信息来,以便于我们真正能知道,服务器正在运行,同时也能看到他正在监听哪个端口以得到新的请求。你也可以从console.log文件里面得到这些信息。现在可以开始了,通过调用 Node来运行应用并且传递给他我们要执行的文件名。

不深思则不能造于道。不深思而得者,其得易失。

名人名言- 曾国藩
  • By 优联实达
  • 2015-10-30
  • 1842
  • 公司新闻,网站开发,网站设计,UI