EJS란 무엇이며 왜 필요한가요?

EJS란 무엇이며 왜 필요한가요?

웹 개발에는 개발자가 선택할 수 있는 도구가 많이 있습니다. 올바른 도구와 기술을 선택하면 프로젝트의 효율성과 기능에 큰 영향을 미칠 수 있습니다. 웹 개발에서 널리 사용되는 도구 중 하나는 Embedded(Embedded)를 의미하는 EJS입니다. 자바스크립트 . EJS는 다음을 생성하는 간단한 JavaScript 템플릿 언어입니다. HTML 일반 JavaScript로. 이 기사에서는 EJS가 무엇인지, 왜 필요한지, 기능, 설치 방법을 다루고 출력 예제를 제공합니다.

EJS란 무엇인가

EJS 또는 Embedded JavaScript는 사용자가 HTML 템플릿 내에서 JavaScript 코드를 사용하여 동적 HTML 마크업을 생성할 수 있도록 하는 웹 개발에 사용되는 JavaScript용 템플릿 엔진입니다. 웹 애플리케이션에서 동적 콘텐츠를 렌더링하는 프로세스를 단순화하도록 설계되었습니다. 여기에는 HTML과 JavaScript가 혼합되어 있어 애플리케이션의 데이터를 기반으로 동적 콘텐츠를 쉽게 생성할 수 있습니다.

EJS의 특징

  • 간단한 구문: EJS는 HTML과 JavaScript를 결합한 간단한 구문을 제공하므로 쉽게 배우고 사용할 수 있습니다.
  • 동적 콘텐츠: EJS를 사용하면 HTML 태그 내에서 HTML 및 JavaScript 콘텐츠를 동적으로 생성할 수 있으므로 콘텐츠 생성의 유연성이 향상됩니다.
  • 레이아웃 및 부분: EJS는 레이아웃과 부분을 지원하므로 사용자는 템플릿을 재사용 가능한 구성 요소로 분할하여 코드 중복을 줄이고 유지 관리성을 향상시킬 수 있습니다.
  • 오류 처리: EJS는 개발자의 디버깅을 지원하는 오류 메시지를 제공하여 전반적인 개발 경험을 향상시킵니다.

왜 EJS가 필요한가요?

  • 동적 HTML 생성: EJS를 사용하면 변수, 조건, 루프 및 기타 JavaScript 논리를 기반으로 동적 HTML 콘텐츠를 생성할 수 있습니다. 이는 데이터베이스나 API에서 가져온 동적 데이터를 렌더링하는 데 특히 유용합니다.
  • 코드 재사용성: EJS 템플릿을 사용하면 재사용 가능한 구성 요소나 여러 페이지에 포함될 수 있는 부분을 만들 수 있습니다. 이는 코드 모듈성을 촉진하고 웹 애플리케이션의 중복을 줄입니다.
  • 서버측 렌더링: EJS를 사용하면 웹페이지의 서버측 렌더링(SSR)을 수행할 수 있습니다. SSR은 React 또는 Angular와 같은 프레임워크에서 수행되는 클라이언트 측 렌더링(CSR)에 비해 검색 엔진이 콘텐츠를 더 효과적으로 크롤링하고 색인화할 수 있도록 하므로 SEO(검색 엔진 최적화)에 유용합니다.
  • Node.js 및 Express.js와 쉽게 통합: EJS는 Node.js 및 Express.js와 원활하게 통합되므로 서버 측 JavaScript 애플리케이션을 작업하는 개발자에게 널리 사용됩니다. Express.js 프로젝트 내에서 설정하고 사용하기 쉽습니다.
  • 익숙한 구문: 이미 HTML과 JavaScript에 익숙하다면 EJS를 배우고 사용하는 것은 간단합니다. 구문은 JavaScript 코드가 포함된 HTML과 유사합니다. > 태그를 사용하여 다양한 기술 수준의 개발자가 액세스할 수 있도록 합니다.
  • 템플릿 상속 및 레이아웃: EJS는 템플릿 상속과 레이아웃을 지원하므로 웹 페이지에 대한 일관된 레이아웃을 만들 수 있습니다. 기본 레이아웃을 정의하고 이를 다른 템플릿으로 확장하여 애플리케이션 전체에서 일관된 모양과 느낌을 더 쉽게 유지할 수 있습니다.

EJS를 사용하는 방법?

1 단계: 프로젝트에 EJS를 종속성으로 설치

 npm install ejs 

2 단계: 프로젝트 디렉터리에 'views' 폴더가 아직 없으면 만듭니다. views 폴더 내에서 확장자가 .ejs인 새 파일(예: index.ejs)을 만듭니다.

3단계: Express.js 애플리케이션에서 EJS를 Express와 통합하려면 Express 앱 구성에서 EJS를 뷰 엔진으로 설정하세요. 이 구성을 통해 Express는 뷰 렌더링에 EJS를 사용할 수 있습니다.

app.set('view engine', 'ejs'); 

4단계: EJS 템플릿 렌더링, Express 경로 핸들러에서 다음을 사용하여 EJS 템플릿을 렌더링합니다. 'res.render()' 템플릿에 전달되는 데 필요한 데이터를 제공합니다.

res.render('hello', { name: 'Geeks' }); 

프로젝트 구조:

프로젝트_디렉토리

업데이트된 종속성 패키지.json 파일은 다음과 같습니다:

'dependencies': {  'ejs': '^3.1.9',  'express': '^4.18.2'  } 

예: 예를 들어 ejs의 사용을 보여주기 위한 구현입니다.

HTML
          EJS 예제제목> 머리> <body>  <h1>안녕하세요, <%= name %>!h1> 본문> html> </pre>  </code>자바스크립트 <code>  <pre>// index.js  const express = require('express'); const app = express(); const port = 3000; app.set('view engine', 'ejs'); app.get('/', (req, res) =>{ res.render('hello', { 이름: 'Geeks' }); }); app.listen(port, () => { console.log(`서버가 http://localhost:${port}에서 실행 중입니다`); }); </pre>  </code>  <p dir='ltr'>  <b>  <strong>애플리케이션 실행 단계: </strong>  </b>  <span>프로젝트의 루트 디렉터리에서 다음 명령을 사용하여 애플리케이션을 실행합니다. </span> </p>  <pre>node index.js </pre> <p dir='ltr'>  <b>  <strong>산출: </strong>  </b>  <span>프로젝트는 URL http://localhost:3000/에 표시됩니다. </span> </p>  <p dir='ltr'> <img src='//techcodeview.com/img/ejs-templating-language/39/what-is-ejs-why-do-i-need-it-2.webp' alt='산출'> </p>  <br>  <br>
                     </div>

                     <!-- Article Footer with Prominent Share Buttons -->
                     <div class="px-6 md:px-8 py-8 bg-slate-50 dark:bg-slate-900/50 border-t border-slate-200 dark:border-slate-700/50">
                          <div class="flex flex-col sm:flex-row items-center justify-between gap-6">
                              <h4 class="text-base font-bold text-slate-700 dark:text-slate-300 uppercase tracking-wide flex items-center gap-2">
                                 <i class="fa fa-share-alt text-tech-500"> </i>
                                공유하다                              </h4>
                             
                              <div class="flex flex-wrap justify-center gap-3">
                                 <!-- Twitter -->
                                 <a href="https://twitter.com/intent/tweet?text=EJS란 무엇이며 왜 필요한가요?&url=https://www.techcodeview.com/ko/what-is-ejs-why-do-i-need-it" 
                                   target="_blank" rel="noopener noreferrer" 
                                   class="flex items-center gap-2 px-6 py-3 rounded-xl bg-[#1DA1F2]/10 text-[#1DA1F2] hover:bg-[#1DA1F2] hover:text-white transition-all duration-300 font-bold text-sm">
                                     <i class="fa fa-twitter text-lg"> </i>
                                     <span class="hidden sm:inline">Twitter </span>
                                 </a>

                                 <!-- Facebook -->
                                 <a href="https://www.facebook.com/sharer/sharer.php?u=https://www.techcodeview.com/ko/what-is-ejs-why-do-i-need-it" 
                                   target="_blank" rel="noopener noreferrer"
                                   class="flex items-center gap-2 px-6 py-3 rounded-xl bg-[#4267B2]/10 text-[#4267B2] hover:bg-[#4267B2] hover:text-white transition-all duration-300 font-bold text-sm">
                                     <i class="fa fa-facebook text-lg"> </i>
                                     <span class="hidden sm:inline">Facebook </span>
                                 </a>
                                
                                 <!-- LinkedIn -->
                                 <a href="https://www.linkedin.com/shareArticle?mini=true&url=https://www.techcodeview.com/ko/what-is-ejs-why-do-i-need-it&title=EJS란 무엇이며 왜 필요한가요?" 
                                   target="_blank" rel="noopener noreferrer"
                                   class="flex items-center gap-2 px-6 py-3 rounded-xl bg-[#0077b5]/10 text-[#0077b5] hover:bg-[#0077b5] hover:text-white transition-all duration-300 font-bold text-sm">
                                     <i class="fa fa-linkedin text-lg"> </i>
                                     <span class="hidden sm:inline">LinkedIn </span>
                                 </a>
                              </div>
                          </div>
                     </div>
                </article>

                <!-- Comments Placeholder / Random Articles -->
                <div class="mt-8 bg-white dark:bg-slate-800 border border-slate-200 dark:border-slate-700 rounded-xl p-6 md:p-8 shadow-sm">
                     <h3 class="text-xl font-bold text-slate-900 dark:text-white mb-6 uppercase tracking-wide border-b border-slate-200 dark:border-slate-700 pb-2">
                        마음에 드실지도 몰라요                     </h3>
                     <div class="grid grid-cols-1 md:grid-cols-2 gap-6">
                         <div class="group">
                              <a href="/ko/how-position-an-image-css" class="block aspect-video rounded-lg overflow-hidden bg-slate-200 dark:bg-slate-700 mb-3">
                                 <img loading="lazy" src="https://techcodeview.com/img/css-tutorial/63/how-position-an-image-css.webp" onerror="this.onerror=null; this.src='https://techcodeview.com/template/assets/images/unnamed.webp'" alt="CSS에서 이미지를 배치하는 방법은 무엇입니까?" class="w-full h-full object-cover group-hover:scale-105 transition-transform duration-500">
                              </a>
                              <h4 class="font-bold text-slate-900 dark:text-white leading-tight group-hover:text-tech-500 transition-colors">
                                 <a href="/ko/how-position-an-image-css">CSS에서 이미지를 배치하는 방법은 무엇입니까? </a>
                              </h4>
                         </div> <div class="group">
                              <a href="/ko/average-ap-scores-every-ap-exam-131282" class="block aspect-video rounded-lg overflow-hidden bg-slate-200 dark:bg-slate-700 mb-3">
                                 <img loading="lazy" src="https://techcodeview.com/img/blog/49/average-ap-scores-every-ap-exam.webp" onerror="this.onerror=null; this.src='https://techcodeview.com/template/assets/images/unnamed.webp'" alt="모든 AP 시험의 평균 AP 점수" class="w-full h-full object-cover group-hover:scale-105 transition-transform duration-500">
                              </a>
                              <h4 class="font-bold text-slate-900 dark:text-white leading-tight group-hover:text-tech-500 transition-colors">
                                 <a href="/ko/average-ap-scores-every-ap-exam-131282">모든 AP 시험의 평균 AP 점수 </a>
                              </h4>
                         </div>
                     </div>
                </div>
             </div>

             <!-- SECONDARY COLUMN (SIDEBAR) -->
             <!-- Aside Column -->
 <div class="lg:col-span-4 space-y-8">
	
	 <!-- Best Articles Widget -->
	 <div class="rounded-xl bg-white dark:bg-slate-800 border border-slate-200 dark:border-slate-700 p-6 shadow-sm">
		 <div class="mb-4 border-b border-slate-100 dark:border-slate-700 pb-2">
			 <h2 class="text-lg font-bold text-slate-900 dark:text-white uppercase tracking-wide flex items-center">
                 <span class="mr-2 h-2 w-2 rounded-full bg-tech-500"> </span>
                인기 기사             </h2>
		 </div>
		
		 <!-- Owl Carousel Preserved Container -->
		 <div id="owl-carousel-3" class="owl-carousel owl-theme center-owl-nav">
			 <!-- ARTICLE -->
			 <article class="flex items-start gap-4 p-2 hover:bg-slate-50 dark:hover:bg-slate-700/50 rounded-lg transition-colors">
				 <div class="w-20 h-20 shrink-0 overflow-hidden rounded-md bg-slate-200 dark:bg-slate-700">
					 <a href="/ko/complete-list-high-school-electives-131270">
						 <img src="https://techcodeview.com/img/blog/24/complete-list-high-school-electives.webp" onerror="this.onerror=null; this.src='https://techcodeview.com/template/assets/images/unnamed.webp'" alt="고등학교 선택과목 전체 목록" class="w-full h-full object-cover">
					 </a>
				 </div>
				 <div class="flex-1 min-w-0">
					 <h4 class="text-sm font-semibold text-slate-800 dark:text-slate-200 leading-snug">
                         <a href="/ko/complete-list-high-school-electives-131270" class="hover:text-tech-500 transition-colors line-clamp-3">고등학교 선택과목 전체 목록 </a>
                     </h4>
				 </div>
			 </article>
			 <!-- /ARTICLE --> <!-- ARTICLE -->
			 <article class="flex items-start gap-4 p-2 hover:bg-slate-50 dark:hover:bg-slate-700/50 rounded-lg transition-colors">
				 <div class="w-20 h-20 shrink-0 overflow-hidden rounded-md bg-slate-200 dark:bg-slate-700">
					 <a href="/ko/how-many-glasses-are-gallon-water-131158">
						 <img src="https://techcodeview.com/img/blog/42/how-many-glasses-are-gallon-water.webp" onerror="this.onerror=null; this.src='https://techcodeview.com/template/assets/images/unnamed.webp'" alt="1갤런의 물에는 몇 개의 유리잔이 들어있나요?" class="w-full h-full object-cover">
					 </a>
				 </div>
				 <div class="flex-1 min-w-0">
					 <h4 class="text-sm font-semibold text-slate-800 dark:text-slate-200 leading-snug">
                         <a href="/ko/how-many-glasses-are-gallon-water-131158" class="hover:text-tech-500 transition-colors line-clamp-3">1갤런의 물에는 몇 개의 유리잔이 들어있나요? </a>
                     </h4>
				 </div>
			 </article>
			 <!-- /ARTICLE --> <!-- ARTICLE -->
			 <article class="flex items-start gap-4 p-2 hover:bg-slate-50 dark:hover:bg-slate-700/50 rounded-lg transition-colors">
				 <div class="w-20 h-20 shrink-0 overflow-hidden rounded-md bg-slate-200 dark:bg-slate-700">
					 <a href="/ko/loop-array-react-js-react-foreach-loop-example">
						 <img src="https://techcodeview.com/img/reactjs-tutorial/01/loop-array-react-js-react-foreach-loop-example.webp" onerror="this.onerror=null; this.src='https://techcodeview.com/template/assets/images/unnamed.webp'" alt="React JS의 루프 배열 | React Foreach 루프 예제" class="w-full h-full object-cover">
					 </a>
				 </div>
				 <div class="flex-1 min-w-0">
					 <h4 class="text-sm font-semibold text-slate-800 dark:text-slate-200 leading-snug">
                         <a href="/ko/loop-array-react-js-react-foreach-loop-example" class="hover:text-tech-500 transition-colors line-clamp-3">React JS의 루프 배열 | React Foreach 루프 예제 </a>
                     </h4>
				 </div>
			 </article>
			 <!-- /ARTICLE --> <!-- ARTICLE -->
			 <article class="flex items-start gap-4 p-2 hover:bg-slate-50 dark:hover:bg-slate-700/50 rounded-lg transition-colors">
				 <div class="w-20 h-20 shrink-0 overflow-hidden rounded-md bg-slate-200 dark:bg-slate-700">
					 <a href="/ko/what-is-full-form-pvt">
						 <img src="https://techcodeview.com/img/category/28/what-is-full-form-pvt.webp" onerror="this.onerror=null; this.src='https://techcodeview.com/template/assets/images/unnamed.webp'" alt="PVT의 전체 형태는 무엇입니까?" class="w-full h-full object-cover">
					 </a>
				 </div>
				 <div class="flex-1 min-w-0">
					 <h4 class="text-sm font-semibold text-slate-800 dark:text-slate-200 leading-snug">
                         <a href="/ko/what-is-full-form-pvt" class="hover:text-tech-500 transition-colors line-clamp-3">PVT의 전체 형태는 무엇입니까? </a>
                     </h4>
				 </div>
			 </article>
			 <!-- /ARTICLE --> <!-- ARTICLE -->
			 <article class="flex items-start gap-4 p-2 hover:bg-slate-50 dark:hover:bg-slate-700/50 rounded-lg transition-colors">
				 <div class="w-20 h-20 shrink-0 overflow-hidden rounded-md bg-slate-200 dark:bg-slate-700">
					 <a href="/ko/principal-component-analysis-with-python">
						 <img src="https://techcodeview.com/img/ai-ml-ds-with-python/18/principal-component-analysis-with-python.webp" onerror="this.onerror=null; this.src='https://techcodeview.com/template/assets/images/unnamed.webp'" alt="Python을 이용한 주성분 분석" class="w-full h-full object-cover">
					 </a>
				 </div>
				 <div class="flex-1 min-w-0">
					 <h4 class="text-sm font-semibold text-slate-800 dark:text-slate-200 leading-snug">
                         <a href="/ko/principal-component-analysis-with-python" class="hover:text-tech-500 transition-colors line-clamp-3">Python을 이용한 주성분 분석 </a>
                     </h4>
				 </div>
			 </article>
			 <!-- /ARTICLE --> <!-- ARTICLE -->
			 <article class="flex items-start gap-4 p-2 hover:bg-slate-50 dark:hover:bg-slate-700/50 rounded-lg transition-colors">
				 <div class="w-20 h-20 shrink-0 overflow-hidden rounded-md bg-slate-200 dark:bg-slate-700">
					 <a href="/ko/python-program-get-file-name-from-file-path">
						 <img src="https://techcodeview.com/img/picked/76/python-program-get-file-name-from-file-path.webp" onerror="this.onerror=null; this.src='https://techcodeview.com/template/assets/images/unnamed.webp'" alt="파일 경로에서 파일 이름을 가져오는 Python 프로그램" class="w-full h-full object-cover">
					 </a>
				 </div>
				 <div class="flex-1 min-w-0">
					 <h4 class="text-sm font-semibold text-slate-800 dark:text-slate-200 leading-snug">
                         <a href="/ko/python-program-get-file-name-from-file-path" class="hover:text-tech-500 transition-colors line-clamp-3">파일 경로에서 파일 이름을 가져오는 Python 프로그램 </a>
                     </h4>
				 </div>
			 </article>
			 <!-- /ARTICLE --> <!-- ARTICLE -->
			 <article class="flex items-start gap-4 p-2 hover:bg-slate-50 dark:hover:bg-slate-700/50 rounded-lg transition-colors">
				 <div class="w-20 h-20 shrink-0 overflow-hidden rounded-md bg-slate-200 dark:bg-slate-700">
					 <a href="/ko/what-is-full-form-hd">
						 <img src="https://techcodeview.com/img/category/56/what-is-full-form-hd.webp" onerror="this.onerror=null; this.src='https://techcodeview.com/template/assets/images/unnamed.webp'" alt="HD의 완전한 형태는 무엇입니까?" class="w-full h-full object-cover">
					 </a>
				 </div>
				 <div class="flex-1 min-w-0">
					 <h4 class="text-sm font-semibold text-slate-800 dark:text-slate-200 leading-snug">
                         <a href="/ko/what-is-full-form-hd" class="hover:text-tech-500 transition-colors line-clamp-3">HD의 완전한 형태는 무엇입니까? </a>
                     </h4>
				 </div>
			 </article>
			 <!-- /ARTICLE --> <!-- ARTICLE -->
			 <article class="flex items-start gap-4 p-2 hover:bg-slate-50 dark:hover:bg-slate-700/50 rounded-lg transition-colors">
				 <div class="w-20 h-20 shrink-0 overflow-hidden rounded-md bg-slate-200 dark:bg-slate-700">
					 <a href="/ko/object-oriented-programming-c">
						 <img src="https://techcodeview.com/img/cpp-basics/02/object-oriented-programming-c.webp" onerror="this.onerror=null; this.src='https://techcodeview.com/template/assets/images/unnamed.webp'" alt="C++의 객체 지향 프로그래밍" class="w-full h-full object-cover">
					 </a>
				 </div>
				 <div class="flex-1 min-w-0">
					 <h4 class="text-sm font-semibold text-slate-800 dark:text-slate-200 leading-snug">
                         <a href="/ko/object-oriented-programming-c" class="hover:text-tech-500 transition-colors line-clamp-3">C++의 객체 지향 프로그래밍 </a>
                     </h4>
				 </div>
			 </article>
			 <!-- /ARTICLE --> <!-- ARTICLE -->
			 <article class="flex items-start gap-4 p-2 hover:bg-slate-50 dark:hover:bg-slate-700/50 rounded-lg transition-colors">
				 <div class="w-20 h-20 shrink-0 overflow-hidden rounded-md bg-slate-200 dark:bg-slate-700">
					 <a href="/ko/linux-make-command">
						 <img src="https://techcodeview.com/img/linux-tutorial/72/linux-make-command.webp" onerror="this.onerror=null; this.src='https://techcodeview.com/template/assets/images/unnamed.webp'" alt="리눅스 make 명령" class="w-full h-full object-cover">
					 </a>
				 </div>
				 <div class="flex-1 min-w-0">
					 <h4 class="text-sm font-semibold text-slate-800 dark:text-slate-200 leading-snug">
                         <a href="/ko/linux-make-command" class="hover:text-tech-500 transition-colors line-clamp-3">리눅스 make 명령 </a>
                     </h4>
				 </div>
			 </article>
			 <!-- /ARTICLE --> <!-- ARTICLE -->
			 <article class="flex items-start gap-4 p-2 hover:bg-slate-50 dark:hover:bg-slate-700/50 rounded-lg transition-colors">
				 <div class="w-20 h-20 shrink-0 overflow-hidden rounded-md bg-slate-200 dark:bg-slate-700">
					 <a href="/ko/is-early-action-binding-1311194">
						 <img src="https://techcodeview.com/img/blog/79/is-early-action-binding.webp" onerror="this.onerror=null; this.src='https://techcodeview.com/template/assets/images/unnamed.webp'" alt="얼리 액션은 구속력이 있나요?" class="w-full h-full object-cover">
					 </a>
				 </div>
				 <div class="flex-1 min-w-0">
					 <h4 class="text-sm font-semibold text-slate-800 dark:text-slate-200 leading-snug">
                         <a href="/ko/is-early-action-binding-1311194" class="hover:text-tech-500 transition-colors line-clamp-3">얼리 액션은 구속력이 있나요? </a>
                     </h4>
				 </div>
			 </article>
			 <!-- /ARTICLE -->
		 </div>
		

         <!-- Categories -->
		 <div class="mt-8 mb-4 border-b border-slate-100 dark:border-slate-700 pb-2">
			 <h2 class="text-lg font-bold text-slate-900 dark:text-white uppercase tracking-wide">범주 </h2>
		 </div>
		 <div class="flex flex-wrap gap-2">
             <a href="/ko/blog/" class="inline-block px-3 py-1 bg-slate-100 dark:bg-slate-700 text-xs font-medium text-slate-600 dark:text-slate-300 rounded-full hover:bg-tech-500 hover:text-white transition-colors">
                블로그
             </a> <a href="/ko/java-conversion/" class="inline-block px-3 py-1 bg-slate-100 dark:bg-slate-700 text-xs font-medium text-slate-600 dark:text-slate-300 rounded-full hover:bg-tech-500 hover:text-white transition-colors">
                자바 변환
             </a> <a href="/ko/maths/" class="inline-block px-3 py-1 bg-slate-100 dark:bg-slate-700 text-xs font-medium text-slate-600 dark:text-slate-300 rounded-full hover:bg-tech-500 hover:text-white transition-colors">
                수학
             </a> <a href="/ko/java-collections/" class="inline-block px-3 py-1 bg-slate-100 dark:bg-slate-700 text-xs font-medium text-slate-600 dark:text-slate-300 rounded-full hover:bg-tech-500 hover:text-white transition-colors">
                자바 컬렉션
             </a> <a href="/ko/differences/" class="inline-block px-3 py-1 bg-slate-100 dark:bg-slate-700 text-xs font-medium text-slate-600 dark:text-slate-300 rounded-full hover:bg-tech-500 hover:text-white transition-colors">
                차이점
             </a> <a href="/ko/java-string/" class="inline-block px-3 py-1 bg-slate-100 dark:bg-slate-700 text-xs font-medium text-slate-600 dark:text-slate-300 rounded-full hover:bg-tech-500 hover:text-white transition-colors">
                자바 문자열
             </a>
         </div>

         <!-- Interesting Articles Widget -->
		 <div class="mt-8">
			 <div class="mb-4 border-b border-slate-100 dark:border-slate-700 pb-2">
				 <h2 class="text-lg font-bold text-slate-900 dark:text-white uppercase tracking-wide">재미있는 기사 </h2>
			 </div>
			
			 <div id="owl-carousel-4" class="owl-carousel owl-theme">
				 <!-- ARTICLE -->
				 <article class="relative aspect-video rounded-lg overflow-hidden group mb-2">
					 <div class="absolute inset-0">
						 <img src="https://techcodeview.com/img/blog/21/what-is-imagery-complete-guide.webp" onerror="this.onerror=null; this.src='https://techcodeview.com/template/assets/images/unnamed.webp'" alt="이미지란 무엇입니까? 완전한 가이드" class="w-full h-full object-cover group-hover:scale-105 transition-transform duration-500">
                         <div class="absolute inset-0 bg-gradient-to-t from-black/80 to-transparent"> </div>
					 </div>
					 <div class="absolute bottom-0 left-0 p-4">
						 <div class="text-xs text-tech-400 font-bold mb-1"> <a href="/ko/blog/">블로그 </a> </div>
						 <h4 class="text-sm font-bold text-white leading-tight"> <a href="/ko/what-is-imagery-complete-guide-131528">이미지란 무엇입니까? 완전한 가이드 </a> </h4>
					 </div>
				 </article>
				 <!-- /ARTICLE --> <!-- ARTICLE -->
				 <article class="relative aspect-video rounded-lg overflow-hidden group mb-2">
					 <div class="absolute inset-0">
						 <img src="https://techcodeview.com/img/computer/90/what-is-desktop.webp" onerror="this.onerror=null; this.src='https://techcodeview.com/template/assets/images/unnamed.webp'" alt="데스크탑이란 무엇입니까?" class="w-full h-full object-cover group-hover:scale-105 transition-transform duration-500">
                         <div class="absolute inset-0 bg-gradient-to-t from-black/80 to-transparent"> </div>
					 </div>
					 <div class="absolute bottom-0 left-0 p-4">
						 <div class="text-xs text-tech-400 font-bold mb-1"> <a href="/ko/computer/">컴퓨터 </a> </div>
						 <h4 class="text-sm font-bold text-white leading-tight"> <a href="/ko/what-is-desktop">데스크탑이란 무엇입니까? </a> </h4>
					 </div>
				 </article>
				 <!-- /ARTICLE --> <!-- ARTICLE -->
				 <article class="relative aspect-video rounded-lg overflow-hidden group mb-2">
					 <div class="absolute inset-0">
						 <img src="https://techcodeview.com/img/java/86/java-pipedwriter-class.webp" onerror="this.onerror=null; this.src='https://techcodeview.com/template/assets/images/unnamed.webp'" alt="자바 PipedWriter 클래스" class="w-full h-full object-cover group-hover:scale-105 transition-transform duration-500">
                         <div class="absolute inset-0 bg-gradient-to-t from-black/80 to-transparent"> </div>
					 </div>
					 <div class="absolute bottom-0 left-0 p-4">
						 <div class="text-xs text-tech-400 font-bold mb-1"> <a href="/ko/java/">자바 </a> </div>
						 <h4 class="text-sm font-bold text-white leading-tight"> <a href="/ko/java-pipedwriter-class">자바 PipedWriter 클래스 </a> </h4>
					 </div>
				 </article>
				 <!-- /ARTICLE --> <!-- ARTICLE -->
				 <article class="relative aspect-video rounded-lg overflow-hidden group mb-2">
					 <div class="absolute inset-0">
						 <img src="https://techcodeview.com/img/log4j-tutorial/30/log4j-tutorial.webp" onerror="this.onerror=null; this.src='https://techcodeview.com/template/assets/images/unnamed.webp'" alt="Log4j 튜토리얼" class="w-full h-full object-cover group-hover:scale-105 transition-transform duration-500">
                         <div class="absolute inset-0 bg-gradient-to-t from-black/80 to-transparent"> </div>
					 </div>
					 <div class="absolute bottom-0 left-0 p-4">
						 <div class="text-xs text-tech-400 font-bold mb-1"> <a href="/ko/log4j-tutorial/">Log4J 튜토리얼 </a> </div>
						 <h4 class="text-sm font-bold text-white leading-tight"> <a href="/ko/log4j-tutorial">Log4j 튜토리얼 </a> </h4>
					 </div>
				 </article>
				 <!-- /ARTICLE --> <!-- ARTICLE -->
				 <article class="relative aspect-video rounded-lg overflow-hidden group mb-2">
					 <div class="absolute inset-0">
						 <img src="https://techcodeview.com/img/computer/56/what-is-recycle-bin.webp" onerror="this.onerror=null; this.src='https://techcodeview.com/template/assets/images/unnamed.webp'" alt="휴지통이란 무엇입니까?" class="w-full h-full object-cover group-hover:scale-105 transition-transform duration-500">
                         <div class="absolute inset-0 bg-gradient-to-t from-black/80 to-transparent"> </div>
					 </div>
					 <div class="absolute bottom-0 left-0 p-4">
						 <div class="text-xs text-tech-400 font-bold mb-1"> <a href="/ko/computer/">컴퓨터 </a> </div>
						 <h4 class="text-sm font-bold text-white leading-tight"> <a href="/ko/what-is-recycle-bin">휴지통이란 무엇입니까? </a> </h4>
					 </div>
				 </article>
				 <!-- /ARTICLE --> <!-- ARTICLE -->
				 <article class="relative aspect-video rounded-lg overflow-hidden group mb-2">
					 <div class="absolute inset-0">
						 <img src="https://techcodeview.com/img/tree/92/flip-binary-tree.webp" onerror="this.onerror=null; this.src='https://techcodeview.com/template/assets/images/unnamed.webp'" alt="이진 트리 뒤집기" class="w-full h-full object-cover group-hover:scale-105 transition-transform duration-500">
                         <div class="absolute inset-0 bg-gradient-to-t from-black/80 to-transparent"> </div>
					 </div>
					 <div class="absolute bottom-0 left-0 p-4">
						 <div class="text-xs text-tech-400 font-bold mb-1"> <a href="/ko/tree/">나무 </a> </div>
						 <h4 class="text-sm font-bold text-white leading-tight"> <a href="/ko/flip-binary-tree">이진 트리 뒤집기 </a> </h4>
					 </div>
				 </article>
				 <!-- /ARTICLE -->
			 </div>
		 </div>
	 </div>
 </div>
 <!-- /Aside Column -->         </div>
        </div>
     </div>

 <footer class="site-footer">
         <div class="container">
             <span class="footer-links">
                Copyright ©2026 판권 소유 | 
                 <a href="//www.techcodeview.com/de/">techcodeview.com </a> | 
                 <a href="/disclaimer" rel="nofollow noopener noreferrer" target="_blank">부인 성명 </a> | 
                 <a href="/about-us" rel="nofollow noopener noreferrer" target="_blank">회사 소개 </a> | 
                 <a href="/privacy-policy" rel="nofollow noopener noreferrer" target="_blank">개인 정보 보호 정책 </a> 
             </span>
         </div>
     </footer>
 
     <script type="text/javascript" src="https://techcodeview.com/template/assets/plugins/jquery-1.11.3.min.js"> </script>
     <script type="text/javascript" src="https://techcodeview.com/template/assets/plugins/bootstrap/js/bootstrap.min.js"> </script>    
     <script type="text/javascript" src="https://techcodeview.com/template/assets/js/main.js"> </script>     
	 <script src="//cdnjs.cloudflare.com/ajax/libs/highlight.js/11.5.1/highlight.min.js"> </script>
	 <script>
    !function(){"use strict";let t=document.createElement("button");t.id="toTopBtn",t.innerHTML="↑";let e=`
        #toTopBtn {
            position: fixed; bottom: 25px; right: 25px; z-index: 9999; opacity: 0; visibility: hidden; background-color: #0ea5e9; color: white; border: none; border-radius: 8px; width: 50px; height: 50px; font-size: 24px; cursor: pointer; transition: opacity 0.3s ease-in-out, visibility 0.3s ease-in-out;
        }
        #toTopBtn:hover { background-color: #0284c7; }
    `,i=document.createElement("style");i.type="text/css",i.innerText=e,document.head.appendChild(i),document.body.appendChild(t),window.addEventListener("scroll",()=>{let e=window.scrollY||document.documentElement.scrollTop;e>300?(t.style.opacity="1",t.style.visibility="visible"):(t.style.opacity="0",t.style.visibility="hidden")}),t.addEventListener("click",()=>{window.scrollTo({top:0,behavior:"smooth"})})}();
     </script>
 </body>
 </html>