메인 콘텐츠로 건너뛰기

소개

라우트나 컨트롤러에서 HTML 문서 전체를 문자열로 반환하는 것은 현실적이지 않습니다. 뷰를 사용하면 모든 HTML을 독립된 파일에 작성할 수 있습니다. 뷰는 컨트롤러·애플리케이션 로직을 프리젠테이션 로직으로부터 분리하며, resources/views 디렉터리에 저장됩니다. Laravel에서는 일반적으로 Blade 템플릿 언어를 사용해 뷰를 작성합니다.
<!-- resources/views/greeting.blade.php -->
<html>
    <body>
        <h1>안녕하세요, {{ $name }}</h1>
    </body>
</html>
이 뷰는 resources/views/greeting.blade.php에 저장되어 있으며, 전역 view 헬퍼를 사용해 반환할 수 있습니다.
Route::get('/', function () {
    return view('greeting', ['name' => '태로']);
});

뷰 생성

뷰를 생성하려면 resources/views 디렉터리에 .blade.php 확장자의 파일을 놓거나 Artisan 명령을 사용합니다.
php artisan make:view greeting
.blade.php 확장자는 프레임워크에 해당 파일이 Blade 템플릿을 포함하고 있음을 알립니다.

뷰 반환 방법

뷰를 생성했다면 라우트나 컨트롤러에서 전역 view 헬퍼를 사용해 반환할 수 있습니다.
Route::get('/', function () {
    return view('greeting', ['name' => '태로']);
});
View 파사드를 사용해서도 반환할 수 있습니다.
use Illuminate\Support\Facades\View;

return View::make('greeting', ['name' => '태로']);
view 헬퍼의 첫 번째 인수는 resources/views 디렉터리 안의 뷰 파일명에 대응합니다. 두 번째 인수는 뷰에서 사용할 수 있는 데이터 배열입니다.

중첩된 뷰 디렉터리

뷰는 resources/views의 하위 디렉터리로 중첩할 수 있습니다. 중첩된 뷰를 참조하려면 “점” 표기법을 사용합니다. 예를 들어 resources/views/admin/profile.blade.php에 저장한 뷰는 다음과 같이 반환할 수 있습니다.
return view('admin.profile', $data);
뷰의 디렉터리 이름에 . 문자를 포함하지 마세요.

처음 존재하는 뷰 반환하기

View 파사드의 first 메서드를 사용하면 뷰 배열 중 처음 존재하는 뷰를 반환할 수 있습니다.
use Illuminate\Support\Facades\View;

return View::first(['custom.admin', 'admin'], $data);

뷰 존재 확인

뷰가 존재하는지 확인하려면 View 파사드의 exists 메서드를 사용합니다.
use Illuminate\Support\Facades\View;

if (View::exists('admin.profile')) {
    // ...
}

뷰에 데이터 전달하기

앞서 예제에서 봤듯이, 데이터 배열을 뷰에 전달하여 뷰 안에서 해당 데이터를 사용할 수 있습니다.
return view('greetings', ['name' => '하나코']);
이 방법에서는 데이터가 키와 값 쌍의 배열이어야 합니다. 뷰 내부에서는 데이터의 키를 사용하여 각 값에 접근할 수 있습니다. with 메서드를 사용하여 개별적으로 데이터를 추가할 수도 있습니다. with 메서드는 뷰 객체의 인스턴스를 반환하므로 메서드 체이닝이 가능합니다.
return view('greeting')
    ->with('name', '하나코')
    ->with('occupation', '엔지니어');

모든 뷰에서 데이터 공유하기

모든 뷰에서 데이터를 공유하고 싶다면 View 파사드의 share 메서드를 사용합니다. 일반적으로 서비스 프로바이더의 boot 메서드 안에 작성합니다.
<?php

namespace App\Providers;

use Illuminate\Support\Facades\View;

class AppServiceProvider extends ServiceProvider
{
    /**
     * 애플리케이션 서비스 부트스트랩 처리
     */
    public function boot(): void
    {
        View::share('appName', 'MyApp');
    }
}

뷰 최적화

기본적으로 Blade 템플릿의 뷰는 온디맨드로 컴파일됩니다. 요청 시점에 뷰 컴파일 처리가 실행되므로 약간의 성능 영향을 줄 수 있습니다. view:cache Artisan 명령을 사용하면 애플리케이션에서 사용되는 모든 뷰를 미리 컴파일할 수 있습니다. 배포 프로세스의 일부로 실행하는 것을 권장합니다.
php artisan view:cache
뷰 캐시를 삭제하려면 다음 명령을 사용합니다.
php artisan view:clear

다음 단계

Blade 템플릿

Blade 구문을 사용해 동적인 뷰를 구축하는 방법을 배웁니다.
마지막 수정일 2026년 7월 13일