lepidosteus / blade
在laravel之外使用blade,一个易于使用的库
dev-main
2021-10-24 13:51 UTC
Requires
- php: >=8.0
- illuminate/container: ^8.25
- illuminate/view: ^8.25
- ramsey/uuid: ^4.1
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": 用于自定义指令