crmdesenvolvimentos / modules-inertia
Vue/InertiaJs与Laravel-Modules模块化结构的关系
11.2
2024-05-03 20:39 UTC
Requires
- php: >=7.4.0
- inertiajs/inertia-laravel: *
- laravel/framework: ^8.0||^9.0||^10.0||^11.0
- nwidart/laravel-modules: ^9.0.4||^10.0||^11.0
This package is auto-updated.
Last update: 2024-09-18 19:59:45 UTC
README
该包旨在与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/找到安装说明和完整文档。
作者
- Nicolas Widart
- Yaroslav Fedan
- Celio Martins
- 在这里添加您的可点击用户名。它应该指向您的GitHub账户。
许可
MIT许可证(MIT)。有关更多信息,请参阅许可文件。