Nodejs(五)

来源:互联网 发布:淘宝店大量宝贝复制 编辑:程序博客网 时间:2024/06/02 04:03

http模块提供了两个函数http.request和http.get,功能是作为客户端向http服务器发起请求。
http.request(options, callback)发起http请求,接受两个参数,options是一个类似关联数组的对象,表示请求的参数,callback是请求的回调函数,options常用的参数如下:
host:请求网站的域名或IP地址
port:请求网站的端口,默认是80
method:请求方法,默认是get
path:请求的相对于根的路径,默认是/,QueryString应该包含在其中,例如:search?query=m
headers:一个关联数组,为对象请求头的内容
callback传递一个参数,为http.ClientResponse的实例
http.request返回一个http.ClientRequest的实例

http.get(options, callback)http模块还提供了一个更加简便的方法用于处理GET请求:http.get。它是一个http.request的简化版,唯一的区别在于http.get自动将请求方法设置为get请求,同时不需要手动调用resp.end()。

http.ClientRequest
该对象是由http.request或http.get方法直接返回的对象,表示一个已经产生而且正在进行的http请求,它提供了respose事件,即http.request或http.get第二个参数回调函数的绑定对象,请求必须调用end方法结束请求。
提供的函数:
request.abort()终止正在发送的请求
request.setTimeOut(timeout, callback)设置请求超时时间,timeout为毫秒数,当请求超时后,callback将会被调用。

http.ClientResponse
该对象是与http.ServerResponse类似,提供三个事件:data,end,close,分别在数据到达,传输结束和链接结束时触发,其中data事件传递一个参数chunk,表示接收到的数据.
属性,表示请求的结果状态
statusCode:HTTP状态码,httpVersion:http协议版本,headers:http请求头,trailers:http请求尾
函数:resp.setEncoding设置返回结果的编码,默认为null,返回二进制的chunk数据。
resp.pause(),暂停接收数据和事件,方便下载功能
resp.resume()从暂停状态中恢复

为什么要用Express框架?
nodejs由于不需要另外的http服务器,因此减少了一层抽象,能给性能带来不少的提升,同时也因此提高了开发难度。nodejs虽然提供了http模块,却不是让你直接用这个模块进行web开发,http模块仅仅是一个http服务器内核的封装。Express对底层的细节做了封装,能够快速开发。

Express框架
npm提供了大量的第三方模块,其中不乏许多web框架,我们没必要重复发明轮子,因而选择使用Express作为开发框架,目前最稳定且唯一一个Web开发框架。
提供更高层的接口外,还实现了许多功能,如下:
路由控制,模板解析支持,动态视图,用户会话,CSRF保护,静态文件服务,错误控制器,访问日志,缓存,插件支持。

安装Express
如果一个包是某个工程依赖,我们需要使用本地模式安装即可,但是Express想很多框架一样都提供了快速开发工具,这个工具功能通常建立一个网站最小的基础框架,在此基础上完成开发,当然可以自己建立。
npm install -g express
express在初始化一个项目的时候通常需要指定模板引擎,模式支持jade和ejs,为了降低学习难度可以从ejs入手。

建立工程
express ejs pcat,当前目录产生pcat并且产生一些文件:
pcat
pcat/package.json
pcat/app.js
….
提示我们进入pcat目录执行npm install,它自动安装依赖ejs和express,检查目录中的package.json文件内容的dependencies,如果没有相关的包就安装。

启动服务
用Express实现的网站实际上就是一个nodejs程序,因此可以直接运行,我们运行node app.js,看到express server listening on port 3000 in development mode。打开浏览器访问即可。如果在修改代码后不想重启服务才能看到效果,则使用supervisor实现监视代码修改和自动重启。

我们使用了express生成了package.json,它只产生了javascript的app.js和routes/index.js。模板引擎ejs有文件和index.js,此外还有样式表style.css。
app.js工程的入口
分析代码:

0 0