WEB2 - JavaScript 34 (파일로 쪼개서 정리 정돈하기)

2021. 10. 1. 13:43·youtube.com|user|egoing2/WEB2 - JavaScript
728x90

파일로 쪼개서 정리 정돈하기

함수와 객체보다 더 큰 정리 정돈의 도구.

서로 연관된 코드들을 파일로 묶어서 그룹핑하는 것.

 


  • 3.html 에서 만들었던 주간·야간모드 버튼을 1.html 과 2.html , index.html 에도 넣자.
    먼저 <input> 태그를 각각 넣고 실행해보면 버튼은 생겼지만 작동하지 않는 것을 볼 수 있다.

<input type="button" value="开启" onclick="
 nightDayHandler(this);
">

 

  • 왜 작동하지 않을까? JS 를 가지고 오지 않았기 때문이다.
    <script> 태그를 모든 웹페이지에 배포하자.
    <script>
    var Links = {
      setColor:function(color){
        var alist = document.querySelectorAll('a');
        var i = 0;
        while(i < alist.length){
          alist[i].style.color = color;
          i = i + 1;
        }
      }
    }
    var Body = {
      setColor:function(color){
        document.querySelector('body').style.color=color;
      },
      setBackgroundColor:function(color){
        document.querySelector('body').style.backgroundColor=color;
      }
    }
    function nightDayHandler(self){
      var target = document.querySelector('body');
      if(self.value === '开启'){
        Body.setBackgroundColor('black');
        Body.setColor('white');
        self.value = '关闭';

        Links.setColor('mediumspringgreen');

      } else {
        Body.setBackgroundColor('white');
        Body.setColor('black');
        self.value = '开启';

        Links.setColor('limegreen');
      }
    }
    </script>

만약 가지고 있는 웹페이지가 1억 개라면?

배포하는 것도 어렵겠지만 지금까지 코딩했던 야간모드에서 링크의 색깔을 'mediumspringgreen' 을 'orange' 로 바꾸고 싶다면?

 

이러한 상황에서 파일로 쪼개는 방법을 사용하면 된다. 

 

  • colors.js 파일을 만들고 <script> 태그에 들어있는 코드를 가져온다.
    그리고 기존 <script> 태그 내용을 지우고 <script src="colors.js"></script> 입력.

  • 3.html
<!DOCTYPE html>
<html>
  <head>
    <title>WEB1 - JavaScript</title>
    <meta charset="utf-8">
    <script src = "colors.js"></script>
  </head>
  <body>
    <h1><a href="index.html" title="到百科">WEB网络</a></h1>
    <input type="button" value="开启" onclick="
      nightDayHandler(this);
    ">
    <div id="grid">
      <ol>
        <h3>计算机语言-常见语言</h3>
        <li><a href="1.html" title="到HTML意义">HTML超文本标记语言</a></li>
        <li><a href="2.html" title="到CSS意义">CSS层叠样式表</a></li>
        <li><a href="3.html" title="到JavaScript意义">JavaScript</a></li>
      </ol>
      <div id="文章">
        <h3>-JavaScript</h3>
          <p style="margin-top:40px;">
              <strong><u>JavaScript</u></strong>即全球广域网,也称为万维网,它是一种基于超文本和HTTP的、全球性的、动态交互的、跨平台的分布式图形信息系统。是建立在Internet上的一种网络服务,为浏览者在Internet上查找和浏览信息提供了图形化的、易于访问的直观界面,其中的文档及超级链接将Internet上的信息节点组织成一个互为关联的网状结构。
          </p>
          <p>
            <a href="https://baike.baidu.com/item/JavaScript" target="_blank" title="到百科的JavaScript意义">更多>></a>
          </p>
          <img src="coding.jpg" width="50%">
        </div>
      </div>
      <input type="button" value="开启" onclick="
    </body>
</html>

 

제대로 동작하지만 내부적인 구현 방법은 완전히 달라진 상태, 파일로 쪼개진 상태이다.

해당 웹페이지에서 검사를 눌러서 Network 로 들어가면 이 웹페이지 화면에 표시하기 위해서 로딩된 파일들이 보이는데,

 

colors.js 를 웹브라우저가 다운로드해서 원래 <script> 태그 안에 있는 것처럼 가져다 해석하게 된다. 라는 것을 볼 수 있다.

이제 colors.js 를 수정하면 모든 웹페이지에 적용된다는 것. 또한 2.html 과 3.html 의 

 

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

 

로 인해 여기에 위치해 있는 로직은 서로 완전히 같은 것이라는 것을 확신할 수 있다.

가독성이 좋아지고 코드가 훨씬 더 명확해지고 코드의 의미를 파일의 이름을 통해서 확인할 수 있게 되었다.

 

그리고 또 하나 좋은 점이 있다. 

위에 사진에서 볼 수 있듯 Network 로 들어가서 보면 웹 서버에 2번 접속해야 하는 것을 확인할 수 있다.
(3.html 과 colors.js)

웹 서버 입장에서는 좋지 않다. 왜냐? 접속은 적을수록 좋다. 그럼에도 불구하고 이렇게 하는 것이 훨씬 더 효율적이다.

 

왜냐? 캐시 때문. (여기서 캐시는 cache: 저장하다. 라는 뜻)

 

한번 웹페이지에, 웹브라우저에 다운로드된 이런 파일은 웹브라우저가 보통 컴퓨터에 저장해놓는다. 그리고 다음에 접속할 때 저장된 파일을 읽어서 네트워크를 통하지 않게 한다. 그럼 서버 입장에서 훨씬 더 비용을 절감할 수 있고, 사용자 입장에서도 네트워크 트래픽도 절감할 수 있고 훨씬 더 빠르게 웹페이지를 화면에 표시할 수 있다. 훨씬 더 효율적이고 돈과 시간도 적게 드는 방법이다. 

저작자표시 (새창열림)

'youtube.com|user|egoing2 > WEB2 - JavaScript' 카테고리의 다른 글

WEB2 - JavaScript 36 (UI vs API)  (2) 2021.10.05
WEB2 - JavaScript 35 (library VS framework)  (3) 2021.10.02
WEB2 - JavaScript 33 (객체의 활용)  (0) 2021.09.30
WEB2 - JavaScript 32 (객체프로퍼티와 메소드)  (0) 2021.09.29
WEB2 - JavaScript 31 (객체와 반복문)  (0) 2021.09.29
'youtube.com|user|egoing2/WEB2 - JavaScript' 카테고리의 다른 글
  • WEB2 - JavaScript 36 (UI vs API)
  • WEB2 - JavaScript 35 (library VS framework)
  • WEB2 - JavaScript 33 (객체의 활용)
  • WEB2 - JavaScript 32 (객체프로퍼티와 메소드)
ro117youshin
ro117youshin
코딩 / 외국어공부 (영어, 중국어) / 독서 등 자기계발을 기록합니다.
  • ro117youshin
    Taking an extra step
    ro117youshin
  • 전체
    오늘
    어제
    • 분류 전체보기 (153)
      • DDD (5)
      • JAVA (13)
      • Spring Boot (2)
      • Spring (4)
      • MySQL (1)
      • C (1)
      • Algorithm & Data Structure (34)
        • study (15)
        • programmers (0)
        • boj (18)
        • assignments (1)
      • CS: Computer Science (6)
        • CS50 2019 (4)
        • Network (2)
        • Database (0)
      • Git (3)
      • foreign language (16)
        • English (0)
        • Chinese (16)
      • BOOK (2)
      • ETC (2)
      • youtube.com|user|egoing2 (64)
        • WEB1 - HTML & Internet (5)
        • WEB2 - CSS (9)
        • WEB2 - JavaScript (18)
        • JavaScript Immutability (0)
        • DATABASE1 (4)
        • DATABASE2 MySQL (12)
        • JAVA1 (16)
  • 블로그 메뉴

    • 홈
    • 태그
    • 방명록
    • 글쓰기
  • 링크

  • 공지사항

  • 인기 글

  • 태그

    백준
    객체
    Java
    조건문
    css
    variable
    BOJ
    도메인 주도 설계
    javascript
    중국어공부
    Domain Driven Design
    JAVA1
    생활코딩
    baekjoon
    mysql
    js
    HSK6급모의고사
    DATABASE2
    Java자료구조
    HSK6급
    알고리즘문제
    ddd
    HTML
    최범균
    자바
    HSK6급공부
    개발공부
    HSK6급필수어휘
    나의 앱 만들기
    코딩공부
  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.0
ro117youshin
WEB2 - JavaScript 34 (파일로 쪼개서 정리 정돈하기)
상단으로

티스토리툴바