청소 플랫폼 만들기 (11)

김민준·2023년 8월 26일
0

DI, IoC

공부하며 느낀 점
참조한 페이지

청소플랫폼 만들기 (11)

아무리해도 main.html 이외의 페이지로 갈 수 가 없다.

메인 페이지에 들어갈때마다 브라우저의 콘솔창에 오류가 뜬다
Failed to load resource: the server responded with a status of 404 (Not Found)

//  app.js
app.get('/signup.html', (req, res) => {
  res.render('signup.html', {});
});

위와같이 app.js에 경로마다 페이지를 추가해야하는듯하다...
다행히 js의 경우에는 아래와같이 html안에 넣으면 된다.

//  template/main.html
<!DOCTYPE html>
<html lang="ko">

<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>회원관련 페이지</title>
</head>

<body>
    <h1>회원 정보 페이지</h1>
    <button onclick="goToSignUp()">회원가입</button>
    <p>로그인</p>
    <p>회원탈퇴</p>


    <script src='../template/js/main.js'></script>
</body>

</html>
//  template/js/main.js
function goToSignUp() {
  location.href = 'http://localhost:8080/signup.html';
}

페이지마다 라우팅 핸들러를 추가할 수 는 없는 노릇이니 작은 페이지들은 모달로 구현을 해야겠다.

DI, IOC

우선 IOC를 알아야한다.

  • IOC Inversion of Controll
    제어의 역전 : 메소드나 객체의 호출 작업을 개발자가 결정하는 것이 아니라, 외부에서 결정하는 것을 말한다,
    즉, 코드의 흐름을 제어하는 주체가 바뀌는 것이다.

프레임 워크와 라이브러리의 차이이다. 라이브러리는 내가 라이브러리의 코드를 사용하지만, 프레임 워크는 반대다. 프레임 워크가 나의 코드를 사용한다. 즉, 제어권이 프레임 워크에게 가있는 것이다.

스프링의 의존성 객체 메소드 호출도 마찬가지이다.
기존 : 객체생성 → 클래스 내부에서 의존성 객체 생성 → 의존성 객체 메소드 호출
스프링 : 객체 생성 → 제어권을 스프링에게 위임 → 스프링이 만들어둔 객체를 주입한다. → 의존성 객체 메소드 호출

  • DIP Dependency Inversion Principle
    의존관계 역전법칙 : 높은 단계의 모듈이 낮은 단계의 모듈에 의존하지 않아야하며, 양쪽다 추상화에 의존해야한다.
    추상화는 세부사항에 의존해서는 안되고, 세부사항은 추상화에 의존해야한다.

  • DI Dependency Injection
    의존성 주입 : 필요한 오브젝트를 외부에서 주입받는 것이다.
    생성자 Constructor, 세터 Setter, 인터페이스 Inferface 주입의 세가지 방식이 있다.

IOC를 구현하기 위해서 DIP를 사용하고, DIP를 구현하기 위해서 DI를 사용한다.

공부하며 느낀 점

라이브러리랑 프레임 워크의 차이를 제대로 알지 못했는데 생각지도 못한데서 알게 되었다.
내가 만든 코드의 주도권은 당연히 내 코드 자체에 있을것이라고 생각했는데 역전하게되는 경우가 있다는 것도 신기했다.

참조한 페이지

[Nunjucks] 📚 넌적스 기본 문법 💯 총정리

[Study]IoC, DI, DIP 개념 잡기
[Spring] DI, IoC 정리

profile
node 개발자

0개의 댓글

관련 채용 정보