________________________________ ___ | / / _ __ \ _ ___ / __ __ / __ / | _ / / _ / / / ____ \ __ / _ / / / / / / / ____ / / _ / / / / _ / \ ____ / ______ / / _ /

Incepi un nou proiect?

Luati in considerare cu tarie sa incepeti cu @ most / core. Acesta este fundamentul viitoarei cele mai 2.0, are o documentatie imbunatatita, caracteristici noi, caracteristici mai bune de constructie care agita arborele si API-uri mai simple. Actualizarea de la @ most / core la most 2.0 va fi neintrerupta si simpla.

Folositi majoritatea 1.x deja pentru un proiect existent?

Puteti continua sa folositi majoritatea 1.x si sa actualizati la @ most / core sau most 2.0 cand sunteti gata. Consultati ghidul de actualizare pentru mai multe informatii.

Ce este?

Most.js este un set de instrumente pentru programarea reactiva. Va ajuta sa compuneti operatiuni asincrone pe fluxuri de valori si evenimente, de ex. Mesaje WebSocket, evenimente DOM etc. si pe valori variabile in timp, de ex. „Valoarea curenta” a unui <input>, fara multe riscuri ale efectelor secundare si stare partajabila mutabila.

Dispune de o performanta ultra inalta, arhitectura redusa, API-uri pentru a crea cu usurinta fluxuri de evenimente din surse existente, cum ar fi evenimente DOM, si un set mic, dar puternic de operatiuni pentru fuzionarea, filtrarea, transformarea si reducerea fluxurilor de evenimente si a valorilor variabile in timp .

Afla mai multe

  • Documente API
  • Retete
  • Exemple
  • Ia-l
  • Pachete de baza si comunitare

Exemplu simplu

Iata un program simplu care afiseaza rezultatul adaugarii a doua intrari. Rezultatul este reactiv si se actualizeaza ori de cate ori se modifica oricare dintre intrari.

In primul rand, fragmentul HTML pentru intrari si un loc pentru afisarea rezultatului live:

<form> <input class = “x”> + <input class = “y”> = <span class = “result”> </span> </form>

Folosind most.js pentru a face reactiv:

import {fromEvent, combine} from ‘most’ const xInput = document.querySelector (‘input.x’) const yInput = document.querySelector (‘input.y’) const resultNode = document.querySelector (‘. result’) const add = (x, y) => x + y const toNumber = e => Number (e.target.value) const renderResult = result => {resultNode.textContent = result} export const main = () => {// x reprezinta valoarea curenta a xInput const x = fromEvent (‘input’, xInput) .map (toNumber) // y reprezinta valoarea curenta a yInput const y = fromEvent (‘input’, yInput) .map (toNumber) // result este valoarea curenta in timp real a adaugarii rezultatului x si y const = combinati (adaugati, x, y) // Observati valoarea rezultatului redand-o la resultNode result.observe (renderResult)}

Mai multe exemple

Puteti gasi exemplul de mai sus si altele in exemplele repo.

Ia-l

Cerinte

Majoritatea necesita ES6 Promise. Puteti utiliza polilocul dvs. preferat, cum ar fi crezul, cand, bluebird, es6-promise, etc. Utilizarea unui poliloc poate fi benefica in special pe platformele care nu au inca capacitati bune de raportare a respingerii.

Instalare

Ca modul:

// ES6 import {/ * functii * /} din „most” // sau import * ca majoritate din „most”
// ES5 var most = require (‘most’)

Ca window.most:

bower install – economisiti cel mai mult
<script src = “most / dist / most.js”> </script>

Ca biblioteca prin CDN:

<! – unminified -> <script src = “https://unpkg.com/most/dist/most.

mamadas en la playa follando cincuentonas
intercambio amateur peliculas porno de incesto
videos porno maduras españa orgias de maduros
porno rspañol mi primera follada
madre española follando con su hijo videos pornos muy guarros
española pillada xxx orgias
abuelas a cuatro patas porbo
putasfollando españolas pajeandose
abuelos calientes sexo camara oculta españa
me corro en su boca sin avisar hermanos jovenes follando
negros follando maduras videos porno morbosos
españolas pajeandose videos de peliculas eroticas
maduritas cachondas trios con españolas
follame xxx porno bix
madres viciosas hijas calientes
pajas entre amigos se follan a mi mujer
ancianas españolas follando zoofilia con abuelas
porno español trans viejas zoofilia
venezolanas desnudas pollas arabes
incesto clasico tias follando con animales

js”> </script>

<! – minificat -> <script src = “https://unpkg.com/most/dist/most.min.js”> </script>

Suport pentru dactilografiere

Most.js functioneaza cu dactilografiat din cutie, deoarece ofera dactilografii locale care vor fi citite atunci cand importati Most.js in codul dvs. Nu trebuie sa legati manual un fisier d.ts extern in tsconfig.

Most.js depinde de Promisiunile native, astfel incat o definitie de tip pentru Promise trebuie sa fie disponibila in configurarea dvs.:

  • Daca tsconfig-ul dvs. vizeaza ES6, nu trebuie sa faceti nimic, deoarece textul va include in mod implicit o definitie pentru Promise.
  • Daca tsconfig-ul dvs. vizeaza ES5, trebuie sa furnizati propria definitie Promise. De exemplu es6-shim.d.ts

Interoperabilitate

Fluxurile Most.js sunt compatibile cu Promisiunile / A + si Promisiunile ES6. De asemenea, implementeaza Fantasy Land si Static Land Semigroup, Monoid, Functor, Apply, Applicative, Chain si Monad.

Programare reactiva

Programarea reactiva este un concept important care ofera o multime de avantaje: se ocupa in mod natural de asincronie si ofera un model pentru tratarea datelor complexe si a fluxului de timp, reducand totodata nevoia de a recurge la starea mutabila partajata. Are multe aplicatii: interfete UI si animatie interactive, comunicare client-server, robotica, IoT, retele de senzori etc.

De ce most.js pentru programare reactiva?

Performanta ridicata

Un accent principal al most.js este performanta. Rezultatele testelor de perfectionare indica faptul ca isi atinge obiectivele in acest domeniu. Speranta noastra este ca, publicand aceste numere si aratand ce este posibil, si alte libs se vor imbunatati.

Arhitectura modulara

Most.js este extrem de modularizat. Arhitectura interna Stream / Source / Sink si API-urile sunt simple, concise si bine definite. Combinatorii sunt implementati in intregime in termenii acelui API si nu trebuie sa utilizeze detalii private. Acest lucru face mai usoara implementarea noilor combinatoare extern (de exemplu, in contribu repo, de exemplu), garantand totodata ca acestea pot fi in continuare de inalta performanta.

Simplitate

In afara de a face combinatorii mai putin „evident corecti”, complexitatea poate duce si la probleme de performanta si mentenabilitate. Am simtit ca o simpla implementare va duce la o lib mai globala mai stabila si mai performanta.

Integrare

Most.js se integreaza cu caracteristici de limbaj, cum ar fi promisiuni, iteratoare, generatoare si generatoare asincrone .

Promisiuni

Promisiunile sunt un compliment natural pentru fluxurile reactive asincrone. Relatia dintre „secventa” sincrona si „valoare” este clara, iar analogul asincron trebuie sa fie si el clar. Luand notiunea de secventa si valoare si ridicandu-le in lumea asincrona, pare clar ca reducerea unei secvente asincrone ar trebui sa produca o promisiune. Prin urmare, most.js foloseste promisiuni atunci cand o singura valoare este analogul natural sincron.

Most.js interopera perfect cu promisiunile ES6 si Promises / A +. De exemplu, reducerea unui flux returneaza o promisiune pentru rezultatul final:

import {from} din „most” // Dupa 1 secunda, se inregistreaza 10 din ([1, 2, 3, 4]) .delay (1000) .reduce ((result, y) => result + y, 0). then (result => console.log (result))

De asemenea, puteti crea un flux dintr-o promisiune:

importati {fromPromise} din „most” // Jurnalele „hello” din Promise (Promise.resolve (‘hello’)) .observe (mesaj => console.log (mesaj))

Generatoare

Conceptual, generatoarele va permit sa scrieti o functie care actioneaza ca o secventa iterabila. Generatoarele accepta interfata Iterator standard ES6, deci pot fi repetate folosind standardul ES6 pentru API-ul urmator () al iteratorului.

Most.js interopera cu generatoare si iteratoare ES6. De exemplu, puteti crea un flux de evenimente din orice ES6 iterabil:

import {from} from ‘most’ function * allTheIntegers () {let i = 0 while (true) {yield i ++}} // Inregistreaza primele 100 de numere intregi din (allTheIntegers ()) .take (100) .observe (x = > console.log (x))

Generatoare asincrone

You can also create an event stream from an asynchronous generator, a generator that yields promises:

import { generate } from ‘most’ function* allTheIntegers(interval) { let i=0 while(true) { yield delayPromise(interval, i++) } } const delayPromise = (ms, value) => new Promise(resolve => setTimeout(() => resolve(value), ms)) // Log the first 100 integers, at 1 second intervals generate(allTheIntegers, 1000) .take(100) .observe(x => console.log(x))