文档章节

二、第一个 Express 框架实例

我是希希呀
 我是希希呀
发布于 06/11 10:48
字数 1258
阅读 3
收藏 0

目标

使用 Express 框架,当在浏览器中访问 http://localhost:3000/ 时,输出 Hello World

安装express

$ 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');
});

执行

$ node app.js

这时候我们的 app 就跑起来了,终端中会输出 app is listening at port 3000。这时我们打开浏览器,访问 http://localhost:3000/,会出现 Hello World。

Express框架

载入express 然后使用代码 express()创建一个新的应用程序:

var express = require('express');
var app = express();

路由方法

路由方法派生自 HTTP 方法之一,附加到 express 类的实例。

以下代码是为访问应用程序根目录的 GET 和 POST 方法定义的路由示例。

// 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。

路由路径

路由路径与请求方法相结合,用于定义可以在其中提出请求的端点。路由路径可以是字符串、字符串模式或正则表达式。

基于字符串的路由路径

此路由路径将请求与根路由 / 匹配。

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() 设置响应状态码并以响应主体形式发送其字符串表示

© 著作权归作者所有

我是希希呀
粉丝 1
博文 25
码字总数 10195
作品 0
杭州
私信 提问
nodejs(八)express使用详解

express使用教程 [TOC] 1.1 介绍 Express 是一个基于 Node.js 封装的上层服务框架,它提供了更简洁的 API 更实用的新功能。它通过中间件和路由让程序的组织管理变的更加容易;它提供了丰富的...

mapengfei47
09/22
0
0
Node图文教程(第四章:express)

框架是一款简洁而灵活的node.js web应用框架。前面我们自己手动创建服务器在中就是一个的事情,这就使得我们更加注重业务的功能和开发效率上,不必纠结过多底层的事情。 Express中文官网:E...

pubdreamcc
05/21
0
0
Express教程01:创建服务器、配置路由

阅读更多系列文章请访问我的GitHub博客,示例代码请访问这里。 Express介绍 基于 Node.js 平台,快速、开放、极简的 Web 开发框架。 Express的特点是易于入门,而且可以使用各种中间件扩展它...

LeeChen
04/22
0
0
运用 node + express + http-proxy-middleware 实现前端代理跨域的 详细实例哦

一、你需要准备的知识储备 运用node的包管理工具npm 安装插件、中间件的基本知识; 2.express框架的一些基础知识,知道如何建立一个小的服务器;晓得如何快速的搭建一个express框架小应用; ...

yulijian
2018/08/09
0
0
10.axios的使用与数据的mock(手把手教你用vue+node+mongodb搭建一个小商城)

具体的代码请移步github GitHub:https://github.com/Ewall1106/mall(请选择分支10) 一、axios官方文档基本阅读 我们先从官方实例上上看看的用法:https://github.com/axios/axios 上面的记...

Ewall_
2018/06/04
0
0

没有更多内容

加载失败,请刷新页面

加载更多

zk中ToBeAppliedRequestProcessor解析

ToBeAppliedRequestProcessor在Leader中 在已处理事务和最后处理事务处理器之间,处理器链上下一个是FinalRequestProcessor public void processRequest(Request request) throws RequestPro...

writeademo
12分钟前
2
0
Allegro快捷键设置-PCB环境

立题简介: 内容:简单介绍Allegro绘制的PCB环境下的快捷键; 来源:实际使用得出; 作用:对Allegro绘制PCB快捷键进行介绍; PCB环境:Cadence 16.6; 立题详解: 对“allegro”板而言,其在...

demyar
13分钟前
2
0
idea maven web项目启动build时报错java.lang.NullPointerException

之前还好好的,重启一下idea就报这个错了,大概率是tomcat没杀掉端口被占用了,在tomcat配置中更换一下sever端口就好了

宇辰OSC
17分钟前
2
0
weed3-2.3.1.查询之输出

Weed3 一个超轻量级ORM框架(只有0.1Mb哦) 源码:https://github.com/noear/weed3 源码:https://gitee.com/noear/weed3 查询可是个复杂的话题了,可能我们80%的数据库处理都在查询。 今天先...

刘之西东
17分钟前
2
0
【Android JetPack系列】数据绑定:DataBinding

参考MVVM

Agnes2017
26分钟前
3
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部