TypeScript Global Variables. feat! window
포스트
취소

TypeScript Global Variables. feat! window

개요

  • Kubeflow pipelines frontend 코드 살펴보다가 TypeScript 관련된 내용 정리.

Why

  • pipeline frontend side navigation 숨겨볼라고 코드 살펴보다가 확인.
  • window[‘KFP_FLAGS’] -> 이거 뭐???
1
2
3
4
5
6
7
8
9
10
11
12
13
14
export const KFP_FLAGS = {
  DEPLOYMENT:
    // tslint:disable-next-line:no-string-literal
    window && window['KFP_FLAGS']
      ? // tslint:disable-next-line:no-string-literal
        window['KFP_FLAGS']['DEPLOYMENT'] === Deployments.KUBEFLOW
        ? Deployments.KUBEFLOW
        : // tslint:disable-next-line:no-string-literal
        window['KFP_FLAGS']['DEPLOYMENT'] === Deployments.MARKETPLACE
        ? Deployments.MARKETPLACE
        : DEPLOYMENT_DEFAULT
      : DEPLOYMENT_DEFAULT,
  HIDE_SIDENAV: window && window['KFP_FLAGS'] ? window['KFP_FLAGS']['HIDE_SIDENAV'] : false,
};

HIDE_SIDENAV

  • window.KFP_FLAGS.HIDE_SIDENAV 값으로 연결됨.
  • 쓰임새

SideNav.tsx

true이면 아래 sideNav를 그리지 않고 null을 return

값 지정

  • window.KFP_FLAGS.HIDE_SIDENAV=true;
    • window는 해당 page의 global 값을 저장하는 dom 객체로 사용됨.
    • script로 위와 같이 값을 지정하면 아래와 같은 예시로 호출
1
window['KFP_FLAGS']['HIDE_SIDENAV']

위의 예시에도 나와있다.

  • pipeline frontend에선 index.html에서 값을 지정할 수 있다.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
<!DOCTYPE html>
<html lang="en">
  <head>
    <meta charset="utf-8">
    <meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no">
    <meta name="theme-color" content="#000000">
    <link rel="shortcut icon" href="%PUBLIC_URL%/static/favicon.ico">
    <title>Kubeflow Pipelines</title>
    <script>
      window.KFP_FLAGS={};
      window.KFP_FLAGS.DEPLOYMENT='KUBEFLOW';
      window.KFP_FLAGS.HIDE_SIDENAV=true;
    </script>
    <script id="kubeflow-client-placeholder"></script>
  </head>
  <body>
    <noscript>
      You need to enable JavaScript to run this app.
    </noscript>
    <div id="root"></div>
  </body>
</html>

마무리

window라고 달랑 지정되어 있고 값을 어디서 지정하는지 몰랐는데 알고보니 dom 객체… 참고로 HIDE_SIDENAV를 true로 지정하면 아래와 같이 sidebar 사라짐.

Frontend Main

이 기사는 저작권자의 CC BY 4.0 라이센스를 따릅니다.

npm ERR! getaddrinfo ENOTFOUND artifactory.twitter.biz (kubeflow pipeline frontend)

-