@endpush @push(\\'scripts\\') @endpush
在这种情况下,script1.js 将在 script2.js 之前加载,因为 @push 按照声明的顺序将内容添加到堆栈中。
@push(\\'scripts\\') @vite(\\'resources/js/partial-specific.js\\') @endpush
当此部分包含在视图中时,partial-specific.js 将被添加到布局文件中的脚本堆栈中。
@prepend(\\'scripts\\') @endprepend @push(\\'scripts\\') @endpush
这里,ritical.js 将在 non_ritic.js 之前加载,无论它们在 Blade 文件中的位置如何。
如果您需要更好地控制何时包含 JavaScript,Laravel 的条件语句允许直接在布局中使用基于路由或变量的逻辑。
您可以直接在布局中使用路由检查来包含基于当前路由的 JavaScript:
@if (request()->routeIs(\\'some.route.name\\')) @vite(\\'resources/js/custom.js\\')@endif
要根据变量有条件地加载脚本,您可以在控制器或子视图中设置一个标志,然后在布局中检查它:
return view(\\'your.view\\', [\\'loadCustomJS\\' => true]);
@if (!empty($loadCustomJS)) @vite(\\'resources/js/custom.js\\') @endif
这种方法允许您根据特定变量或路由控制 JavaScript 加载,为自定义页面设置提供灵活性。
以下是所讨论方法的快速概述:
这些选项允许您精确控制 JavaScript 加载,使您的 Laravel 11 项目高效且可维护。
","image":"http://www.luping.net/uploads/20241111/17313105816731b3f508523.jpg","datePublished":"2024-11-11T16:46:05+08:00","dateModified":"2024-11-11T16:46:05+08:00","author":{"@type":"Person","name":"luping.net","url":"https://www.luping.net/articlelist/0_1.html"}}在 Laravel 11 中,由于默认的资源捆绑器 Vite,向项目添加 JavaScript 变得轻而易举。以下是如何为各种场景设置 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 指令:
My Laravel App @vite('resources/js/app.js')
通过此设置,JavaScript 将在 Laravel 11 项目中在整个站点范围内可用。
当有条件地在特定视图中包含 JavaScript 时,了解 Blade 模板的渲染顺序至关重要。
在 Laravel 中,首先处理布局,然后是单个视图和局部视图。渲染过程如下:
由于这个顺序,如果您想根据子视图内容有条件地在布局中添加 JavaScript 文件,标准变量检查将不起作用。您需要使用 Blade 的 @stack 和 @push 指令来更灵活地处理特定于页面的 JavaScript。
为了将 JavaScript 添加到特定视图,Laravel 的 @stack 和 @push 指令提供了一个有效的解决方案,允许您有条件地在布局中包含脚本。
在布局中,为特定于页面的脚本创建堆栈:
My Laravel App @vite('resources/js/app.js') @stack('scripts') @yield('content')
在需要JavaScript的特定Blade文件中,推送到脚本堆栈:
@extends('layout') @section('content') @endsection @push('scripts') @vite('resources/js/custom.js') @endpush
通过此设置,仅在加载特定视图时才会包含 custom.js。此方法提供了一个与 Laravel 的渲染顺序配合使用的干净解决方案,确保根据需要有条件地包含 JavaScript 文件。
@push 语句在 Blade 视图中的放置主要关系到可读性和执行顺序。以下是如何有效使用@push:
@extends('layout') @section('content') @endsection @push('scripts') @vite('resources/js/custom.js') @endpush
@push('scripts') @endpush @push('scripts') @endpush
在这种情况下,script1.js 将在 script2.js 之前加载,因为 @push 按照声明的顺序将内容添加到堆栈中。
@push('scripts') @vite('resources/js/partial-specific.js') @endpush
当此部分包含在视图中时,partial-specific.js 将被添加到布局文件中的脚本堆栈中。
@prepend('scripts') @endprepend @push('scripts') @endpush
这里,ritical.js 将在 non_ritic.js 之前加载,无论它们在 Blade 文件中的位置如何。
如果您需要更好地控制何时包含 JavaScript,Laravel 的条件语句允许直接在布局中使用基于路由或变量的逻辑。
您可以直接在布局中使用路由检查来包含基于当前路由的 JavaScript:
@if (request()->routeIs('some.route.name')) @vite('resources/js/custom.js') @endif
要根据变量有条件地加载脚本,您可以在控制器或子视图中设置一个标志,然后在布局中检查它:
return view('your.view', ['loadCustomJS' => true]);
@if (!empty($loadCustomJS)) @vite('resources/js/custom.js') @endif
这种方法允许您根据特定变量或路由控制 JavaScript 加载,为自定义页面设置提供灵活性。
以下是所讨论方法的快速概述:
这些选项允许您精确控制 JavaScript 加载,使您的 Laravel 11 项目高效且可维护。
免责声明: 提供的所有资源部分来自互联网,如果有侵犯您的版权或其他权益,请说明详细缘由并提供版权或权益证明然后发到邮箱:[email protected] 我们会第一时间内为您处理。
Copyright© 2022 湘ICP备2022001581号-3