[React] 외부(external) JS파일 실습

DEVELOPERS_Ivan ㅣ 2023. 10. 30. 17:14

 

터미널 사용하여 react typescript 설치 및 학습에 필요한 환경 세팅


더보기
1. C:\Work\08_Pilot_Project\01_Blog\00_JSLIB 생성해서 터미널로 들어가기
지정한 하위 경로에서 주소창에 cmd 입력
2. react typescript 생성
npx create-react-app frontend-typescript --template typescript  입력
Happy hacking! 메시지 확인 후 frontend-npx 폴더 생성 완료 ※에러 발생하여 안 만들어지면 삭제 후 다시 진행
3. VSCODE 로 열기
npm start 접속 확인
4. src 하위 폴더 생성 및 자료 넣기 / import HeaderCom
C:\Work\08_Pilot_Project\01_Blog\00_JSLIB\frontend-npx\src\assets
5. 메뉴 라이브러리 설치 npm i react-router-dom
경로 C:\Work\08_Pilot_Project\01_Blog\00_JSLIB\frontend-npx\README.md 
6. 메뉴 lib import 추가
경로 C:\Work\08_Pilot_Project\01_Blog\00_JSLIB\frontend-npx\src\index.tsx
7. title 쪽 부트스트랩 link 추가 / body 쪽 부트스트랩 & jquery cdn 추가
경로 C:\Work\08_Pilot_Project\01_Blog\00_JSLIB\frontend-npx\public\index.html
 
8. 내비게이션 메뉴 색상 변경
navbar-dark
https://getbootstrap.kr/docs/5.0/components/navbar/
9. 부트스트랩 링크 설정

 


1) 홈메뉴(1St 페이지)

2) Simple_ bootstrap-icons 아이콘과 텍스트 삽입 페이지
      {/* TODO: 공홈 : https://icons.getbootstrap.com/ */}
      {/* 1) Bootstrap Icons : 홈페이지 각각의 아이콘 모양을 쉽게 제공 */}
      {/* 사용법(install) : 부트스트랩-아이콘 cdn 걸기 : index.html */}
      {/*                   <i className='bi bi-아이콘클래스명'>글자</i> */}
      {/* TODO: 유사사이트(참고): font-awesome 사이트 */}


3) Simple_ CountUp 숫자 카운팅 페이지
3-2) Simple_ CountUpExam 숫자 카운팅 페이지 예제
# 3) countup lib : 숫자 올라가기 외부 lib
# 공홈 : https://github.com/bfintal/Counter-Up
# (cdn(링크), npm(설치))
# TODO : waypoints 필수 설치 필요
# 경로 : C:\Work\08_Pilot_Project\01_Blog\00_JSLIB\frontend-npx\public\lib\waypoints
      {/* 사용법 : 
            => TODO: html 부분
                <태그 data-toggle="변수명">
                    숫자
                </태그>
            => TODO: js 부분
                ($(선택자) as any).counterUp({
                    delay: 숫자, // 지연시간(1/1000초)
                    time: 숫자   // 화면표시가 끝나는 시간(1/1000초)
                })
         */}
더보기
      {/* 사용법 : 
            => TODO: html 부분
                <태그 data-toggle="변수명">
                    숫자
                </태그>
            => TODO: js 부분
                ($(선택자) as any).counterUp({
                    delay: 숫자, // 지연시간(1/1000초)
                    time: 숫자   // 화면표시가 끝나는 시간(1/1000초)
                })
         */}

10000 카운팅
20000 카운팅
3-2) Simple_ CountUpExam 숫자 카운팅 페이지 예제

4) Simple_ TypedCom 텍스트 타이핑 애니메이션 페이지
4-2) Simple_ TypedExam 텍스트 타이핑 애니메이션 페이지 예제
# 4) typed js lib : 화면에 타자처럼 타이핑 애니메이션 효과를 주는 lib
# => npm 설치 (cdn 있음)
# 공홈 : https://mattboldt.github.io/typed.js/
npm install typed.js
# typed.js import 방법 (MIT 라이선스)
import Typed from "typed.js";

Simple_ TypedCom 텍스트 타이핑 애니메이션 페이지
4-2) Simple_ TypedExam 텍스트 타이핑 애니메이션 페이지 예제


5) Simple_ WowCom 텍스트 위치 변화 애니메이션 페이지
# 5) wow lib : GNU GPL 라이선스 v3(제약: 소스 공개 필요)
# 공홈 : https://wowjs.uk/
# 유사라이브러리 : AOS lib (MIT 라이선스)
# import js 라이브러리 설치
npm i wowjs
# wowjs import 방법
import { WOW } from "wowjs";
# animate.css import : App.tsx
# animate css import (wow 사용시 import 필요)
import "simplelightbox/dist/simple-lightbox.css";

모듈 에러 발생 타입 회피 필요 ->&nbsp; &nbsp;types/외부라이브러리명/index.d.ts 파일 생성시 타입 회피됨
import 라이브러리 설치 / package.json  "wowjs": "^1.1.3" 설치 확인
tsconfig.json 파일 - compilerOptions 속성에 아래 추가 : 프로젝트시작위치/types - 이 위치에 타입을 인식하게 하는 경로 설정
types/외부라이브러리명/index.d.ts 파일 생성 후 아래 추가
external lib import


6) Complex_ SimpleLightboxCom 이미지 애니메이션 페이지
6-2) Complex_ SimpleLightboxComExam 이미지 애니메이션 페이지 예제
# 6) simplelightbox lib : SimpleLightbox 설치
# (cdn, npm(설치))
# 공홈 : https://simplelightbox.com/
npm install simplelightbox
# import SimpleLightbox from "simplelightbox" 설치 : initMain.js
import SimpleLightbox from "simplelightbox";
# simplelightbox css import : App.tsx
import "simplelightbox/dist/simple-lightbox.css";

import 라이브러리 설치 /&nbsp; &nbsp;"simplelightbox": "^2.14.2" 설치 확인
6) Complex_ SimpleLightboxCom 이미지 애니메이션 페이지
6-2) Complex_ SimpleLightboxComExam 이미지 애니메이션 페이지 예제

7) Complex_ OwlCarousel 이미지 회전목마(여러 개의 사진이 자동으로 돌아가게 하는) 애니메이션 페이지
7-2) Complex_ OwlCarousel 이미지 회전목마(여러 개의 사진이 자동으로 돌아가게 하는) 애니메이션 페이지 예제
# 7) TODO: OwlCarousel lib
# 회전목마 : 여러 개의 사진이 자동으로 돌아가게 하는 lib
# 유사 lib : swiper
# (cdn(index.html 링크), npm(설치))
# 공홈 : https://owlcarousel2.github.io/OwlCarousel2/
# index.html : css link 삽입
# <link href="/lib/owlcarousel/assets/owl.carousel.css" rel="stylesheet" />
# index.html : js link (body) 삽입
# <script src="/lib/owlcarousel/owl.carousel.min.js"></script>
# type 설치
npm i @types/owl.carousel

 

owlcarousel css 테마 추가 (버튼)
7-2) Complex_ OwlCarousel 이미지 회전목마(여러 개의 사진이 자동으로 돌아가게 하는) 애니메이션 페이지 예제

8) Complex_ isotope 그리드 형식으로 정렬된 요소들을 필터링하고 재정렬 페이지

8) Complex_ isotope 동위원소(그리드 형식으로 정렬된 요소들을 필터링하고 재정렬 페이지)
# 8) isotope lib : (공홈: https://isotope.metafizzy.co/)
# 이미지들의 정렬을 해주는 lib
# (참고) npm install isotope-layout --save
npm i @types/isotope-layout
# (참고) npm i imagesloaded(이미지 버그 확인용)
npm i @types/imagesloaded
# cdn 설치 : index.html js 링크 걸기
# <!-- isotope : https://isotope.metafizzy.co/ -->
# <script src="/lib/isotope/isotope.pkgd.min.js"></script>
# <!-- isotope 이미지 겹침 문제로 사용 -->
# <script src="https://unpkg.com/imagesloaded@5/imagesloaded.pkgd.js"></script>

8-2) Complex_ isotopeExam동위원소(그리드 형식으로 정렬된 요소들을 필터링하고 재정렬 페이지)

9) Complex_ easing 라이브러리는 웹 애니메이션 및 트랜지션에서 사용되는 타이밍 함수(처음(천천히) -> 중간(빨리) -> 끝(천천히) : 시간의 흐름(애니메이션))
# 9) easing 라이브러리
# (cdn(진행), npm)
# 공홈 : https://gsgd.co.uk/sandbox/jquery/easing/
# 예) 처음(천천히) -> 중간(빨리) -> 끝(천천히) : 시간의 흐름(애니메이션)
# 예) 처음(빨리) -> 중간(빨리) -> 끝(천천히)   : 시간의 흐름(애니메이션)

마우스 클릭 이벤트 실행으로 애니메이션 효과

10-1) Complex_ datepicker 사용자가 캘린더에서 날짜를 선택할 수 있는 입력 요소(선택, 지정 날짜) alert 화면 출력
# 10) 달력 :
# 10-1) jquery-ui 달력 : (cdn 진행) index.html 
# 공홈 : https://jqueryui.com/datepicker/
# index.html : css link 삽입
# <link rel="stylesheet" href="//code.jquery.com/ui/1.13.2/themes/base/jquery-ui.css">
# index.html : js link (body) 삽입
# <script src="https://code.jquery.com/ui/1.13.2/jquery-ui.js"></script>

캘린더 아이콘을 클릭하여 수기로 날짜를 지정할 수 있음
지정된 날짜 버튼 클릭 시 지정한 날짜가 입력됨

10-2) Complex_ DaterangePicker 사용자가 범위 선택을 위한 달력을 제공하며, 사용자는 시작 날짜와 종료 날짜를 선택 alert 화면 출력
# 10) 달력 :
# 10-2) range calendar 달력 : (cdn 진행) index.html 
# 공홈 : https://www.daterangepicker.com/
# index.html : css link 삽입
# <link rel="stylesheet" href="css/daterangepicker.css" />
# index.html : js link (body) 삽입
# <script src="js/moment.min.js"></script>
# <script src="js/daterangepicker.js"></script>


외부 JavaScript 파일을 사용하면 프로젝트를 보다 모듈화하고 코드를 관리하기가 쉬워지고 유지 보수 및 코드 재사용을 용이하게 할 수 있으며, 여러 HTML 파일에서 동일한 스크립트를 사용할 수 있습니다.