2. 자바스크립트 프로젝트 사전준비2
깃허브 : https://github.com/hgt2768/JavaScriptStudy.git
자바스크립트 연습을 부트 스트랩 템플릿 위에서 하려고 하다보니 매번 페이지를 새로 만들어야되는 불상사가 생김을 인지했다.
그래서 각 페이지별로 따로 제작해서 불러오기 위해 jquery와 자바스크립트를 이용한 간단한 함수를 우선 만들게 되었다.
간단한 Helloworld하기도 전에 더 고차원 함수 제작한건 무엇....
분리할 부분은 자주 수정이 있을 sliderBar와 contentPage 부분이다.
다른 곳은 거의 수정하지 않지만 해당부분은 계속 수정하게 되기 때문에 분리하기로 했다.
폴더 구조는 위 사진과 같이 된다.
contentPage에 include될 것들은 views폴더에 위치하며 용도에 따라 구분토록했다.
어찌됬든 기초를 배우기 전에 하기에는 무리가 있는 코드들이니 복사 붙여넣기로 만들어 놓자.
내용이 길어 접어 놨음. 코드 확인 ▽
1. index.html
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="utf-8"/>
<meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no"/>
<meta name="description" content=""/>
<meta name="author" content=""/>
<title>Simple Sidebar - Start Bootstrap Template</title>
<!-- Favicon-->
<link rel="icon" type="image/x-icon" href="assets/favicon.ico"/>
<!-- Core theme CSS (includes Bootstrap)-->
<link href="css/styles.css" rel="stylesheet"/>
<script src="https://code.jquery.com/jquery-3.6.0.js"></script>
<script src="js/includeHTML.js" defer></script>
<script defer>
$(document).ready(() =>{
changePageContent("./default.html");
})
</script>
</head>
<body>
<div class="d-flex" id="wrapper">
<!-- Sidebar-->
<div class="border-end bg-white" id="sidebar-wrapper">
<div class="sidebar-heading border-bottom bg-light">자바스크립트 Basic</div>
<!-- sliderBar 삽입 부분 -->
<div class="list-group list-group-flush" id="list-group"></div>
</div>
<!-- Page content wrapper-->
<div id="page-content-wrapper">
<!-- Top navigation-->
<nav class="navbar navbar-expand-lg navbar-light bg-light border-bottom">
<div class="container-fluid">
<!-- 상단 Toggle Menu 버튼 위치 -->
<button class="btn btn-primary" id="sidebarToggle">Toggle Menu</button>
<button class="navbar-toggler" type="button" data-bs-toggle="collapse"
data-bs-target="#navbarSupportedContent" aria-controls="navbarSupportedContent"
aria-expanded="false" aria-label="Toggle navigation"><span class="navbar-toggler-icon"></span>
</button>
<!-- 우측 상단 Toggle Menu -->
<div class="collapse navbar-collapse" id="navbarSupportedContent">
<ul class="navbar-nav ms-auto mt-2 mt-lg-0">
<li class="nav-item active"><a class="nav-link" href="#!" onclick="changePageContent('./default.html')">Home</a></li>
<li class="nav-item"><a class="nav-link" href="#!">Link</a></li>
<!-- 드롭 다운 메뉴 -->
<li class="nav-item dropdown">
<a class="nav-link dropdown-toggle" id="navbarDropdown" href="#" role="button"
data-bs-toggle="dropdown" aria-haspopup="true" aria-expanded="false">Dropdown</a>
<div class="dropdown-menu dropdown-menu-end" aria-labelledby="navbarDropdown">
<a class="dropdown-item" href="#!">Action</a>
<a class="dropdown-item" href="#!">Another action</a>
<div class="dropdown-divider"></div>
<a class="dropdown-item" href="#!">Something else here</a>
</div>
</li>
</ul>
</div>
</div>
</nav>
<!-- Page content 위치-->
<div class="container-fluid" id="pageContent">
</div>
</div>
</div>
<!-- Bootstrap core JS-->
<script src="https://cdn.jsdelivr.net/npm/bootstrap@5.1.3/dist/js/bootstrap.bundle.min.js"></script>
<!-- Core theme JS-->
<script src="js/scripts.js"></script>
</body>
</html>
2. includeHTML.js
// html load
// sliderBar load
$(document).ready(()=>{
$('#list-group').load("sliderBar.html"); // list
});
// pageContent load
function changePageContent(htmlFileName) {
$(document).ready(() => {
$("#pageContent").load(htmlFileName);
});
};
3. sliderBar.html
<a class="list-group-item list-group-item-action list-group-item-light p-3" href="#!" onclick="changePageContent('./views/basic/helloWorld.html')">Dashboard</a>
<a class="list-group-item list-group-item-action list-group-item-light p-3" href="#!">Shortcuts</a>
<a class="list-group-item list-group-item-action list-group-item-light p-3" href="#!">Overview</a>
<a class="list-group-item list-group-item-action list-group-item-light p-3" href="#!">Events</a>
<a class="list-group-item list-group-item-action list-group-item-light p-3" href="#!">Profile</a>
<a class="list-group-item list-group-item-action list-group-item-light p-3" href="#!">Status</a>
4. default.html
<h1 class="mt-4">Simple Sidebar</h1>
<p>The starting state of the menu will appear collapsed on smaller screens, and will appear non-collapsed on
larger screens. When toggled using the button below, the menu will change.</p>
<p>
Make sure to keep all page content within the
<code>#page-content-wrapper</code>
. The top navbar is optional, and just for demonstration. Just create an element with the
<code>#sidebarToggle</code>
ID which will toggle the menu when clicked.
</p>
5. helloWorld.html
<h1>hi</h1>
// sliderBar load
$(document).ready(()=>{
$('#list-group').load("sliderBar.html"); // list
});
핵심은 이 코드이다. jquery를 이용해 파일을 읽어 include하는 것이다. 순수 javascript로 하면 코드가 복잡해지나, jqeury를 이용하면 이렇게 간단해진다.
// pageContent load
function changePageContent(htmlFileName) {
$(document).ready(() => {
$("#pageContent").load(htmlFileName);
});
};
앞으로 페이지를 만들면 해당 함수로 이동하게 끔 되어있다.
예를 들어 좌측 슬라이드 매뉴의 <a>태그나 <button>에다가 onclick 이벤트로 해당함수를 넣어놓고 파라미터로 html파일의 경로를 넣어주면 클릭할때마다 해당 html을 pageContent 영역에 include해준다.
이제 기초 연습 겸 기록하는 홈페이지의 준비가 완료되었다.