본문 바로가기
Framework/Laravel Framework

[Laravel] 라라벨 디렉토리 구조 (Laravel Directory Structure)

by 원동호 2019. 4. 11.
반응형

프레임워크로서는 JSP를 하면서 스프링 프레임워크를 처음 접했고, 두번째로 접하게 된게 라라벨이다.

 

스프링을 처음 접했을 때 디렉토리 구조가 정말 복잡하게 되어 있어서 너무 힘들었다..

 

계속하다보니 사실 복잡한게 아니였다..  

 

스프링을 한번 나름대로 깊게 봤다고 생각하기 때문에 라라벨을 접했을 때도 편하게 공부를 시작했다.

 

언어가 달라도 같은 웹서버의 개념이라고 생각하니 크게 어렵진 않았고 재밌게 하는 중이다.

 


아래는 디렉토리 구조이다.

 

Laravel Directory Structure

크게 10개의 디렉토리로 이루어져 있다.

 

app - 라라벨로 개발하는 애플리케이션의 소스 코드가 위치 하는 곳으로 route 설정, Model, Controller가 존재 한다.

나름 Controller가 존재하는 디렉토리기 때문에 가장 많이 사용하고 중요한 곳이다.

 

Spring의 Controller와 유사하다!

취업하기전까지 Spring을 계속 사용해와서 그런지 Spring이 너무 익숙하고 비교를 하면서 공부를 하게 되는것 같다.. 

 

bootstrap -  프레임워크 부팅에 필요한 파일과 속도를 위해 컴파일된 app.php 파일이 위치하며 라우트나 서비스 캐시 파일과 같은 퍼포먼스 향상을 위해서 생성하는 cache 디렉토리를 가지고 있다.

 

아직 까지 깊게 하나하나 디렉토리별로 보지는 못했기 때문에 내가 따로 수정 할 일은 없을 것 같다..

 

config - 애플리케이션의 설정 파일을 포함하고 있다.(인증, 데이터베이스, 세션, 메일 등)

 

database - 데이터베이스 스키마를 관리하는 마이그레이션(migration), 초기 데이터를 설정하는 시드(seeds) 데이터, 

모델에 데이터를 입력하기 위한 팩토리(factories)가 위치하는 곳이다.

 

마이그레이션이 생각보다 유용하고 놀라웠다.. 직접 테이블을 생성하지 않고 command로 migration을 생성하고 저장 해주면 테이블을 생성 시킬 수 있고, 기록도 남아 데이터베이스 관리가 정말 유용할 것 같다. 

추후에 database, ORM 등 자세히 알아 볼 것이다.

 

public - img, css, 글꼴, javascript같은 정적 리소스와 라라벨의 인덱스 파일인 index.php가 위치, 웹 서버에서 라라을 등록할 때, httpd.conf 파일의 DocumentRoot 를 public으로 설정해야 정상적으로 동작한다.

Spring의 webapp\resources 디렉토리가 생각난다.. ㅎㅎ.....

 

resource - 뷰 파일, css, js 파일이 존재하는 디렉토리다! Controller와 더불어 가장 많이 사용 될것 같은 디렉토리다!!

라라벨은 또 신기한게 .php가 아니라 .blade.php이다. 블레이드 템플릿을 사용한다!!

JSP의 EL ,JSTL 태그 처럼 blade 문법(태그?)이 존재하고 따로 공부를 해야 할 것 같다.

JSTL과 비슷한듯 안비슷한듯 하지만 익숙한 문법이라 너무 반가웠다!

 

routes모든 라라벨의 라우트는 routes 디렉토리 안에 들어 있는 라우트 파일에 정의되어 있다. web.php에 모든 라우트들을 정의하며 콜백 함수를 등록해 컨트롤러의 함수를 실행 하게 할 수 있다. 아래는 예시이다.

app\Providers\RouteServiceProvider.php 파일에 자세히 정의 되어 있다.

Route get 예제

Spring과 비교하여 문법은 다르지만 구조는 아주 비슷하다!! Route:: 뒤에나오는 get 은 HTTP Method이고 첫번째 인자는 URL, 두번째 인자는 콜백함수이다.

 

 

controller의 function을 실행

위 그림은 URL '/'을 요청하게 되면 WelcomController의 index function을 실행하라는 의미이다.

 

그리고 남은 3가지 디렉토리는 나중에 알아보겠다...... 너무 많다..

 

 

출처와 참고 : https://laravel.kr/docs/5.7/structure

불러오는 중입니다...

 

반응형

댓글