API 参考

未匹配的标注

安装

Livewire 是一个标准的 Laravel 扩展包,因此在安装和使用 Livewire 之前,您需要先运行一个 Laravel 应用程序。如果您需要帮助创建一个新的 Laravel 应用程序,请参阅官方的Laravel文档

要安装Livewire,请打开您的终端并切换到您的 Laravel 应用程序根目录,然后运行以下命令:

composer  require  livewire/livewire

就是这么简单,如果您想要更多的自定义选项可以继续阅读。否则,您就可以立即开始使用 Livewire 愉快的开发了。

发布配置文件

Livewire 是支持 “零配置” 的,这意味着您无需任何修改,按照默认配置即可正常使用。当然,如果需要自定义配置的话夜可以运行以下Artisan 命令来发布配置文件以自定义 Livewire 配置:

php artisan livewire:publish --config

这将在您的 Laravel 应用程序的 config 目录中创建一个新的 livewire.php 文件。

手动引入前端资源

默认情况下,Livewire 会自动将其所需的 JavaScript 和 CSS 资源注入到包含 Livewire 组件的每个页面中。

如果您想对这种行为进行更多控制,可以使用以下Blade指令在页面上手动引入这些资源:

<html>
<head>
    ...
    @livewireStyles
</head>
<body>
    ...
    @livewireScripts
</body>
</html>

通过在页面上手动引入这些资源,可以实现精细地控制资源的加载方式。

由于 Alpine 与 Livewire 的 JavaScript 捆绑在一起,您必须在希望使用 Alpine 的每个页面上引入它,即使您在该页面上没有使用 Livewire。

您可以通过更新应用程序的 config/livewire.php 文件中的 inject_assets 配置项来禁用 Livewire 的自动注入资产行为, 不过很少需要您这样做:

'inject_assets'  =>  false,

如果您希望强制将 Livewire 资源注入单个或多个页面,您可以从当前路由或服务提供者中调用以下全局方法:

\Livewire\Livewire::forceAssetInjection();

配置 Livewire 的更新路由

对于使用多语言本地化或多租户的应用程序,Livewire 组件的每次更新都会向以下路由发送网络请求:https://example.com/livewire/update。在这种情况下,您可以按自己的喜好注册路由,只要在 Livewire::setUpdateRoute() 像如下代码注册即可:

Livewire::setUpdateRoute(function ($handle) {
    return Route::post('/custom/livewire/update', $handle);
});

现在,Livewire 会将组件更新请求发送到 /custom/livewire/update。由于Livewire允许您注册自己的更新路由,您可以直接在setUpdateRoute() 内声明 Livewire 要使用的任何额外的中间件:

Livewire::setUpdateRoute(function ($handle) {
    return Route::post('/custom/livewire/update', $handle)
        ->middleware([...]); 
});

自定义静态文件引入路径

默认情况下,Livewire 将从以下 URL 引入其 JavaScript 资源:https://example.com/livewire/livewire.js:

<script src="/livewire/livewire.js"></script>

如果您的应用程序因多语言本地化或多租户而具有全局路由前缀,您可以注册自己的路由,Livewire 内部会使用其获取 JavaScript。在 Livewire::setScriptRoute() 注册即可使用自定义的 JavaScript 资源路由:

Livewire::setScriptRoute(function ($handle) {
    return Route::get('/custom/livewire/livewire.js', $handle);
});

现在,Livewire 将会以如下方式加载其 JavaScript 资源:

<script src="/custom/livewire/livewire.js"></script>

手动打包 Livewire 和 Alpine

默认情况下,Alpine 和 Livewire 是使用 <script src="livewire.js"> 标签加载的,这意味着您无法控制这些库的加载顺序。因此,像下面示例中显示的导入和注册 Alpine 插件的方式将不再起作用:

// 注意!!!注意!!!注意!!!这段代码是反例,请不要照抄......

import Alpine from 'alpinejs'
import Clipboard from '@ryangjchandler/alpine-clipboard'

Alpine.plugin(Clipboard)
Alpine.start()

要解决这个问题,我们需要告诉 Livewire 使用另外的 ESM(ECMAScript模块)版本,并阻止自动注入 livewire.js 脚本标签。为了实现这一点,我们必须在布局文件中(resources/views/components/layouts/app.blade.php)中添加 @livewireScriptConfig 指令:

<html>
<head>
    <!-- ... -->
    @livewireStyles
    @vite(['resources/js/app.js'])
</head>
<body>
    {{ $slot }}

    @livewireScriptConfig
</body>
</html>

当 Livewire 检测到 @livewireScriptConfig 指令时,它将不会自动注入 Livewire 和 Alpine 脚本。如果您正在使用 @livewireScripts 指令手动加载 Livewire,请确保将其删除。然后添加 @livewireStyles指令。

最后一步是在 app.js 文件中导入 Alpine 和 Livewire,这里允许注册任何自定义资源:

import { Livewire, Alpine } from '../../vendor/livewire/livewire/dist/livewire.esm';
import Clipboard from '@ryangjchandler/alpine-clipboard';

Alpine.plugin(Clipboard);
Livewire.start();

本文章首发在 LearnKu.com 网站上。

上一篇 下一篇
《L03 构架 API 服务器》
你将学到如 RESTFul 设计风格、PostMan 的使用、OAuth 流程,JWT 概念及使用 和 API 开发相关的进阶知识。
《L02 从零构建论坛系统》
以构建论坛项目 LaraBBS 为线索,展开对 Laravel 框架的全面学习。应用程序架构思路贴近 Laravel 框架的设计哲学。
讨论数量: 0
发起讨论 只看当前版本


暂无话题~