在 Laravel 11 中,將 JavaScript 新增至專案可以輕而易舉,這要歸功於預設的資源捆綁器 Vite。以下是如何為各種場景設定 JavaScript,從全域包含到特定視圖中的條件載入。
在許多情況下,您可能希望在 Laravel 應用程式中全域包含 JavaScript。以下是如何組織和捆綁 JavaScript 以實現普遍包容。
Laravel 11 使用 Vite 來管理資產。要將其配置為捆綁您的 JavaScript:
import './custom.js';
@vite('resources/js/custom.js')
確保 vite.config.js 設定為正確處理 @vite 導入。預設情況下,它應該看起來像這樣:
import { defineConfig } from 'vite'; import laravel from 'laravel-vite-plugin'; export default defineConfig({ plugins: [ laravel({ input: ['resources/js/app.js'], refresh: true, }), ], });
使用 Vite 編譯您的資產:
要在範本中包含 JavaScript 文件,請使用 @vite 指令:
<!DOCTYPE html> <html lang="en"> <head> <title>My Laravel App</title> @vite('resources/js/app.js') </head> <body> <!-- Content here --> </body> </html>
透過此設置,JavaScript 將在 Laravel 11 專案中的站點範圍內可用。
當有條件地在特定視圖中包含 JavaScript 時,了解 Blade 模板的渲染順序至關重要。
在 Laravel 中,先處理佈局,然後是各個視圖和部分。渲染流程如下:
由於這個順序,如果你想根據子視圖內容有條件地在佈局中添加 JavaScript 文件,標準變數檢查將不起作用。您需要使用 Blade 的 @stack 和 @push 指令來更靈活地處理特定於頁面的 JavaScript。
為了將 JavaScript 新增至特定視圖,Laravel 的 @stack 和 @push 指令提供了一個有效的解決方案,可讓您有條件地在佈局中包含腳本。
在您的版面配置中,為頁面特定的腳本建立一個堆疊:
import './custom.js';
在需要 JavaScript 的特定 Blade 檔案中,推送到腳本堆疊:
@vite('resources/js/custom.js')
透過此設置,僅在載入特定視圖時才會包含 custom.js。此方法提供了一個與 Laravel 渲染順序配合使用的乾淨解決方案,確保根據需要有條件地包含 JavaScript 檔案。
@push 語句在 Blade 視圖中的放置主要關係到可讀性和執行順序。以下是如何有效使用@push:
import { defineConfig } from 'vite'; import laravel from 'laravel-vite-plugin'; export default defineConfig({ plugins: [ laravel({ input: ['resources/js/app.js'], refresh: true, }), ], });
<!DOCTYPE html> <html lang="en"> <head> <title>My Laravel App</title> @vite('resources/js/app.js') </head> <body> <!-- Content here --> </body> </html>
在這種情況下,script1.js 將在 script2.js 之前加載,因為 @push 按照聲明的順序將內容新增到堆疊中。
<!DOCTYPE html> <html lang="en"> <head> <title>My Laravel App</title> @vite('resources/js/app.js') @stack('scripts') <!-- Define a stack for additional scripts --> </head> <body> @yield('content') </body> </html>
當此部分包含在視圖中時,partial-specific.js 將會被加入到佈局檔案中的腳本堆疊中。
import './custom.js';
這裡,ritical.js 將在 non_ritic.js 之前加載,無論它們在 Blade 檔案中的位置如何。
如果您需要更好地控制何時包含 JavaScript,Laravel 的條件語句允許直接在佈局中使用基於路由或變數的邏輯。
您可以直接在版面配置中使用路由檢查來包含基於目前路由的 JavaScript:
@vite('resources/js/custom.js')
要根據變數有條件地載入腳本,您可以在控制器或子視圖中設定一個標誌,然後在佈局中檢查它:
import { defineConfig } from 'vite'; import laravel from 'laravel-vite-plugin'; export default defineConfig({ plugins: [ laravel({ input: ['resources/js/app.js'], refresh: true, }), ], });
<!DOCTYPE html> <html lang="en"> <head> <title>My Laravel App</title> @vite('resources/js/app.js') </head> <body> <!-- Content here --> </body> </html>
這種方法可讓您根據特定變數或路由控制 JavaScript 加載,為自訂頁面設定提供靈活性。
以下是所討論方法的快速概述:
這些選項可讓您精確控制 JavaScript 加載,使您的 Laravel 11 專案高效且可維護。
以上是如何在 Laravel 中包含 JavaScript 適用於所有場景的逐步指南的詳細內容。更多資訊請關注PHP中文網其他相關文章!