Notice
Recent Posts
Recent Comments
Link
투케이2K
514. (javaScript) [간단 소스] 자바스크립트 string 문자열 형식 동적 자바 스크립트 코드 작성 및 import 모듈 로딩 , 소스 코드 실행 본문
JavaScript
514. (javaScript) [간단 소스] 자바스크립트 string 문자열 형식 동적 자바 스크립트 코드 작성 및 import 모듈 로딩 , 소스 코드 실행
투케이2K 2026. 3. 19. 19:59728x90
반응형
[개발 환경 설정]
개발 툴 : Edit++ / Vscode
개발 언어 : JavaScript

[소스 코드]
-----------------------------------------------------------------------------------------
[사전 설명 및 설정 사항]
-----------------------------------------------------------------------------------------
- 개발 환경 : Web
- 개발 기술 : JavaScript (자바스크립트) / export function / import module
- 사전) 👉 new Blob 간략 설명 :
>> new Blob() 은 브라우저에서 바이너리·텍스트 데이터를 메모리에 담는 불변(immutable) 데이터 객체를 만드는 표준 API 입니다.
- 문자열·ArrayBuffer·TypedArray·File 같은 바이트 덩어리들을 하나로 묶어 “가상의 파일” 처럼 다루게 해주는 컨테이너 개념
>> Blob 은 파일 시스템에 저장하지 않아도 메모리 상에서 파일처럼 읽고 전송(업로드/다운로드/미디어 소스 등)할 수 있습니다.
-----------------------------------------------------------------------------------------
-----------------------------------------------------------------------------------------
[소스 코드]
-----------------------------------------------------------------------------------------
<!DOCTYPE HTML>
<html lang="ko">
<head>
<title>javaScriptTest</title>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<!-- 반응형 구조 만들기 -->
<meta name="viewport" content="width=device-width, initial-scale=1.0, maximum-scale=1.0, minimum-scale=1.0, user-scalable=no">
<!-- 내부 CSS 스타일 지정 -->
<style>
html, body {
width: 100%;
height: 100%;
margin : 0 auto;
padding : 0;
border : none;
background-color: #666;
}
</style>
<!-- [CDN 주소 설정] -->
<script src="https://code.jquery.com/jquery-latest.min.js"></script>
<!-- [자바스크립트 코드 지정] -->
<script type="module">
window.onload = async function() {
console.log("[window onload] : [html 최초 로드 및 이벤트 상시 대기 실시] : [start]");
try {
/**
----------------------------------------------
[실행 흐름 요약 (텍스트 다이어그램)]
----------------------------------------------
[문자열 소스]
│
▼
Blob(text/javascript) 생성
│
▼
URL.createObjectURL → blob:… URL
│
▼
await import(blob:…)
│ └─ 모듈 파싱/실행, exports 구성
▼
mod 네임스페이스 확보
│
├─ mod.run() 실행 → 콘솔 출력
│
▼
URL.revokeObjectURL(blob:…)
----------------------------------------------
*/
// --------------------------------------------
// ✅ [전체 로그 출력 예시]
// --------------------------------------------
// [window onload] : [html 최초 로드 및 이벤트 상시 대기 실시] : [start]
//blob:null/d7aaf36d-a269-4a84-9d96-914b9d2be722:3 twok : dynamic module start
//globalThis.appState.defaultCnt : 1
//blob:null/d7aaf36d-a269-4a84-9d96-914b9d2be722:11 dynamic module timer
// --------------------------------------------
// ✅ [자바스크립트 소스 코드 문자열을 정의 : ES 모듈 문법(export)을 사용하고 있어 모듈로 로딩할 의도 정의]
// --------------------------------------------
const data = "twok";
globalThis.appState = { defaultCnt: 0 }; // ✅ (공유) 상태 준비
const source = `
export function run() {
console.log('${data} : ' + 'dynamic module start');
try {
globalThis.appState.defaultCnt++; // ✅ 전역 공유 상태 수정
setTimeout(() => { // 타이머
console.log('dynamic module timer');
alert('defaultCnt : ' + globalThis.appState.defaultCnt);
}, 3000 );
}
catch(exception){
console.error('dynamic module exception : ', exception);
}
}
`;
// --------------------------------------------
// [문자열을 Blob 으로 감싸 브라우저가 읽을 수 있는 바이너리 객체로 변환]
// --------------------------------------------
const blob = new Blob([source], { type: 'text/javascript' });
const url = URL.createObjectURL(blob); // Blob을 참조하는 Object URL 생성
// --------------------------------------------
// [동적 import()로 모듈 로딩]
// --------------------------------------------
const mod = await import(url);
mod.run(); // ✅ export function run() 으로 내보낸 함수를 호출
// --------------------------------------------
// [리소스 정리: Object URL 해제]
// --------------------------------------------
URL.revokeObjectURL(url);
console.log('globalThis.appState.defaultCnt : ', globalThis.appState.defaultCnt);
}
catch (exception) {
console.error("[window onload] : [Exception] : 예외 상황 발생 : ", exception);
}
};
</script>
</head>
<body>
</body>
</html>
-----------------------------------------------------------------------------------------
-----------------------------------------------------------------------------------------
[참고 사이트]
-----------------------------------------------------------------------------------------
[간단 소스] 자바스크립트 window.open 사용해 새창 팝업창 열기 후 window.opener.postMessage 메시지 전달 수행
https://kkh0977.tistory.com/8668
https://blog.naver.com/kkh0977/224202970329
[자바스크립트 동적 html 코드 및 style 코드 작성 후 window open 동작 테스트]
https://kkh0977.tistory.com/8663
https://blog.naver.com/kkh0977/224200045885?trackingCode=blog_bloghome_searchlist
[동적으로 div 레이아웃 생성 및 스타일 속성 지정 실시]
https://kkh0977.tistory.com/833
https://blog.naver.com/kkh0977/222390679369?trackingCode=blog_bloghome_searchlist
[부트스트랩 (bootstrap) 사용해 게시판 table 동적 목록 생성, pagination 페이징 처리]
https://kkh0977.tistory.com/1011
https://blog.naver.com/kkh0977/222438317762?trackingCode=blog_bloghome_searchlist
-----------------------------------------------------------------------------------------
728x90
반응형
'JavaScript' 카테고리의 다른 글
Comments
