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)的更多相关文章

  1. Node.js Express 框架

    Node.js Express 框架 Express 简介 Express 是一个简洁而灵活的 node.js Web应用框架, 提供了一系列强大特性帮助你创建各种 Web 应用,和丰富的 HTTP ...

  2. Node.js Express框架

    Express 介绍 Express是一个最小的,灵活的Node.js Web应用程序框架,它提供了一套强大的功能来开发Web和移动应用程序. 它有助于基于Node Web应用程序的快速开发.下面是一 ...

  3. Node.js Express 框架学习

    转载:http://JavaScript.ruanyifeng.com/nodejs/express.html#toc0 感觉很牛的样子,不过觉得对初学者没太大用,里面很多例子用的api都没有详细的说 ...

  4. Node.js Express 框架 Express

    Express 简介 Express 是一个简洁而灵活的 node.js Web应用框架, 提供了一系列强大特性帮助你创建各种 Web 应用,和丰富的 HTTP 工具. 使用 Express 可以快速 ...

  5. 44.Node.js Express 框架--web框架

    转自:http://www.runoob.com/nodejs/nodejs-express-framework.html Express 简介 Express 是一个简洁而灵活的 node.js W ...

  6. Node.js+Express框架+Mongo学习(一)第一个node.js实例

    1.在桌面新建一个空的文件夹,比如叫node,当然也可以在其它地方新建. 2.命令行进入到所新建的文件夹的目录,下载Express框架,再在这个文件夹里新建一个叫final的项目 3.在项目(fina ...

  7. Node.js Express 框架 POST方法

    POST 方法 以下实例演示了在表单中通过 POST 方法提交两个参数,我们可以使用 server.js 文件内的 process_post 路由器来处理输入: index.htm 文件代码修改如下: ...

  8. Node.js Express 框架 GET方法

    GET 方法 以下实例演示了在表单中通过 GET 方法提交两个参数,我们可以使用 server.js 文件内的 process_get 路由器来处理输入: index.htm 文件代码如下: < ...

  9. node.js+express框架 修改后自启【不需要再执行start】

    我们每次修改完后都需要重新启动下才能刷新,就很麻烦'nodemon'解决了这个问题. 这里直接进行全局安装 npm install -g nodemon 安装到本地 npm install nodem ...

  10. Node.js Express 框架2

    文件上传 以下我们创建一个用于上传文件的表单,使用 POST 方法,表单 enctype 属性设置为 multipart/form-data. index.html <html> < ...

随机推荐

  1. CSS – Transition & Animation

    前言 之前的笔记 CSS – W3Schools 学习笔记 (3) 就有讲过 CSS Transitions 和 CSS Animations. 这里做一个整理, 补上一些细节. Transition ...

  2. SQL Server – Trigger 触发器

    参考: SQLServer触发器详解(概述.工作原理.应用) CREATE TRIGGER (Transact-SQL) SQL Server Triggers and Transactions 以前 ...

  3. 项目发布后项目时间和linux时间不一致

    查阅了很多资料,本来总以为是项目的问题,启动前端,连接不同的后台,本地项目时间是正确的,部署到linux Docker容器就不行.很纳闷...... 基于以上,还是决定记下来,以便后来的人查阅,解决问 ...

  4. Docker修改IP地址方法

    一.查看Docker IP root@master:/# ifconfig docker0 docker0: flags=4099<UP,BROADCAST,MULTICAST> mtu ...

  5. 微信小程序点击按钮进行页面跳转

    下面是wxml代码 <button type="primary" bindtap="go">跳转到list页面</button> 下面是 ...

  6. 数据库周刊29│2020数据库研究报告;Oracle取消今年技术大会;腾讯云DBbridge发布支持一键迁库;饿了么迁至阿里云;PG数组查询;Oracle被比特币勒索;DM8 安全管理…

    摘要:墨天轮数据库周刊第29期发布啦,每周1次推送本周数据库相关热门资讯.精选文章.干货文档.   热门资讯 1.快讯:2020年Oracle OOW大会因疫情取消 系近20年首度[摘要]Oracle ...

  7. web端ant-design-vue Modal.info组件自定义icon和title使用小节

    web端ant-design-vue Modal.info组件自定义icon和title整理小节,最近在项目中用到了自定义icon和title的功能,经过测试发现,如果自定义icon title会自动 ...

  8. 0404-Tensor的持久化和向量化

    0404-Tensor的持久化和向量化作 目录 一.持久化 1.1 保存模型 1.2 加载模型 二.向量化 三.注意事项 四.第四章总结 pytorch完整教程目录:https://www.cnblo ...

  9. KubeSphere Namespace 数据删除事故分析与解决全记录

    作者:宇轩辞白,运维研发工程师,目前专注于云原生.Kubernetes.容器.Linux.运维自动化等领域. 前言 2023 年 7 月 23 日在项目上线前夕,K8s 生产环境出现故障,经过紧急修复 ...

  10. 霍夫(Hough)直线变换(直线检测)

    0 原理 霍夫变换在检测各种形状的的技术中非常流行,如果你要检测的形状可以用数学表达式写出,你就可以是使用霍夫变换检测它.及时要检测的形状存在一点破坏或者扭曲也可以使用.我们下面就看看如何使用霍夫变换 ...