美文网首页
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 | 后端初始化

    这里是在简书仿简书的第四篇,早睡早起身体好 前后端都要开发,那就后端先行,先来实现一个简单的 HTTP 服务,并配...

  • ajax cors 跨域解决

    后端接口的初始化函数里放入

  • Effective C++

    条款04 确定对象使用前已被初始化 尽量使用成员初始化列表(member initialization list)...

  • ng-alain中的st表格

    后端控制分页的st表格使用 数据列初始化 ts 后端接口获取data ts 表格分页设置 ts change回调 ...

  • 11 数组

    数组的定义 01 动态初始化 02 静态初始化 03 省略格式及初始化注意事项 04 获取数组 05 动态数组初始...

  • Activiti5开发环境

    04【掌握】Activiti5开发环境 1.创建项目 2.配置pom依赖 3.初始化数据库 初始化方式1: 初始化...

  • Vue-Cloudnotes教程.md

    需求分析 前后端接口约定 创建远程仓库 vue-cli初始化项目结构 初始化样式 引入图标 安装less 配置路由...

  • 前后端设计的一点思考

    今天思考一个问题,前端的技术路线对后端设计的影响。一个简单的例子,页面初始化后,使用Ajax访问后端(比如Web ...

  • 《Node + Express 快速搭建网站》学习笔记-2Nod

    2-1Node入口文件分析和目录初始化 ch2-项目前后端流程打通 项目结构的初始化 入口文件编码 app.js ...

  • go 变量声明初始化、new、make

    title: go 变量声明初始化、new、makedate: 2019-01-04tags:- golang- ...

网友评论

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

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