【问题标题】:External DSL for CRUD code generation for multiple frameworks用于多个框架的 CRUD 代码生成的外部 DSL
【发布时间】:2018-05-06 16:51:12
【问题描述】:

我正在开发一个通用的 CRUD 代码生成器应用程序。这个想法是,用于常见插入、更新、列表、删除等操作的代码/文件(模型、控制器、视图)将从模型定义(如 Grails 中使用的定义)中自动生成。但是生成的代码可以用于任何框架,例如Play(Scala 或 Java 版本)或 Django 或 Grails 或任何用户想要使用它的框架,甚至是 AngularJs。也就是说,相同的模型定义可用于为任何框架生成代码。

我的问题是,我可以使用什么来完成这项任务 - Scala 或 Groovy 或一些 DSL 专用工具,如 Xtext?

【问题讨论】:

  • 结帐yeoman.io
  • @James 我无法理解 yeoman 如何帮助满足我的要求。我的意思是,如果我有 3 个模型类(学生、教师、班级),yeoman 生成器会为我创建控制器/视图/API(例如,用于 Play 框架)吗?还是底层框架的任务?
  • 可能我误解了你的问题。您是否正在为上述任务寻找现有的生成器?或者您是否正在寻找可以为您的案例创建生成器的框架/工具?如果是后者,可以使用 yeoman。

标签: scala groovy dsl xtext


【解决方案1】:

这对于 DSL 来说似乎是一个很好的案例。一个 DSL 可以概括为以下 3 个要素:

  1. 抽象语法:DSL 的概念。您要在此处指定 CRUD 应用程序。
  2. 具体语法:一种实现抽象语法的方法。作为程序员,首先想到的往往是基于文本的语法,但您也可以使用图形或树状语法,甚至只是带有文本字段和复选框的 GUI。
  3. 语义:DSL 的含义。在这里你要生成代码。

我现在建议一些基于 Java 并来自 Eclipse 建模生态系统的解决方案。

  1. Eclipse EMF 实现了所谓“元模型”(基本上是抽象语法)的定义标准。在 Eclipse 世界中,EMF 是许多工具的基础。
  2. 假设您有一个 EMF 元模型,可以使用 Eclipse Xtext 指定文本语法,使用 Eclipse Sirius 指定图形语法。请注意,您还可以使用 Java 开发自己的 GUI 并使用 EMF Java API 创建模型。另请注意,Xtext 可以根据您想要的基于文本的语法的语法为您创建元模型。如果您不想自己深入研究 EMF,这很好(因此第 1 步和第 2 步是相同的)。
  3. Eclipse Acceleo 提供了一种专门用于生成文本(包括代码)的模板语言。同样,借助 EMF Java API,您还可以使用纯 Java 或任何基于 JVM 的语言编写代码生成器。如果你使用 Xtext,除了你的语法之外,还有一个 including an Xtend-based code generator 工具。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2010-10-14
    • 1970-01-01
    • 1970-01-01
    • 2017-11-12
    • 2012-04-15
    • 1970-01-01
    • 2010-12-31
    • 2010-10-29
    相关资源
    最近更新 更多