跳到主要内容
版本:2.0.0

非 Serverless 环境使用一体化

在 Midway Serverless 2.0 中,我们支持了 Web 全栈应用的开发。

在后续的开发中,你可以将你的 Web 应用部署至任意的服务器,来为用户提供服务。

项目创建

请先安装 @midwayjs/cli

# 如果是 npm v6
$ npm init midway --type=koa-hooks-react my_app

# 如果是 npm v7
$ npm init midway -- --type=koa-hooks-react my_app

$ cd my_app

目录结构

生成后的目录结构如下

.
├── bootstrap.js // 应用启动
├── index.html
├── jest.config.js
├── midway.config.ts // Midway 配置文件
├── package.json
├── src
│   ├── App.css
│   ├── App.tsx
│   ├── apis // 后端文件(可在 midway.config.ts 修改)
│   │   ├── configuration.ts
│   │   └── lambda // Api 文件
│   │   ├── index.test.ts
│   │   └── index.ts
│   ├── favicon.svg
│   ├── index.css
│   ├── logo.svg
│   └── main.tsx
├── tsconfig.json
└── vite.config.ts // Vite 配置文件

本地运行

在项目根目录运行 npm run dev 即可启动项目,启动后,Vite 将输入可访问的地址。

复制地址到浏览器即可访问

页面显示如下画面则代表启动成功:

你可以修改 /src/apis/lambda 下的函数,尝试极为直观的函数式开发方式与极快的热更新所带来的流畅体验。

单元测试

在应用根目录中,你可以运行 npm run test 来运行单元测试。

单元测试运行截图

在单元测试中,我们提供了便捷的 runFunction 方法,帮助你快速完成单元测试,就像调用一个普通函数一样。

import { createApp, HooksApplication } from '@midwayjs/hooks-testing-library';
import api from '.';

describe('test new features', () => {
let app: HooksApplication;
beforeAll(async () => {
app = await createApp();
});

afterAll(async () => {
await app.close();
});

it('runFunction', async () => {
expect(await app.runFunction(api)).toMatchInlineSnapshot(`
Object {
"message": "Hello World",
"method": "GET",
}
`);
});
});

构建

在项目中,我们也提供了现成的 npm run build 命令,来快速构建项目。

构建结束后,可以通过 node bootstrap.js 来运行项目。

访问 http://localhost:7001,就可以看到页面了。

线上部署

在完成后构建后,你可以按你喜欢的方式将应用部署至任意的服务器中。

在此,我们推荐使用 [pm2](https://www.npmjs.com/package/pm2) 来启动和管理应用。