Es hilft Programmierern (sowohl hinterher als auch vorderster Ende), die Komplexität herkömmlicher Zustandsmanagementsysteme wie React Redux und reaktive Programmiermusterbibliothek wie RXJs zu vermeiden. Es ist leicht und einfach zu verwenden, die Bibliothek enthält eine Kernfunktion und einen Haken für React. Durch die Verwendung können wir die Mehrheit des Datentyps wie primitive, komplexe, Versprechen und Funktionen als Service abonnieren und alle Änderungen nach einem bestimmten Parameter (parametrisches Abonnement) empfangen. Wir müssen nicht einmal den Abonnement-Unsubscribe-Prozess steuern, um mit einem einfachen Hook zu reagieren. Es führt den gesamten Vorgang automatisch durch.
npm i @ barteh/as-service --save import { AsService , Server } from "@barteh/as-service" ; var srv1 = new AsService ( 5 ) ; // number as service
srv1 . Observable ( )
. subscribe ( a => console . log ( "ser1 data via observable is:" , a ) ) ;
srv1 . load ( ) . then ( a => console . log ( "ser1 data via promis:" , a ) ) ; var srv2 = new AsService ( { x : 9 } ) ; // object as service
srv2 . Observable ( )
. subscribe ( a => console . log ( "ser2 data via observable is:" , a ) ) ;
srv2 . load ( ) . then ( a => console . log ( "ser2 data via promis:" , a ) ) ; var srv3 = new AsService ( param => param * 3 ) ; // function as service
srv3 . Observable ( 2 ) //parametric observe
. subscribe ( a => console . log ( "ser3 data via observable is:" , a ) ) ;
//passing (Number) 2 as parameter
srv3 . load ( 2 ) . then ( a => console . log ( "ser3 data via promis:" , a ) ) ; var ser4 = new AsService ( param => new Promise ( ( res , rej ) => res ( `im promise with parameter: ${ param } ` ) ) ) ;
ser4 . Observable ( "myparam" )
. subscribe ( a => console . log ( "srv4: " , a ) ) ;
ser4 . load ( "myparam" ) ; Verwenden von integriertem in erweiterten Methoden. Name [Server] Wickelt AXIOS für Rückverfolgungsdaten von HTTP Server und LocalForge für Cache -Daten. Die folgende Beispiele verwendet Class [Server] als Eingabe von Asservice. Sie können Ihre eigene XHR -Bibliothek anstelle dessen verwenden.
Wenn http: //myserver/contacts/getcontact.ctrl http rastdienst existiert.
import { AsService , Server } from "@barteh/as-service"
var controller1 = ( x , y ) => Server . controller ( "contacts" , "getcontact" , { name : x , lname : y } ) ;
var srv5 = new AsService ( controller1 ) ;
srv5 . Observable ( "Ahad" , "Rafat" )
. subscribe ( a => console . log ( "srv5:" , a ) ) ; Der aktuelle Zustand eines Dienstes ist beobachtbare Zustände können einer von ["Start", "Laden", "Leerlauf" sein]
var srv6 = new AsService ( 8 ) ;
srv6 . StateObservable ( 77 ) . subscribe ( a => console . log ( "current state is: " , a ) )
srv6 . load ( 77 ) ; > ser1 data via observable is: 5
> ser2 data via observable is: { x: 9 }
> ser3 data via observable is: 6
> srv4: im promise with parameter: myparam
ASN Asservice kann ein Argument des Konstruktors mit aufschiebendem Mapper, aber gleichem Lader verwenden. Dies ist nützlich, um einen Dienst von anderen zu leiten. Es ist wichtig, wenn Sie die Anzahl der Komplexität der Dienste verringern und die Wiederverwendbarkeit von Code erhöhen möchten.
const ser1 = new AsService ( [ 5 , 6 , 7 , 8 ] ) ;
const ser2 = new AsService ( ser1 , /*mapper*/ a => a . map ( b => b * 2 ) ) ; //=> [10,12,14,16] Sie können einen neuen Service erstellen, der von einem anderen Dienst mit dem Kartenbetreiber abgeleitet wurde. Dieser Bediener sendet sowohl Daten als auch Parameter an Mapper -Funktion. Mapper -Parameter können mehr als Laderparameter sein.
/*map(data,...params)*/
const ser1 = new AsService ( ( x , y ) => x + y ) ;
const ser2 = ser1 . map ( ( data , x , y , z ) => data + z ) ;
ser1 . load ( /*x*/ 1 , /*y*/ , 2 , /*z*/ , 3 )
. then ( a => console . log ( a ) ) ;
// output
// > 6
const ser1 = new AsService ( [ 5 , 6 , 7 , 8 ] ) ;
const ser2 = ser1 . map ( a => a . filter ( b => b < 7 ) ) ; // ==> [5,6] npm test
npm run build
var { AsService } = require ( "@barteh/as-service" ) ;
var t = new AsService ( 8 ) ;
t . Observable ( )
. subscribe ( a => console . log ( a ) )Lizenz: MIT