tekrow/laravel-vue-generator

laravel 9.2、Vue.js 3.x 和 Tailwindcss 3.x 驱动的模块化后端代码生成器。

dev-main / 1.0.x-dev 2022-11-17 11:18 UTC

This package is not auto-updated.

Last update: 2024-09-19 19:40:06 UTC


README

Laravel 9 的后端模块化代码和 CRUD 生成器。生成的代码在以下堆栈中

  • Laravel ^9
  • Inertia.js
  • Laravel Breeze & Sanctum
  • Vue.js ^3
  • Tailwindcss ^3
  • PrimeVue ^3.11

安装前

在开始安装之前,您必须通过安装以下内容来准备您的 Laravel 应用程序

  1. 安装和配置 Laravel Sanctum 遵循以下步骤

  1. 安装和配置 Laravel Breeze 作为认证包 遵循以下步骤
  2. 安装和配置 spatie/laravel-permission遵循以下步骤
  3. 安装和配置 laravel/scout。默认情况下,lvg 将在安装过程中尝试配置 scout 的基本 database 驱动程序。 遵循 Scout 安装步骤

现在您已经准备好安装 Lvg!lvg 将作为一个独立的模块化组件安装,具有自己的前端资源和甚至使用 vite.js 的编译过程,所有这些都独立于您的主应用程序,甚至允许您混合两个前端堆栈!

安装

要通过 Composer 安装,请运行以下命令

composer require tekrow/laravel-vue-generator -W

默认情况下,Lvg 的类不会自动加载。在继续安装之前,请使用 psr-4 在您的应用程序的 composer.json 中添加以下内容来自动加载 Lvg 命名空间和后端模块

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

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

该软件包将自动注册其服务提供者。然后运行以下命令安装代码生成和后端所需文件

php artisan lvg:install

提示:如果您想强制替换现有的 Lvg 文件,请在上面的命令中添加 --force 选项 从这里开始,您可以生成代码并与新的后端进行交互。

运行所有模块的种子器。此步骤是为了拥有默认的管理员角色和用户。不进行此步骤,您将无法立即登录。

php artisan lvg:seed

要运行编译器

cd lvg

要监视资源

npm run dev

要构建生产资源

npm run build

**提示:构建资源的目的是在 public/vendor/lvg 中,并在每次构建之前先清除文件夹**

默认情况下,用户生成没有分配角色,需要分配超级管理员权限

php artisan lvg:assign-role "admin@tekrow.com" "administrator"

在 localhost:8000/admin(或您的域名)上打开管理员

现在您可以使用以下详细信息登录

用户名:admin@tekrow.com 密码:password

在安装步骤中,lvg 配置文件发布到 config/lvg.php。它包含以下配置(以及其他配置)

  • lvg.route_prefix - 允许您定义后端可以访问的 uri。默认为 admin。您可以通过设置环境变量 LVG_ROUTE_PREFIX 来更改它
  • lvg.sidebar.heading - 允许您定义显示在后台侧边栏上方的侧边栏标题。您可以通过设置环境变量 LVG_SIDEBAR_HEADING 来更改它
  • lvg.dev_modules - 它列出了在生产环境中不可用的模块。

您可以在域 /admin 上访问它

模块结构

本包生成的代码的模块化结构深受nwidart/laravel-modules的启发。事实上,生成的模块几乎相同,只是在文件夹结构上略有差异。文件夹

ModuleName/

模块的父文件夹。每个CRUD生成的模块都将作为一个独立的模块创建。
模块名称采用表名的复数Pascal大小写形式。例如,如果表名为user_types,则模块名称(即文件夹名称)将是UserTypes

Config/

包含模块的配置文件

Console/

包含模块的命令行工具

Database/

包含模块的迁移、工厂和播种器

Http/

包含模块的控制器、中间件和请求。
验证和授权在请求类内完成。目前生成的请求类包括IndexRequestViewRequestStoreRequestUpdateRequestDestroyRequest和用于数据表的DtRequest
生成了两个控制器:web控制器和api控制器

Js/

包含模块的javascript资源。这些主要是Vue.js 3组件和页面。
后端使用Inertia.js来处理来自Vue.js页面的请求。如果您需要自定义UI,这是代码生成后您主要停留的地方。
大多数常见的布局和组件文件位于Js文件夹中的Core模块内,该模块别名为@/用于其他组件

Models/

包含模块的模型。每个模块将生成一个主模型。您可以在同一模块中添加更多模型。

Policies/

包含模块的授权逻辑。仅生成一个主授权策略。策略已配置为检查来自laravel-permission的可用权限。

Providers/

包含模块的主服务提供者和任何其他模块服务提供者

Repositories/

包含模块的存储库。最初只生成一个存储库,但您可以创建更多。存储库类包含所有CRUD逻辑。控制器的工作仅仅是接收验证和授权的用户输入,将输入传递给存储库,并在操作完成后向用户返回响应。

resources/

用于加载模块的blade视图和其他模块资源,以防您想扩展模块。目前尚未使用,但它保留自nwidart/laravel-module的设计。

Routes/

包含模块的路由。有两个单独的路由文件:api.phpweb.php您可以在路由部分中了解更多信息。

tests/

包含模块的单元测试和功能测试。目前尚未生成测试。

composer.json

这是模块的composer定义

module.json

这是模块的定义文件。

package.json

模块的package.json,以防您想使用其他依赖项扩展模块。这些是通过运行模块的webpack.mix编译的。

webpack.mix.js

模块的webpack.mix文件,用于编译resources文件夹中的assets。这在生成的代码中未使用,但感觉仍然需要保留nwidart/laravel-modules的结构。

package.json

lvg/内部,这是主要的npm依赖定义文件。这些依赖中的大部分都在Core模块中使用,因此与其他模块共享。

package-lock.json

package.json文件的锁文件

tailwind.config.ts

主要的tailwindcss配置文件。如果您想更改主题颜色或其他tailwindcss设置,请在此处操作。

tsconfig.json

所有Vue页面都使用typescript编写。这是开发的主要typescript配置文件。

vitae.config.ts

后端资产使用 vite.js 编译。这是主要的 vite 配置 文件。

基本用法

Lvg 会根据现有的数据库生成代码。如果数据库尚未存在,第一步是编写和运行迁移。为了更好地说明,我们将生成构建车辆网络应用程序所需的一个 CRUD。让我们创建一个 vehicle_types 表

php artisan make:migration create_vehicle_types_table

将以下内容填充到迁移中

    Schema::create('vehicle_types', function (Blueprint $table) {
        $table->increments('id');
        $table->string('slug')->unique();
        $table->string('name')->unique();
        $table->text('description')->nullable();
        $table->boolean('active')->default(true);
        $table->timestamps();
    });

运行迁移

php artisan migrate

准备图示

  1. 为模块生成图示。图示定义了模块的字段和关系。稍后,生成命令将使用这些信息来生成代码。您可以从接口创建代码,或者简单地运行以下命令
php artisan lvg:blueprint vehicle_types
  1. 现在生成代码
php artisan lvg:make vehicle_types

该命令将生成 VehicleTypes 模块,其文件将位于 lvg/VehicleTypes/ 目录下

**提示:如果模块已经存在,并且您想强制替换它,可以在 lvg:make 命令中指定 -F 或 --force。

如果 vehicle_types 图示不存在,运行 lvg:make 将首先生成它然后再继续。

现在编译和监控资产

cd lvg
npm run dev

许可

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