简介
基于 Node.js 平台,快速、开放、极简的 Web 开发框架
是一个简洁而灵活的 node.js Web应用框架, 提供了一系列强大特性帮助你创建各种 Web 应用,和丰富的 HTTP 工具。
Express 框架核心特性:
- 可以设置中间件来响应 HTTP 请求。
- 定义了路由表用于执行不同的 HTTP 请求动作。
- 可以通过向模板传递参数来动态渲染 HTML 页面。
安装 Express
- 因为Express基于 Node.js 平台,使用此框架需要先下载node.js
- 通过 npm init 命令为你的应用创建一个 package.json 文件
- 安装 Express 并将其保存到依赖列表中 cnpm install express --save
注:Express使用时需先引入
//引入有两步
const express = require('express'); // 返回的一个函数
const app = express(); // 在这里 接受 返回的函数
//或可简写
const app = require('express')();
node.js用Express框架和不用的区别
例如:get请求的路由分发
不用框架时
const http = require("http");
http.createServer((req,res) => {
if(req.url.startsWith("/index")){
res.end('Hello index');
}else{
res.end('404 找不到页面');
}
}).listen(3000,() => {
console.log('run......');
});
用Express框架时
const express = require('express');
var app = express();
app.get('/index',(req,res) => {
res.send('Hello index');
});
app.listen('3000',() => {
console.log('run......')
});
res.send和res.end的区别
1.res.send–>发送HTTP响应
可以有三个参数 Buffer对象 string对象 Array
此方法对简单的非流式响应执行许多有用的任务:例如,它自动分配Content-LengthHTTP响应标头字段(除非事先定义),并提供自动的HEAD和HTTP缓存新鲜度支持。
- 当参数为Buffer对象时,该方法将Content-Type响应头字段设为 application /
octet-stream,除非设置响应头 - 当参数为string对象时,该方法将content-type响应头字段设置为text/html
- 当参数为Array或object,将以json形式表示响应
2.res.end–》(data,encoding,callback)也可以不传参
data.只能发送Buffer和string的数据
此方法向服务器发出信号,表明已发送所有响应头和主体,该服务器应该视为此消息已完成。 必须在每个响应上调用此 response.end() 方法。
- 如果指定了 data,则相当于调用 response.write(data, encoding) 之后再调用
response.end(callback)。 - 如果指定了 callback,则当响应流完成时将调用它。
分发路由
get请求的路由分发
app.get('/',(req,res) => {
res.send('分发路由');
})
正则表达式 分发路由
app.get(/^\/index(\/.+)*$/,(req,res) => {//端口号可以写多个/index
res.send('正则分发路由')
})
设置端口 监听
//第一种
app.get('/',(req,res) => {
res.send('分发路由');
})
app.listen(3000,() => {
console.log('run......')
});
//第二种
let server = app.get('/',(req,res) => {
res.send('分发路由');
})
server.listen(3000,() => {
console.log('run......')
});
注:推荐第二种方式
托管 静态文件
const express = require('express');
const app = express();
let server = app.use(express.static('public'));
//添加静态资源文件的 虚拟路径
let server = app.use('/abc',express.static('public'));
server.listen(3000,() => {
console.log('run......');
})
几种常见的请求方式
GET
从服务器取出资源(一项或多项)
GET请求的数据会附在URL之后(就是把数据放置在HTTP协议头中),以?分割URL和传输数据,参数之间以&相连。
app.get('/',(req,res)=>{
res.send('get');
})
POST
在服务器新建一个资源。
POST把提交的数据则放置在是HTTP包的包体中。
app.post('/',(req,res)=>{
res.send('post');
})
PUT
在服务器更新资源(客户端提供改变后的完整资源)
app.put('/',(req,res)=>{
res.send('PUT');
})
Delete
从服务器删除资源
app.delete('/',(req,res)=>{
res.send('delete');
})