在laravel之外使用blade,一个易于使用的库

dev-main 2021-10-24 13:51 UTC

This package is auto-updated.

Last update: 2024-09-24 19:50:08 UTC


README

在laravel之外使用blade 8,一个易于使用的库

支持

  • 渲染
    • 子视图
    • 继承/布局
    • 从字符串渲染视图
  • 自定义
    • 自定义if语句
    • 自定义指令
    • 自定义echo处理程序
  • 组件
    • 已注册组件
    • 命名空间组件
    • 匿名组件
  • 几乎一切,真的

我创建这个是因为

  • 我想有一个现成的库,而不是代码片段,它们会失去同步
  • 我想有一个完全支持组件的库,包括命名空间和匿名组件

大部分原始代码来自 mattstauffer/Torch,我将其打包成一个现成的库,然后在上面添加了功能支持。我在他们的仓库中找不到任何许可或文件版权,但注释和描述清楚地表明它是为了使用和共享。原始作者保留其代码的全部所有权,并值得感谢他们做了所有困难的工作。

实际渲染由Laravel的库在底层完成,这个库没有复制任何内容,只是创建了所有事物都能顺利运行的环境(外观、容器、配置等)。

我在上面添加的所有内容都处于公共领域。

用法

使用composer require lepidosteus/blade安装

<?php
require __DIR__.'/../vendor/autoload.php';

use Lepidosteus\Blade\Blade;

$blade = new Blade('/path/to/template', '/path/to/compiled/files');

// done, you can start rendering
echo $blade->render('template_name', ['key' => 'value']);
// has the same result as:
echo $blade()->make('template_name', ['key' => 'value'])->render();
// has the same result as:
echo $blade->view()->make('template_name', ['key' => 'value'])->render();

// shared key will be available in all templates 
$blade()->share('shared_key', 'shared_value');

// easily add a directive
$blade->directive('upperize', function ($expression) {
    return "<?php echo strtoupper($expression); ?>";
});
// or $blade->view()->directive(...

// easily add a custom if 
$blade->if('foo', function ($value) {
    return 'bar' === $value;
});
// or $blade->view()->if(...

// register a component
$blade->component(\App\Components\Awesome::class, 'awesome');
// now use it in views with <x-awesome />

// register a namespace of components
$blade->componentNamespace('\\App\\Components', 'foo');
// now use it in views with <x-foo::awesome />

所需库

  • "php": ">=8.0": 可能与早期版本兼容(可能至少是>=7.4的任何版本),但我没有麻烦测试它
  • "illuminate/container": "^8.25": 需要提供我们自己的替换
  • "illuminate/view": "^8.25": blade自身,它将拉取它需要的所有其他依赖
  • "ramsey/uuid": "^4.1": 用于自定义指令