使用 Express 框架,当在浏览器中访问 http://localhost:3000/ 时,输出 Hello Worldnode
$ npm install express
新建一个 app.js 文件正则表达式
// 这句的意思就是引入 `express` 模块,并将它赋予 `express` 这个变量等待使用。 var express = require('express'); // 调用 express 实例,它是一个函数,不带参数调用时,会返回一个 express 实例,将这个变量赋予 app 变量。 var app = express(); // app 自己有不少方法,其中包括最经常使用的 get、post、put/patch、delete,在这里咱们调用其中的 get 方法,为咱们的 `/` 路径指定一个 handler 函数。 // 这个 handler 函数会接收 req 和 res 两个对象,他们分别是请求的 request 和 response。 // request 中包含了浏览器传来的各类信息,好比 query 啊,body 啊,headers 啊之类的,均可以经过 req 对象访问到。 // res 对象,咱们通常不从里面取信息,而是经过它来定制咱们向浏览器输出的信息,好比 header 信息,好比想要向浏览器输出的内容。这里咱们调用了它的 #send 方法,向浏览器输出一个字符串。 app.get('/', function (req, res) { res.send('Hello World'); }); // 定义好咱们 app 的行为以后,让它监听本地的 3000 端口。这里的第二个函数是个回调函数,会在 listen 动做成功后执行,咱们这里执行了一个命令行输出操做,告诉咱们监听动做已完成。 app.listen(3000, function () { console.log('app is listening at port 3000'); });
执行express
$ node app.js
这时候咱们的 app 就跑起来了,终端中会输出 app is listening at port 3000。这时咱们打开浏览器,访问 http://localhost:3000/
,会出现 Hello World。npm
载入express 而后使用代码 express()建立一个新的应用程序:json
var express = require('express'); var app = express();
路由方法派生自 HTTP 方法之一,附加到 express 类的实例。浏览器
如下代码是为访问应用程序根目录的 GET 和 POST 方法定义的路由示例。app
// GET method route app.get('/', function (req, res) { res.send('GET request to the homepage'); }); // POST method route —— 根据请求路径来处理客户端发出的Post请求。 app.post('/', function (req, res) { res.send('POST request to the homepage'); });
Express 支持对应于 HTTP 方法的如下路由方法:get、post、put、head、delete、options、trace、copy、lock、mkcol、move、purge、propfind、proppatch、unlock、report、mkactivity、checkout、merge、m-search、notify、subscribe、unsubscribe、patch、search 和 connect。框架
路由路径与请求方法相结合,用于定义能够在其中提出请求的端点。路由路径能够是字符串、字符串模式或正则表达式。dom
此路由路径将请求与根路由 / 匹配。函数
app.get('/', function (req, res) { res.send('root'); });
此路由路径将请求与 /about 匹配。
app.get('/about', function (req, res) { res.send('about'); });
此路由路径将请求与 /random.text 匹配。
app.get('/random.text', function (req, res) { res.send('random.text'); });
此路由路径将匹配 acd 和 abcd。
app.get('/ab?cd', function(req, res) { res.send('ab?cd'); });
此路由路径将匹配 abcd、abbcd、abbbcd 等。
app.get('/ab+cd', function(req, res) { res.send('ab+cd'); });
此路由路径将匹配 abcd、abxcd、abRABDOMcd、ab123cd 等。
app.get('/ab*cd', function(req, res) { res.send('ab*cd'); });
此路由路径将匹配 /abe 和 /abcde。
app.get('/ab(cd)?e', function(req, res) { res.send('ab(cd)?e'); });
此路由路径将匹配名称中具备“a”的全部路由。
app.get(/a/, function(req, res) { res.send('/a/'); });
此路由路径将匹配全部以fly结尾的字符串 xfly、 butterfly,可是不匹配 butterflyman、dragonfly man 等。
app.get(/.*fly$/, function(req, res) { res.send('/.*fly$/'); });
单个回调函数能够处理一个路由
app.get('/example/a', function (req, res) { res.send('Hello from A!'); });
多个回调函数能够处理一个路由(确保您指定 next 对象)
app.get('/x/b', function (req, res, next) { console.log('the response will be sent by the next function ...'); next(); console.log('111'); // next()执行完以后再打印 }, function (req, res) { console.log('222'); res.send('Hello from B!'); console.log('333'); });
独立函数与一组函数的组合能够处理一个路由。例如:
var cb0 = function (req, res, next) { console.log('CB0'); next(); } var cb1 = function (req, res, next) { console.log('CB1'); next(); } app.get('/example/d', [cb0, cb1], function (req, res, next) { console.log('the response will be sent by the next function ...'); next(); }, function (req, res) { res.send('Hello from D!'); });
下表中响应对象 (res) 的方法能够向客户机发送响应,并终止请求/响应循环。若是没有从路由处理程序调用其中任何方法,客户机请求将保持挂起状态。
方法 | 描述 |
---|---|
res.download() | 提示将要下载文件 |
res.end() | 结束响应进程 |
res.json() | 发送 JSON 响应 |
res.jsonp() | 在 JSONP 的支持下发送 JSON 响应 |
res.redirect() | 重定向请求 |
res.render() | 呈现视图模板 |
res.send() | 发送各类类型的响应 |
res.sendFile | 以八位元流形式发送文件 |
res.sendStatus() | 设置响应状态码并以响应主体形式发送其字符串表示 |