低代码平台前端的设计与实现(一)构建模块的基本实现

这两年低代码平台的话题愈来愈火,一眼望去全是关于低代码开发的概念,鲜有关于低代码平台的设计实现。本文将以实际的代码入手,逐步介绍如何打造一款低开的平台。

低开概念我们不再赘述,但对于低开的前端来说,至少要有以下3个要素:

1.使用能被更多用户(甚至不是开发人员)容易接受的DSL(领域特定语言),用以描述页面结构以及相关UI上下文。
2.内部具有构建引擎,能够将DSL JSON构建为React组件,交给React进行渲染。
3.提供设计器(Designer)支持以拖拉拽方式来快速处理DSL,方便用户快速完成页面设计。

本文我们首先着眼于如何进行构建,后面的文章我们再详细介绍设计器的实现思路。

DSL

对于页面UI来说,我们总是可以将界面通过树状结构进行描述:

1. 页面
 1-1. 标题 1-1-1. 文字1-2. 内容面板 1-2-1. 一个输入框 

如果采用xml来描述,可以是如下的形式:

<page><title>标题文字</title><content><input></input></content>
</page> 

当然,xml作为DSL有以下的两个问题:

1.内容存在较大的信息冗余(page标签、title标签,都有重复的字符)。
2.前端需要引入单独处理xml的库

自然,我们很容易想到另一个数据描述方案:JSON。使用JSON来描述上述的页面,我们可以如下设计:

{"type": "page","children": [{"type": "title","value": "标题文字"},{"type": "content","children": [{"type": "input"}]}]
} 

初看JSON可能觉得内容比起xml更多,但是在前端我们拥有原生处理JSON的能力,这一点就很体现优势。

回顾一下JSON的方案,我们首先定义一个基本的数据结构:元素节点(ElementNode),它至少有如下的内容:

1.type属性:表明当前节点所属的类型。
2.children属性:一个数组,存放所有的子节点。
3.额外属性:额外剩余的属性,可以应用到当前type,产生作用。

例如,对于一个页面(page),该页面有一个属性配置背景色(backgroundColor),该页面中有一个按钮(button),并且该按钮有一个属性配置按钮的尺寸(size),此外还有一个输入框(input)。

{"type": "page","backgroundColor": "pink", // page的 backgroundColor 配置"children": [{"type": "button","size": "blue" // button的size配置},{"type": "input"}]
} 

在我们的平台中,我们定义如下的结构:

export interface ElementNode {/** * Element 唯一类型type */type: string;/** * 组件的各种属性: * 扩展的、UI的 */[props: string]: string | number | any/** * Element 的所有子元素 */children?: ElementNode[]
} 

构建

上文定义了我们低开平台的DSL,但是DSL数据如果没有转换构建为UI组件并渲染在界面上,是没有任何意义的。我们必须要有构建引擎支持将JSON转换为web页面的内容。

类型构建器(TypeBuilder)

首先我们需要定义基本的构建器:TypeBuilder。其作用是和ElementNode.type相绑定,一个type对应一个builder。

import {ReactNode} from "react";
import {ElementNode} from "../meta/ElementNode";

/**
 * 构建器构建上下文,至少包含ElementNode的相关数据
 */
export interface TypeBuilderContext {elementNode: Omit<ElementNode, ''>;
}

/**
 * 绑定Type的构建器
 */
export interface TypeBuilder {/** * 根据ElementNode上下文信息,得到ReactNode供React渲染 * @param builderContext 构建器接受的数据上下文 * @param childrenReactNode 已经完成构建的子节点的 ReactNode */build
  • 1
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
一类资源描述:Java ASP系统毕业设计资源 1. 概述:该资源集中于Java与ASP结合的Web系统毕业设计。对于学生而言,它提供了从初步的构想到实际开发所需的全方位辅助材料,包括论文、设计文档和源代码等。 2. 包含内容: - 论文:涵盖了整个Java ASP Web系统的基础知识,设计意图、需求概述、系统结构与设计哲学、相关技术的深入探索等。学生可以从论文中理解项目的全局构想和关键设计决策。 - 设计文档:详细梳理了系统的构建过程,包含需求分析、系统框架设计、数据库规划、界面布局、功能模块划分等。此文档将引导学生逐步实现和调试系统。 - 源代码:提供Java与ASP整合的Web系统的完备代码,从前端界面代码(HTML、CSS、JavaScript)到后端的Java与ASP代码,再到数据库相关脚本。学生可以参考、修改或基于此代码进一步拓展。 - 辅助信息:包括其他与项目相关的技术文档、API手册、使用的第三方库的指导文档等,旨在帮助学生顺利解决技术上的难题。 3. 使用方法:建议学生首先浏览论文,了解系统的背景与设计目标。随后,依照设计文档进行具体的实现工作。当遇到技术问题时,可以查找辅助信息或参考源代码。源代码可以作为实现的起点或验证设计的有效性。 4. 注意事项:使用资源时,学生需确保遵守学校和课程的规定,防止直接复制粘贴,鼓励真正理解和原创。在借鉴源代码时,重要的是确保学生理解代码的逻辑和工作原理,而不仅仅是简单地复制。 希望这种资源描述能为您提供所需的信息。如有其他问题或需要更多的描述,请告诉我。
基于Spring Boot的厨艺交流平台设计实现代码是一个包含了前端和后端的完整项目,旨在为用户提供一个在线分享、学习和交流烹饪技巧的平台。该项目采用了主流的前后端分离架构,后端使用Spring Boot框架,前端则使用了Vue.js或React等现代JavaScript框架。后端部分,Spring Boot作为当前最流行的Java企业级开发框架,其自动配置、约定优于配置的理念极大地简化了项目的配置和开发过程。项目中可能会包含如下几个模块:用户模块:负责用户的注册、登录、个人信息管理等功能。菜谱模块:允许用户发布自己的菜谱,包括食材列表、制作步骤、照片上传等。评论模块:用户可以对菜谱进行评论和点赞,进行互动交流。搜索模块:提供菜谱搜索功能,便于用户找到感兴趣的内容。消息通知模块:用于用户之间的消息通知,如评论回复提醒等。前端部分,通过Vue.js或React等框架构建单页面应用(SPA),提供良好的用户体验和交互效果。前端主要职责是展现数据和处理用户交互,与后端API进行通信。总之,整个项目通过RESTful API设计原则,前后端通过JSON格式的数据进行交互,保证了系统的高内聚、低耦合特性。数据库方面可能采用MySQL、PostgreSQL或其他关系型数据库来存储用户数据和菜谱信息,同时可能会结合Redis来实现缓存,提高系统性能。需要注意的是,这个资源介绍是基于典型的厨艺交流平台的功能描述,并不针对某一个具体的项目。实际的项目代码可能会根据需求有所不同,但基本设计思路和实现技术大致相似。
一类资源描述:Java ASP系统毕业设计资源 1. 概述:该资源集中于Java与ASP结合的Web系统毕业设计。对于学生而言,它提供了从初步的构想到实际开发所需的全方位辅助材料,包括论文、设计文档和源代码等。 2. 包含内容: - 论文:涵盖了整个Java ASP Web系统的基础知识,设计意图、需求概述、系统结构与设计哲学、相关技术的深入探索等。学生可以从论文中理解项目的全局构想和关键设计决策。 - 设计文档:详细梳理了系统的构建过程,包含需求分析、系统框架设计、数据库规划、界面布局、功能模块划分等。此文档将引导学生逐步实现和调试系统。 - 源代码:提供Java与ASP整合的Web系统的完备代码,从前端界面代码(HTML、CSS、JavaScript)到后端的Java与ASP代码,再到数据库相关脚本。学生可以参考、修改或基于此代码进一步拓展。 - 辅助信息:包括其他与项目相关的技术文档、API手册、使用的第三方库的指导文档等,旨在帮助学生顺利解决技术上的难题。 3. 使用方法:建议学生首先浏览论文,了解系统的背景与设计目标。随后,依照设计文档进行具体的实现工作。当遇到技术问题时,可以查找辅助信息或参考源代码。源代码可以作为实现的起点或验证设计的有效性。 4. 注意事项:使用资源时,学生需确保遵守学校和课程的规定,防止直接复制粘贴,鼓励真正理解和原创。在借鉴源代码时,重要的是确保学生理解代码的逻辑和工作原理,而不仅仅是简单地复制。 希望这种资源描述能为您提供所需的信息。如有其他问题或需要更多的描述,请告诉我。
校园闲置物品共享平台基于vue的设计实现主要包括以下几个方面: 首先,设计一个用户界面友好、操作简单的前端页面。使用vue作为前端框架,可以通过组件化的方式构建页面,实现页面的复用和可维护性。考虑到用户需求,设计一个清晰明了的导航栏,提供分类搜索、发布闲置物品、个人中心等功能,同时采用响应式布局,适配不同终端的屏幕大小。 其次,实现基于vue的数据交互和页面渲染。使用vue-router来实现页面路由导航,帮助用户快速切换页面。通过vuex进行状态管理,实现页面间数据的传递和共享,使得用户在不同页面之间能够保持一致的数据状态。利用vue-resource或axios等工具进行前后端数据的交互,例如用户登录、注册、发布闲置物品等操作,通过异步请求来获取服务器返回的数据并进行页面渲染。 第三,利用vue的组件化特性进行模块化开发。将不同功能的模块进行分割,每个模块以组件的形式开发,提高代码的复用性和可维护性。例如,用户认证模块、闲置物品展示模块、订单交易模块等,每个模块都有独立的数据和方法,可以单独进行开发和测试。 最后,添加其他辅助功能。考虑到校园环境,可以实现用户之间的消息通知,通过vue实现即时通讯功能,方便用户进行沟通和交流。同时,可以与第三方支付平台对接,实现订单的在线支付功能,提高交易的便捷性。 综上所述,基于vue的校园闲置物品共享平台设计实现主要涉及到页面设计、数据交互、组件化开发以及辅助功能的实现。通过以上的设计实现,可以搭建一个功能完善、用户友好的校园闲置物品共享平台

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值