草庐IT

云原生IDE:iVX首个通用且强大无代码开发平台

派 大 星. 2023-10-29 原文

云原生IDE:iVX首个通用且强大无代码开发平台

1、前言:iVX是什么?

首先在设计之初,需要需要明确的几点是:

  • 浏览器端的IDE
  • 尽可能无代码并能支持全场景应用的开发
  • 尽可能一次开发支持多套系统运营
  • 对云和应用导出部署有良好的支持

2、iVX——首个通用无代码开发平台

首先进行剖析通用、无代码、开发平台、首个其中具有的深刻含义

首个

在国内还未发现有类似的平台出现,现阶段做的最好的Mendix/Outsystems等也只能称做“低代码”开发平台(还做不到“复杂逻辑的无代码表达”);而国内很多产品,由于不具备生成可导出部署独立应用的能力,还不能算作“开发平台”。

开发平台

iVX所开发的应用,都可以脱离iVX独立部署。也就是说,对于开发者而言,iVX就是一个“代码生成器”。和手写代码无差别,可以脱离iVX平台任意部署,而大多数其它“低代码”平台不具备这种“开发平台”属性,只能在平台内部使用。

无代码

iVX提供了“原子级”组件系统,支持用户“自定义组件”,并且配合图灵完备的“逻辑编辑引擎/面板”,就可以实现几乎所有应用的前后台“无代码”开发。

通用

指平台的通用性,几乎适合所有的应用开发场景和支持在所有操作系统中运行。

  • 支持的操作系统:浏览器WebApp、Android/iOS、小程序、小游戏、钉钉、Win/Mac/Linux、也支持最新的国产鸿蒙。
  • 支持的开发场景:支持中大型复杂应用(基于无代码的逻辑编排引擎),电商、大数据应用、表单、工作流、Bi、任务流、OA系统、工业物联网、游戏、网站、视频应用、IM等等。

限制条件:

  • 一般不建议用iVX来直接实现大型算法(建议封装之后在iVX内部调用);
  • 不支持操作系统级软件的开发,例如杀毒软件(iVX主体是基于Web开发环境);
  • 大型3D的MMORPG多人在线游戏开发(一般采用专业游戏开发引擎制作)。

3、iVX系统架构

应用架构概览

一个iVX应用,主要由两个部分构成,前台部分和后台部分:

  • 前台部分,对应前端应用程序,负责客户端界面的展示与交互。在iVX中,前端程序支持多种类型,包括web应用,小程序,原生app,与windows exe应用。在运行时,每个用户都会在本地客户端下载一份前端程序来运行;

  • 后台部分,对应服务端程序,部署在后台服务器(集群)中,负责后台数据与通信逻辑的处理。后台部分进一步包括后台资源接口和服务逻辑:

    • 后台资源接口,主要包含各种数据库,api,缓存,文件等后台资源的操作接口,每一种接口都对应iVX中的一个后台组件。注意,iVX仅负责生成应用程序,并不提供后台资源本身。因此,要运行iVX的后台程序,需要额外接入后台资源,比如mysql数据库,redis等等。在iVX公有云上,这些资源已经自动接入,因此可以iVX应用可以直接发布运行;如果选择私有部署,则需要自行准备资源,详见私有部署相关文档;
    • 服务逻辑,主要包含服务组件,是前端程序和后台资源进行交互的“中央枢纽”。其提供了一个HTTP的服务接口(REST API),可以供iVX前端部分应用或其他第三方应用来调用,同时,可以直接操作各种后台资源,并定义内部处理逻辑。

举一个简单的🌰,假设有一个收集用户信息的应用,其结构如下图:

左侧用户界面,即前端应用,其运行在用户的浏览器端,负责收集用户填写的信息;右侧的数据库表,即后台资源,负责存储所有用户提交的信息;中间的提交服务,即后台的服务层,负责监听前端应用发送过来的请求,对请求的数据进行处理,比如,判断一下提交的数据是否合法,然后调用数据库表,写入数据。数据写入之后,服务还需要根据写入是否成功,将结果返回给前端应用,这样前端应用可以把数据提交结果在界面上提示出来。

前端技术框架

iVX 的前端核心框架为web应用,主体使用react架构,部分内部模块使用了自研的对象驱动引擎,并引用了pixi.js, three.js等画布渲染库。同时,web应用可以通过不同的打包方法生成其他类型的应用,如下图所示:

后台技术框架

iVX的后台程序,可以直接发布在iVX公有云上运行,也可以导出部署至其他服务器环境。其详细架构如下图所示:

一个iVX的后台应用,从逻辑上分成4个部分:

  • 服务请求处理层,负责处理http请求,微服务路由,生成证书等工作,其程序代码由GO语言实现,在iVX公有云上,这一部分部署在AWS的容器服务上。
  • 服务逻辑层,负责应用服务逻辑的实现,即我们在服务事件面板中定义的所有逻辑。这一部分程序代码是目前是js,在iVX公有云上,由AWS的无服务器函数计算来运行;
  • 后台资源接口层,负责提供各种后台资源的调用方法,比如数据库的操作方法,文件的上传方法,这一部分程序代码也是由GO语言实现,和第一层一样,公有云上部署在AWS的容器服务上;
  • 后台资源,即各种数据库、缓存、文件等资源,iVX并不直接提供这些资源,因此在上图中用灰色表示。在公有云上,各种资源主要使用AWS的分布式云资源。

4、iVX适合什么样的用户?学习周期?

iVX适合怎样的用户

iVX的学习并不需要什么特别的技术和基础,只要你觉得自己的“逻辑能力”还不错,应该都可以很好掌握这门编程语言。总体来说iVX适合(但不限于)以下用户使用:

  • 想要学习并未来从事互联网编程的人
  • 想要转型互联网工作的人或学生
  • 在校学生和老师(计算机相关专业、艺术设计相关专业、理工科等)
  • 初级中级的前端或后台开发者

需要学习多长时间?

iVX毕竟是一门编程语言,有很多组件以及完整的编程体系,不可能“看半小时”就学会了。iVX的学习一定需要一定的投入,但这种投入是非常有意义的,很有可能未来的很多年里面iVX都会成为你学习工作的得力助手。

学习时长内部测试:

  • 计算机相关专业或从事过1年以上编程工作的人,2周左右可以基本掌握iVX并进行项目开发;
  • 从来没有编程经验的理工科专业毕业学生,2个月左右可以基本掌握iVX并进行项目开发。

5、iVX总结

iVX相较于传统的编程方式的优势可以总结为四快

快速学习

逻辑上其实很简单,因为iVX没有任何语法需要学习,图形化的操作使整个开发步骤也大大简化,因此iVX学习者只需要从逻辑和具体功能(或架构)入手,就可以完成开发。

快速开发

根据用户熟练程度和使用规模,iVX可以数倍提升开发效率,往往以前10个人干3个月的工作,使用iVX后,现在3个人不到一个月就能完成。

快速运行

这一点得益于iVX的核心CORE部分,包括编译和语法生成翻译,以及内部各种核心算法,都是真正的“大神级程序员”,因此,开发者使用iVX开发的时候,就相当于获得了这位“大神”的加持,因此生成的代码质量也能得到保障。

快速维护

iVX本身的结构化和本身极简的开发流程,保证了尽可能低的“系统维护”和“二次开发”成本。

前端部分所见即所得,即选即改;加上清晰的“可视化”日志系统,结构化的“动作组”“小模块”,使得整个应用可读性很强,逻辑梳理较为容易。

6、动手实践iVX无代码开发

看到这里如果还没心动,那不如实际上手操作一番体验真正的无代码开发流程:动动小手要比干枯的文字更具有说服力
点击链接报名参加ivx培训 :跳转地址

有关云原生IDE:iVX首个通用且强大无代码开发平台的更多相关文章

  1. ruby - 如何在 buildr 项目中使用 Ruby 代码? - 2

    如何在buildr项目中使用Ruby?我在很多不同的项目中使用过Ruby、JRuby、Java和Clojure。我目前正在使用我的标准Ruby开发一个模拟应用程序,我想尝试使用Clojure后端(我确实喜欢功能代码)以及JRubygui和测试套件。我还可以看到在未来的不同项目中使用Scala作为后端。我想我要为我的项目尝试一下buildr(http://buildr.apache.org/),但我注意到buildr似乎没有设置为在项目中使用JRuby代码本身!这看起来有点傻,因为该工具旨在统一通用的JVM语言并且是在ruby中构建的。除了将输出的jar包含在一个独特的、仅限ruby​​

  2. ruby-on-rails - Rails 源代码 : initialize hash in a weird way? - 2

    在rails源中:https://github.com/rails/rails/blob/master/activesupport/lib/active_support/lazy_load_hooks.rb可以看到以下内容@load_hooks=Hash.new{|h,k|h[k]=[]}在IRB中,它只是初始化一个空哈希。和做有什么区别@load_hooks=Hash.new 最佳答案 查看rubydocumentationforHashnew→new_hashclicktotogglesourcenew(obj)→new_has

  3. ruby-on-rails - 浏览 Ruby 源代码 - 2

    我的主要目标是能够完全理解我正在使用的库/gem。我尝试在Github上从头到尾阅读源代码,但这真的很难。我认为更有趣、更温和的踏脚石就是在使用时阅读每个库/gem方法的源代码。例如,我想知道RubyonRails中的redirect_to方法是如何工作的:如何查找redirect_to方法的源代码?我知道在pry中我可以执行类似show-methodmethod的操作,但我如何才能对Rails框架中的方法执行此操作?您对我如何更好地理解Gem及其API有什么建议吗?仅仅阅读源代码似乎真的很难,尤其是对于框架。谢谢! 最佳答案 Ru

  4. ruby - 模块嵌套代码风格偏好 - 2

    我的假设是moduleAmoduleBendend和moduleA::Bend是一样的。我能够从thisblog找到解决方案,thisSOthread和andthisSOthread.为什么以及什么时候应该更喜欢紧凑语法A::B而不是另一个,因为它显然有一个缺点?我有一种直觉,它可能与性能有关,因为在更多命名空间中查找常量需要更多计算。但是我无法通过对普通类进行基准测试来验证这一点。 最佳答案 这两种写作方法经常被混淆。首先要说的是,据我所知,没有可衡量的性能差异。(在下面的书面示例中不断查找)最明显的区别,可能也是最著名的,是你的

  5. ruby - 寻找通过阅读代码确定编程语言的ruby gem? - 2

    几个月前,我读了一篇关于ruby​​gem的博客文章,它可以通过阅读代码本身来确定编程语言。对于我的生活,我不记得博客或gem的名称。谷歌搜索“ruby编程语言猜测”及其变体也无济于事。有人碰巧知道相关gem的名称吗? 最佳答案 是这个吗:http://github.com/chrislo/sourceclassifier/tree/master 关于ruby-寻找通过阅读代码确定编程语言的rubygem?,我们在StackOverflow上找到一个类似的问题:

  6. ruby - Net::HTTP 获取源代码和状态 - 2

    我目前正在使用以下方法获取页面的源代码:Net::HTTP.get(URI.parse(page.url))我还想获取HTTP状态,而无需发出第二个请求。有没有办法用另一种方法做到这一点?我一直在查看文档,但似乎找不到我要找的东西。 最佳答案 在我看来,除非您需要一些真正的低级访问或控制,否则最好使用Ruby的内置Open::URI模块:require'open-uri'io=open('http://www.example.org/')#=>#body=io.read[0,50]#=>"["200","OK"]io.base_ur

  7. 程序员如何提高代码能力? - 2

    前言作为一名程序员,自己的本质工作就是做程序开发,那么程序开发的时候最直接的体现就是代码,检验一个程序员技术水平的一个核心环节就是开发时候的代码能力。众所周知,程序开发的水平提升是一个循序渐进的过程,每一位程序员都是从“菜鸟”变成“大神”的,所以程序员在程序开发过程中的代码能力也是根据平时开发中的业务实践来积累和提升的。提高代码能力核心要素程序员要想提高自身代码能力,尤其是新晋程序员的代码能力有很大的提升空间的时候,需要针对性的去提高自己的代码能力。提高代码能力其实有几个比较关键的点,只要把握住这些方面,就能很好的、快速的提高自己的一部分代码能力。1、多去阅读开源项目,如有机会可以亲自参与开源

  8. 7个大一C语言必学的程序 / C语言经典代码大全 - 2

    嗨~大家好,这里是可莉!今天给大家带来的是7个C语言的经典基础代码~那一起往下看下去把【程序一】打印100到200之间的素数#includeintmain(){ inti; for(i=100;i 【程序二】输出乘法口诀表#includeintmain(){inti;for(i=1;i 【程序三】判断1000年---2000年之间的闰年#includeintmain(){intyear;for(year=1000;year 【程序四】给定两个整形变量的值,将两个值的内容进行交换。这里提供两种方法来进行交换,第一种为创建临时变量来进行交换,第二种是不创建临时变量而直接进行交换。1.创建临时变量来

  9. git使用常见问题(提交代码,合并冲突) - 2

    文章目录git常用命令(简介,详细参数往下看)Git提交代码步骤gitpullgitstatusgitaddgitcommitgitpushgit代码冲突合并问题方法一:放弃本地代码方法二:合并代码常用命令以及详细参数gitadd将文件添加到仓库:gitdiff比较文件异同gitlog查看历史记录gitreset代码回滚版本库相关操作远程仓库相关操作分支相关操作创建分支查看分支:gitbranch合并分支:gitmerge删除分支:gitbranch-ddev查看分支合并图:gitlog–graph–pretty=oneline–abbrev-commit撤消某次提交git用户名密码相关配置g

  10. ruby - 这两段代码有什么区别? - 2

    打印1:defsum(i)i=i+[2]end$x=[1]sum($x)print$x打印12:defsum(i)i.push(2)end$x=[1]sum($x)print$x后者是修改全局变量$x。为什么它在第二个例子中被修改而不是在第一个例子中?类Array的任何方法(不仅是push)都会发生这种情况吗? 最佳答案 变量范围在这里无关紧要。在第一段代码中,您仅使用赋值运算符=为变量i赋值,而在第二段代码中,您正在修改$x(也称为i)使用破坏性方法push。赋值从不修改任何对象。它只是提供一个名称来引用一个对象。方法要么是破坏性

随机推荐