持续创作,加速成长!这是我参与「掘金日新计划 · 6 月更文挑战」的第4天,点击查看活动详情
项目要求
通过一个小项目实践 Node.js 各个知识点。麻雀虽小,五脏俱全,这个项目会从 0~1,逐步完成所有需求。该项目实现接口有注册、登录、获取用户信息等等
初始化
创建项目
-
新建文件夹作为项目的根目录,并在项目根目录中运行如下的命令,初始化包管理配置文件
npm init -y -
安装特定版本的 express
npm install express -
在项目根目录中新建
app.js作为整个项目的入口文件,并初始化// 导入 express 模块 const express= require('express') // 创建 express 的服务器实例 const app = express() // 调用 app.listen 方法,指定端口号并启动 web 服务器 app.listen(3007, () => { console.log('启动服务器 http://127.0.0.1:3007') })
配置 cors 跨域
-
运行命令,安装
cors中间件npm install cors@2.8.5 -
在
app.js中导入并配置cors中间件// 导入 cors 中间件 const cors = require('cors') // 将 cors 注册为全局中间件 app.use(cors())
配置解析表单数据的中间件
配置解析 application/x-www-form-urlencoded 格式的表单数据的中间件
app.use(express.urlencoded({ extended: false}))
初始化路由相关的文件夹
-
在项目根目录中,新建
router文件夹,用来存放所有的路由模块路由模块中,只存放客户端的请求与处理函数之间的映射关系 -
在项目根目录中,新建
router.handler文件夹,用来存放所有的 路由处理函数模块路由处理函数模块中,专门负责存放每个路由对应的处理函数
初始化用户路由模块
-
在 router 文件夹中,新建
user.js文件,作为用户的路由模块,并初始化const express = require('express') // 创建路由对象 const router = express.Router() // 注册新用户 router.post('/reguser', (req, res) => { res.send('reguser ok') }) // 用户登录 router.post('/login', (req, res) => { res.send('login ok') }) // 将路由对象共享出去 module.exports = router -
在
app.js中,导入并使用 用户路由模块// 导入并注册用户路由模块 const userRouter = require('./router/user') app.use('/api', userRouter)
抽离用户路由模块中的处理函数
目的:为了保证路由模块的纯粹性,所有的路由处理函数,必须抽离到对应的路由处理函数模块中
-
在
router_handler/user.js中,使用exports对象,分别向外共享如下俩个处理函数:// 定义和用户相关的路由处理函数,供 /router/user.js 模块进行调用 // 注册用户的处理函数 exports.reguser = (req, res) => { res.send('reguser ok') } // 用户登录的处理函数 exports.login = (req, res) => { res.send('login ok') } -
将
/router/user.js中的代码修改,这样就达到了路由模块中,只存放客户端的请求与处理函数之间的映射关系const express = require('express') // 创建路由对象 const router = express.Router() // 导入用户路由处理函数模块 const userHandler = require('../router_handler/user') // 注册新用户 router.post('/reguser', userHandler.reguser) // 用户登录 router.post('/login', userHandler.login) // 将路由对象共享出去 module.exports = router