Node.js:Express( express 路由,express 中间件( 二 )


8. 最基本的服务器(代码)
// 1. 导入 expressconst express = require('express')// 2. 创建 web 服务器const app = express()// 4. 监听客户端的 GET 和 POST 请求,并向客户端响应具体的内容/* app.get('/user', (req, res) => {// 调用 express 提供的 res.send() 方法,向客户端响应一个 JSON 对象res.send({ name: 'zs', age: 20, gender: '男' })}) *//* app.post('/user', (req, res) => {// 调用 express 提供的 res.send() 方法,向客户端响应一个 文本字符串res.send('请求成功')}) *//* app.get('/', (req, res) => {// 通过 req.query 可以获取到客户端发送过来的 查询参数// 注意:默认情况下,req.query 是一个空对象console.log(req.query)res.send(req.query)}) */// 注意:这里的 :id 是一个动态的参数app.get('/user/:ids/:name', (req, res) => {// req.params 是动态匹配到的 URL 参数,默认也是一个空对象console.log(req.params)res.send(req.params)})// 3. 启动 web 服务器app.listen(80, () => {console.log('express server running at http://127.0.0.1')})
托管静态资源 1. .()创建一个静态资源服务器
提供了一个非常好用的函数,叫做 .(),通过它,我们可以非常方便地创建一个静态资源服务器,例如,通过如下代码就可以将目录下的图片、CSS 文件、 文件对外开放访问了:
注意: 在指定的静态目录中查找文件,并对外提供资源的访问路径 。因此,存放静态文件的目录名不会出现在 URL 中 。
2. 托管多个静态资源目录
如果要托管多个静态资源目录,请多次调用 .() 函数:
访问静态资源文件时,.() 函数会根据目录的添加顺序查找所需的文件 。
3. 挂载路径前缀
如果希望在托管的静态资源访问路径之前,挂载路径前缀,则可以使用如下的方式:
const express = require('express')const app = express()// 在这里,调用 express.static() 方法,快速的对外提供静态资源// 挂载路径前缀,访问时必须输入前缀/filesapp.use('/files', express.static('./files'))// clock目录不需要出现在访问网址app.use(express.static('./clock'))app.listen(80, () => {console.log('express server running at http://127.0.0.1')})
在编写调试 Node.js 项目的时候,如果修改了项目的代码,则需要频繁的手动 close 掉,然后再重新启动,非常繁琐 。现在,我们可以使用 () 这个工具,它能够监听项目文件的变动,当代码被修改后,会自动帮我们重启项目,极大方便了开发和调试 。
1. 安装 (npm i -g )
在终端中,运行如下命令,即可将安装为全局可用的工具:
2.使用
当基于 Node.js 编写了一个网站应用的时候,传统的方式,是运行 node app.js 命令,来启动项目 。这样做的坏处是:代码被修改之后,需要手动重启项目 。
现在,我们可以将 node 命令替换为命令,使用app.js 来启动项目 。这样做的好处是:代码被修改之后,会被监听到,从而实现自动重启项目的效果 。
路由(映射关系)中的路由
在中,路由指的是客户端的请求与服务器处理函数之间的映射关系 。
中的路由分 3 部分组成,分别是请求的类型、请求的 URL 地址、处理函数,格式如下:
1. 中路由例子:post,get
const express = require('express')const app = express()// 挂载路由// 匹配get请求且请求为URL为/app.get('/', (req, res) => {res.send('hello world.')})// 匹配post请求且请求为URL为/app.post('/', (req, res) => {res.send('Post Request.')})app.listen(80, () => {console.log('http://127.0.0.1')})