一:express包含的底层技术以及中间件的含义
底层:http模块
Express框架建立在node.js内置的http模块上。http模块生成服务器的原始代码如下。
var http=require("http");
var app=http.createServer(function(request,response){
response.writeHead(200,{"Content-Type":"text/plain"});
response.end("Hello world!");});
app.listen(3000,"localhost");
上面代码的关键是http模块的createServer方法,表示生成一个HTTP服务器实例。该方法接受一个回调函数,该回调函数的参数,分别为代表HTTP请求和HTTP回应的request对象和response对象。
Express框架的核心是对http模块的再包装。上面的代码用Express改写如下。
var express=require('express');
var app=express();
app.get('/',function(req,res){
res.send('Hello world!');
});
app.listen(3000);
比较两段代码,可以看到它们非常接近。原来是用http.createServer方法新建一个app实例,现在则是用Express的构造方法,生成一个Epress实例。两者的回调函数都是相同的。Express框架等于在http模块之上,加了一个中间层。
什么是中间件
简单说,中间件(middleware)就是处理HTTP请求的函数。它最大的特点就是,一个中间件处理完,再传递给下一个中间件。App实例在运行过程中,会调用一系列的中间件。
每个中间件可以从App实例,接收三个参数,依次为request对象(代表HTTP请求)、response对象(代表HTTP回应),next回调函数(代表下一个中间件)。每个中间件都可以对HTTP请求(request对象)进行加工,并且决定是否调用next方法,将request对象再传给下一个中间件。
一个不进行任何操作、只传递request对象的中间件,就是下面这样。
functionuselessMiddleware(req,res,next){next();}
上面代码的next就是下一个中间件。如果它带有参数,则代表抛出一个错误,参数为错误文本。
functionuselessMiddleware(req,res,next){next('出错了!');}
抛出错误以后,后面的中间件将不再执行,直到发现一个错误处理函数为止。
二:安装express模块
首先假定你已经安装了 Node.js,接下来为你的应用创建一个目录,然后进入此目录并将其作为当前工作目录。
$ mkdir myapp
$ cd myapp
通过 npm init 命令为你的应用创建一个 package.json 文件。 欲了解 package.json 是如何起作用的,请参考 Specifics of npm’s package.json handling。
$ npm init
此命令将要求你输入几个参数,例如此应用的名称和版本。 你可以直接按“回车”键接受默认设置即可,下面这个除外:
entry point: (index.js)
键入 app.js 或者你所希望的名称,这是当前应用的入口文件。如果你希望采用默认的 index.js 文件名,只需按“回车”键即可。
接下来安装 Express 并将其保存到依赖列表中:
$ npm install express --save
如果只是临时安装 Express,不想将它添加到依赖列表中,只需略去 --save 参数即可:
$ npm install express
图2-1 安装express 图2-2 查看生成的文件安装 Node 模块时,如果指定了 --save 参数,那么此模块将被添加到 package.json 文件中 dependencies 依赖列表中。 然后通过 npm install 命令即可自动安装依赖列表中所列出的所有模块。
三.express的hello world实例
接下来,我们一起创建一个基本的 Express 应用。
注意:这里所创建是一个最最简单的 Express 应用,并且仅仅只有一个文件 — 和通过 Express 应用生成器 所创建的应用_完全不一样_,Express 应用生成器所创建的应用框架包含多个 JavaScript 文件、Jade 模板和针对不同用途的子目录。
进入 myapp 目录,创建一个名为 app.js 的文件,然后将下列代码复制进去:
var express=require('express');
var app=express();
app.get('/',function(req,res){res.send('Hello World!');});
var server=app.listen(3000,function(){
var host=server.address().address;
var port=server.address().port;
console.log('Example app listening at http://%s:%s',host,port);
});
上面的代码启动一个服务并监听从 3000 端口进入的所有连接请求。他将对所有 (/) URL 或 路由 返回 “Hello World!” 字符串。对于其他所有路径全部返回 404 Not Found。
req (请求) 和 res (响应) 与 Node 提供的对象完全一致,因此,你可以调用 req.pipe()、req.on('data', callback) 以及任何 Node 提供的方法。
通过如下命令启动此应用:
$ node app.js
然后在浏览器中打开 http://localhost:3000/ 并查看输出结果。
运行程序部分内容转载来源:http://www.cnblogs.com/mq0036/p/5243312.html
网友评论