## Enact Client - npm install -g @enact/cli@6.0.4 enact 및 기타 라이브러리 버전 변경 불가 Node.js >= v14.0.0 (recommended: v16.13.0) ## 개발 및 테스트 환경 ### 빌드 방법 ```bash # 개발 빌드 npm run build # 또는 npm run pack # 빌드 결과물 테스트를 위한 로컬 서버 실행 npx http-server ./dist ``` ### Chrome 테스트 환경 - WebOS 3.0용 Chrome 38 버전 필수 - Chrome 38 버전 다운로드 및 설치: [WebOS TV 개발자 사이트](https://webostv.developer.lge.com/develop/tools/cli-dev-guide#launch-the-web-app) - 모든 기능은 반드시 Chrome 38에서 테스트 필요 ## Chrome 38 브라우저 호환성 제한사항 ### JavaScript 제한사항 1. async/await 문법 - 지원되지 않음 (Chrome 55부터 지원) - 대체방법: Promise 체이닝 방식 사용 ```javascript // Promise 방식으로 비동기 처리 function getData() { return fetch('/api/data') .then(function(result) { return result; }); } ``` 2. ESLint - 지원되지 않음 (Enact CLI 6.0.4 버전 제한) - 이유: ESLint 6 이후 버전과의 호환성 문제 - WebOS 3.0 호환성을 위해 Enact 버전 업그레이드 불가 3. React import 문 필수 - 모든 컴포넌트 파일 상단에 React import 필요 ```javascript import React from "react"; ``` ### CSS 제한사항 1. CSS Grid Layout 2. CSS Flexbox 3. CSS Variables (Custom Properties) 4. CSS gap 속성 - margin 혹은 padding 사용 5. CSS calc() - 제한적 지원 (문자열로 사용 필요) ```css calc(@toplayerHeight + 22px); /* 사용불가 */ ~"calc(@{toplayerHeight} + 22px)"; /* 문자열로 사용 가능 */ ``` 6. CSS Transforms 3D 2. CSS Animations/Transitions 3. CSS Filter Effects 4. CSS Masks 5. CSS Custom Scroll Snap 6. CSS Logical Properties ## code convention 1. vs-code extension: js/ts import/export sorter 설치 2. vs-code setting.json ```less { "prettier.tabWidth": 2, "prettier.printWidth": 80, "prettier.trailingComma": "es5", "tsImportSorter.configuration.keepUnused": [".*"], } ``` ## 배포 npm install -g @enact/cli@6.0.4 npm install npm run build --> ./dist 폴더 배포 ### 배포 시 주의 사항 - `develop` 환경에서는 [오토 스크롤 영역]("./assets/src/components/AutoScrollArea.module.less")을 명확하게 보기 위해 `background-color`를 보여지게 했으나, 배포 시에는 `production` 상태로 바꿔서 빌드하셔야 합니다. ```less // AutoScrollArea.module.less .autoScrollArea { position: absolute; z-index: 20; background-color: transparent; /* production */ // background-color: #ff00001f; /* develop */ } ``` **상태로 변경 후 배포 부탁드립니다.** ### TVirtualGridList 사용시 여백 OnSaleProductList.jsx 참고 --> 가로 100%일 경우 container에서 여백 제어하는 것이 아니라 각 사용하려는 컴포넌트에서 class로 "TVirtualGridList" 추가한 부분에서 좌측 여백 추가(여백은 padding-left로 조절) ```less // OnSaleProductList.module.less .tVirtualGridList { padding-left: 60px; /* GUI 가이드에 맞도록 적절히 조절 */ } ``` ### TScroller 사용시 여백 SubCategory.jsx 참고(Home) --> 가로 100%일 경우 TScroller 자체에서 여백 제어하는 것이 아니라 손자 엘리먼트에 좌측 여백 추가(여백은 padding-left로 조절) ```less // SubCategory.module.less .home { > div { > div { padding-left: 60px; /* GUI 가이드에 맞도록 적절히 조절 */ } } } ``` ### 자막영상 ontv4u 검색 후 첫 영상 ## 컴포넌트 사용 가이드라인 ### 1. Grid 레이아웃 여백 설정 #### TVirtualGridList 사용시 여백 OnSaleProductList.jsx 참고 --> 가로 100%일 경우 container에서 여백 제어하는 것이 아니라 각 사용하려는 컴포넌트에서 class로 "TVirtualGridList" 추가한 부분에서 좌측 여백 추가(여백은 padding-left로 조절) ```less // OnSaleProductList.module.less .tVirtualGridList { padding-left: 60px; /* GUI 가이드에 맞도록 적절히 조절 */ } ``` ### 2. 스크롤 레이아웃 여백 설정 #### TScroller 사용시 여백 SubCategory.jsx 참고(Home) --> 가로 100%일 경우 TScroller 자체에서 여백 제어하는 것이 아니라 손자 엘리먼트에 좌측 여백 추가(여백은 padding-left로 조절) ```less // SubCategory.module.less .home { > div { > div { padding-left: 60px; /* GUI 가이드에 맞도록 적절히 조절 */ } } } ``` ### 3. 테스트용 자막 영상 #### 자막영상 테스트 ontv4u 검색 후 첫 영상