¡Saludos señoras y señores! En este artículo, presentaré la biblioteca JavaScript de Biscuit-store.
Descripción
Biscuit es una herramienta modular, multifuncional y flexible para crear y trabajar convenientemente con contenedores de estado administrados en aplicaciones JavaScript.
Los principales objetivos del artículo.
Cuéntenos sobre la tienda de galletas y sus objetivos;
Comparación con otras herramientas similares;
Brinde una breve descripción general de la funcionalidad.
Aquí no me sumergiré bajo el capó, sino que solo daré una breve descripción general.
Ventajas de la tienda de galletas
Luchando por la simplicidad de ejecución;
-
;
;
Middleware;
;
;
;
.
core – 18Kb, Gzip: 6.2 ( CommonJs);
react – 6.8, Gzip: 2.0;
adapter – 9.6, Gzip: 3.5 ( CommonJs);
:
Internet-explorer 11+;
Chrome 48+;
Opera 25+;
Mozilla firefox 40+;
Safari 9+.
TypeScript.
?
, JavaScript state-management, : redux mobx.
Redux
, 2kB js . redux . C redux . .
, , .
,
GitHub , . , , -, . , … - , . Redux-utils , .
.
, 2015, , . 2021 JavaScript. , middleware, redux-saga redux-thunk. : .
Redux … . - -, - reselect, reducers switch – - redux-actions. .
: - .
Redux - , , , .
Mobx
mobx:
“, , . ”.
redux - , , mobx - state-management. : “ , ».
— , , , , . , , … , , .
. , .
Biscuit
biscuit-store - redux mobx. , . , .
, biscuit , .
: « ?», … - , biscuit :
;
, , , ;
, .
,
, ( ).
redux, , . , Biscuit-store .
import { createStore } from '@biscuit-store/core';
export const { store, actions } = createStore({
name: 'duck',
initial: { value: '' },
});
. . , .
, , .
import { createStore } from '@biscuit-store/core';
import { adapter } from './adapter';
export const { store, actions } = createStore({
name: 'duck',
initial: { value: '' },
actions: {
duckSwim: 'duck/swim',
duckFly: 'duck/fly',
duckQuack: 'duck/quack',
},
middleware: [adapter]
});
actions , -, , . .
import { createAdapter } from '@biscuit-store/adapter';
const { action, connect } = createAdapter();
action('duck/swim', () => {
return { value: 'duck flews' };
});
action('duck/fly', () => {
return { value: 'duck flews' };
});
action('duck/quack', (payload, state, { send }) => {
// This is an asynchronous way of transmitting the payload
send({ value: 'duck quacks' });
});
export const adapter = connect;
El adaptador es un módulo de middleware que le permite vincular la lógica a los estados.
Nuestro pato está listo para ir al gran mundo.
Veamos de lo que es capaz.
import { actions, store } from './store/duck'
const { duckQuack } = actions;
store.subscribe((state) => {
console.log(state.value); // 'duck quacks'
})
duckQuack.dispatch();
También puedes hacerlo así:
import { actions } from './store/duck'
const { duckQuack } = actions;
duckQuack.dispatch().after((current) => {
console.log(current); // 'duck quacks'
});
Y así es como se verá en React .
import { observer, useDispatch } from '@biscuit-store/react';
import { actions } from './store/duck';
const { duckQuack } = actions;
export default observer(
({ value }) => {
const [setQuack] = useDispatch(duckQuack);
return (
<div className='DuckWrapper'>
<p>action: {value}</p>
<button onClick={setQuack}>Duck quacks</button>
</div>
);
},
[duckQuack]
);
Aquí hay una pequeña demostración .
Eso es todo, ¡gracias por tu atención!
Biscuit-store es joven y necesita apoyo
Biscuit es todavía muy joven y está en fase beta.
Si te gusta esta biblioteca, ayúdala a crecer como un asterisco en GitHub '