laraning/flame

Flame - 一个以特性驱动开发(FDD)的 Laravel 扩展包

dev-master 2018-08-29 05:40 UTC

This package is auto-updated.

Last update: 2024-09-17 09:46:48 UTC


README

Build Status Total Downloads Latest Stable Version License Style CI

关于Flame

Laraning Flame 是一个以特性开发驱动的框架,它将改善您结构化和开发 Laravel 应用程序特性的方式。

此免费扩展包将允许您

  • 以标准代码约定方式创建组织良好的特性,每个特性都在一个目录内。
  • 创建和重用“智能”小部件,称为 Twinkles,这将使您改善布局代码结构。
  • 根据请求中调用的路由操作自动渲染面板和 Twinkles。
  • 能够在屏幕渲染之前执行 Twinkle 控制器操作。
  • 以特性模块的形式结构化您的应用程序,拥有更好的代码可读性、结构和可重用性!

为什么选择Flame

我构建了 Flame,因为我开始着手构建一些中等规模的 Web 应用程序(如 LaraningLaraflash),其中包含大量的 Blade 视图、Blade 组件等。开始难以以某种方式组织我的特性,以便在特定控制器操作运行时在相应的视图中加载数据。

一个想法闪过我的脑海:“如果我有一种自动知道我正在运行哪些操作的方法,然后自动根据该操作加载我的图形布局,重用布局而不是创建更多视图,那会怎么样?”

这就是 Flame 的起点。Flame 将为您自动化这种行为。让我们看看它是如何做到的。

安装

您可以通过以下命令使用 composer 安装此扩展包

composer require laraning/flame
该扩展包将自动注册自己(使用 auto-discover)。

下一步是将 flame.php 配置文件发布到您的配置文件夹中。

php artisan vendor:publish --tag=flame-configuration

全部完成!😄

它如何工作

flame.php 配置文件已经有一个条目来放置您所有特性在 App\Flame\Features 命名空间。

使用以下命令创建一个新特性

php artisan make:feature

选择“flame”命名空间组,然后创建一个“管理汽车”特性,以及“index”操作。最后,命令提供的路由示例将是

Route::get('manage-cars', '\App\Flame\Features\ManageCars\Controllers\ManageCarsController@index')
     ->name('manage-cars.index');
👉 将此路由示例复制粘贴到您的 web.php 文件(或您使用 web 中间件的任何其他路由文件)。
💾 在您的 "app\Flame\Features" 文件夹内创建了一个名为 "ManagesCars" 的新文件夹。

“管理汽车”特性文件结构

  + ManageCars
    + Controllers
      > ManageCarsController.php
      > WelcomeController.php
    + Panels
      > index.blade.php
    + Twinkles
      > welcome.blade.php

现在让我们看看在那些文件中创建了什么。魔法开始了 ❤️ !

Controllers/ManageCarsController.php
class ManageCarsController extends Controller
{
    public function index()
    {
        return flame();
    }

🎉 这就是您映射路由文件的地方。您只需返回 flame() 辅助函数,Flame 将加载您的相应面板和 Twinkles 以执行“index”操作。这意味着,如果您的 Twinkles 定义了“index”操作,它们将在面板内容渲染之前运行。

如果没有与该名称相同的面板,则将回退到 default.blade.php。如果您有此名称的面板,则将在没有特定面板操作的任何操作中加载它。双倍甜蜜!

Panels/welcome.blade.php
@twinkle('welcome')

Twinkle 的工作方式类似于“智能小部件”。它将根据传递的参数渲染 Twinkes/ 文件夹中定义的内容。在这种情况下,Twinkle 将加载 "welcome.blade.php"。

但是!还有更多的魔法发生 ❤️ ...

在渲染Twinkle之前,它会尝试找到自己对应的控制器(大写字母开头)名称。在我们的例子中,它在Controllers/WelcomeController.php中,所以我们来检查一下

Controllers/WelcomeController.php
class WelcomeController extends Controller
{
    public function index()
    {
        return ['text' => 'Hi there! This is a Twinkle!'];
    }

由于为当前路由动作定义了相同的行为,它将使用反射来运行该方法并将数据作为数组传递。因此,您可以在Twinkle内部将其用作Blade变量。这意味着在这个案例中,它将运行“index”方法并将数据返回给Welcome Twinkle。

Twinkle方法也支持隐式绑定。这意味着如果您从路由参数中定义了参数,它们将被动态注入到方法参数中!

当前开发状态

  • 完成核心开发。
  • 完成Alpha版本0.1.x的已识别问题/改进。
  • 关闭Alpha(0.1.x)版本。
  • 完成Beta版本0.2.x的已识别问题/改进。
  • 关闭Beta(0.2.x)版本。
  • 测试覆盖率>90%。
  • 最终完成文档。
  • 最终完成视频教程。
  • 公开发布。

入门指南

Flame在您的/flame URL上创建一个演示路由。您可以尝试一下,应该看到

这意味着您可以在Laraning\Flame\Features\Demo命名空间中看到Demo功能。

创建您的第一个功能

很简单。只需编写以下命令

php artisan make:feature

贡献

目前您不需要贡献,因为Flame仍在开发中。

许可证

Laraning Flame是开源软件,许可协议为MIT许可证