非 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) 来启动和管理应用。
