Skip to content

Latest commit

 

History

History
112 lines (81 loc) · 4.03 KB

directory-struct.md

File metadata and controls

112 lines (81 loc) · 4.03 KB

目录规范简介

开始之前, 请先了解下Beidou的目录规范

. helloweb
├── package.json
├── app.js (可选)
├── agent.js (可选)
├── app (应用层代码目录)
|   ├── router.js
│   ├── controller
│   │   └── home.js
|   ├── extend (可选,对 Beidou.Application 的扩展)
│   |   ├── helper.js (可选)
│   |   ├── filter.js (可选)
│   |   ├── request.js (可选)
│   |   ├── response.js (可选)
│   |   ├── context.js (可选)
│   |   ├── application.js (可选)
│   |   └── agent.js (可选)
│   ├── proxy (可选,由 hsf/tr 插件规范,建议统一为 proxy)
|   ├── public (可选)
|   |   ├── favicon.ico
|   |   └── ...
│   ├── service (可选)
│   ├── middleware (可选)
│   │   └── response_time.js
│   ├── views (可选,由 view 插件规范,建议统一为 views)
|   │   ├── layout.html
│   │   └── home.html
│   └── view-middlewares (自定义渲染中间件)
├── config (应用配置目录)
|   ├── config.default.js
│   ├── config.prod.js
|   ├── config.test.js (可选)
|   ├── config.local.js (可选)
|   ├── config.unittest.js (可选)
│   ├── plugin.js
│   └── role.js (可选,以 role 插件举例,插件特殊配置也放在 config 目录下)
├── client (客户端代码目录)
|   ├── index.jsx
|   └── page/index.jsx
└── test (测试目录)
    ├── middleware
    |   └── response_time.test.js
    └── controller
        └── home.test.js

app 目录

app 目录是一个应用业务逻辑代码存放的地方,它是整个应用的 server 部分的核心目录。

  • app/router.js

app/router.js 是应用的路由配置文件,所有路由配置都在此设置, 放在同一个文件非常方便通过 url 查找到对应的 controller 代码。

  • app/controller

每个 app/controller/*.js 文件,都会被自动加载到 app.controller.* 上。 这样就能在 app/router.js 里面方便地进行路由配置。 在 controller 中可以调用 service,proxy 等依赖目录。

  • app/middleware

应用自定义中间件都放在此目录,然后需要在 config/config.js 配置中间件的启动顺序。

  • app/service

数据服务逻辑层抽象,如果你在多个 controller 中都写了一段类似代码去取相同的数据, 那就代表很可能需要将这个数据服务层代码重构提取出来,放到 app/service 下。

  • app/proxy

特别针对 RPC(hsf/tr) 的服务调用代码

  • public 静态资源目录

针对大部分应用,不需要将静态资源发布到 CDN 的场景,都可以将静态资源放到 app/public 目录下。

  • app/extend

extend 目录下都是对已有 API 进行扩展,也就是追加到 prototype 上,如 extend/application.js 是扩展 Application.prototype

  • app/views

存放模板文件和只在客户端使用的脚本目录文件。

app.js

用于在应用启动的时候做一些初始化工作,一般来说,大部分应用都是不需要此功能的。 如果一个应用使用了一些自定义服务客户端,那么需要做一些服务启动依赖检查的时候, 就可以通过 app.js 实现了。

agent.js

app.js 类似,在 Agent Worker 进程中,如果需要做一些自定义处理,可以在这个文件中实现。

config 目录

应用配置目录。规范中约定,web 框架根据环境加载配置,规则如下:

  • config/config.default.js: 默认配置,所有环境都会加载此配置
  • config/config.prod.js: prod 环境配置
  • config/config.local.js: local 环境配置
  • config/config.unittest.js: 单元测试环境配置

client 目录

同构代码目录,存放同构业务代码。 对React同构项目而言,client 目录用于存放 React 代码,包含组件、前端逻辑以及视图模版

test 目录

单元测试目录