13. 이벤트 기반 웹뷰 프레임워크 설계와 플러그인 생태계 만들기

https://www.youtube.com/watch?v=pEPOGDPDU-U

1. 화면전환을 사용해서 유저 경험 개선하기

문제점

2. 리팩토링

Stack -> 이벤트 기반으로 생각해보기

어떤 이벤트가 필요할까?

동작 모델링


test("푸시하면 스택에 추가되고, 팝하면 맨 위 화면이 비활성화 된다", () => {
	const evnets = [
		makeEvent("Init"),
		makeEvent("Pushed"),
		makeEvent("Pushed"),
		makeEvent("Popped")
	];

	const state = aggregate(events, nowTime());

	expect(state).toStrictEqual({/**기대되는 값 **/})
})

리액트와 어떻게 통합?

스크린샷 2024-07-21 오전 12.04.26.png

플러그인 인터페이스로 쉬운 확장성 제공하기

확장성?

makeCoreStore({
	onInit();
	onBeforePush(){},
	onBeforePop(){},
	onPushed(){},
	onPopped(){}
})

확장성은 유지하되, 유저가 쉽게 이해할 수 있도록 만들자!

const getEnveloped = envelop({
	plugins:[
		useSchema(schema),
		useParserChache(),
		useValidationCache(),
	]
})
makeCoreStore({
 plugins:[
 {
    onInit(){},
	onBeforePush(){},
	onBeforePop(){},
	onPushed(){},
	onPopped(){}}
 ]
})

리팩토링 결과