gwt格式

介绍

在过去的4到5年中,React式编程的普及程度得到了极大的提高。 这可以告诉我们,React性应用程序的用例现在比以往任何时候都有效。 后端系统上的压力已经增加,因此需要用最少的资源来处理这种压力。 响应式编程被认为是在减少资源消耗的同时提高效率和吞吐量的一种方法。 React式编程的流行导致了大多数编程语言和平台的React式扩展的发展:GWT也不例外。 在这篇文章中,我们将提供rxjava-gwt的用法示例,它是GWT的React式扩展。

关于rxjava-gwt

rxjava-gwt是RxJava对GWT的改编,而不是某些人可能认为的RxJ的包装器。 根据项目创建者Ignacio Baca的说法,将RxJava适配到GWT比包装RxJ更有用,尤其是如果Rx代码在客户端和服务器之间共享时,因为在此行为是完全一样的。 同样,这引入了共享自定义运算符或Rx合成的可能性。

用例

从后端的角度来看,React式编程被视为提高效率和吞吐量,以最小的资源消耗实现请求的方法,但是前端呢? 好吧,我们知道JavaScript本质上是异步的,并且回调/ Promises的用法很常见,那么React性又要添加什么呢? 首先,如果应用程序正在调用外部数据源(例如HTTP请求,Websocket,服务器发送的事件),则可以通过将这些源转换为流并在数据涌入时做出React,而不是等待数据的完整性,从而使应用程序更具响应性可用。 其次,如果要执行的操作很常见,则React式编程可以帮助将多个事件源组合到一个主流中。

假设我们要为著名的curl库创建一个简单的UI。 我们希望有三个字段(url,方法和主体数据),并且希望在键入时生成curl命令。 引入React式编程似乎是一个很好的用例,因为我们有多个事件源需要相同的处理。 使用传统的编程模式,我们将必须对每个事件处理程序执行相同的操作。

HTML

<div class="form-container"><label for="url">URL:</label><input id="url" type="text"></input><label for="method">Method: </label><select id="method"><option selected value="GET">GET</option><option value="POST">POST</option><option value="PUT">PUT</option><option value="DELETE">DELETE</option><option value="PATCH">PATCH</option><option value="HEAD">HEAD</option><option value="OPTIONS">OPTIONS</option><option value="CONNECT">CONNECT</option><option value="TRACE">TRACE</option></select><label for="data">Data: </label><textarea id="data"></textarea><div id="result">curl <span id="generatedCommand"></span></div></div>

HTMLInputElement urlInput = (HTMLInputElement) DomGlobal.document.getElementById("url");HTMLSelectElement methodInput = (HTMLSelectElement) DomGlobal.document.getElementById("method");HTMLTextAreaElement dataInput = (HTMLTextAreaElement) DomGlobal.document.getElementById("data");HTMLElement generatedCommand = (HTMLElement) DomGlobal.document.getElementById("generatedCommand");final String[] commands = new String[3];Observable urlStream = Observable.create((emitter) -> {urlInput.onkeyup = (event) -> {HTMLInputElement urlInputTarget = (HTMLInputElement) event.target;emitter.onNext(new Command(2, urlInputTarget.value));return null;};});Observable methodStream = Observable.create((emitter) -> {methodInput.onchange = (event) -> {HTMLSelectElement methodSelect = (HTMLSelectElement) event.target;emitter.onNext(new Command(1, "-X"+methodSelect.value));return null;};});Observable dataStream = Observable.create((emitter) -> {dataInput.onkeyup = (event) -> {HTMLTextAreaElement dataInputTarget = (HTMLTextAreaElement) event.target;emitter.onNext(new Command(3, "-d '"+dataInputTarget.value+"'"));return null;};});Observable.merge(urlStream, methodStream, dataStream).subscribe((obs) -> {commands[obs.position - 1] = obs.value;generatedCommand.textContent = String.join(" ", Stream.of(commands).filter(Objects::nonNull).collect(Collectors.toList()));});}
}

结论

rxjava-gwt为GWT开发人员打开了React世界的大门。 我们已经看到一些使React式编程有用的用例,因此GWT开发人员应该在他们的应用中尝试在其应用程序中使用React式模型。

  • 源代码: https : //github.com/zak905/reactive-gwt

其他例子

  • 蛇游戏: https : //github.com/ibaca/rxsnake-gwt
  • 经典突破游戏: https : //github.com/ibaca/rxbreakout-gwt
  • 绘画应用程序: https : //github.com/ibaca/rxcanvas-gwt

翻译自: https://www.javacodegeeks.com/2018/05/reactive-gwt.html

gwt格式

gwt格式_活性GWT相关推荐

  1. gwt格式_使用Spring Security保护GWT应用程序的安全

    gwt格式 在本教程中,我们将看到如何将GWT与Spring的安全模块(即Spring Security)集成. 我们将看到如何保护GWT入口点,如何检索用户的凭据以及如何记录各种身份验证事件. 此外 ...

  2. 敏捷中gwt含义_在GWT中序列化/反序列化Json

    敏捷中gwt含义 JSON和GWT 最近, GWT用户小组中进行了有趣的讨论 ,涉及在客户端对JSON进行序列化/反序列化的最佳实践. 这篇文章旨在突出其重点. 到目前为止,在GWT中有三种将对象转换 ...

  3. gwt格式_GWT HTTP请求替代方案

    gwt格式 由于多种原因 ,许多GWT用户放弃了RPC机制,这是GWT提供的调用后端的标准方法. 他们发现,在GWT RequestBuilder与其他可能不适合其应用程序模型的外部库之间迷失了自己. ...

  4. gwt格式_GWT的渐进式Web应用程序配方

    gwt格式 渐进或不渐进- 如果您已经设计或开发Web应用程序已有一段时间,那么您可能会遇到无数次"渐进式Web应用程序"一词,并且可能会在未来几年内使用. 您可能想知道PWA的确 ...

  5. gwt前台开发_为GWT设置开发环境

    gwt前台开发 介绍 这是旨在用Java开发跨平台移动应用程序的系列文章的一部分 . 在此博客文章中,我们将了解GWT是什么,并为GWT设置开发环境. GWT是一个开源开发工具包,用于开发基于浏览器的 ...

  6. gwt格式_GWT –利弊

    gwt格式 我喜欢JavaScript. 随着jQuery和Mootools的出现,我对JavaScript的热爱倍增 . 如果有选择,我将对开发的任何Web应用程序使用上述任一框架. 但是进入服务行 ...

  7. idea gwt 怎么编译_为GWT设置开发环境

    idea gwt 怎么编译 介绍 这是旨在用Java开发跨平台移动应用程序的系列文章的一部分. 在此博客文章中,我们将了解GWT是什么,并为GWT设置开发环境. GWT是一个开源开发工具包,用于开发基 ...

  8. gwt-2.8.2下载_从GWT开发人员的角度概述Scala.js

    gwt-2.8.2下载 该博客严重偏向于GWT(和基于GWT的框架),但是我谨记,将来GWT可能会被其他技术取代,因此我们始终愿意探索其他平台/框架. 正如他们所说,多元化可以降低风险. 每种编程语言 ...

  9. 腾讯视频下载格式_怎么下载腾讯视频

    不管这个腾讯视频好用与否,都有一大批用户,本文播放器家园网小编分享腾讯视频下载格式_怎么下载腾讯视频.腾讯视频时刻为您推荐最新最火的视频,精彩不断随时观看.支持各种画质的下载,没网也能享受高视觉的享受 ...

最新文章

  1. 服务器架设笔记——编译Apache及其插件
  2. 纳米孔(Oxford Nanopore)测序仪的学习笔记
  3. Android开发--实现对话框(AlertDialog)
  4. RocketMQ-控制台的安装与启动
  5. 启明云端分享|SSD20X 如何使用SD卡根文件系统
  6. 代码挑战“ Vrolijke Framboos”事后验尸
  7. Shiro 登录认证源码详解
  8. onedrive-cf-index 搭建教程
  9. 解析数据访问层操作数据库的方式
  10. 2021富途校招后台C++
  11. 基于内容的视频标注——关键帧图象层标注
  12. linux命令行看直播网站,快速搭建linux下视频点播,直播网站。
  13. TP6+JWT开发APP接口
  14. html js获取本地ip,在js获取本地IP地址
  15. 高手的思维与打法:灰度思维,黑白决策
  16. 计算机表格对比功能怎么用,两个excel表格数据对比差异_怎么用vlookup对比两个表格的差异...
  17. Linux V4L2框架源码分析
  18. 2020第六届上海市大学生网安大赛Misc|writeup
  19. 汇智创科机器人,汇智创科机器人加盟
  20. 怎么把荣耀8x的手机备忘录导到电脑里?

热门文章

  1. CodeForces1477D Nezzar and Hidden Permutations(构造+调整+菊花图)
  2. 笛卡尔树详解带建树模板及例题运用(Largest Submatrix of All 1’s,洗车 Myjnie,Removing Blocks,SPOJ PERIODNI)
  3. P3185-[HNOI2007]分裂游戏【SG函数】
  4. jzoj5123-diyiti【统计,容斥】
  5. 星座图(2020特长生 T4)
  6. Oracle入门(十二H)之设置、恢复和删除不可用列
  7. Object.keys方法拿到对象的key值
  8. C++描述 国王给骑士发放金币 ||
  9. layui如何实现添加数据时关闭页面层,并实时刷新表格数据?
  10. 最全三大框架整合(使用映射)——数据库资源文件jdbc.properties