美文网首页
04 | 后端初始化

04 | 后端初始化

作者: cemcoe | 来源:发表于2020-10-09 07:05 被阅读0次

    这里是在简书仿简书的第四篇,早睡早起身体好

    前后端都要开发,那就后端先行,先来实现一个简单的 HTTP 服务,并配置后端路由,要实现的目标是,前端 ajax 请求不同的地址后端返回不同的数据。

    比如 ajax 请求 /user 时后端返回用户的信息,而当 ajax 请求访问 /post 时后端返回文章的信息。

    这里就遇到了前端路由和后端路由的问题。前端路由针对的是用户访问的 url 返回不同的页面,而每个前端页发的 ajax 请求可能即包含发往 /user 的,同时又包含发往/post 的。

    用图大概是这样的,我就是想用笔写写字。


    设计目录结构

    创建一个名为 jianshu_server 的文件夹,并创建一个 package.json,填入要装的包,具体可参考01篇。使用 npm install 安装所需的包。

    controllers
    models
    routes
    index.js
    config.js
    

    前三项是文件夹,index.js 是入口文件,config.js 是配置文件。

    config.js 配置信息

    编写不便于公开的配置信息,jwt 和 mongodb 需要用到,该项目是一个测试项目,其实这一步可以略过,但注意一下安全总没错。

    你如果只是在本地开发,那你随便搞,但如果你要将项目部署到服务器上,一定要注意安全问题,因为你不知道有哪些人在用端口扫描你的服务器。

    // config.js
    module.exports = {
      connectionStr: 'mongodb://localhost:27017/api',
      secret: 'jwt_secret',
    }
    

    koa 启动一个 http 服务

    参考 [借用node来走一下简单的后端流程] 。(https://www.jianshu.com/p/de49ed4be240)

    启动服务并挂载路由文件,路由文件会在下文指出。

    // index.js
    const Koa = require('koa');
    const app = new Koa();
    
    // 挂载路由
    const routing = require('./routes')
    routing(app)
    
    app.listen(3000, () => {
      console.log("Server is running on http://localhost:3000")
    });
    

    将 route 文件夹中的文件输出到 index 中

    一个一个导入路由文件过于麻烦,让 index.js 处理。

    // ./routes/index.js
    const fs = require('fs')
    module.exports = (app) => {
      fs.readdirSync(__dirname).forEach(file => {
        if(file === 'index.js') {
          return
        }
        const route = require(`./${file}`)
        app.use(route.routes()).use(route.allowedMethods())
      })
    }
    

    这段代码的意思是读取当前文件夹非index.js文件路由文件并自动挂载到路由。

    连接数据库

    // index.js
    const mongoose = require('mongoose')
    const { connectionStr } = require('./config')
    
    mongoose.connect(connectionStr,
      {
        useUnifiedTopology: true,
        useNewUrlParser: true,
      },
      () => {
        console.log('MongoDB 连接成功')
      })
    mongoose.connection.on('error', console.error)
    

    数据库连接使用 mongoose,具体配置可参考官方文档,这里就用到了 config.js 文件中的配置信息。

    routes文件结构

    // ./routes/users.js
    
    const Router = require('koa-router')
    const router = new Router()
    
    
    module.exports = router
    

    相关文章

      网友评论

          本文标题:04 | 后端初始化

          本文链接:https://www.haomeiwen.com/subject/pzduyktx.html