Ini membantu pemrogram (baik ujung belakang dan depan) untuk menghindari kompleksitas sistem manajemen negara tradisional seperti React Redux dan perpustakaan pola pemrograman reaktif seperti RXJS. Ini ringan dan mudah digunakan perpustakaan berisi satu fungsi inti dan kait untuk bereaksi. Dengan menggunakannya, kami dapat berlangganan sebagian besar jenis data seperti primitif, kompleks, janji dan fungsi sebagai layanan dan menerima semua perubahan dengan parameter tertentu (langganan parametrik). Kami bahkan tidak perlu mengontrol proses berlangganan-tidak berlangganan dalam bereaksi dengan hook sederhana itu melakukan semua proses secara otomatis.
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" ) ; Menggunakan Nama Metode Lanjutan Built In [Server] Wraps Axios untuk data retrive dari server HTTP dan LocalForge untuk data cache. Sampel berikut menggunakan kelas [server] sebagai input dari Nyata. Anda dapat menggunakan perpustakaan XHR Anda sendiri alih -alih ini.
Jika http: //myserver/contacts/getcontact.ctrl HTTP REST layanan ada.
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 ) ) ; Keadaan layanan saat ini adalah keadaan yang dapat diamati dapat menjadi salah satu ["start", "loading", "Idle"]
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
Aservice asn dapat menggunakan argumen konstruktor dengan mapper yang deferen tetapi loader yang sama. Ini berguna untuk menserahkan layanan dari yang lain. Penting jika Anda ingin mengurangi jumlah kompleksitas layanan dan meningkatkan penggunaan kembali kode.
const ser1 = new AsService ( [ 5 , 6 , 7 , 8 ] ) ;
const ser2 = new AsService ( ser1 , /*mapper*/ a => a . map ( b => b * 2 ) ) ; //=> [10,12,14,16] Anda dapat membuat layanan baru yang berasal dari layanan lain menggunakan operator peta. Operator ini mengirimkan data dan parameter ke fungsi mapper. Parameter mapper bisa lebih dari parameter loader.
/*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 ) )Lisensi: MIT