waygou / flame
Flame - 一个基于特征驱动的开发 (FDD) 的 Laravel 扩展包
Requires
- php: ^7.1
- illuminate/support: ^5.6
- waygou/helpers: *
Requires (Dev)
- phpunit/phpunit: ^7.1
This package is auto-updated.
Last update: 2024-09-24 07:37:34 UTC
README
关于Flame
Waygou Flame 是一个以特征开发驱动的框架,将改善您结构和开发 Laravel 应用程序特性的方式。
此免费扩展包将允许您
- 以标准代码约定的方式创建您的特性,每个特性都在一个目录中。
- 创建和复用“智能”小部件,称为 Twinkles,这将使您改进布局代码结构。
- 根据请求中调用的路由动作自动渲染面板和 Twinkles。
- 在屏幕渲染之前执行 Twinkle 控制器动作。
- 将应用程序结构为特性模块,具有更好的代码可读性、结构和可重用性!
为什么选择Flame
我创建了Flame,因为我开始构建中等规模的 Web 应用程序(如 Waygou 或 Laraflash),其中包含大量的 Blade 视图、Blade 组件等。开始很难以我能够根据我在某个时刻运行的控制器的动作加载数据的方式组织我的特性。
一个想法闪过我的脑海:“如果我有一种方式可以自动知道我在运行哪些动作,然后根据该动作自动加载相应的图形布局,复用布局而不是创建更多视图会怎么样?”
这就是Flame开始的地方。Flame 将为您自动化这种行为。让我们看看它是如何工作的。
安装
您可以使用以下命令通过 composer 安装此扩展包
composer require waygou/flame
此扩展包将自动注册自己(使用 自动发现)。
下一步是将 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 就会加载与 "index" 动作相对应的相应面板和 Twinkles。这意味着,如果您的 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上创建一个演示路由。您可以尝试一下,应该会看到
这意味着您可以在Waygou\Flame\Features\Demo命名空间中看到Demo功能。
创建您的第一个功能
非常简单。只需写下以下命令
php artisan make:feature
贡献
目前您不需要贡献,因为Flame仍在开发中。
许可证
Waygou Flame是开源软件,根据MIT许可证授权。