fxjs가 lodash나 ramdajs에 비해 얻는 장점이 뭐가 있을까요?
실무에서 함수형 프로그래밍 도입을 위해 라이브러리들을 고민하고 있습니다.
거론되는 라이브러리는 ramdajs, lodash가 있구요.
아무래도 fxjs를 통해 FP를 배우기 시작해서 저에게 제일 편한건 fxjs이긴 합니다.
다만 위 라이브러리들이 더 글로벌하게 쓰이고 있어서 팀원들을 설득하기 위해 알아보고있지만,
아직 경험이 많이 없다보니 그런 안목이 아직 부족합니다.
위 라이브러리들을 훑어 봤을 때
fxjs로 transducer를 더 직관적으로 작성할 수 있고,
병렬평가가 가능합니다. 이외에도 여타 다른 라이브러리에 비해 장점으로
무엇을 꼽을 수 있을까요..?
그리고 fxjs2의 경우 tree shaking을 지원하는지도 궁금합니다
回答 3
8
안녕하세요. :)
감사한 질문이네요! 조금 정리해서 적어보았어요.
1. 대부분의 라이브러리들이 Promise를 잘 지원하지 못합니다.
2. Promise를 잘 지원하지 못하면 async/await 와 함께 사용하지 못합니다.
3. async/await를 사용하지 못하면 비동기 에러 핸들링이 어려워집니다.
4. fxjs는 ES6 표준 이터러블 프로토콜을 따르고 있어 이터러블/이터레이터/제너레이터와 잘 조합됩니다.
5. fxjs는 Promise를 잘 지원합니다.
6. fxjs는 지연 평가와 Promise가 함께 잘 동작합니다.
7. fxjs는 async/await 와 함께 사용할 수 있으며, 비동기 에러핸들링이 쉽습니다.
8. fxjs는 병렬적 동시 평가를 다루는 많은 함수들이 있습니다. (C.takeAll, C.takeRace, C.race, C.map 등..)
9. fxjs는 함수 하나 하나가 코드가 간결하고 이해하기 쉽게 잘 작성되어있습니다.
10. fxjs는 tree shaking 을 잘 지원합니다.
11. fxjs는 이전 브라우저, 최신 브라우저, CommonJS, ESM 등의 환경을 모두 잘 지원하고 있습니다.
12. fxjs는 슬랙 채널을 운영하고 있습니다.
초대링크
https://join.slack.com/t/fxjs/shared_invite/enQtNzMzMjM2OTQyNjEzLTI2NzlhMzQ0N2FkZjUwOTkxMmIwNDUzM2YyYjFkMDI1ODgyYWRjMWUzYmViODQ2ZjRlMWEzZTE4NzYzZDY1YjA
13. 다른 라이브러리에서 아래와 같은 코드가 동작하는지 테스트해보세요. 대부분의 다른 라이브러리들은 1번 상황에서 이상한 값이 나오고 2번 상황에서는 에러핸들링이 안되고 에러가 터질거에요. :)
// 1
async function f1() {
const res = await go(
[1, 2, 3, 4, 5],
L.map(a => new Promise(resolve => resolve(a * a))),
L.filter(a => new Promise(resolve => resolve(a % 2))),
L.take(3),
reduce((a, b) => a + b));
return res * 10
}
f1().then(console.log); // 350
// 2
async function f2() {
try {
return await go(
[{ val: 1 }, { val: 2 }, null, { val: 4 }, { val: 5 }],
L.map(({val}) => new Promise(resolve => resolve(val + 10))),
L.filter(a => a % 2),
L.take(3),
reduce((a, b) => a + b));
} catch (e) {
return 0;
}
}
f2().then(console.log); // 0
슬랙에서 뵈어요 :)
이미지 동시성 다루기
0
116
2
클로저와 같은 함수형 프로그래밍 공부
0
192
2
fx.js
0
439
2
fxjs 라이브러리 takeL 관련하여 질문드립니다.
0
344
2
[ 비동기 상황에서의 Lazy, Strict 기법이 혼합된 평가 ] 에 대한 이해
0
528
1
input값이 이터러블 함에도 range를 쓴 이유가 궁금합니다.
0
468
1
질문있습니다!
1
372
2
DB Insert관련
0
657
2
강의에 대한 제언
2
599
1
DOM 조작 관련 질문입니다.
0
408
1
L.map, L.filter
0
613
1
indexBy 함수에 대한질문입니다.
0
404
2
해당 강의를 듣고 나면
0
397
1
내용없음
0
236
1
함수 추출에 대한 고민
1
286
1
뷰 포트에 보이는 엘리먼트만 이미지 로드하고 싶을 때
1
327
1
기존에 반복문이 1개 돌던거를 이렇게하면 2번 도는데...
0
242
1
array in object... 는 어떤 식으로 재귀가 가능할까요..?
0
271
1
queryToObject 질문드립니다.
0
359
1
재귀는 어떻게 표현할 수 있을까요?
0
315
1
모든 명령형 => 함수형 가능한가요?
0
323
1
명령형 => 함수형 변환
0
340
2
이해한게 맞을까요?
0
215
1
iter의 개별 elements 에 data 를 삽입 또는 변형해서 삽입하는 경우엔 map 으로 제어를 하는게 맞을까요?
0
263
2


와 정말로