Marble.js 项目教程
1. 项目的目录结构及介绍
marblejs/
├── src/
│ ├── app.ts
│ ├── config/
│ │ ├── default.json
│ │ ├── production.json
│ ├── modules/
│ │ ├── user/
│ │ │ ├── user.controller.ts
│ │ │ ├── user.service.ts
│ │ │ ├── user.model.ts
│ │ ├── auth/
│ │ │ ├── auth.controller.ts
│ │ │ ├── auth.service.ts
│ ├── shared/
│ │ ├── logger.ts
│ │ ├── utils.ts
├── test/
│ ├── app.spec.ts
│ ├── user.spec.ts
├── .env
├── .gitignore
├── package.json
├── tsconfig.json
├── README.md
目录结构介绍
- src/: 项目的源代码目录,包含所有的 TypeScript 文件。
- app.ts: 项目的入口文件,负责启动应用程序。
- config/: 配置文件目录,包含不同环境的配置文件。
- default.json: 默认配置文件。
- production.json: 生产环境配置文件。
- modules/: 模块目录,包含各个业务模块的代码。
- user/: 用户模块,包含用户相关的控制器、服务和模型。
- auth/: 认证模块,包含认证相关的控制器和服务。
- shared/: 共享代码目录,包含通用的工具函数和日志记录器。
- test/: 测试代码目录,包含单元测试和集成测试。
- .env: 环境变量配置文件。
- .gitignore: Git 忽略文件配置。
- package.json: 项目的依赖管理文件。
- tsconfig.json: TypeScript 配置文件。
- README.md: 项目说明文档。
2. 项目的启动文件介绍
src/app.ts
app.ts
是 Marble.js 项目的入口文件,负责启动应用程序。以下是该文件的主要内容:
import { createServer } from '@marblejs/core';
import { IO } from 'fp-ts/lib/IO';
import { listener } from './listener';
const server = createServer({
port: 1337,
hostname: '127.0.0.1',
listener,
});
const main: IO<void> = async () => await (await server)();
main();
启动文件介绍
- createServer: 创建 HTTP 服务器的函数,配置端口、主机名和监听器。
- listener: 监听器模块,负责处理 HTTP 请求和响应。
- main: 主函数,异步启动服务器。
3. 项目的配置文件介绍
src/config/default.json
{
"port": 1337,
"hostname": "127.0.0.1",
"database": {
"host": "localhost",
"port": 5432,
"username": "user",
"password": "password",
"database": "marble"
}
}
src/config/production.json
{
"port": 8080,
"hostname": "0.0.0.0",
"database": {
"host": "production-db.example.com",
"port": 5432,
"username": "prod_user",
"password": "prod_password",
"database": "marble_prod"
}
}
配置文件介绍
- default.json: 默认配置文件,包含开发环境的配置。
- port: 服务器端口。
- hostname: 服务器主机名。
- database: 数据库配置,包括主机、端口、用户名、密码和数据库名称。
- production.json: 生产环境配置文件,包含生产环境的配置。
- port: 生产环境服务器端口。
- hostname: 生产环境服务器主机名。
- database: 生产环境数据库配置。
通过这些配置文件,可以轻松地在不同环境中切换配置,确保应用程序在不同环境下的正常运行。
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考