Flutter代码生成插件ednet_code_generation的使用
Flutter代码生成插件ednet_code_generation的使用
简介
EDNet Code Generation 是一个基于命令行(CLI)驱动且程序化的代码生成器,专门用于 EDNet Core 的领域模型。通过 EDNet Code Generation,您可以将基于 YAML 的领域定义转换为完全模块化的、面向领域的 Dart 项目——帮助您减少样板代码并使代码与业务逻辑保持紧密一致。
功能
以下是 EDNet Code Generation 的主要功能:
-
YAML → Dart: 从简单的 YAML 模型描述开始,并生成以下内容:
- Repository(仓库)
- 实体及其属性
- 关系定义
- 测试与文档的脚手架
-
无缝集成: 生成的项目可以无缝集成到 EDNet 生态系统 中,包括 ednet_core 和 ednet_cms 等。
-
两种生成模式:
--genall
: 创建全新的 Dart 项目结构(适用于新领域)。--gengen
: 更新或重新生成现有项目的代码,而不会覆盖顶层配置。
-
多模型支持: 可以在一个命令中生成多个领域模型,例如
finance
、hr
、sales
等。
安装
在您的 pubspec.yaml
文件的 dev_dependencies
部分添加 EDNet Code Generation:
dev_dependencies:
ednet_code_generation: ^0.0.5
然后获取包:
dart pub get
或者使用 Flutter:
flutter pub get
注意: 为了获得最佳效果,请确保同时包含 ednet_core
在依赖项或开发依赖项中。
快速入门
以下是生成新的领域驱动 Dart 项目的逐步指南。我们假设您有一个描述领域模型的 YAML 文件,例如:
示例 YAML 文件 (lib/requirements/financial/ledger.yaml
):
domain: Financial
model: Ledger
concepts:
- name: Account
attributes:
- name: accountNumber
type: string
- name: balance
type: number
- name: Transaction
attributes:
- name: amount
type: number
- name: transactionDate
type: datetime
- name: description
type: string
relations:
- from: Account
fromToName: transactions
to: Transaction
toFromName: account
fromToCardinality:
min: 0
max: N
toFromCardinality:
min: 1
max: 1
步骤 1: 组织 YAML 文件
将您的 .yaml
文件放在一个可引用的路径下,例如 lib/requirements/financial/ledger.yaml
。
步骤 2: 运行生成器
在项目中运行 EDNet Code Generation CLI:
dart run ednet_code_generation:main \
--genall lib/requirements/financial \
build/financial_dart_project \
financial ledger
参数说明:
--genall
: 指令生成器创建完整的 Dart 项目。lib/requirements/financial
: YAML 文件所在的基准目录。build/financial_dart_project
: 新项目的输出目录。financial ledger
: 域名 (financial
) 和模型名称 (ledger
)。
完成后,检查 build/financial_dart_project
,您会看到以下结构:
build/financial_dart_project/
├─ lib/
│ ├─ financial_ledger.dart
│ ├─ repository.dart
│ ├─ financial/
│ │ ├─ ledger/
│ │ │ ├─ model.dart
│ │ │ ├─ json/
│ │ │ │ ├─ data.dart
│ │ │ │ ├─ model.dart
│ │ │ ├─ account.dart
│ │ │ ├─ transaction.dart
│ │ └─ domain.dart
├─ test/
│ ├─ financial/ledger/...
├─ doc/
├─ .gitignore
├─ pubspec.yaml
└─ README.md
步骤 3: 探索与定制
lib/financial_ledger.dart
: 领域模型库的主要入口。repository.dart
: 定义了包含您的领域模型的CoreRepository
。account.dart
和transaction.dart
: 表示领域概念的 Dart 类。test/
: 自动生成的测试脚手架,帮助您快速启动 TDD/BDD 开发。pubspec.yaml
: 引用了ednet_core
和其他依赖项的基本文件。
高级用法
1. 在现有项目中重新生成
如果您对 YAML 文件中的领域模型进行了更改,可以使用 --gengen
参数更新现有项目:
dart run ednet_code_generation:main \
--gengen build/financial_dart_project
这将更新内部的 Dart 库文件,而不会覆盖顶层配置(如 pubspec.yaml
)。
2. 生成多个模型
可以在单个命令中生成多个模型:
dart run ednet_code_generation:main \
--genall lib/requirements/financial \
build/financial_dart_project \
financial ledger investments accounts
每个模型(如 ledger
、investments
和 accounts
)都需要自己的 YAML 文件。
3. 脚本化方法
可以通过自己的 Dart 代码调用生成器,使用 EDNetCodeGenerator
类:
import 'dart:io';
import 'package:ednet_code_generation/ednet_code_generation.dart';
void main() async {
final result = await EDNetCodeGenerator.generate(
sourceDir: 'lib/requirements/financial',
targetDir: 'build/financial_dart_project',
domainName: 'financial',
models: 'ledger',
);
print(result); // 'Code generation completed!'
}
更多关于Flutter代码生成插件ednet_code_generation的使用的实战系列教程也可以访问 https://www.itying.com/category-92-b0.html
更多关于Flutter代码生成插件ednet_code_generation的使用的实战系列教程也可以访问 https://www.itying.com/category-92-b0.html
ednet_code_generation
是一个用于 Flutter 的代码生成插件,旨在帮助开发者自动生成一些重复性代码,从而提高开发效率。以下是如何使用 ednet_code_generation
插件的基本步骤:
1. 添加依赖
首先,你需要在 pubspec.yaml
文件中添加 ednet_code_generation
插件的依赖。
dependencies:
flutter:
sdk: flutter
ednet_code_generation: ^1.0.0 # 请使用最新版本
dev_dependencies:
build_runner: ^2.1.0 # 用于运行代码生成器
然后运行 flutter pub get
来获取依赖。
2. 创建模型类
假设你有一个简单的数据模型类,例如 User
类:
class User {
final String name;
final int age;
User({required this.name, required this.age});
}
3. 使用注解
ednet_code_generation
通常通过注解来标记需要生成代码的类或方法。假设插件提供了一个 @Generate
注解,你可以这样使用它:
import 'package:ednet_code_generation/ednet_code_generation.dart';
@Generate()
class User {
final String name;
final int age;
User({required this.name, required this.age});
}
4. 运行代码生成器
使用 build_runner
来生成代码。在终端中运行以下命令:
flutter pub run build_runner build
这将根据你的注解生成相应的代码。生成的代码通常会放在一个 .g.dart
文件中,例如 user.g.dart
。
5. 使用生成的代码
生成的代码可以自动包含在你的项目中。例如,如果 ednet_code_generation
生成了一个 UserBuilder
类,你可以这样使用它:
import 'user.dart';
import 'user.g.dart'; // 导入生成的代码
void main() {
var user = UserBuilder()
.name('John Doe')
.age(30)
.build();
print('User: ${user.name}, Age: ${user.age}');
}
6. 自动重新生成代码
如果你修改了模型类或注解,可以重新运行 build_runner
来更新生成的代码:
flutter pub run build_runner build
或者使用 watch
命令来监听文件变化并自动重新生成代码:
flutter pub run build_runner watch
7. 清理生成的代码
如果你想清理生成的代码,可以运行以下命令:
flutter pub run build_runner clean