내부 및 외부 Java스크립트: 예제를 통해 배우기
⚡ 스마트 요약
내부적 인 그리고 외부적인 Java이 문서에서는 웹 프로젝트 내 스크립트 코드의 두 가지 배치 방식을 설명합니다. 두 방식을 비교하고, 작동 예제를 제시하며, async 및 defer와의 올바른 연결 방법을 설명하고, 각 배치 방식이 유지 관리성과 성능 면에서 어떤 경우에 더 나은 결과를 제공하는지 명시합니다.

내부와 외부란 무엇인가 Java스크립트?
당신이 사용할 수 Java스크립트 코드는 두 가지 방법으로 작성됩니다.
- 다음 중 하나를 포함할 수 있습니다. Java스크립트 코드 내부적으로 HTML 문서 내에서 자체.
- 당신은 유지할 수 있습니다 Java스크립트 코드 별도의 외부 파일 그런 다음 HTML 문서에서 해당 파일을 가리킵니다.
두 위치 모두 정확히 동일한 언어를 실행하고 브라우저에서 동일한 결과를 생성합니다. 차이점은 소스 코드가 저장되는 위치, 브라우저가 이를 다운로드하는 방식, 그리고 웹사이트 전체에서 코드를 얼마나 쉽게 재사용하고 유지 관리할 수 있는지에 있습니다.
내부 란 무엇입니까? Java스크립트?
내부의 Java스크립트는 HTML 파일 내의 `<script>` 태그 쌍 안에 직접 작성된 코드입니다. 브라우저는 마크업을 위에서 아래로 읽다가 `<script>` 태그에 도달하면 추가적인 네트워크 요청 없이 해당 코드 내용을 즉시 실행합니다.
우리는 지금까지 Internal JS를 사용해왔습니다. 다음은 샘플입니다.
<html>
<head>
<title>My First JavaScript code!!!</title>
<script type="text/javascript">
// Create a Date Object
var day = new Date();
// Use getDay function to obtain todays Day.
// getDay() method returns the day of the week as a number like 0 for Sunday, 1 for Monday,….., 5
// This value is stored in today variable
var today = day.getDay();
// To get the name of the day as Sunday, Monday or Saturday, we have created an array named weekday and stored the values
var weekday = new Array(7);
weekday[0]="Sunday";
weekday[1]="Monday";
weekday[2]="Tuesday";
weekday[3]="Wednesday";
weekday[4]="Thursday";
weekday[5]="Friday";
weekday[6]="Saturday";
// weekday[today] will return the day of the week as we want
document.write("Today is " + weekday[today] + ".");
</script>
</head>
<body>
</body>
</html>
출력:
Today is Wednesday.
getDay 함수는 일요일의 경우 0부터 토요일의 경우 6까지의 숫자를 반환하고, 이 숫자가 요일 배열의 인덱스로 사용되기 때문에 출력되는 요일은 방문자의 시스템 시계에 따라 변경됩니다.
외부 란 무엇입니까? Java스크립트?
모든 웹 페이지에 현재 날짜와 시간을 표시하려고 합니다. 코드를 작성하여 모든 웹 페이지(예: 100개)에 복사했다고 가정해 보겠습니다. 그런데 나중에 날짜나 시간 표시 형식을 변경하고 싶어졌습니다. 이 경우 100개의 웹 페이지 모두를 수정해야 합니다. 이는 매우 시간이 많이 걸리고 어려운 작업이 될 것입니다.
따라서 저장 JavaScript 확장자가 .js인 새 파일의 코드입니다. 그런 다음 모든 웹 페이지에 다음과 같이 .js 파일을 가리키도록 코드 줄을 추가합니다.
<script type="text/javascript" src="currentdetails.js"></script>
주의 사항`.js` 파일과 모든 웹 페이지가 같은 폴더에 있다고 가정합니다. 외부 `.js` 파일이 다른 폴더에 있는 경우 `src` 속성에 파일의 전체 경로를 지정해야 합니다. 닫는 태그는 다음과 같습니다. </script> 요소에 내용이 없더라도 `<script>` 태그는 필수입니다. 자체 닫힘 스크립트 태그는 유효한 HTML이 아니며, 닫히지 않은 요소로 인해 페이지의 나머지 부분이 가려지기 때문입니다.
이 코드를 currentdetails.js 파일 안에 넣으세요:
var currentDate = new Date();
var day = currentDate.getDate();
var month = currentDate.getMonth() + 1;
var monthName;
var hours = currentDate.getHours();
var mins = currentDate.getMinutes();
var secs = currentDate.getSeconds();
var strToAppend;
if (hours >12 )
{
hours1 = "0" + (hours - 12);
strToAppend = "PM";
}
else if (hours <12)
{
hours1 = "0" + hours;
strToAppend = "AM";
}
else
{
hours1 = hours;
strToAppend = "PM";
}
if(mins<10)
mins = "0" + mins;
if (secs<10)
secs = "0" + secs;
switch (month)
{
case 1:
monthName = "January";
break;
case 2:
monthName = "February";
break;
case 3:
monthName = "March";
break;
case 4:
monthName = "April";
break;
case 5:
monthName = "May";
break;
case 6:
monthName = "June";
break;
case 7:
monthName = "July";
break;
case 8:
monthName = "August";
break;
case 9:
monthName = "September";
break;
case 10:
monthName = "October";
break;
case 11:
monthName = "November";
break;
case 12:
monthName = "December";
break;
}
var year = currentDate.getFullYear();
var myString;
myString = "Today is " + day + " - " + monthName + " - " + year + ".<br />Current time is " + hours1 + ":" + mins + ":" + secs + " " + strToAppend + ".";
document.write(myString);
이 파일은 currentdetails.js 파일입니다. 코드가 길다고 걱정하지 마세요. 곧 코딩을 배우게 될 겁니다. HTML 문서를 다음과 같이 수정해 보세요.
<html> <head> <title>My External JavaScript Code!!!</title> <script type="text/javascript" src="currentdetails.js"> </script> </head> <body> </body> </html>
⚠️ 경고: 위의 기존 스크립트는 매 시간 앞에 0을 붙여서 오전 11시를 011로 표시합니다. 또한 다음과 같이 할당합니다. hours1 명시적으로 선언하지 않으면 암묵적인 전역 변수가 생성되어 엄격 모드에서 오류가 발생합니다. 아래의 수정된 버전은 이러한 두 가지 결함을 모두 해결합니다.
동일한 파일을 현대적으로 다시 작성하면 코드가 더 간결해지고, 모든 변수를 선언하며, 값에 적절한 패딩이 적용됩니다.
// currentdetails.js - corrected modern version const now = new Date(); const months = ["January", "February", "March", "April", "May", "June", "July", "August", "September", "October", "November", "December"]; const hours24 = now.getHours(); const suffix = hours24 >= 12 ? "PM" : "AM"; const hours12 = String(hours24 % 12 || 12).padStart(2, "0"); const mins = String(now.getMinutes()).padStart(2, "0"); const secs = String(now.getSeconds()).padStart(2, "0"); const message = "Today is " + now.getDate() + " - " + months[now.getMonth()] + " - " + now.getFullYear() + ". Current time is " + hours12 + ":" + mins + ":" + secs + " " + suffix + "."; document.getElementById("stamp").textContent = message;
샘플 출력:
Today is 29 - July - 2026. Current time is 09:05:07 AM.
외부 링크 연결 방법 Java스크립트 파일이 올바르게 작성되었습니다.
외부 파일이 로드될지 여부는 세 가지 요소에 의해 결정됩니다. src 속성에 작성된 경로, 문서 내 스크립트 태그의 위치, 그리고 스크립트 태그에 적용된 loading 속성입니다.
경로 앞에 슬래시(/)가 있거나 전체 주소가 제공되지 않는 한, 경로는 HTML 문서를 기준으로 해석됩니다.
| src 값 | 의미 | 해결하다 |
|---|---|---|
| 현재 세부 정보.js | HTML 페이지와 같은 폴더에 있습니다. | /pages/currentdetails.js |
| js/currentdetails.js | 현재 폴더의 하위 폴더 | /pages/js/currentdetails.js |
| ../currentdetails.js | 현재 폴더 바로 위 폴더 | /currentdetails.js |
| /assets/js/currentdetails.js | 사이트 루트에서부터의 절대 경로 | /assets/js/currentdetails.js |
`loading` 속성은 브라우저가 HTML 파싱을 중지하고 파일을 실행하는 시점을 제어합니다. 아래 표는 사용 가능한 세 가지 동작을 요약한 것입니다.
| 속성 | 다운로드 | 실행 순간 | 순서 유지 |
|---|---|---|---|
| 없음 | HTML 구문 분석을 차단합니다. | 다운로드 직후 | 가능 |
| 연기하다 | 구문 분석과 병렬 처리 | 문서가 구문 분석된 후 | 가능 |
| 비동기 | 구문 분석과 병렬 처리 | 다운로드가 완료되는 즉시 | 아니 |
<!-- Recommended for scripts that read the DOM --> <script src="js/currentdetails.js" defer></script> <!-- Recommended for independent third party scripts --> <script src="js/analytics.js" async></script> <!-- Modern module syntax, deferred by default --> <script type="module" src="js/app.js"></script>
💡 팁: The type="text/javascript" `<property>` 속성은 HTML5에서 선택 사항이며 생략할 수 있습니다. 아주 오래된 브라우저를 지원하는 경우에만 유지하고, 그렇지 않으면 다른 속성으로 대체하십시오. type="module" 가져오기 및 내보내기 문을 사용할 때.
내부 vs 외부 Java스크립트: 주요 차이점
아래 비교표는 일반적으로 선택을 결정하는 요소들을 기준으로 두 배치 방식을 나란히 보여줍니다.
| 요인 | 내부의 Java스크립트 | 외부 Java스크립트 |
|---|---|---|
| 보관 장소 | HTML 파일 내부 | .js 확장자를 가진 별도의 파일을 만드세요. |
| 페이지 간 재사용 | 모든 페이지에 복사해야 합니다. | 모든 페이지에서 참조되는 파일 하나 |
| 브라우저 캐싱 | 페이지가 넘어갈 때마다 다시 다운로드됩니다. | 한 번 캐시되고 재사용됩니다. |
| 유지 보수 노력 | 코드가 공유될 때 높음 | 낮음, 편집할 파일 하나 |
| 추가 HTTP 요청 | 아니 | 네, 파일당 하나씩입니다. |
| 디버깅 | 긴 HTML 파일에서는 더 어렵습니다. | 파일 이름과 줄 번호가 명확하면 더 쉽습니다. |
| 적합한 | 페이지별 간략한 로직 | 공유 라이브러리와 긴 스크립트 |
내부 및 외부 사용 시기 Java스크립트 Code?
특정 웹페이지와 관련된 코드가 몇 줄밖에 없다면 다음을 유지하는 것이 좋습니다. JavaHTML 문서 내부에 스크립트 코드를 넣습니다.
반면에 Java스크립트 코드는 많은 웹 페이지에서 사용되므로, 이를 숙지하는 것이 좋습니다.ping 코드를 별도의 파일에 작성하세요. 그러면 코드를 수정하고 싶을 때 하나의 파일만 변경하면 되므로 코드 유지 관리가 쉬워집니다. 코드가 너무 길 경우에도 별도의 파일에 저장하는 것이 좋습니다. 이렇게 하면 디버깅이 훨씬 수월해집니다.
초보자를 위한 실용적인 규칙은 코드의 최소 줄 수를 10줄 정도로 유지하는 것입니다. 10줄보다 짧거나 특정 페이지에만 필요한 코드는 내부 파일에 남겨두고, 10줄보다 길거나 다른 사람과 공유해야 하는 코드는 외부 파일에 저장하는 것이 좋습니다.
인라인 Java스크립트 사용 시 주의해야 할 점
세 번째 유형은 오래된 웹페이지에서 코드가 HTML 속성 내부에 직접 작성되는 경우입니다. 이러한 코드는 실행되기는 하지만 구조와 동작이 혼합되어 있어 캐싱, 재사용이 불가능하며 엄격한 콘텐츠 보안 정책의 적용을 받지 않습니다.
<!-- Inline handler: works, but avoid it --> <button onclick="alert('Clicked')">Click me</button> <!-- Preferred: behaviour attached from a script --> <button id="greet">Click me</button> <script> document.getElementById("greet").addEventListener("click", () => { alert("Clicked"); }); </script>
스크립트 배치에 익숙해지셨다면 다음 단계로 진행하세요. Java스크립트 배열 메서드, 공부하다 루프 Java스크립트그리고 그 과정을 거쳐 진행하겠습니다. 실용적인 Java스크립트 코드 예시외부 파일을 사용하면 브라우저 저장 로직 관리도 훨씬 쉬워집니다. 쿠키 Java스크립트.
