使用koa搭建服务器(一)

最近有个需求需要使用到koa搭建服务器并编写接口对数据库进行增删改查,因此写一篇博客记录这段时间的收获。

一、新建koa项目

(一)安装koa及其相关依赖

npm i koa
npm i koa-router// 中间件,用于匹配路由
npm i koa-bodyparser// 中间件,用于解析请求body
npm i koa-static// 中间件,用于设置静态资源目录

(二)搭建koa服务器

// app.js
const http = require('http');
const Koa = require('koa');
const bodyParser = require('koa-bodyparser');
const router = require('./routes/index');
const static = require("koa-static");
const config = require('./config');

module.exports = async () => {
  // 创建koa应用
  const app = new Koa();

  //设置静态资源目录,用于存放前端代码build后的内容
  app.use(static('public'));

  // 注册中间件
  app.use(bodyParser());

  // 路由,业务入口
  app.use(router.routes(), router.allowedMethods());


  // 启动服务
  const server = http.createServer(app.callback());
  server.listen(config.serverPort);
  server.on('error', onServerError);
  server.on('listening', () => {
    logger.info(`服务启动于端口 ${config.serverPort}`);
  });
};

function onServerError(error) {
  if (error.syscall !== 'listen') {
    throw error;
  }

  const bind = typeof config.serverPort === 'string' ? `Pipe ${config.serverPort}` : `Port ${config.serverPort}`;

  // handle specific listen errors with friendly messages
  switch (error.code) {
    case 'EACCES':
      logger.fatal(`${bind} 需要更高的权限`);
      process.exit(1);
    case 'EADDRINUSE':
      logger.fatal(`${bind} 端口已被使用,请检查是否开启了多个服务。`);
      process.exit(1);
    default:
      throw error;
  }
}

一般在项目中,接口可以分为好多不同的模块的,如果把所有的接口请求处理函数,都放在上面的 app.js,文件就会显得非常庞大且杂乱。所以:

1、新增一个routes文件夹,专门用来存放路由

// routes/index.js
const createRouter = require('koa-router');
const Home = require('../controllers/Home');

const router = createRouter();

 router.get('/', async (ctx) => {
   ctx.body = 'helloWorld';
 });

router.post('/test', Home.test;

module.exports = router;

2、新增一个controllers文件夹,把接口的处理函数统一放在这里

// controllers/index.js
const test = async (ctx, next) => {
    ctx.body = '测试'
}

(三)启动服务器

直接在app.js的当前文件夹下下node app.js即可启动服务器

你可能感兴趣的:(前端,node.js)