Express是一个基于Node.js平台,快速、开放、极简的web开发框架.
对于node.js来说,Express是一个第三方模块,有丰富的API支持,强大而灵活的中间件特性,Express不对node.js已有的特性进行二次抽象,只是在它之上扩展了Web应用所需的基本功能.
Express使用
(1)express是一个第三方模块(在npm上可以下载),在使用它之前要先去下载它,在下载包之前要先创建项目,并通过npm init -y创建package.json文件.
(2)下载express包本地安装
npm i express
(3)在项目根目录下新建一个js文件,例如app.js,其中输入代码如下:
// 1. 加载 Express
const express = require('express')
// 2. 调用 express() 得到一个 app
// 类似于 http.createServer()
const app = express()
// 3. 设置请求对应的处理函数
// 当客户端以 GET 方法请求 / 的时候就会调用第二个参数:请求处理函数
app.get('/', (req, res) => {
res.send('hello world')
})
// 4. 监听端口号,启动 Web 服务
app.listen(3000, () => console.log('app listening on port 3000!'))
说明:
- app.get('/')相当于添加事件监听:当用户以get方式求"/"时,它后面的回调函数会执行,其回调函数中的req,res与前面所学http模块保持一致。
- res.send()是exprss框架给res对象补充提供的方法(http模块中的res是没有这个方法的),用于结束本次请求。类似的还有res.json(), res.sendFile() 。
- express 框架会增强req,res的功能
托管静态资源-web服务器
让用户直接访问静态资源是一个web服务器最基本的功能。
忽略前缀
// 加载 Express
const express = require('express')
// 1. 调用 express() 得到一个 app
// 类似于 http.createServer()
const app = express();
// 2. 设置请求对应的处理函数,public为创建的文件夹名
app.use(express.static('public'))
// 3. 监听端口号,启动 Web 服务
app.listen(3000, () => console.log('app listening on port 3000!'))
此时,所有放在public下的内容可以直接访问,注意,此时在url中并不需要出现public这级目录。在public下新建index.html,可以直接访问到。
限制前缀
// 限制访问前缀
app.use('/public', express.static('public'))
这意味着想要访问public下的内容,必须要在请求url中加上/public