手机版

Nodejs学习项目[入门]

时间:2021-11-01 来源:互联网 编辑:宝哥软件园 浏览:

一、安装。

首先,去http://nodejs.org下载安装。我的版本是0.8.14。安装非常简单,这是下一步。然后在路径中配置安装目录,msi将一起安装npm(节点包管理器)。

这里写图片描述

我的安装目录是c: \程序文件(x86) \ nodejs。此时,使用cmd命令窗口node -v,npm -v命令查看安装的版本。

1.1、helloworld

在Node.js项目目录中创建新的hello.js文件,并在其中键入一行代码。

console.log('您好,nodejs。) ;进入命令行控制台,进入Node.js项目目录,键入nodehello.js。

控制台输出“你好,nodejs。”

1.2.网络版的helloworld。

在Node.js项目目录中,使用以下代码创建一个新的http.js。

var http=require(' http ');http.createServer(函数(请求,响应){ response.writeHead(200,{ ' Content-Type ' : ' text/html ' });回应。写下(‘你好,世界!’);response . end();}).听(8000);在命令行上,启动服务并键入nodehttp.js。

然后打开浏览器地址栏输入http://localhost:8000/,在页面看到Hello World输出!成功了。

node.js的版本必须与API同步。

node.js的版本号是正规的,偶数版本稳定,奇数版本不稳定。

2 HelloWorld代码分析

好了,从现在开始,一行行分析我们的地狱世界。

介绍模块

var http=require(' http ');require方法用于引入模块,参数是模块的名称。例如,文件系统模块可以介绍如下:

var fs=require(' fs ');我们可以使用require()方法作为全局方法,但实际上它更像是属于某个模块的局部方法。这里引用了它的文档:https://nodejs.org/api/globals.html.

require方法返回一个模块的实例,例如,require(“HTTP”)返回一个HTTP实例。HTTP实例的参考文档在这里:https://nodejs.org/api/http.html.

我们可以看到,HTTP模块有一个方法createServer(),它涉及到我们的第二行代码。

创建服务器

HTTP模块的createServer()方法接受一个方法作为参数,原型是:

Http . create server([request listener])request listener是一个与http的请求事件关联的方法。服务器类。这样,当客户端请求到达时,将调用requestListener。

requestListener有两个参数,原型函数如下:

函数的第一个参数request的类型(request,response) {}是http。IncomingMessage,它实现了可读流接口。第二个参数的类型是http。服务器响应,实现可写流接口。

Stream的API在这里:https://nodejs.org/api/stream.html.同时,请求和响应也是EventEmitter,可以发出特定的事件。

事件发射器的API在这里:https://nodejs.org/API/events.html #事件_类_事件_事件发射器。稍后,我们将讨论如何使用eventemitter来发出和处理事件。

让我们回顾一下创建服务器的代码:

http.createServer(函数(请求,响应){ response.writeHead(200,{ ' Content-Type ' : ' text/plain ' });回应。写下(‘你好,世界!’);response . end();}).听(8000);Http.createServer返回http.Server的一个实例,http.server的listen方法允许服务器监听一个端口,示例中是8000。

如您所见,我们为createServer方法提供了一个匿名函数。用这种方法,我们写回了“你好世界!”通过响应参数传递给客户端。留言。

分析客户请求。

我们前面分析了http.createServer方法,它的参数是一个有两个参数的方法,一个代表客户端发送的请求,另一个代表要写回客户端的响应。让我们看看请求参数。

该请求是HTTP的一个实例。IncomingMessage通过这个实例,我们可以得到请求参数,比如http方法、HTTP版本、url、头等。具体的API在这里:https://nodejs.org/api/http.html#http_http_incomingmessage.

让我们通过修改HelloWorld.js来看一下(保存为HelloWorld2.js)。代码如下:

//引入http模块var http=require(' http ');//创建服务器,并指定函数http . create server(function(request,response){ console . log(' method-' request . method);console . log(' version-' request . httpversion);console . log(' URL '-request . URL);response.writeHead(200,{ ' Content-Type ' : ' text/plain ' });回应。写下(‘你好,世界!’);response . end();}).听(8000);console . log(‘Hello World开始监听端口8000’);如您所见,我使用console对象输出了一些调试信息,并打印了HTTP方法、版本、url等信息。可以执行node HelloWorld2.js,通过浏览器访问http://localhost:8000,然后运行到命令行看输出什么信息。我在这里:

这里写图片描述

我们简单的HelloWorld已经可以向客户端发送一些响应数据了,可以看到“Hello World!”在浏览器中。文字。响应通过http的实例响应发送给客户端。服务器响应.

Http。服务器响应也是一个流或事件发射器。我们通过它向客户端返回HTTP状态代码、数据、HTTP头等信息。

http模块在Node.js的HTTP模块中,状态行通过HTTP的writeHead方法写入客户端。服务器响应写头方法原型如下:

响应的第一个参数。writehead (statusCode [,statusmessage] [,headers])是statusCode,即200和403等数字,其余参数是可选的。最后一个参数是headers,可以用JSON对象表示法写一些HTTP头,比如{“内容类型”:“文本/纯文本”,“内容长度”:11}。第一个可选参数statusMessage用于指定状态描述消息,该消息可能不需要填写。

HTTP头

标头只是一些键值对,比如我们在HelloWorld中看到的“Content-Type”,就是用来描述数据类型的标头标签,对应的标头标签可能是文本文件、图片、视频、二进制文件等。类似地,“内容长度”用于指定数据长度。还有很多,比如“日期”、“连接”等等。详情请参考前面的链接。

也可以使用HTTP的response.setHeader(名称、值)方法。ServerResponse单独设置头,一次可以设置一个http头。

数据

之后,就会有数据。一些状态代码,如200,后面会有一些数据。而一些,例如301、404、403和500,没有数据。

数据通过http的write方法写回客户端。服务器响应,例如:

response . setheader(' Content-Type ',' text/html ');这里需要提到的是,HTTP常见的数据传输编码方式有两种:

设置内容长度,传输固定长度的数据,将传输编码头设置为分块,并分块传输数据。

像我们当前的HelloWorld示例一样,如果没有设置Content-Length头,默认情况下Node.js的HTTP模块将被分块。

当我们使用Chrome浏览器的开发者工具查看网络数据时,可以清晰的看到。如下图所示:

这里写图片描述

HTTP响应

我标记的三个地方是HelloWorld示例传递给浏览器的HTTP头信息。

我们通过http的write方法向客户端写入数据。服务器响应您可以一次写入所有数据,也可以分离数据并多次写入。当要传输的数据量较大时,多次写入是合理的。例如,如果您向客户端发送一个大文件,则更适合多次写入。还可以利用Node.js的异步特性来获得良好的性能。

版权声明:Nodejs学习项目[入门]是由宝哥软件园云端程序自动收集整理而来。如果本文侵犯了你的权益,请联系本站底部QQ或者邮箱删除。