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.vite.config.js.
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 và ./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ọnstrictMode.
Cú pháp rút gọn Pages
Bạn có thể dùng shorthandpages để tùy chỉnh thư mục tìm page component.
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 callbackwithApp vào createInertiaApp để tùy chỉnh app trước khi render.
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.
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ậtrefresh: 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 và .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
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 callbackresolve và setup. 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.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 objectdefaults 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.
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, prefetching và manual 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 instanceconfig đượ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ớiid là app. 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.
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ềnnonce vào createInertiaApp(). Nonce được áp dụng cho inline style mà Inertia inject cho progress bar và error 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ấpaxiosAdapter 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.
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> và useHttp.
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ọnhttp. 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.