Node.js 清洁架构应用教程
1. 项目的目录结构及介绍
nodejs-clean-architecture-app/
├── doc/
├── lib/
├── test/
├── .gitignore
├── LICENSE
├── README.md
├── docker-compose.yml
├── index.js
├── package-lock.json
├── package.json
- doc/: 存放项目文档文件。
- lib/: 存放项目的主要代码库。
- test/: 存放项目的测试代码。
- .gitignore: 指定Git版本控制系统忽略的文件和目录。
- LICENSE: 项目的许可证文件。
- README.md: 项目的说明文档。
- docker-compose.yml: Docker配置文件,用于定义和运行多个Docker容器。
- index.js: 项目的入口文件。
- package-lock.json: 锁定项目依赖的版本。
- package.json: 项目的配置文件,包含项目依赖、脚本等信息。
2. 项目的启动文件介绍
index.js
index.js
是项目的入口文件,负责启动应用。以下是简要代码示例:
const Hapi = require('@hapi/hapi');
const init = async () => {
const server = Hapi.server({
port: 3000,
host: 'localhost'
});
server.route({
method: 'GET',
path: '/hello',
handler: (request, h) => {
return 'Hello World!';
}
});
await server.start();
console.log('Server running on %s', server.info.uri);
};
process.on('unhandledRejection', (err) => {
console.log(err);
process.exit(1);
});
init();
该文件主要完成以下任务:
- 引入
@hapi/hapi
模块。 - 创建一个 Hapi 服务器实例,并配置端口和主机。
- 定义一个路由
/hello
,返回 "Hello World!"。 - 启动服务器并输出服务器运行信息。
3. 项目的配置文件介绍
package.json
package.json
是 Node.js 项目的核心配置文件,包含项目的基本信息和依赖管理。以下是简要内容示例:
{
"name": "nodejs-clean-architecture-app",
"version": "1.0.0",
"description": "A basic Hapi.js API following Clean Architecture principles",
"main": "index.js",
"scripts": {
"test": "echo \"Error: no test specified\" && exit 1",
"start": "node index.js"
},
"dependencies": {
"@hapi/hapi": "^20.0.0"
},
"devDependencies": {
"nodemon": "^2.0.7"
},
"author": "",
"license": "MIT"
}
- name: 项目名称。
- version: 项目版本。
- description: 项目描述。
- main: 项目入口文件。
- scripts: 定义可执行的脚本命令,如
npm start
和npm test
。 - dependencies: 项目运行时的依赖包。
- devDependencies: 开发环境下的依赖包。
- author: 项目作者。
- license: 项目许可证。
docker-compose.yml
docker-compose.yml
文件用于定义和运行多个 Docker 容器。以下是简要内容示例:
version: '3'
services:
app:
build: .
ports:
- "3000:3000"
volumes:
- .:/app
working_dir: /app
- version: Docker Compose 文件的版本。
- services: 定义服务,如
app
。 - build: 指定构建上下文路径。
- ports: 映射端口。
- volumes: 挂载卷。
- working_dir: 指定工作目录。
以上是 Node.js 清洁架构应用的基本教程,涵盖了