crmdesenvolvimentos/modules-inertia

Vue/InertiaJs与Laravel-Modules模块化结构的关系

11.2 2024-05-03 20:39 UTC

This package is auto-updated.

Last update: 2024-09-18 19:59:45 UTC


README

Software License

该包旨在与Laravel-Modules结合使用,供Vue/InertiaJs使用

Laravel兼容性

安装

通过composer安装该包。

composer require crmdesenvolvimentos/modules-inertia

配置文件

为了编辑默认配置,您可以执行

php artisan vendor:publish --provider="Crmdesenvolvimentos\ModulesInertia\ModulesInertiaServiceProvider"

自动加载

默认情况下,模块类不会自动加载。您可以使用psr-4来自动加载您的模块。 例如:

{
  "autoload": {
    "psr-4": {
      "App\\": "app/",
      "Modules\\": "Modules/",
      "Database\\Factories\\": "database/factories/",
      "Database\\Seeders\\": "database/seeders/"
  }

}

提示:别忘了之后运行composer dump-autoload

用法

默认情况下,Vue模块文件创建在模块目录Resources/Pages中

您可以在config/modules.php中更改默认目录

 'Pages/Index' => 'Resources/Pages/Index.vue',
 //...
 'source' => 'Resources/Pages',

用于控制器

模块中Inertia::render()的默认值已被更改为Inertia::module()。

Inertia::render()仍然可用,默认情况下。它可以在模块外使用

  • module_name - 当前模块的实际名称
  • file_name - 文件的实际名称(无扩展名.vue)
  • directory_name - 如果您有嵌套的显示文件夹结构(您可以指定文件路径,用点分隔)

例如

    public function some_method()
    {
        return Inertia::module('module_name::file_name');
        //
        return Inertia::module('module_name::file_name', ['data'=>'some data']);
        //
        return Inertia::module('module_name::directory_name.file_name', ['data'=>'some data']);
    }

如果您使用Vue版本3

import { createApp, h } from "vue";
import { createInertiaApp } from "@inertiajs/inertia-vue3";

createInertiaApp({
  resolve: (name) => {
    const pages = import.meta.glob("./Pages/**/*.vue", { eager: true });
    let isModule = name.split("::");
    if (isModule.length > 1) {
      const pageModules = import.meta.glob("/Modules/**/*.vue", { eager: true });
      let module = isModule[0];
      let pathTo = isModule[1];
      return pageModules[`/Modules/${module}/${pathTo}.vue`];
    } else {
      return pages[`./Pages/${name}.vue`];
    }
  },
  setup({ el, App, props, plugin }) {
    createApp({ render: () => h(App, props) })
      .use(plugin)
      .mount(el);
  },
});

控制台命令

您可以通过运行php artisan module:publish-stubs来发布占位符。

并覆盖默认文件的生成

创建模块后

为了使VueJS能够找到创建的模块,您需要重新构建脚本

npm run dev

文档

您可以在https://docs.laravelmodules.com/找到安装说明和完整文档。

作者

许可

MIT许可证(MIT)。有关更多信息,请参阅许可文件