PhoneGap中文网

 找回密码
 立即注册
查看: 14938|回复: 0
打印 上一主题 下一主题

Node.js框架之express

[复制链接]

10

主题

13

帖子

97

积分

注册会员

Rank: 2

积分
97
跳转到指定楼层
楼主
发表于 2015-11-3 10:02:52 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
Express介绍
npm提供了大量的第三方模块,Express是其中轻量级的Web框架,它提供一系列强大的功能,比如:模板解析、静态文件服务、中间件、路由控制等等,还可以创建各种 Web和移动设备应用,是最流行的基于Node.js的Web开发框架。
1. NPM安装
npm install express
2. 获取、引用
var express = require('express');var app = express();
通过变量“app”我们就可以调用express的各种方法了!
创建应用
认识了Express框架,我们开始创建我们的第一个express应用。
在我们的默认项目主文件app.js添加如下内容:
var express = require('express');var app = express();app.get('/', function (request, response) {  response.send('Hello World!');});app.listen(80);
说明:在后面课程学习中,我们会统一使用80端口用于监听请求。
添加完毕之后,通过右侧栏的“测试地址”来查看浏览器内容,当看到“Hello World!”内容就表明一个简单的express应用已经创建成功了。
get请求
get方法 —— 根据请求路径来处理客户端发出的GET请求。
格式:app.get(path,function(request, response));
path为请求的路径,第二个参数为处理请求的回调函数,有两个参数分别是request和response,代表请求信息和响应信息。
如下示例:
var express = require('express');var app = express();app.get('/', function(request, response) {  response.send('Welcome to the homepage!');});app.get('/about', function(request, response) {  response.send('Welcome to the about page!');});app.get("*", function(request, response) {  response.send("404 error!");});app.listen(80);
上面示例中,指定了about页面路径、根路径和所有路径的处理方法。并且在回调函数内部,使用HTTP回应的send方法,表示向浏览器发送一个字符串。
参照以上代码,试试自己设定一个get请求路径,然后浏览器访问该地址是否可以请求成功。
Middleware<中间件>
1.什么是中间件?
中间件(middleware)就是处理HTTP请求的函数,用来完成各种特定的任务,比如检查用户是否登录、分析数据、以及其他在需要最终将数据发送给用户之前完成的任务。 它最大的特点就是,一个中间件处理完,可以把相应数据再传递给下一个中间件。
2.一个不进行任何操作、只传递request对象的中间件,大概是这样:
function Middleware(request, response, next) {  next();}
上面代码的next为中间件的回调函数。如果它带有参数,则代表抛出一个错误,参数为错误文本。
function Middleware(request, response, next) {  next('出错了!');}
抛出错误以后,后面的中间件将不再执行,直到发现一个错误处理函数为止。如果没有调用next方法,后面注册的函数也是不会执行的。
all函数的基本用法
和get函数不同app.all()函数可以匹配所有的HTTP动词,也就是说它可以过滤所有路径的请求,如果使用all函数定义中间件,那么就相当于所有请求都必须先通过此该中间件。
格式:app.all(path,function(request, response));
如下所示,我们使用all函数在请求之前设置响应头属性。
var express = require("express");var app = express();app.all("*", function(request, response, next) {  response.writeHead(200, { "Content-Type": "text/html;charset=utf-8" }); //设置响应头属性值next();});app.get("/", function(request, response) {  response.end("欢迎来到首页!");});app.get("/about", function(request, response) {  response.end("欢迎来到about页面!");});app.get("*", function(request, response) {  response.end("404 - 未找到!");});app.listen(80);
上面代码参数中的“*”表示对所有路径有效,这个方法在给特定前缀路径或者任意路径上处理时会特别有用,不管我们请求任何路径都会事先经过all函数。
use基本用法1
use是express调用中间件的方法,它返回一个函数。
格式:app.use([path], function(request, response, next){});
//可选参数path默认为"/"。
1. 使用中间件
app.use(express.static(path.join(__dirname, '/')));
如上呢,我们就使用use函数调用express中间件设定了静态文件目录的访问路径(这里假设为根路径)。
2. 如何连续调用两个中间件呢,如下示例:
var express = require('express');var app = express();app.use(function(request, response, next){    console.log("method:"+request.method+" ==== "+"url:"+request.url);    next();});app.use(function(request, response){    response.writeHead(200, { "Content-Type": "text/html;charset=utf-8" });    response.end('示例:连续调用两个中间件');});app.listen(80);
回调函数的next参数,表示接受其他中间件的调用,函数体中的next(),表示将请求数据传递给下一个中间件。
上面代码先调用第一个中间件,在控制台输出一行信息,然后通过next(),调用第二个中间件,输出HTTP回应。由于第二个中间件没有调用next方法,所以req对象就不再向后传递了。
限于篇幅,更多示例和在线练习可以去这里看看:http://www.hubwiz.com/course/544db33888dba01ef09d0682/
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

关闭

站长推荐 上一条 /1 下一条

ionic4视频教程

Archiver|手机版|小黑屋| PhoneGap中文网 ( 京ICP备13027796号-1 )  

GMT+8, 2024-4-24 12:13 , Processed in 0.039707 second(s), 29 queries .

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表