Node.js Express 框架(1)
1.Express介绍
Express 是一个简洁而灵活的 node.js Web应用框架, 提供了一系列强大特性帮助你创建各种 Web 应用,和丰富的 HTTP 工具。
Express的特点:
- 实现了路由功能
- 中间件功能
- 扩展了req和res对象
- 可以集成其他模版引擎
Express的安装:
npm i express -S
2.基本实例
使用express搭建一个基本的服务器:
- 步骤一:引入express
- 步骤二:创建服务对象 express()
- 步骤三:设置路由,根据路径给客户端响应相关的数据
- 步骤四:开启服务
//引入express
const express = require("express")
//创建服务对象
let app = express()
//设置路由,监听根路径的访问
app.get("/",function(req,res){
res.send("<h1>这是首页</h1>")
})
//开启服务,监听80端口
var server = app.listen(80,function(){
//当前当前监听的端口号
var port = server.address().port
console.log(`Server running at http://127.0.0.1:${port}/`)
})

3.注册路由
- 注册路由有几种方法
| 方法 | 说明 |
|---|---|
| app.get() | 只接收客户端get方式提交的请求,且路径必须一致,(忽略query参数) |
| app.post() | 只接收客户端post方式提交的请求,且路径必须一致 |
| app.all() | 不限定请求的方法,但是请求路径要求严格匹配(可使用通配符*匹配所有路径) |
| app.use() | 不限定请求的方法,get/post等都可以。路径模糊匹配,这个路径和他的子路径都可以匹配 |
- app.all()与 app.use()的区别:一个是路径模糊匹配(可匹配/api/xxx等接口),一个是精确匹配(可使用通配符*)
4.向客户端响应数据
- 设置响应头:res.header()
app.all('*', function (req, res, next) {
//跨域允许访问的域名(通配符表示所有域名皆可访问,多个域名用都好隔开)
res.header("Access-Control-Allow-Origin",'*')
//跨域允许的header包含哪些字段
res.header("Access-Control-Allow-Headers","Content-Type,Authorization,X-Requested-With")
//跨域允许的请求方式
res.header("Access-Control-Allow-Methods","PUT,POST,GET,DELETE,OPTIONS")
// 可以带cookies
res.header("Access-Control-Allow-Credentials",1)
//执行下一步(跳转到下一个路由判断中)
next()
})
- 设置HTTP状态码:res.status()
//设置路由,监听根路径的访问
app.get("/unlogin",function(req,res){
//返回数据
res.status(401).end('未登陆')
})
- 向客户端响应数据:res.send(),它会自动发送更多的响应报文头,无需手动设置Content-type(响应数据的同时内部会调用red.end()方法结束此次响应,当前也意味着res.send()只能发送一次)
//发送数组给客户端
res.send([0,1,2,3])

//发送对象给客户端
res.send({name:"雍正",age:45})

- 向客户端响应数据:res.end(),它需要设置Content-type,且只能接收字符串和Buffer,其他类型的数据会报错
5.获取get传参
- 在路径后面拼接 ?key1=val1&key2=val2 的方式被称为 query传参,例如:
http://127.0.0.1/process_get?year=2019&mouth=12&day=13
app.get("/process_get",function(req,res){
console.log(req.query.year)//2019
console.log(req.query.mouth)//12
console.log(req.query.day)//13
res.send("欢迎访问get提交页面")
})
- 通过设置占位符 ,将原本属于路径的信息截取下来的成为params传参。这个方式需要注册路由的时候设置占位符,例如:
http://127.0.0.1/date/2012/12/12
app.get("/date/:year/:mouth/:day",function(req,res){
console.log(req.params.year)//2012
console.log(req.params.mouth)//10
console.log(req.params.day)//13
res.send('欢迎访问params页面')
})
6.获取post传参
中间件:post方式提交的数据存放到请求体中,不在请求头,要解析请求体的数据,需要用到中间件 body-parse
参数位置:安装body-parse,并引入入口文件中,进行相应的配置后,req会多出一个属性req.body,post方式提交的数据就存放在req.body中
安装body-parse
npm install body-parse
- 引入 body-parse 进行相应的配置
var app = express()
var bodyParser = require('body-parser')
var app = express()
// parse application/x-www-form-urlencoded
app.use(bodyParser.urlencoded({ extended: false }))
// parse application/json
app.use(bodyParser.json())
// parse text
app.use(bodyParser.text())
app.post("/process_post",function(req,res){
res.send("欢迎访问post提交页面")
console.log(req.body)
})

{year:'2019',mouth:'10',day:'13'}
7.静态资源托管服务
- express.static():可以进行静态资源托管服务,一般与app.use()注册路由搭配使用
//加载express
const express = require('express');
const path = require('path');
//创建服务对象
var app = express();
//访问/static下的路径视为访问静态资源 http://example.com/static/3.png => public/3.png
app.use('/static', express.static(path.join(__dirname,'public')));
//启动服务
app.listen(8080,function(){
console.log('http://localhost:8080');
})
- 设置多个根目录(当 public目录中找不到 资源文件时会接着去public2找)
app.use('/static', express.static(path.join(__dirname,'public')));
app.use('/static', express.static(path.join(__dirname,'public2')));
Node.js Express 框架(1)的更多相关文章
- Node.js Express 框架
Node.js Express 框架 Express 简介 Express 是一个简洁而灵活的 node.js Web应用框架, 提供了一系列强大特性帮助你创建各种 Web 应用,和丰富的 HTTP ...
- Node.js Express框架
Express 介绍 Express是一个最小的,灵活的Node.js Web应用程序框架,它提供了一套强大的功能来开发Web和移动应用程序. 它有助于基于Node Web应用程序的快速开发.下面是一 ...
- Node.js Express 框架学习
转载:http://JavaScript.ruanyifeng.com/nodejs/express.html#toc0 感觉很牛的样子,不过觉得对初学者没太大用,里面很多例子用的api都没有详细的说 ...
- Node.js Express 框架 Express
Express 简介 Express 是一个简洁而灵活的 node.js Web应用框架, 提供了一系列强大特性帮助你创建各种 Web 应用,和丰富的 HTTP 工具. 使用 Express 可以快速 ...
- 44.Node.js Express 框架--web框架
转自:http://www.runoob.com/nodejs/nodejs-express-framework.html Express 简介 Express 是一个简洁而灵活的 node.js W ...
- Node.js+Express框架+Mongo学习(一)第一个node.js实例
1.在桌面新建一个空的文件夹,比如叫node,当然也可以在其它地方新建. 2.命令行进入到所新建的文件夹的目录,下载Express框架,再在这个文件夹里新建一个叫final的项目 3.在项目(fina ...
- Node.js Express 框架 POST方法
POST 方法 以下实例演示了在表单中通过 POST 方法提交两个参数,我们可以使用 server.js 文件内的 process_post 路由器来处理输入: index.htm 文件代码修改如下: ...
- Node.js Express 框架 GET方法
GET 方法 以下实例演示了在表单中通过 GET 方法提交两个参数,我们可以使用 server.js 文件内的 process_get 路由器来处理输入: index.htm 文件代码如下: < ...
- node.js+express框架 修改后自启【不需要再执行start】
我们每次修改完后都需要重新启动下才能刷新,就很麻烦'nodemon'解决了这个问题. 这里直接进行全局安装 npm install -g nodemon 安装到本地 npm install nodem ...
- Node.js Express 框架2
文件上传 以下我们创建一个用于上传文件的表单,使用 POST 方法,表单 enctype 属性设置为 multipart/form-data. index.html <html> < ...
随机推荐
- CSS – Houdini
介绍 简单说这个 Houdini 是一系列 CSS 底层 API,它可以让我们扩展 CSS,做出一些 Polyfill. 举一个例子,让大家有个画面. 我们可以通过 CSS + JS + Canvas ...
- 一款超级给力的弱网测试神器—Qnet(附视频)
一.APP弱网测试背景 App在使用的过程中,难免会遇到不同的弱网络环境,像在公车上.在地铁.地下车库等.在这种情况下,手机常常会出现网络抖动.上行或下行超时,导致APP应用中出现丢包延迟,从而影响用 ...
- 我发布了一款相亲平台《i相遇》
因缘际会之下,我踏入了相亲平台的领域.起初,是为一位客户打造专属相亲应用,过程中深入体验了众多同类平台,却遗憾地发现它们普遍掺杂着欺诈的阴影--高昂的费用.兼职托儿的身影.以及虚假的钓鱼信息,不一而足 ...
- PMP——如何区分赶工与快速跟进?
如何区分赶工与快速跟进? 在PMP考试中经常出现由于时间不够需要进行进度压缩的场景.进度压缩的常用工具有赶工和快速跟进两种方式.也可以辅助调整某些活动的提前量与滞后量来进行缓解.提前量是相对于紧前活动 ...
- Windows右下角时间显示到秒(改注册表)
事件起因: 由于京东秒杀,要准点抢购,于是想着能不能把Windows右下角的时间显示到秒,于是在网上查了一下,修改注册表即可 解决办法: 新建一个 ShowSecondsInSystemClock ...
- Dos常用命令 - Dir
Dos命令,用于扫描当前目录创建目录清单 dir /s /b /ad >> "目录清单.txt" 解释: 将 dir /s /b /ad 生成的目录 追加写入目录清单. ...
- USB硬件特性(速度、名称、供电)
USB传输速度 USB1.0版本,USB LS(Low Speed低速),速度1.5Mbps. USB1.1版本,USB FS(Full Speed全速),速度12Mbps. USB2.0版本,USB ...
- 使用SourceTree管理仓库代码
1.首先我们需要下载sourcetree,你可以去官网下载自己需要的版本. 2.安装完毕之后,我们需要获取ssh密钥与github关联上才能使用 按下面的操作开始执行.确定之后,会出现一个字符界面,输 ...
- Java日期时间API系列24-----Jdk8中java.time包中的新的日期时间API类,MonthDay类源码和应用,对比相同月日时间。
Java8中为月日新增了类MonthDay,可以用来处理生日,节日.纪念日和星座等周期性问题. 1.MonthDay 特别需要注意的:它的默认打印格式会带前缀"--" ,比如--1 ...
- JOI Open 2017(口胡)
T1 Amusement Park 题意:通信题.给定一张 \(n\) 个点 \(m\) 条边的无向连通图.Alice 会得到一个 \([0, 2^{60})\) 中的数 \(x\),并且她需要给这张 ...