使用 JavaScript

建议编辑

Orchid 的美学和功能基础是建立在 Bootstrap 的 CSS 和 Hotwired 的 JavaScript 功能之上的。虽然 Orchid 允许集成额外的库以满足项目需求,但我们建议利用这些核心技术来充分发挥 Orchid 功能的潜力。

注意:Orchid 包含原始的 Bootstrap 样式表,这意味着您可以使用 Bootstrap 的全部样式。

使用 Vite

Laravel 默认包含强大的前端构建工具 Vite。为了充分利用这个工具,请确保 Vite 已正确安装和配置。您可以在官方文档页面中找到安装和配置说明。

要成功将获取的资源整合到项目中,您需要在 config/platform.php 文件中指定它们。此文件允许您定义项目中应包含的资源列表。以下是这样的配置示例:

'vite' => [
    'resources/js/app.js',
],

此条目等同于使用 Blade 指令 @vite。通过仔细遵循这些步骤,您可以有效地将 Vite 集成到 Laravel 项目中,并从其使用中获得最佳结果。

加载您的脚本和样式

Laravel Orchid 通过允许使用任何 <link><script> 标签来促进样式表和脚本的高效交付。要设置资源的 URL,您需要修改 Laravel 应用程序中的 platform.php 文件。

打开您的 config/platform.php 文件,查找 resource 键。在这里,您可以指定托管在 CDN 或公共 URL 上的样式表和脚本的 URL。配置应类似于以下结构:

'resource' => [
    'stylesheets' => [
        // 在此处添加您的样式表 URL
        'https://cdn.example.com/styles/main.css',
    ],
    'scripts' => [
        // 在此处添加您的脚本 URL
        'https://cdn.example.com/scripts/app.js',
    ],
],

在此数组中,将占位符 URL 替换为样式表和脚本文件所在的实际 URL。这样,每当 Laravel Orchid 需要加载这些资源时,它将自动使用此配置中提供的 URL。

要验证 URL 是否正确使用,您可以在浏览器中检查应用程序的页面源代码。查找样式表的 link 标签和 JavaScript 文件的 script 标签,并确保 URL 与配置文件中指定的 URL 匹配。

Turbo

Orchid 的无缝管理面板体验由 Turbo 提供支持。通过 Turbo,我们复制了单页应用程序 (SPA) 的动态,其中资源在初始请求期间加载一次。这种方法最大限度地减少了页面加载时间,从而使内容在浏览器中实时更新。页面之间的过渡被快速的浏览器内内容刷新所取代,这大大改善了交互,使其对用户更流畅、更具吸引力。

由于所有资源将在第一次调用时加载,经典调用将无法正常工作:

document.addEventListener("load", () => {
    console.log('页面加载');
});

它只会执行一次,并且在过渡期间不会再次调用。为避免这种情况,您需要使用 Turbo 事件:

document.addEventListener("turbo:load", () => {
    console.log('页面加载');
})

您可以在网站 turbo.hotwire.dev 上找到更多详细信息。

Stimulus

Stimulus 是来自 Ruby on Rails 开发者的 JavaScript 框架。它使用新的 JavaScript 方法装备前端开发,同时它不寻求控制您的所有操作,也不强制前端与后端分离。

让我们构建一个基本示例来显示输入字段中的文本:

resources/js 中创建以下结构:

resources
├── js
│   ├── controllers
│   │   └── hello.js
│   └── dashboard.js
└── views

控制器类内容如下:

// hello.js
export default class extends window.Controller {

    static get targets() {
        return [ "name", "output" ]
    }

    greet() {
        this.outputTarget.textContent =
            `你好, ${this.nameTarget.value}!`
    }
}

以及汇聚点:

// dashboard.js
import HelloController from "./controllers/hello"

application.register("hello", HelloController);

注意:这种结构不会阻止您的应用程序,无论构建何种前端:Angular/React/Vue 等。

使用 Mix 编译

只需在 webpack.mix.js 中描述汇聚:

let mix = require('laravel-mix');

mix.js('resources/js/dashboard.js', 'public/js')

只需在配置文件中将接收到的脚本连接到面板:

// config/platform.php
'resource' => [
    'stylesheets' => [],
    'scripts'     => [
        '/js/dashboard.js'
    ],
],

注意。要应用配置文件的更改,您可能需要清除之前创建的缓存。可以使用 artisan 命令 artisan config:clear 来完成。

运行以构建资源:

npm run production

使用 Vite 编译

对于 Vite,像这样配置您的 vite.config.js

laravel({
    input: ['resources/js/dashboard.js'],
    refresh: true,
}),

只需在配置文件中将接收到的脚本连接到面板。这处理了必要的模块注入。

// config/platform.php
'vite' => [
    'resources/js/app.js',
],

运行 build 命令将对应用程序的资源进行版本化和打包,并使其准备好部署到生产环境:

# 为生产构建和版本化资源...
npm run build

注意。要应用配置文件的更改,您可能需要清除之前创建的缓存。可以使用 artisan 命令 artisan config:clear 来完成。

运行控制器

要显示,我们将使用一个模板,首先需要在应用程序中定义 ControllerRoute

{{-- hello.blade.php --}} 
<div data-controller="hello">
  <input data-hello-target="name" type="text">

  <button data-action="click->hello#greet">
    问候
  </button>

  <span data-hello-target="output">
  </span>
</div>

Vue.js 包裹在 Stimulus 中

许多开发者喜欢 Vue.js 的简单性和强大功能,用于构建交互式和响应式用户界面。在本教程中,我们将向您展示如何将 Vue 组件包装在 Stimulus 控制器中,以便您轻松集成它们。

创建一个 Stimulus 控制器文件,例如 hello_controller.js

import {createApp} from 'vue';

export default class extends window.Controller {
    connect() {
        this.app = createApp({
            data() {
                return {
                    message: '你好, Vue.js!'
                }
            }
        });

        this.app.mount(this.element);
    }

    disconnect() {
        this.app.unmount();
    }
}

在您的 blade 文件中注册控制器:

<div data-controller="hello">
  @{{ message }}
</div>

现在,当页面加载时,将创建 Vue.js 实例,并在 HTML 元素中显示消息。然后,您可以在 Stimulus 控制器的范围内正常使用 Vue.js。

我们的朋友