Van alle functionele codebibliotheken heeft fp-ts, gericht op functionele mapping en monaden, veel populariteit verworven, maar is het nu onderdeel van Effect geworden en is het veranderd in een framework.
In tegenstelling tot eerdere bibliotheken fungeert Effect als een framework en vereist het gebruik van Effect-objecten kennis van het framework.
Net als RxJs' Observable gebruikt Effect objecten die zijn omhuld door Effect en wordt verwacht dat het een nieuwe standaard in de Node.js-industrie zal worden.
Functioneel programmeren is de afgelopen jaren behoorlijk populair geweest.
Terwijl de originele fp-tsmeer een library was, was Effect meer een framework.
Om Effectte gebruiken, heb je basiskennis van Effectnodig.
NestJs en NextJs vereisen ook begrip van de betreffende technologieën.
Libraries zijn eenvoudig te gebruiken als de API goed gedocumenteerd is, maar frameworks vereisen kennis van het pakket zelf.
import{Effect,Console}from"effect"let i =1const expensiveTask =Effect.promise(()=>{console.log("expensive task...")returnnewPromise((resolve)=>{setTimeout(()=>{resolve(result ${i++})},100)});})const program =Effect.gen(function*(){console.log("non-cached version:")yield* expensiveTask.pipe(Effect.andThen(Console.log))yield* expensiveTask.pipe(Effect.andThen(Console.log))console.log("cached version:")const cached =yield*Effect.cached(expensiveTask)yield* cached.pipe(Effect.andThen(Console.log))yield* cached.pipe(Effect.andThen(Console.log))})Effect.runFork(program)/*
Output:
non-cached version:
expensive task...
result 1
expensive task...
result 2
cached version:
expensive task...
result 3
result 3
*/
Deze Effectgebruikt in plaats van Observable van RxJsobjecten die zijn ingepakt in Effect, die
net als het asynckeyword, besmettelijk zijn.
Om Effectobjecten te gebruiken, moeten de functies die ze gebruiken ook Effectworden.
Net als programin de bovenstaande code.
Er zijn wel entry points (startpunten) voor functies, maar dat is niet zo aantrekkelijk.
Hoe dan ook, de vorm en de netheid van Effectals framework, laten een nieuwe wind en standaard zien in de Node-industrie, en ik verwacht dat het een frisse wind zal brengen.