# webrose
**Repository Path**: shxch1205/webrose
## Basic Information
- **Project Name**: webrose
- **Description**: 基于Spring主流技术栈低代码PaaS平台,与其他框架"代码生成器"思路不同,大胆创新另辟蹊径,极简在线开发/配置立即生效,包括单据模板、工作流、报表、管理控制台等一套完整平台组件,同时还有Java客户端B/S+C/S混合模式之独特功能。
- **Primary Language**: Java
- **License**: Apache-2.0
- **Default Branch**: master
- **Homepage**: None
- **GVP Project**: No
## Statistics
- **Stars**: 20
- **Forks**: 8
- **Created**: 2022-10-09
- **Last Updated**: 2025-09-21
## Categories & Tags
**Categories**: Uncategorized
**Tags**: 低代码, PaaS平台
## README
# webrose
#### 介绍
WebRose是一个有着众多大胆创新,另辟蹊径的低代码PaaS平台,有的思路方法甚至与业内主流大不同,无论是开发模式、环境搭建、代码量等都有非常独到的实用高效的创新。
技术架构路线本就是一个相互借鉴然后不断发展与创新的过程,百家争鸣,各有千秋,WebRose更倾向于回归与追求极简、优雅、自由的低代码与原生Web之美,尤其更适合中小型软件公司项目快速交付。
官方网站地址--- http://www.webrose.net.cn
在线Demo地址--- http://www.webrose.net.cn:5015/wrs/framework/login.html
在线API文档--- http://www.webrose.net.cn/help5/html/index.html
博客文章--- https://blog.csdn.net/u012429080/article/details/124668347
联系方式见文档最后
#### 软件架构
整体架构是主流的SpringBoot/SpringCloud技术栈,采用前后端分离,分布式微服务架构(也可单体模块化部署),整个环境主要只有Spring核心包,没有引用其他太多非主流jar包,非常简洁纯粹
#### 搭建本地开发环境
在文件【/docs/1-开发环境搭建说明.docx】中有图文并茂的详细搭建本地开发环境说明,这还有一个[视频介绍如何搭建](http://www.webrose.net.cn/help5/html/x010/x010.html)更形象说明
因为在搭建环境方面做了大量简化创新,所以只需三五分钟就可以跑通,运行Demo例码,Debug源码研究运行原理
#### 目录说明
.idea 整个开源项目直接就是一个Idea工程,下载后导入Idea就可用
RunTimeEnv 运行环境工具软件包,包括JDK/Tomcat/MySQL/Ant等,解压后就能跑
ServiceProject 后端端Java工程文件
├── buildjar 编译打包工具
├── lib3 所有第三方jar包,主要Spring环境包
├── lib3_webrose 本webrose平台的jar包与源代码 :boom:
│ ├── webrose.jar平台后端运行jar包
│ └── webrose_src.jar平台后端源码,对应上面的jar,100%开源(一个文件不缺)
│ 可自己解压后拿源码编译,之所以默认不展开,是为了提高编译速度。
├── resources 标准的SpringBoot的资源目录
├── src_product_crm 预置的一个crm产品的java例码,为了展示Ant打包时如何配置
├── src_product_ehr 预置的一个ehr产品的java例码,为了展示Ant打包时如何配置
└── src_project_test1 预置的一个测试项目的java例码,为了展示Ant打包时如何配置
WebProject 前端Web工程文件
├── framework 本平台的前端代码
├── product_crm 预置的一个crm产品的前端例码
├── product_ehr 预置的一个ehr产品的前端例码
├── project_test1 预置的一个测试项目的前端例码
└── config.js 前端唯一的配置文件,即配置后端的地址等
appouter_config 外部配置文件目录
├── login_webrose.gif 登录界面的背景图
├── logo_webrose.gif 主界面左上角logo图
└── webrose.xml 后端最重要也是唯一的配置文件,包括各种参数,数据源等
docs
├── 1-开发环境搭建说明.docx :heart: 详细介绍如何一两分钟就搭建好开发环境
└── 2-从零开始安装新产品库.docx 如何新建一个空数据库,然后安装一个全新的产品库
### 与其他框架创新之处
WebRose平台在前后端API、访问模式、代码生成器思路、环境搭建等各方面都与业内其他框架有大量另辟蹊径、与众不同的创新
1.搭建环境不同之处
1.1不是Maven工程,而是一个标准Java工程,因为我们认为第一次构建环境肯定要用Maven,但构建好后一般ClassPath的jar环境不会经常变动,所以给其他人使用时把Maven依赖的jar包导出,直接放在工程目录中,做成一个Java工程更方便,编译速度也快得多。也可以说是Maven只是第一次用,只要ClassPath环境不变后面其实没必要每次都用,这就好比去饭店吃饭,只需第一次花点时间精心挑选菜品,然后组合成一个套餐,以后只要口味偏好没变,下次就直接点这个套餐名即可,大大提高效率
1.2前后端工程合在一个工程中,一般做法是前端与后端是两个工程,也是两个git库,而我们是合在一个工程中变成两个目录,后端目录叫ServiceProject,前端目录叫WebProject,一是可以一个人在一个开发工具中同时开发前后端代码,二是git提交等项目管理更简洁,即只要一个git库一个工程解决所有问题
1.3直接使用Ant脚本编译与打SpringBoot的Jar包,而不是用Maven打包,现在最主流就是使用Maven搭建工程与打包,但缺点就是会被Maven的种种规则绑定死,配置与学习Maven也是有点烦琐,无法灵活自由的进行全部创新的环境搭建方式,所以我们放弃Maven模式,而直接使用标准Java工程,然后再直接写Ant脚本进行编译与打包,反而自由灵活简单快速得多
2.有Web与Java客户端两种模式
WebRose平台与其他框架有一个非常大的区别是,我们除了Web浏览器访问方式外,客户端还可以使用Java桌面应用程序访问,既还有一种RIA或B/S+C/S混合模式,因为在实际项目中一些复杂前端功能并不适合用Web网页开发,而更适合用应用程序开发,比如报表设计器,工作流设计器,多线程/高内存/与硬件通讯等前端功能,这样其实就等于多了一种选择,而且Web与Java客户端两者是无缝完美集成(这种一体化集成在国内还没有发现类似完美的),可以直接在Web菜单直接调用Java客户端(就像在网页中调用百度网盘客户端一样),客户端应用程序用Java开发而不是window程序还可以在Linux的环境上跑,可以适应将来国产化趋势,前后端都是Java语言在数据交互上也更强大方便
Java客户端非常适合智能制造、工业互联网、智慧医疗等一些行业的特殊场景需求
值得一提的是,Java客户端应用程序访问模式,并不是传统意义上的C/S架构,即需要先安装一个庞大臃肿的应用程序(就像安装PC版的QQ与微信一样),而是只要安装一个纯粹的JRE,并不要把业务功能的前端代码都预先安装在客户端,然后在登录系统访问时,根据点击的某个功能点,根据“按需按引用下载”的思想,通过拦截JVM的ClassLoader的类加载逻辑,自动去服务器端下载对应的Class类到客户端,然后在客户端加载运行这个界面,这与浏览器点击某链接按引用下载相应的html/js/css的原理其实是一样的,新版本发布与部署也是只要在服务器端上传一次最新版本即可,然后所有客户端只要刷新或重新登录下即可,即本质上也是B/S三层架构。
3.动态生成内存代码(不是静态生成代码文件)
业内大多数低代码平台的思路是根据元数据(表结构)使用一个工具程序生成前后端各类代码文件(也叫代码生成器),然后再在基础上进行修改编译发布,有的框架在细节上做得很精致,这种思路称为“静态生成代码文件”,而WebRose没有选择这种传统大众思路,因为我们认为这种思路本质上最终的代码量并没有减少,只不过创建代码的过程更快捷了而已,不是真正意义上的低代码,而且在增加表单字段等场景中需要重新改代码再见编译发布,甚至还要重启服务器,非常不方便。WebRose是在运行时在内存中动态创建代码并直接运行,有点JIT(Just-In-runTime Compile)即时编译的味道,即肯定也是要生成代码的,但不是输出成静态文件,而是在内存中创建好然后直接加载并运行,这样可以实现在线配置增加字段后立即生效,增删改逻辑全立即自动好了,还可以直接在线编写前后端代码,然后保存后立即生效可运行,即100%完全在线PaaS开发,永远都不需要再重启服务器。这种动态内存代码模式比静态生成代码文件模式无论是在功能强大,还是技术实现难度上其实都是高了一个维度,也是未来重要发展趋势与方向
4.动态实体Bean/VO(非静态代码)
目前在后端存储方面主流的都是使用MyBatis操作实体Bean(也有叫VO)对象,每一个数据库表都对应一个实体Bean对象,这种设计思路已经沿用了许多年,甚至被有些人认为是唯一正确永远不会过时,但正如动态代码与静态代码的区别一样,任何事情都有两面性辩证性,如果想实现在线PaaS编程效果,比如修改表结构字段时只要在线配置就立即生效,不需要改代码重新编译发布,就会发现静态实体Bean对象的思路就不太适合这种需求场景,因为数据表加一个字段,实体Bean对象就也要加一个类变量,再增加getXXX/setXXX方法(或注解),也就是说肯定要改代码,然后就肯定要重新编译与发布,这就不是在线PaaS编程的味道了。所以基于这种“结构性矛盾”考虑,WebRose平台也创新了“动态实体Bean”思路,即所有数据对象都使用一个HashVO对象(本质上是个HashMap)来装载,即一个对象解决所有实体Bean问题,数据保存也是采用通用的API与对象,这样一来就可以实现“完全在线配置,立即生效”效果,开发过程高效得多
5.前端与众不同之处
前端技术栈发展非常快,但也越来越复杂,有时甚至成了项目进展的重点与难点,现在前端最流行的框架是Vue(更多)/React/Angular,但还要结合nodejs,npm,yarn,webpack等一系列很复杂的脚手架技术,越来越多的人也开始反思与吐槽,虽然模块化管理的理念很先进,但实际搭建与配置环境已成了一个非常复杂臃肿甚至痛苦的过程,比如光npm就一下子引进成千上万个包与文件(有的人一头雾水),webpack不但配置复杂,而且又重新编译输出成另一种加密后的文件,调试问题反而更麻烦。前端开发需要学习与掌握的知识与技术越来越多,学习周期与成本越来越高,这与Html与Web技术创建之初的简单易学、自由灵活、纯净优雅的设计初衷及理念其实是渐行渐远
尤其是现在要实现“低代码在线PaaS开发”的效果,想要直接在线编写代码保存后立即生效可运行,就会发现与WebPack这种需要“二次编译”的方式存在“结构性矛盾”,只能另辟蹊径方能破壁。
所以WebRose平台在前端进行了大胆创新,以结果为导向,从使用低代码PaaS模式快速实现功能的本质目标出发,创新出全新一套前端框架,而且回归Web技术简洁灵活优雅的初衷,大多采用标准原生的Html引用JS(无需二次编译),平台本身也尽可能少的引用第三方前端框架(只引用了五六个最流行前端框架),让使用者自己自由引用其他框架,即是一个更接近原生Web理念轻量级的前端框架,也可以简单理解如果想研究搞懂本平台的源码是比较容易的 :blush:
但在构建前端组件时,也汲取了Vue等MVVM框架的组件化、双向数据绑定、虚拟Dom的先进理念,然后自己封装了一套MVVM组件,并不是基于Vue+ElementUI基础之上进行二次封装,之所以是汲取Vue理念自己封装,而不是直接使用Vue封装,主要原因前面已提过,想要实现“低代码PaaS在线编码”的效果,就必须创新全新的API,而不能被原来本身已是高度封装的框架的API所束缚,而且不能用WebPack做“二次编译”,解决这种“结构性矛盾”只能另辟蹊径到更底层使用原生Web技术进行构建,这就好比创建鸿蒙肯定不能在安卓之上使用安卓的API来构建的,必须钻到更底层去重新构建各种API与组件才行
需要特别指出的是,WebRose独创了一套与众不同低代码API(具体参考各种Demo),可以业内其他框架1/5~1/10的代码量实现同样的功能,既简洁又强大,但这并不意味着开发功能就被限制了只能使用这套API,恰恰相反,本台本身是非常开放的,可以完全兼容其他种前端框架与技术路线,具体做法是在配置菜单可以选择不同类型,如果选择“WRS类型”(webrose简写)则这个功能点的代码就用低代码模式API编写,如果选择“LocalURL类型”,则就可以配置一个新的url,然后这个url的html中就可以自己自由使用其他任何前端框架,比如Vue/React/Angular/JQuery都行,可以非常容易集成已有的原来自己的某框架,即整体模式点是完全自由兼容开放的 :blush:
### 联系方式
邮件:32746081@qq.com 微信:15800369039(老徐)