Guides
项目结构
Malagu 的项目目录并没有特殊的要求,就是一个普普通通的 Node.js 项目就好。一般情况下会有一个 package.json 文件负责依赖的管理,而 Malagu 框架自身的能力也是通过 NPM 包的形式提供。
Malagu 的项目目录并没有特殊的要求,就是一个普普通通的 Node.js 项目就好。一般情况下会有一个 package.json 文件负责依赖的管理,而 Malagu 框架自身的能力也是通过 NPM 包的形式提供。我们可以根据需要选择合适的 Malagu 组件包,添加到 package.json 文件。
不过,有一个 Malagu 框架支持的特有配置文件: malagu[-mode].yml
。该文件主要用于自定义 Malagu 各种组件的属性配置。后面会详细介绍 Malagu 框架的组件属性机制。属性配置文件也不是必须的。
另外,Malagu 在前后端应用开发做了更高维度的抽象。所以在不同的业务场景,项目的目录结构会有些许不同。这些目录结构大多是来自社区地积累,并非 Malagu 独创。目录的设计有一定的逻辑可循,方便开发者举一反三。
需要强调的一点:Malagu 框架自身不会强制限制目录结构,只是有一套最佳实践
提供给开发者使用。开发者完全可以根据自己的场景,定义项目的目录结构。
纯后端项目目录结构
- README.md
- malagu.yml 组件配置文件,默认会加载
- package.json
- src/
- home-controller.ts 业务代码
- module.ts 组件模块入口文件
- user-controller.ts 业务代码
- test/
- home-controller.spec.ts 业务代码的测试代码
- node_modules/
- tsconfig.json ts 语言编译配置文件
- yarn.lock
- 项目架构:由于 Malagu 世界
一切皆组件
,所以项目本身也是一个组件
,所以 Malagu 组件拥有的能力,项目同样也有,并且是统一的
,并不会有什么特殊的地方。
所以,我们又称项目为根组件
,根组件与它所依赖的组件形成了一颗组件树
。 - 业务代码:业务代码与我们平时写的代码并没有什么不同。只是 Malagu 通过组件的方式,提供了一系列开箱即用的基础能力。
- 组件模块入口文件: 一个组件可以存在多个模块,每一个模块都会有一个入口文件,这些入口文件在合适的时机,会由 Malagu 命令行工具依次加载并进行组装。
对于简单的项目,一个模块就够了,复杂的项目可以根据需要合理组织模块,便于代码管理与维护。
比如前后端一体化项目(见下文),一般会有两个模块,一个模块是前端模块
,另一个是后端模块
。前后端一体化组件如何做到分别打包输出到不同的构建产物中,其实就是通过模块来划分的。
因为项目本身就是组件,所以上述原则对组件同样适用。Malagu 有两种模式来确定组件有哪些模块:约定目录
和组件属性配置
:
前后端一体项目目录结构
- README.md
- malagu.yml
- package.json
- node_modules/
- src
- browser 前端代码目录
- assets/ 资源文件目录
- style/ 样式文件目录
- css-shims.d.ts 类型定义文件
- hello.view.tsx 页面级组件代码
- module.ts 前端模块入口文件
- common 前后端公共代码目录
- welcome-protocol.ts 前后端都会用的的接口定义、工具方法与类
- node # 后端代码目录
- module.ts 后端模块入口文件
- welcome-server.ts 后端业务逻辑代码
- browser 前端代码目录
- tsconfig.json
- 上述示例目录结构划分不是框架强行限制的,只是一个最佳实践,开发者完全可以按照自己的逻辑组织代码;但是一般情况下,我们建议使用这种规范来组织代码,会使代码更加清晰。
- 前后端代码最终会分别进行打包编译输出到构建目录:
- 资源文件目录:如果有些非代码文件希望打包到构建目录,可以放在资源文件目录,命令行工具在打包的时候,会主动拷贝到构建目录。前后端都会有自己的资源文件目录,各种拷贝,参阅资源文件目录文档。
- 前后端公共代码目录:这部分代码是前后端业务共享的,极大提高代码的复用,让前后端共同逻辑保持统一。