没有不值得去解决的问题,也没有不值得去学习的技术!

A Modular Example Implementation in Laravel 8

Use php artisan module:make Blog to generate your first module. This will generate the following structure. Because the documentation version is for v6, while the latest version of the program is now v8, the directory structure differs

1. Search for “laravel module” on GitHub and select the first result: nWidart / laravel-modules. It supports module management in Laravel.

2. Reference URL: https://nicolaswidart.com/blog/writing-modular-applications-with-laravel-modules . Why use this package? It is used for writing modular applications with laravel-modules. When it comes to writing more complex and larger applications, you will find that Laravel’s default structure is cumbersome and less than ideal.

3. To install via Composer, run the following command. See Figure 1.

To install via Composer, run the following command
Figure 1
Plaintext

PS E:\wwwroot\laravel-modules-demo> composer require nwidart/laravel-modules
Using version ^8.2 for nwidart/laravel-modules
./composer.json has been updated
Running composer update nwidart/laravel-modules
Loading composer repositories with package information
Updating dependencies
Lock file operations: 1 install, 0 updates, 0 removals
  - Locking nwidart/laravel-modules (8.2.0)
Writing lock file
Installing dependencies from lock file (including require-dev)
Package operations: 1 install, 0 updates, 0 removals
  - Downloading nwidart/laravel-modules (8.2.0)
  - Installing nwidart/laravel-modules (8.2.0): Extracting archive
Package swiftmailer/swiftmailer is abandoned, you should avoid using it. Use symfony/mailer instead.
Generating optimized autoload files
> Illuminate\Foundation\ComposerScripts::postAutoloadDump
> @php artisan package:discover --ansi
Discovered Package: facade/ignition
Discovered Package: fruitcake/laravel-cors
Discovered Package: laravel/sail
Discovered Package: laravel/sanctum
Discovered Package: laravel/tinker
Discovered Package: nesbot/carbon
Discovered Package: nunomaduro/collision
Discovered Package: nwidart/laravel-modules
Package manifest generated successfully.
78 packages you are using are looking for funding.
Use the `composer fund` command to find out more!
> @php artisan vendor:publish --tag=laravel-assets --ansi --force
No publishable resources for tag [laravel-assets].
Publishing complete.

4. Run the following command to publish the package’s configuration file.

Plaintext

PS E:\wwwroot\laravel-modules-demo> php artisan vendor:publish --provider="Nwidart\Modules\LaravelModulesServiceProvider"
Copied File [\vendor\nwidart\laravel-modules\config\config.php] To [\config\modules.php]
Publishing complete.

5. By default, module classes are not autoloaded. You can autoload modules using psr-4. Edit composer.json, then run: composer dump-autoload. See Figure 2.

By default, module classes are not autoloaded. You can autoload modules using psr-4. Edit composer.json, then run: composer dump-autoload
Figure 2
Plaintext

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

Plaintext

PS E:\wwwroot\laravel-modules-demo> composer dump-autoload
Generating optimized autoload files
> Illuminate\Foundation\ComposerScripts::postAutoloadDump
> @php artisan package:discover --ansi
Discovered Package: facade/ignition
Discovered Package: fruitcake/laravel-cors
Discovered Package: laravel/sail
Discovered Package: laravel/sanctum
Discovered Package: laravel/tinker
Discovered Package: nesbot/carbon
Discovered Package: nunomaduro/collision
Discovered Package: nwidart/laravel-modules
Package manifest generated successfully.
Generated optimized autoload files containing 5106 classes
PS E:\wwwroot\laravel-modules-demo>

6. Reference documentation: https://nwidart.com/laravel-modules/v6/introduction . To quickly start an example, use php artisan module:make Blog to generate your first module. This will generate the following structure. Because the documentation version is for v6, while the latest version of the program is now v8, the directory structure differs. See Figure 3.

Use php artisan module:make Blog to generate your first module. This will generate the following structure. Because the documentation version is for v6, while the latest version of the program is now v8, the directory structure differs
Figure 3
Plaintext

PS E:\wwwroot\laravel-modules-demo> php artisan module:make Blog
Created : E:\wwwroot\laravel-modules-demo\Modules/Blog/module.json
Created : E:\wwwroot\laravel-modules-demo\Modules/Blog/Routes/web.php
Created : E:\wwwroot\laravel-modules-demo\Modules/Blog/Routes/api.php
Created : E:\wwwroot\laravel-modules-demo\Modules/Blog/Resources/views/index.blade.php
Created : E:\wwwroot\laravel-modules-demo\Modules/Blog/Resources/views/layouts/master.blade.php
Created : E:\wwwroot\laravel-modules-demo\Modules/Blog/Config/config.php
Created : E:\wwwroot\laravel-modules-demo\Modules/Blog/composer.json
Created : E:\wwwroot\laravel-modules-demo\Modules/Blog/Resources/assets/js/app.js
Created : E:\wwwroot\laravel-modules-demo\Modules/Blog/Resources/assets/sass/app.scss
Created : E:\wwwroot\laravel-modules-demo\Modules/Blog/webpack.mix.js
Created : E:\wwwroot\laravel-modules-demo\Modules/Blog/package.json
Created : E:/wwwroot/laravel-modules-demo/Modules/Blog/Database/Seeders/BlogDatabaseSeeder.php
Created : E:/wwwroot/laravel-modules-demo/Modules/Blog/Providers/BlogServiceProvider.php
Created : E:/wwwroot/laravel-modules-demo/Modules/Blog/Providers/RouteServiceProvider.php
Created : E:/wwwroot/laravel-modules-demo/Modules/Blog/Http/Controllers/BlogController.php
Module [Blog] created successfully.

7. By default, when you create a new module, the command automatically adds some resources, such as controllers, seeders, service providers, etc. If you do not want these, you can add the –plain flag to generate a plain module. This will generate the following structure. See Figure 4.

By default, when you create a new module, the command automatically adds some resources, such as controllers, seeders, service providers, etc. If you do not want these, you can add the --plain flag to generate a plain module. This will generate the following structure
Figure 4
Plaintext

PS E:\wwwroot\laravel-modules-demo> php artisan module:make Auth -p
Created : E:\wwwroot\laravel-modules-demo\Modules/Auth/module.json
Module [Auth] created successfully.

关于作者 · 持续学习与技术实践

我是一名拥有 15 年以上开发经验的技术从业者,自 2013 年起持续运营个人技术博客,记录工作与个人项目中遇到的真实问题,以及解决问题过程中的探索、实践和思考。

除了技术写作,我也在持续开发和维护自己的独立项目,探索新技术和新工具在实际场景中的应用。我始终相信,没有不值得去解决的问题,也没有不值得去学习的技术。

如果这篇文章对你有所帮助,欢迎浏览博客中的其他文章,也欢迎交流技术经验与想法。

关于我  ·  GitHub  ·  邮件联系