基于低代码平台的项目设计的一般流程及低代码平台(基于iVX)与MVC的关系

news2024/11/14 17:45:03

基于低代码平台的项目设计的一般流程及低代码平台(基于iVX)与MVC的关系

  • 1.基于低代码平台的项目设计的一般流程
    • a.流程图
    • b.MVC架构应用于iVX项目的各分层排序:
      • (1)第一步:写M
      • (2)第二步:写V
      • (3)第二步:写C
  • 2、以MVC的视觉看iVX:
    • (1)基于传统Java代码的MVC计算器实现:
      • a.设计思路
      • b.具体过程:
        • 1)M和C:
        • 2)V:
        • 3)运行查看结果:
    • (2)基于ivx的MVC思想的计算器实现:
      • a.应用功能
      • b.设计思路
      • c.具体实现
        • 1)M:
          • 定义计算记录表
          • 定义对计算记录表的操作(服务)
            • 对象树概览
            • 计算记录展示服务(相当于SQL的查询操作)
            • 计算记录添加服务(相当于SQL的增加操作)
        • 2)V:
          • 计算器板块
          • 实施使用记录表板块
        • 3)C:
          • 动作
            • 计算规则动作
            • 使用记录实时更新显示动作
          • 事件
            • 计算器页面加载事件
            • 分页事件
            • 点击进行计算事件

在这里插入图片描述

1.基于低代码平台的项目设计的一般流程

经过近3天的学习和实践后,结合前一段事件学习的SSM、主要是SpringMVC,我总结出了一套基于低代码平台的项目设计的一般流程,如下流程图:

a.流程图

在这里插入图片描述

b.MVC架构应用于iVX项目的各分层排序:

(1)第一步:写M

M,即模型和业务逻辑。由于数据库(表)、服务等后台中的组件不调用任何前端的组件,它是作为一个项目的组件集合中的被调用者,因此我们在编写项目时可以优先选择编写后台代码,这样基本可以避免想要调用参数或组件而无参可调的情况。值得注意的是,如果想要先设计数据库(后台),必须有基于准确需求分析的完善的系统原型,因为后台的一些东西一旦设置(定义)了,就无法修改,只能删除再重新设置。

(2)第二步:写V

V,即前端UI模板(称它为“模板”是因为,它在不经过来自后端或者自身模拟的死据动态或静态渲染之前,只是一个“骨架”,没有血肉)。前端UI须参考系统原型,分层级、有条理地实现每一个板块。

V参考网页/系统的原型,这就是体现了原型设计的重要性,而原型必然是要参考需求分析的,因此及时、准确的需求分析是整个项目开始的第一步

(3)第二步:写C

C, 即事件和动作组。对标传统Java Web项目,就相当于JavaController,负责接收前端请求,并调用相关服务已响应请求,在ivx中,就是各种类型参数的值得传递。



紧随其后的是一个基于MVC思想和上述流程所设计的简单计算器应用。

2、以MVC的视觉看iVX:

(1)基于传统Java代码的MVC计算器实现:

a.设计思路

  • 简易计算器的本质还是表单传值
  • 传递给控制器三个参数并运算
  • 返回经渲染后的新视图

b.具体过程:

1)M和C:

在com.mr.controller包下new一个servlet,名为“MyController”,代码如下:

package com.mr.controller;

import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.servlet.ModelAndView;


@Controller
@RequestMapping("MyController")
public class MyController {
	@RequestMapping("SCController")
	public ModelAndView getAll(Integer number1, String s, Integer number2){
        ModelAndView mav = new ModelAndView("answer");
        int result = 0;
        switch(s) {
            case "+":
                result = number1 + number2;
                break;
            case "-":
                result = number1 - number2;
                break;
            case "*":
                result = number1 * number2;
                break;
            case "/":
                result = number1 / number2;
                break;
            default:
                break;
        }
        mav.addObject("s", s);
        mav.addObject("a", result);
        return mav;
    }
}

2)V:

在文件夹下new一个jsp文件,名为“anwser”,代码如下:

<%@ page language="java" import="java.sql.*"
    contentType="text/html; charset=utf-8" pageEncoding="utf-8"%>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%>
 

<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
<title>Insert title here</title>
</head>
<body>
<div>您选择的运算符是:${s}</div>
<div>您的计算结果是:${a}</div>


</body>
</html>

在WebContent下new一个jsp文件,名为“SimpleCalculator”,代码如下:

<%@ page language="java" contentType="text/html; charset=utf-8"
    pageEncoding="utf-8"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<title>简易计算器</title>
<style>

#myca{
width:600px;
height:800px;
text-align:center;
margin: 200px auto;

}
#tp{
display:block;
margin-left:-180px;

}
#mp{

margin-left:-10x;
}


</style>
</head>

    <body>
    <div id="myca">
    
     <span id="lk">简易计算器</span>
    <form action="MyController/SCController" >
        第一个数:<input type="text" name="number1" /> <br/>
     <span id="tp">   运算符号:
        <select name="s" id="mp">
<option value="+">+</option>
<option value="-">-</option>
<option value="*">X</option>
<option value="/">/</option>
		</select>
		</span>
        第二个数:<input type="text" name="number2" /> <br/>
        <span id="sb"><input type="submit"  value="计算" /></span>
        
      
    </form>
    </div>
    </body>
    
   
</body>
</html>

3)运行查看结果:

运行SimpleCalculator.jsp,输入数据:

点击计算按钮:

在这里插入图片描述

(2)基于ivx的MVC思想的计算器实现:

a.应用功能

  • 实现两个参数的简单运算
  • 把每次运算的所有参数都存入数据库
  • 每次进入页面可以查看当前计算器的使用记录
  • 实时更新计算器使用记录表

b.设计思路

  • 设计后端数据库(M)

    • 设计数据库(表),用于存储每次计算地所有参数
    • 设计服务(相当于传统后端地sql语句)
  • 设计前端UI界面(V)

    • 整体布局设计
    • 计算器板块UI设计
    • 使用记录表板块UI设计
  • 设计动作/事件,连接前后端(C)

c.具体实现

1)M:

M,即模型和业务逻辑。由于数据库(表)、服务等后台中的组件不调用任何前端的组件,它是作为一个项目的组件集合中的被调用者,因此我们在编写项目时可以优先选择编写后台代码,这样基本可以避免想要调用参数或组件而无参可调的情况。值得注意的是,如果想要先设计数据库(后台),必须有基于准确需求分析的完善的系统原型,因为后台的一些东西一旦设置(定义)了,就无法修改,只能删除再重新设置。

实现:

定义计算记录表

在这里插入图片描述

定义对计算记录表的操作(服务)
对象树概览

在这里插入图片描述


计算记录展示服务(相当于SQL的查询操作)

在这里插入图片描述

说明:数据量这个数值变量用于记录数据库中的行数(也叫元组数量),为后续的分页操作提供必要参数。


计算记录添加服务(相当于SQL的增加操作)

在这里插入图片描述

2)V:

V,即前端UI模板(称它为“模板”是因为,它再不经过来自后端或者自身模拟的死据动态或静态渲染之前,只是一个“骨架”,没有血肉)。前端UI须参考系统原型,分层级、有条理地实现每一个板块。

可以将我的前端UI界面当作原型图,根据对象树的结构的设计完成绘制。

计算器板块

在这里插入图片描述

实施使用记录表板块

在这里插入图片描述

3)C:

C,即动作和事件,相当于传统MVC架构的控制器。当然,事件也可以归类为前端UI,但我们定义并调用事件的本质是为了调用动作,本质上是接收前端请求(索要各类参数的值),处理前端请求,调用后台的服务,动态获取各类参数的值。

动作

动作就相当于传统JavaController的控制器,根据前台事件提供的参数,调用相关业务逻辑,简单来说,就是controller的方法的方法体。

计算规则动作

在这里插入图片描述

使用记录实时更新显示动作

传统分页查询的sql语句:

 <!-- 定义分页查询操作,返回结果类型为Category -->
	    <select id="list" resultType="Category">
	        select * from   category_      
	        <!-- 判断是否有分页参数 -->
	        <if test="start!=null and count!=null">
                    limit #{start},#{count}
            </if>
	    </select>

具体传统手工分页可查看文章:
Web应用技术(第十五周/END)



该动作调用后台服务”计算记录展示“服务(SQL语句),向其中赋值两个参数,==每页条数==和==当前页码==,作为数据库(计算记录表)输出用于分割整个数据库的两个参数,相当于传统==手工==分页的==start==和==count==。完成回调(相当于传统前端的Ajax异步操作)后,为==计算结果记录对象==和==数据总条数==赋值回调结果。

在这里插入图片描述

事件

这里展示和讲解功能实现的相关事件,页面美化相关事件在此省略。

计算器页面加载事件

该事件调用显示动作组,为分页组件设置参数的值。

在这里插入图片描述

分页事件

该事件调用显示动作组,通过对其中两个参数的设置,保证分页换页的正常进行。

在这里插入图片描述

点击进行计算事件

该事件调用计算规则动作组,把运算参数的内容赋值给”param1“等3个参数,完成后有两个回调

  • 其一,为UI界面等号后的结果的内容进行赋值
  • 其二调用计算结果添加服务,通过该服务(本质为sql),向数据库中新增一条记录。该服务也有两个回调
    • 其一,为系统界面设置显示提示语的效果
    • 其二,调用显示动作组,重置当前页码为1,相当于”伪刷新“(目前还没有学习ivx的路由,后面学习之后或许有更好的解决方案)。
      在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/735915.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

LeetCode[912]排序数组

难度&#xff1a;Medium 题目&#xff1a; 给你一个整数数组 nums&#xff0c;请你将该数组升序排列。 示例 1&#xff1a; 输入&#xff1a;nums [5,2,3,1] 输出&#xff1a;[1,2,3,5]示例 2&#xff1a; 输入&#xff1a;nums [5,1,1,2,0,0] 输出&#xff1a;[0,0,1,1,2,…

Openlayers实战:显示海量数据

Openlayers地图中通常的加载方式是canvas,另外还一种加载方式是webGL,在绘制海量数据时,使用GPU进行绘制可有效减少CPU的负载,提升绘制时的速度在浏览器中,可以使用WebGL的方式与GPU交互。 在本实战中,使用WebGLPoints显示海量数据。 效果图 源代码 /* * @Author: 大剑…

表单标签from

七、表单标签 form text name属性必须添加&#xff0c;否则后端不知道这个值是什么意思。且name不能重复 添加label主要是方便程序员&#xff0c;一看到用户名称这个label就是为username的&#xff0c;添加或者不添加页面效果一样 2、possword 用户密码显式出来&#xff0c;所…

与一款医疗仪器的往事

这是一款比较冷门的医疗仪器&#xff0c;SOD型多普勒脐动脉血流检测仪。 大约是20年前&#xff0c;有个朋友找到了俺&#xff0c;让俺给他写一个医疗仪器的软件。当时这个仪器是这样子的。这是唯一还能找到的当时的图片。朋友要求用C写。俺就选择了C Builder&#xff0c;比用VC…

vue源码阅读之什么是虚拟dom

前面简单说过数据响应式原理&#xff0c;大体是个怎么流程&#xff0c;数据发生变化&#xff0c;我们界面如何更新。 依赖收集收集的是watcher&#xff0c;然后当数据发生变化的时候dep通知watcher&#xff0c;然后watcher负责updateComponent。 那么更新组件过程中&#xff…

PostgreSQL查询引擎——上拉子链接SubLink

子查询是查询语句中经常出现的一种类型&#xff0c;是比较耗时的操作。优化子查询对查询效率的提升有直接的影响。从子查询出现在SQL语句的位置看&#xff0c;它可以出现在目标列、FROM子句、WHERE子句、JOIN/ON子句、GROUPBY子句、HAVING子句、ORDERBY子句等位置。子查询出现在…

c语言指针进阶(一)

大家好&#xff0c;我是c语言boom成家宝。今天为大家分享的是c语言中很重要的一个知识点------指针的深入讲解。 目录 指针 指针数组 数组指针 函数指针 什么是指针&#xff1f; 首先&#xff0c;指针的本质是一个地址&#xff0c;指针在32位机器上的大小是4个字节&a…

python_day3_str

字符串str 按索引下标查找 str Hi, world, follow, admin print(str[0]) print(str[-1])index() str Hi, world, follow, admin print(str.index(world)) #首字母下标 print(str.index(w))字符串.replace&#xff08;字符串1&#xff0c;字符串2&#xff09;&#xff1a;…

【Linux】高级IO(二)

文章目录 高级IO&#xff08;二&#xff09;I/O多路转接之pollpoll服务器 I/O多路转接之epollepoll相关函数epoll工作原理epoll回调机制epoll服务器epoll的优点 高级IO&#xff08;二&#xff09; I/O多路转接之poll poll也是系统提供的一个多路转接接口 poll系统调用也可以…

ruoyi若依 组织架构设计--[ 部门管理 ]

ruoyi若依 组织架构设计--[ 部门管理 ] 部门管理部门查询部门新增部门修改部门删除 部门管理 部门查询 需要注意的是&#xff0c;部门管理也有数据权限&#xff0c;比如A用户分配的数据权限(通过角色分配)是深圳总公司&#xff0c;那么A用户登录后看到的部门也是深圳总公司&am…

2023年前端面试题汇总-数据结构(二叉树)

对于树这个结构,最常见的就是二叉树。我们除了需要了解二叉树的基本操作之外,还需要了解一些特殊的二叉树,比如二叉搜索树、平衡二叉树等,另外还要熟悉二叉树的遍历方式,比如前序遍历、中序遍历、后序遍历、层序遍历。另外还要知道二叉树的常用遍历的方式:深度优先遍历和…

非线性优化知识

这里列下最小二乘的四种解法的优缺点&#xff0e; #mermaid-svg-CLbQz6o8j7JMq9MM {font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;fill:#333;}#mermaid-svg-CLbQz6o8j7JMq9MM .error-icon{fill:#552222;}#mermaid-svg-CLbQz6o8j7JMq9MM .err…

前端开发中的单例模式

在前端开发中&#xff0c;单例模式是一种常见的设计模式&#xff0c;用于确保一个类只有一个实例&#xff0c;并提供一个全局访问点来获取该实例。 在JavaScript中&#xff0c;可以使用以下几种方式来实现单例模式&#xff1a; 字面量方式&#xff1a; const singleton {// …

JVM 调优测试Jmeter 压测

Jmeter 内存不足了&#xff0c;修个5个线程吧 测试结果&#xff1a; Jmeter配置参数 5个线程&#xff0c;每个线程1秒跑1000次 测试串行吞吐量 -XX:PrintGCDetails -Xmx128M -Xms128M -XX:HeapDumpOnOutOfMemoryError -XX:UseSerialGC -XX:PermSize32M GC回收4次 吞吐量138…

SQL Server 2008每天自动备份数据库

在SQL Server 2008数据库中。为了防止数据的丢失我们就需要按时的来备份数据库了。要是每天都要备份的话&#xff0c;人工备份会很麻烦的&#xff0c;自动备份的话就不需要那么麻烦了&#xff0c;只要设置好了&#xff0c;数据库就会自动在你设置的时间段里备份。那么自动备份要…

ihrm项目结构详解

大体介绍 云服务的三种模式 Iaas&#xff1a;基础设施即服务 Pass&#xff1a;平台即服务 Saas&#xff1a;软件即服务 系统设计 主键id生成策略 lombok data setter getter noArgs&#xff08;无参构造&#xff09; 模块搭建 1 企业得增删改查 2 全局异常处理器 3 跨域…

选择排序算法介绍

算法介绍 选择排序&#xff08;Selection Sort&#xff09;是一种简单直观的排序算法。它的基本思想是每次从待排序的元素中选取最小&#xff08;或最大&#xff09;的元素&#xff0c;放到已排序部分的末尾&#xff0c;直到全部元素排序完毕。 以下是选择排序的详细步骤&…

【实战】 六、用户体验优化 - 加载中和错误状态处理(下) —— React17+React Hook+TS4 最佳实践,仿 Jira 企业级项目(十)

文章目录 一、项目起航&#xff1a;项目初始化与配置二、React 与 Hook 应用&#xff1a;实现项目列表三、TS 应用&#xff1a;JS神助攻 - 强类型四、JWT、用户认证与异步请求五、CSS 其实很简单 - 用 CSS-in-JS 添加样式六、用户体验优化 - 加载中和错误状态处理1~234.用useAs…

java实现一个简单的webSocket聊天demo

java实现一个简单的webSocket聊天demo 一、依赖二、配置准备三、demo代码编写四、启动测试五、编写业务 一、依赖 添加pom文件依赖 <!-- websocket--><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter…

IDEA环境配置汇总

1、配置项目编码 2、配置运行看板Services IDEA开启并配置Services窗口 这里已经配置好了&#xff0c;如果没有&#xff0c;就点击&#xff0c;点击Run Configuration Type&#xff0c;选择所需要的&#xff0c;点击即可。 配置spring与docker看板(按照上面的方法来配置&am…