Skip to main content
Sau khi đã cấu hình server-side framework, bạn cần thiết lập client-side framework. Inertia hiện hỗ trợ React, Vue và Svelte.

Laravel Starter Kit

Các starter kit của Laravel cung cấp scaffold sẵn dùng cho ứng dụng Inertia mới.Đây là cách nhanh nhất để bắt đầu dự án Inertia mới bằng Laravel và Vue hoặc React. Tuy nhiên, nếu muốn cài Inertia thủ công vào ứng dụng, hãy xem tài liệu bên dưới.

Điều kiện tiên quyết

Inertia yêu cầu client-side framework và Vite plugin tương ứng được cài đặt và cấu hình. Bạn có thể bỏ qua phần này nếu ứng dụng đã thiết lập sẵn.
Sau đó, thêm plugin của framework vào file vite.config.js.
Để biết thêm về cấu hình các plugin này, hãy xem tài liệu Vite của Laravel.

Cài đặt

Plugin @inertiajs/vite hỗ trợ Vite 7 và Vite 8.
1

Install dependencies

Cài Inertia client-side adapter và Vite plugin.
2

Configure Vite

Thêm plugin Inertia vào file vite.config.js.
vite.config.js
3

Initialize the Inertia app

Cập nhật file JavaScript chính để boot ứng dụng Inertia. Vite plugin tự động xử lý page resolution và mounting, vì vậy chỉ cần entry point tối thiểu.
Plugin tạo resolver mặc định tìm page trong cả thư mục ./pages./Pages, đồng thời tự động mount ứng dụng.

React Strict Mode

React adapter hỗ trợ bật Strict Mode của React qua tùy chọn strictMode.

Cú pháp rút gọn Pages

Bạn có thể dùng shorthand pages để tùy chỉnh thư mục tìm page component.
Bạn cũng có thể truyền object để kiểm soát chi tiết hơn cách page được resolve. Chỉ cần cung cấp các option muốn tùy chỉnh.

Tùy chỉnh ứng dụng

Đôi khi bạn muốn tùy chỉnh app instance, ví dụ đăng ký plugin, bọc bằng provider hoặc đặt context value. Truyền callback withApp vào createInertiaApp để tùy chỉnh app trước khi render.
Đối số thứ hai cung cấp môi trường render hiện tại qua ssr, cho phép áp dụng logic có điều kiện dựa trên nơi ứng dụng đang chạy.
Đối số thứ hai cũng chứa object page hiện tại, cho phép truy cập component name, URL, version và shared props trước khi app render. Điều này hữu ích để cấu hình plugin hoặc provider bằng state do server cung cấp, chẳng hạn locale của người dùng.

AI Assistant và tích hợp IDE

AI assistant và tích hợp IDE thường ghi state file vào root project. Khi bật refresh: true của laravel-vite-plugin, các thao tác ghi này có thể gây full-page reload ngoài ý muốn vì watcher của Vite mặc định chỉ bỏ qua node_modules.git. Bạn có thể mở rộng tùy chọn server.watch.ignored của Vite để loại các path này.
vite.config.js
Điều chỉnh danh sách phù hợp với các tool đã cài. Xem tài liệu server.watch của Vite để biết thêm tùy chọn.

Thiết lập thủ công

Nếu không muốn dùng Vite plugin, bạn có thể tự cung cấp callback resolvesetup. Callback resolve cho Inertia biết cách tải page component và nhận component name cùng full page object. Callback setup khởi tạo client-side framework.
Callback setup thủ công khiến Vite plugin không thể tự sinh xử lý SSR. Bạn nên tạo SSR entry point riêng và cập nhật app để dùng client-side hydration.
Mặc định, page component được lazy-load, tách mỗi page thành bundle riêng. Để eager bundle mọi page vào một file duy nhất, xem tài liệu code splitting. Package laravel-vite-plugin cũng cung cấp helper resolvePageComponent có thể dùng để resolve page component.

Cấu hình giá trị mặc định

Bạn có thể truyền object defaults vào createInertiaApp() để cấu hình giá trị mặc định cho nhiều tính năng. Không cần truyền mặc định cho mọi key, chỉ cần những key bạn muốn điều chỉnh.
Callback visitOptions nhận target URL và visit option hiện tại, rồi nên trả object chứa option cần override. Để biết thêm về các cấu hình có sẵn, xem tài liệu forms, prefetchingmanual visits.

Cập nhật cấu hình khi runtime

Bạn cũng có thể cập nhật giá trị cấu hình khi runtime bằng instance config được export. Điều này đặc biệt hữu ích khi cần điều chỉnh setting dựa trên preference của người dùng hoặc state ứng dụng.

Định nghĩa root element

Mặc định, Inertia giả định root template của ứng dụng có root element với idapp. Nếu root element của ứng dụng có id khác, bạn có thể cung cấp nó bằng thuộc tính id.
Nếu thay id của root element, hãy nhớ cập nhật cả phía server.

Content Security Policy

Với ứng dụng dùng Content Security Policy hạn chế inline style, bạn có thể truyền nonce vào createInertiaApp(). Nonce được áp dụng cho inline style mà Inertia inject cho progress barerror modal, cho phép chúng vượt qua CSP.

HTTP client

Khác Inertia 2 trở về trước, Inertia 3 dùng XHR client tích hợp cho mọi request. Không cần thư viện HTTP bổ sung như Axios.

Sử dụng Axios

Bạn có thể cung cấp axiosAdapter làm tùy chọn http khi tạo ứng dụng Inertia. Điều này hữu ích khi ứng dụng cần custom Axios instance.
Bạn cũng có thể truyền custom Axios instance cho adapter.

Interceptor

XHR client tích hợp hỗ trợ interceptor để sửa request, kiểm tra response hoặc xử lý error. Các interceptor áp dụng cho mọi HTTP request do Inertia tạo, bao gồm từ router, useForm, <Form>useHttp.
Mỗi method on* trả cleanup function để xóa handler khi được gọi. Request handler nhận request config và phải trả lại config đó, dù có sửa hay không. Response handler nhận response và cũng phải trả response. Handler có thể là bất đồng bộ.

Custom HTTP client

Để toàn quyền kiểm soát cách request được thực hiện, bạn có thể cung cấp HTTP client hoàn toàn tùy chỉnh qua tùy chọn http. Custom client phải implement phương thức request, nhận HttpRequestConfig và trả promise resolve thành HttpResponse. Xem source xhrHttpClient.ts làm implementation tham chiếu.

Tài liệu chính thức

Bài dịch này được đối chiếu từ tài liệu Inertia.js v3 chính thức. Nếu có khác biệt do phiên bản hoặc cập nhật mới, hãy ưu tiên tài liệu chính thức làm nguồn tham chiếu.