Node.js - 项目实践之初始化(一)

2,100 阅读3分钟

持续创作,加速成长!这是我参与「掘金日新计划 · 6 月更文挑战」的第4天,点击查看活动详情

项目要求

通过一个小项目实践 Node.js 各个知识点。麻雀虽小,五脏俱全,这个项目会从 0~1,逐步完成所有需求。该项目实现接口有注册、登录、获取用户信息等等

截屏2022-05-28 下午11.35.33.png


初始化

创建项目

  1. 新建文件夹作为项目的根目录,并在项目根目录中运行如下的命令,初始化包管理配置文件

    npm init -y
    
  2. 安装特定版本的 express

    npm install express
    
  3. 在项目根目录中新建 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 跨域

  1. 运行命令,安装 cors 中间件

    npm install cors@2.8.5
    
  2. app.js 中导入并配置 cors 中间件

    // 导入 cors 中间件
    const cors = require('cors')
    
    // 将 cors 注册为全局中间件
    app.use(cors())
    

配置解析表单数据的中间件

配置解析 application/x-www-form-urlencoded 格式的表单数据的中间件

app.use(express.urlencoded({ extended: false}))

初始化路由相关的文件夹

  1. 在项目根目录中,新建 router 文件夹,用来存放所有的路由模块

    路由模块中,只存放客户端的请求与处理函数之间的映射关系
    
  2. 在项目根目录中,新建 router.handler 文件夹,用来存放所有的 路由处理函数模块

    路由处理函数模块中,专门负责存放每个路由对应的处理函数
    

初始化用户路由模块

  1. 在 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
    
  2. app.js 中,导入并使用 用户路由模块

    // 导入并注册用户路由模块
    const userRouter = require('./router/user')
    app.use('/api', userRouter)
    

抽离用户路由模块中的处理函数

目的:为了保证路由模块的纯粹性,所有的路由处理函数,必须抽离到对应的路由处理函数模块中

  1. router_handler/user.js 中,使用 exports 对象,分别向外共享如下俩个处理函数:

    // 定义和用户相关的路由处理函数,供 /router/user.js 模块进行调用
    
    // 注册用户的处理函数
    exports.reguser = (req, res) => {
        res.send('reguser ok')
    }
    
    // 用户登录的处理函数
    exports.login = (req, res) => {
        res.send('login ok')
    }
    
  2. /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