brunocfalcao / flame
Flame - 针对Laravel应用的一个以功能驱动开发(FDD)的UI框架
Requires
- php: ^7.2
- brunocfalcao/helpers: ^1.0
- illuminate/support: ^5.8|^6.0|^7.0|^8.0
- laravel/helpers: ^1.0
Requires (Dev)
- phpunit/phpunit: ^8.0|^9.0
README
关于Flame
Flame是一个以功能驱动开发的框架,它将改善您对Laravel应用程序功能的结构和开发方式。
这个免费的软件包将允许您
- 按照标准代码规范的方式创建您的功能,每个功能都在一个目录中。
- 创建和重用称为Twinkles的“智能”小部件,这将使您改进布局代码结构。
- 根据请求中调用的路由操作自动渲染面板和Twinkles。
- 能够在屏幕渲染之前执行Twinkle控制器操作。
- 将应用程序结构为功能模块,这将具有更好的代码可读性、结构和可重用性!
为什么选择Flame
我创建Flame是因为我开始构建中型大小的Web应用程序(如Laraning或Laraflash),其中包含大量的Blade视图、Blade组件等。开始觉得很难以组织我的功能,以便在某个时刻运行的相应控制器操作中加载这些视图中的数据。
一个想法闪现:“如果我有一种方法可以自动知道我正在运行什么操作,然后根据该操作自动加载相应的图形布局,而不是创建更多的视图,那会怎么样?”
这就是Flame的起点。Flame将自动为您完成这项行为。让我们看看它是如何工作的。
安装
您可以通过以下命令使用composer安装此软件包
composer require brunocfalcao/flame
该软件包将自动注册自己(使用自动发现)。
下一步是将flame.php配置文件发布到您的config文件夹。
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上创建了一个演示路由。您可以尝试一下,应该看到
这意味着您可以看到位于 Brunocfalcao\Flame\Features\Demo 命名空间中的演示功能。
创建您的第一个功能
就像这样简单。只需编写以下命令
php artisan make:feature
贡献
目前您不需要贡献,因为Flame仍在开发中。
许可证
Waygou Flame是开源软件,根据MIT许可证授权。