rx-dom中文文档|rx-dom js中文教程|解析
RxJS-DOM 7.0 – 用于 JavaScript响应式扩展的 HTML DOM 绑定
概述
该项目为 HTML DOM 对象提供了 JavaScript 响应式扩展 (RxJS) 绑定,以抽象事件绑定、Ajax 请求、Web 套接字、Web Workers、服务器发送的事件、地理定位等。
包括电池
当然,有很多库可以开始使用 HTML DOM 的 RxJS 绑定。对从哪里开始感到困惑?从使用 的完整功能集开始rx.dom.js
,然后您可以将其缩减为您需要的功能,例如仅事件或 ajax。如果你使用 RxJS Lite,你可以从rx.lite.dom.js
文件开始,然后从那里选择你想要的功能。
这组库包括:
主要图书馆:
rx.dom.js
rx.dom.compat.js
rx.dom.ajax.js
rx.dom.ajax.compat.js
rx.dom.concurrency.js
rx.dom.events.js
rx.dom.events.compat.js
rx.dom.html.js
精简图书馆:
rx.lite.dom.js
rx.lite.dom.compat.js
rx.lite.dom.ajax.js
rx.lite.dom.ajax.compat.js
rx.lite.dom.concurrency.js
rx.lite.dom.events.js
rx.lite.dom.events.compat.js
rx.lite.dom.html.js
入门
有多种方法可以开始使用 RxJS 的 HTML DOM 绑定。这些文件在cdnjs和jsDelivr上可用。
下载源代码
要下载 JavaScript 响应式扩展的 HTML DOM 绑定的源代码,请输入以下内容:
git clone https://github.com/Reactive-Extensions/rxjs-dom.gitcd ./rxjs-dom
NPM安装
使用npm install rx-dom
Bower安装
使用bower install rx-dom
Jam安装
使用jam install rx-dom
NuGet安装
使用PM> Install-Package RxJS-Bridges-HTML
HTML DOM 绑定入门
让我们来看一个简单但功能强大的示例,它是用于 HTML 的 JavaScript 绑定的响应式扩展,自动完成。在这个例子中,我们将从文本框中获取用户输入并修剪和限制输入,这样我们就不会因建议请求而使服务器过载。
我们将从应用程序的基本框架开始,其中包含对基于 RxJS Lite 的方法的脚本引用,以及用于 HTML DOM 的 RxJS 绑定,以及用于输入的文本框和用于结果的列表。
......
这里的目标是从我们的文本框中获取输入并以一种不会因请求而使服务过载的方式对其进行去抖动。为此,我们将使用 document.getElementById 方法获取对 textInput 的引用,然后使用Rx.DOM.fromEvent
调用的 keyups的专门化快捷方式绑定到“keyup”事件Rx.DOM.keyup
,然后调用DOM 元素事件处理程序并将其转换为 RxJS Observable .
var textInput = document;var throttledInput = RxDOM;
由于我们只对文本感兴趣,我们将使用该map
方法来获取事件对象并返回目标的值,或者我们可以调用pluck
相同的效果。
我们也对少于两个字母的查询词不感兴趣,因此我们将使用返回字符串长度是否合适的where
orfilter
方法来修剪用户输入。
我们还希望稍微减慢用户输入的速度,这样外部服务就不会被请求淹没。为此,我们将使用debounce
超时为 500 毫秒的方法,该方法将忽略您的快速输入,并且仅在您暂停该时间跨度后返回一个值。
最后,我们只需要输入流中的不同值,因此我们可以忽略不唯一的请求,例如,如果我复制并粘贴相同的值两次,使用该distinctUntilChanged
方法将忽略该请求。
;
综上所述,我们的throttledInput 如下所示:
var textInput = document;var throttledInput = RxDOM ;
现在我们有了来自文本框的节流输入,我们需要查询我们的服务,在本例中是 Wikipedia API,以根据我们的输入获取建议。为此,我们将创建一个名为 searchWikipedia 的函数,该函数调用Rx.DOM.jsonpRequest
包装进行 JSONP 调用的方法。
{ var url = 'http://en.wikipedia.org/w/api.php?action=opensearch&format=json&search=' + + '&callback=JSONPCallback'; return RxDOM;}
既然 Wikipedia 搜索已经完成,我们可以将节流输入和我们的服务调用联系起来。在这种情况下,我们将在throttledInput 上调用select,然后从textInput 中获取文本,然后使用它来查询维基百科,过滤掉空记录。最后,为了处理并发问题,我们需要确保我们只获得最新的值。异步编程可能会出现问题,如果没有正确取消,较早的值可能会在返回最新值之前返回,从而导致错误。为了确保这不会发生,我们有flatMapLatest
只返回最新值的方法。
var suggestions = throttledInput;
最后,我们将通过调用 subscribe 来订阅我们的 observable,它将接收结果并将它们放入一个无序列表中。我们还将处理错误,例如,如果服务器不可用,则通过传入处理错误的第二个函数。
var resultList = document; { while elementfirstChild element; } { var li = document; liinnerHTML = text; return li;} suggestions;
在这个简单的例子中,我们只是触及了这个库的表面。
潜入!
请检查:
执照
版权所有 微软
根据 Apache 许可,版本 2.0(“许可”)获得许可;除非遵守许可,否则您不得使用此文件。您可以在http://www.apache.org/licenses/LICENSE-2.0获得许可证的副本
除非适用法律要求或书面同意,否则根据许可分发的软件是按“原样”分发的,没有任何类型的明示或暗示的保证或条件。请参阅许可证以了解管理许可证下的许可和限制的特定语言。