본문 바로가기

개발 일지/TIL

[ #2 ] TIL

 ✏️ 0416      


JS 기능 구현
매니저님과 면담
추가 페이지(방명록) 구현 회의
[ 특강 ] TIL


메인 페이지의 팀원 카드
document.addEventListener("DOMContentLoaded", function() {
    const cards = document.querySelectorAll('.card');
    function cardPage(event) {
        const name = event.currentTarget.querySelector('.name').innerText;
        let url;
        switch (name) {
            case '팀장님':
                url = 'personal/jw.html'
                location.replace('url')
                break;
            case '팀원':
                url = 'personal/sy.html'
                location.replace('url')
                break;
            case '팀원':
                url = 'personal/my.html'
                location.replace('url')
                break;
            case '팀원':
                url = 'personal/hw.html'
                location.replace('url')
                break;
            case '팀원':
                url = 'personal/kj.html'
                location.replace('url')
                break;
            default:
                return;
        }
        window.open(url, '_self');
    }
    // 각 카드에 클릭 이벤트 추가
    cards.forEach(function(card) {
        card.addEventListener('click', cardPage);
    });
});
// 팀 소개 페이지 이동
document.addEventListener("DOMContentLoaded", function() {
    const team_img = document.getElementById('team_box')
    team_img.addEventListener("click", function() {
        location.href = "team_section.html"
    })
})

: 팀원 카드를 누르면 해당 팀원에 대한 페이지로 이동하는 JS 작성 ( 이름은 바꿨습니다 )

 

 

분명 코드에는 이상이 없는 것 같은데 지정한 이름을 가진 코드가 없다고 뜨거나 값이 없다고 떴다

script 연결을 잘못한 것도 아니었는데 뭐가 문제였나 싶었더니

 

일반적으로 브라우저는 파일을 위에서 아래로 코드를 순서대로 읽기 때문에

DOM을 다 읽지 않았는데 JS 파일을 먼저 읽어서 일어난 오류였다

 

이 코드를

<script src="./comment_section.js"></script>

 

이렇게 변경하면

<script src="./comment_section.js" defer></script>

 

DOM을 다 읽은 후에 스크립트를 실행시킬 수 있다

 


<script> 태그 속성

 

HTML 파일을 로드하다가 중간에 스크립트 파일이 있는 경우,

해당 파일을 모두 해석하기 전까지 HTML 파일을 읽는 걸 일시적으로 멈춘다고 한다.

그러면 이번과 비슷한 상황이 발생한다.

 

이것을 방지하기 위해 <body> 태그가 끝나는 부분에 <script> 를 넣는 방법도 있다.

하지만 이 방법도 사용자가 버튼을 클릭하거나 텍스트를 입력하는 상호작용을 시도하면 제대로 동작하지 않을 수 있다.

완성된 웹사이트에 접속한 것처럼 보이지만 사실 백그라운드에서 스크립트 해석을 실행하는 중일 수 있기 때문이라고 한다.

 

그래서 사용하는 <script> 태그의 속성, defer 와 async 가 있다.

 

defer 속성은 모든 DOM이 로드 된 후에 스크립트를 실행한다.

 

<script> 로 여러 파일을 불러올 경우,

아래에 있는 파일의 해석이 먼저 끝나도 위에서 아래로, 선언한대로 실행 순서가 보장된다.

서로의 의존성이 있을 때 문제없이 순서대로 실행될 수 있다.

가장 범용적으로 사용할 수 있는 속성이다.

 

async 속성은 DOM을 읽는 동시에 백그라운드에서 스크립트를 불러온다.

 

<script> 로 여러 파일을 불러올 경우,

각 파일마다 스크립트의 해석이 얼마나 오래 걸릴지는 모르기 때문에 스크립트의 실행 순서가 보장되지 않는다.

아래에 있는 파일이 먼저 실행될 수 있다.

서로의 의존성이 없다면 상관없지만 만약 있다고 하면 문제가 될 수 있으니

사용하지 않는 걸 추천한다고 한다.


 

TIL 에 대해

 

TIL ( Today I leamned )
오늘 배운 것

 

특강 듣는데 누군가 채팅으로 To I Love 라고 했던게 생각났다

 

  • 써야하는 이유
    • 기록 : 내가 무엇을 배웠는지 기록
    • 성장 : 학습한 것을 정리하며 이해도를 높이고, 복습도 가능
    • 활용 : 비슷한 문제 발생 시 활용 가능
    • 신입이 가장 빠르게 경험과 실력을 증명하는 법 ( + 성실성 )
  • TIL 작성 방법 ( 완벽 X, 정답 X )
    • 하루에 한 번 일단 작성하기
    • 처음에는 쉽고 간단하게 습관 들이고 적응했을 때 꼼꼼히, 제대로
  • TIL 주제 정하기
    • 강의 내용 정리 ( 배운 것, 개념 정리, 필요한 이유, 사용법) => 초기 추천
    • 개발 단계 정리 ( 설치, 초기 세팅 등 )
    • 하루 회고 ( 오늘 있었던 일 정리 => 문제 발생, 느낀 점, 해결 or 개선방안 )
    • 문제 해결 과정 ( 발생한 에러 및 버그에 대한 분석, 해결 방법, 느낀 점, 개선 방안 ) => 권장

프로젝트 회고에 정성을 들여보기

'개발 일지 > TIL' 카테고리의 다른 글

[ #6 ] TIL  (0) 2024.04.22
[ #5 ] TIL  (0) 2024.04.20
[ #4 ] TIL  (0) 2024.04.20
[ #3 ] TIL  (0) 2024.04.20
[ #1 ] TIL  (0) 2024.04.19