How will RAP be structured? #209
Replies: 13 comments 27 replies
-
RAP에서 현재 제공하는 기능들 서로 의존 없는 모듈로 쪼개보기:
|
Beta Was this translation helpful? Give feedback.
-
A. monolithic + 트리셰이킹
근데 로대쉬 모듈 쪼갠것도 제공하네요 ㅋㅋ B. 아예 패키지 분리
|
Beta Was this translation helpful? Give feedback.
-
디스커션 듀데잇 정해볼까요~? |
Beta Was this translation helpful? Give feedback.
-
저는 monolithic 하게 하는 것 보다 B번, 패키지를 분리하는 편이 좋을 것 같습니다. 그리고 B번, 패키지를 분리하는 방법으로 했을 땐, RAP가 react에서의 사용을 기반으로 만들어진 라이브러리라는 것을 고려하여 아래와 같은 구조를 제안드립니다. (패키지의 네이밍은 논의가 필요합니다) 먼저 모듈의 분류는 @milooy 님의 분류 기준을 따릅니다.
그리고 각 패키지는 모노레포를 통해 하나의 레파지토리 내 packages에서 관리, 각 패키지는 peerDependencies를 통해 각 패키지에서 필요한 의존성을 관리하는 방법으로 가는 편이 좋지 않을까하는 개인적인 의견입니다~! |
Beta Was this translation helpful? Give feedback.
-
저도 나누는 편이 좋을 것 같슴다 |
Beta Was this translation helpful? Give feedback.
-
B. 패키지분리 쪽으로 의견이 좁혀졌네요 ㅎㅎ 이제 모듈별로 이름을 지어줘야하는데..의견 부탁드립니다 ㅋㅋ |
Beta Was this translation helpful? Give feedback.
-
Todo도 같이 얘기해봐요
|
Beta Was this translation helpful? Give feedback.
-
Product Analytics 별로 구현될 모듈과 core 모듈 방향에 영향 미칠 #211 PR을 하나 작성했습니다. |
Beta Was this translation helpful? Give feedback.
-
저희가 여기 디스커션에서 패키지를 분리하고 별도의 릴리즈 템포를 가져가는 걸로 얘기가 진행이 되었었는데요..! import Analytics from "every-anlytics" // for JS
import {useAnalyticsContex} from "every-anlytics/react" // for React
// 추상화된 공통된 인터페이스 예제
Analytics.init(gaKey, amptKey) => {
Analytics.ga.init(gaKey)
Analytics.ampt.init(amptKey)
}
Analytics.click('') {
Analytics.ga.click
Analytics.ampt.click
}
// PA별로 adaptor가 있다
Analytics.ampt.init("")
Analytics.ampt.revenue({})
Analytics.ampt.click() 이미 디스커션에서 패키지 분리 방향으로 결정되어서 조심스럽긴 한데 지금은 빠른 개발에 우선순위가 좀 더 있는 것 같다는 의견에 |
Beta Was this translation helpful? Give feedback.
-
10/12 화요일까지 Todo
|
Beta Was this translation helpful? Give feedback.
-
10/10 회의 코드제안 by @greatSumini , @hiphapis요구사항들
기존 솔루션 분석공통 interface를 구현한 각 Analytics instance들을 Composite패턴으로 조합해서 사용. (참고: 동현님 PR) 뭐가 문제일까?
새로운 패턴 제안1. 빌더 패턴 (사용자 입장)import { EveryAnalyticsBuilder } from '@every-analytics/core';
interface IAnalytics {
click: (~~) => ~~;
setUser: (~~) => ~~;
init: (~~) => ~~;
// 그 외 공통 함수들
}
class GoogleAnalytics implements IAnalytics {
}
class Amaplit
class AnalyticsManager implements IAnalytics {
products = [];
click() {
this.products.forEach(product => product.click());
}
}
// 초기화
const myAppAnalytics =
EveryAnalyticsBuilder
.addGoogleAnalytics({ trackingId: '' })
.addAmplitude({ apiKey: '' })
.build(); // 유림: 필요한가융? 수민: 빌더패턴에선 있는게 익숙하다 느껴서 넣었는데 필요없다면 build 네이밍 자체를 빼도 되겠습니당
// 사용 - 클릭
myAppAnalytics.click();
// PA별 기능 활용
myAppAnalutics.googleAnaltics.logCheckout(~~);
myAppAnalytics.amplitude.logRevenueV2(~~); // 요한
import { ea } from '@every-analytics';
ea.init({
ua_key: process.env.ua_key,
g4: '~~~',
amplitide: '~~'
})
ea.click()
|
Beta Was this translation helpful? Give feedback.
-
10/10 회의 코드제안 by @milooy진유림EveryAnalytics/core
import Analytics from "every-analytics/core"
import googleAnalyticsHelper from "EveryAnalytics/helper/google-analytics"
import amplitudeHelper from "EveryAnalytics/helper/amplitude"
Analytics.init(() => {
googleAnalyticsHelper.initialize(gaid)
amplitudeHelper.initialize(amtid);
fruitLogger.init();
});
Analytics.preset({
click: (name, params) => {
googleAnalyticsHelper.click(name, params)
amplitudeHelper.logEvent(amtid, params);
},
});
// Analytics.init();
button.addEventListener("click", () => {
Analytics.click('회원가입', {name: 'RAP'});
});
EveryAnalytics/react
EveryAnalytics/helper/google-analytics EveryAnalytics/helper/amplitude |
Beta Was this translation helpful? Give feedback.
-
1014 회의참석자: 요한, 수민, 다영 액션아이템
엔드유저 입장
새로 개발해야하는것재설계
기능더하기 데모 추가작업 |
Beta Was this translation helpful? Give feedback.
-
맥락
#141
위클리에서 나온 의견
1번하고 3번만 가져다쓰면 vue나 svelte에서도 쓸 수 있을 것 같아요
아래 두가지 옵션이 있는 것 같습니다!
Beta Was this translation helpful? Give feedback.
All reactions