从JSON示例数据生成Web应用程序代码
2021/10/11 22:44:11
本文主要是介绍从JSON示例数据生成Web应用程序代码,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!
目录
介绍
它是如何工作的?
创建数据模型
呈现代码
BootGen SDK
框架插件
Web应用程序
在这篇文章中,您将了解BootGen的内部工作原理,BootGen是一种代码生成器,可以基于JSON数据集创建 ASP.NET 5和Vue 3应用程序。
介绍
{ "users": [ { "userName": "Jon", "email": "jon@arbuckle.com", "pets": [ { "name": "Garfield", "species": "cat" }, { "name": "Odie", "species": "dog" } ] } ] }
想象一下,您开始为宠物主人编写Web应用程序。上面的一段JSON代码是您的初始数据集。你如何开始?在您可以开始实现您为该项目设想的热门功能之前,需要先完成一些基础工作。
对于数据库,您将需要两个表,users以及pets。 您将需要一个种子,用初始dataset填充数据库。 对于后端,您将需要user和pet类的数据服务和控制器。对于前端,您将需要一个REST API客户端和状态管理。一些基本的查看器和编辑器也一定会派上用场。哦,不要忘记身份验证!
现在您已经完成了所有这些,您可以开始处理有意义的部分。但是这个“基础工作”需要做多少工作?好吧,如果您选择的堆栈是带有Vue 3和TypeScript的ASP.NET 5,那么它将是26个文件中的1677行代码。此代码量不包括使用dotnet new和vue create命令创建的空项目。
BootGen项目的目标是获取JSON dataset并为您的项目生成基础,从而为您节省数小时甚至数天的工作。
您已经可以在bootgen.com 上尝试了!
它是如何工作的?
本文的重点是讨论BootGen在底层是如何工作的。如果您只想使用该工具并享受空闲时间,则没有必要了解这一点。
创建数据模型
生成过程中有两个重要步骤。首先,应基于数据集构建数据模型。以下类可用于创建数据模型。
public class ClassModel { public int Id { get; set; } public string Name { get; set; } public List<Property> Properties { get; } } public class Property { public string Name { get; set; } public BuiltInType BuiltInType { get; set; } public bool IsCollection { get; set; } public ClassModel Class { get; set; } } public enum BuiltInType { String, Int, Float, Bool, DateTime, Object }
这些是从我们在SDK中实际使用的内容简化而来的。如果您对完整的元模型感兴趣,可以在GitHub - BootGen/BootGenSDK: Customizable code generator library for rapid application prototyping.找到它。
如果我们假设集合名称始终采用复数形式,而其他所有内容始终采用单数形式,则可以从JSON属性名称中轻松推断出类的名称。Pluralize.NET使我们能够方便地找到特定单词的复数或单数形式。
对于每个JSON属性,我们将在我们的模型中创建一个属性。如果它有一个原始类型(string, integer, float, boolean, 或date-time),那么我们一步完成。但是,如果它是object,那么我们继续递归:我们将检查是否已经存在同名的类模型。如果是,我们将扩展它,如果不是,那么我们创建一个新的。
呈现代码
为了呈现代码,我们使用了一种称为Scriban的模板语言。生成C#实体类的最简单模板如下所示:
public class {{ class.name }} { {{~ for property in class.properties ~}} public {{ get_type property }} {{ property.name }} { get; set; } {{~ end ~}} }
class 变量是指ClassModel类型的对象。在Scriban中,每个属性和函数名称都转换为snake大小写。get_type是一个用C#实现的函数调用,如下所示:
public static string GetType(Property property) { string baseType = GetBaseType(property); if (property.IsCollection) return $"List<{baseType}>"; return baseType; } public static string GetBaseType(Property property) { switch (property.BuiltInType) { case BuiltInType.Bool: return "bool"; case BuiltInType.Float: return "float"; case BuiltInType.String: return "string"; case BuiltInType.DateTime: return "DateTime"; case BuiltInType.Object: return property.Class.Name; default: return "int"; } }
生成TypeScript代码时,使用了不同的GetType函数。
项目结构
BootGen SDK
- https://github.com/BootGen/BootGenSDK
这是处理从JSON输入构建数据模型并呈现Scriban模板的核心库。
框架插件
对不同框架的支持是作为插件实现的。目前,实现了以下插件:
- ASP.NET 5
- 带有TypeScript的Vue 3
- 带有JavaScript的Vue 3
一个框架插件包含:
- 一堆Scriban模板
- 一些静态文件(基本上是给定框架的空项目)
- 一个配置文件
我们尽最大努力保持插件界面干净,以便在未来轻松实现对其他框架的支持。
Web应用程序
- https://github.com/BootGen/BootGen
这是部署到bootgen.com的Web应用程序。一种使用BootGen的便捷方式。
https://www.codeproject.com/Tips/5309774/Generating-Web-Application-Code-from-JSON-Sample-D
这篇关于从JSON示例数据生成Web应用程序代码的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!
- 2024-11-16Vue项目实战:新手入门指南
- 2024-11-16React Hooks之useEffect案例详解
- 2024-11-16useRef案例详解:React中的useRef使用教程
- 2024-11-16React Hooks之useState案例详解
- 2024-11-16Vue入门指南:从零开始搭建第一个Vue项目
- 2024-11-16Vue3学习:新手入门教程与实践指南
- 2024-11-16Vue3学习:从入门到初级实战教程
- 2024-11-16Vue学习:新手入门必备教程
- 2024-11-16Vue3入门:新手必读的简单教程
- 2024-11-16Vue3入门:新手必读的简单教程