如何使用 Koa 为自己的前端项目起一个 node 服务

441 阅读3分钟

跨团队合作之如何使用 Koa 为自己的前端项目起一个 node 服务

工作项目中遇到这样一个问题:我们的项目是由一个主应用和很多微应用组成,主应用由我们团队开发,微应用有很多不同 Team 开发,微应用 Team 想运行主应用测试,但是又不能把源代码给他们,那如何方便合作,提高效率呢?这种情况下,我们就可以新建一个新的 node 项目,使用 koa 为我们的中台项目起一个 node 服务,供其他 Team 调试,自测。

大致步骤

一. 创建 Koa 应用程序

  1. 使用 npm init 初始化项目,会生成一个 package.json 文件

  2. 安装 koa

    npm i koa koa-router koa-static koa-connect-history-api-fallback
    
    • koa-router:是 Koa 框架中用于处理路由的中间件,通过 koa-router,可以方便地定义和管理路由,实现不同 URL 请求对应的处理逻辑。
    • koa-static: 是 Koa 框架中的一个中间件,用于提供静态文件服务,通过 koa-static 中间件,可以将指定目录下的静态文件(如图片、样式表、脚本等)映射到服务器的指定路径,使这些静态文件可以被客户端访问。
    • koa-connect-history-api-fallback:用于处理前端路由的历史记录和页面刷新的问题,当用户在浏览器中直接访问单页应用的某个路由时,由于前端路由是基于 History API 实现的,服务器端可能无法正确处理这些路由,导致页面刷新时出现 404 错误。
  3. 创建一个 index.js 文件,用于设置 koa 服务器

    • 创建 Koa 应用对象:应用对象是带有 node http 服务的 Koa 接口,它可以处理中间件的注册,将 http 请求分发到中间件,进行默认错误处理,以及对上下文,请求和响应对象进行配置。
    • 引入中间件
    • 创建一个 static 目录,用于放置静态文件
    • 监听 3002 端口,启动服务器 下面是完整代码:
/**
 * 设置koa服务器
 */

var koa = require("koa");
const static = require("koa-static");
const Router = require("koa-router"); // 引入koa-router
const history = require("koa-connect-history-api-fallback");
const path = require("path");

const app = new koa();
const router = new Router();

// 处理前端路由的历史记录和页面刷新问题
app.use(history());

// 使用 koa-static 中间件将静态文件服务映射到指定路径
app.use(static(path.join(__dirname, "./static")));

// 将路由注册到应用
app.use(router.routes());

// 启动服务器
app.listen(3002, () => {
    console.log("app is running on: http://localhost:3002/");
});

二. 创建 vue 应用并打包放到 koa 中

  • 我这里使用vite创建了一个测试应用
npm create vue@latest
  • npm run build 打包vue项目,并将打包好的dist文件夹下的文件放到koa项目的static文件夹下

三. node 中使用中间件及启动 node 服务

通过node index启动服务,即可看到我们的vue项目已经托管到node服务上了

image.png

image.png