You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

在不支持Laravel Blade的环境中,可用哪些语法相似的语言实现近似语法高亮?

Laravel Blade代码片段的近似语法高亮方案

我负责一款基于Laravel Blade引擎的Web平台文档编写工作,用户可在该平台创建并分享脚本,因此文档中会大量用到代码片段,语法高亮对提升可读性至关重要。目前我正从GitHub迁移到Gitbook(后者采用Prism实现语法高亮),但多数平台不支持Blade语法高亮,所以想寻找语法相近的主流编程语言,实现近似的高亮效果,哪怕不够完美也能接受。

以下是Blade代码示例(供不熟悉Blade的用户参考):

@foreach($_abilities as $ability)
    {{-- 定义更简洁的数组变量名 --}}
    @if($ability = $_abilities[$loop->index]) @endif

    {{-- 技能名称(及类型) --}}
    <h4>{{ $ability["name"] }} @isset($ability["type"]) ({{ $ability["type"] }}) @endisset</h4>

    {{-- 技能链接;使用 {!! !!} 解析HTML内容 --}}
    {!! $ability["link"] !!} 

    {{-- 父技能 --}}
    @isset($ability["parent"]) 该技能有一个父技能,名为 <b>{{ $ability["parent"]["name"] }}</b>。
    @else 该技能没有父技能。
    @endisset

    {{-- 技能标签 --}}
    @if($ability["tags"]) 该技能包含以下标签:<i>
        {{-- 此数组仅包含名称,不是键值对,所以只需用 "as $tag" --}}
        @foreach($ability["tags"] as $tag)
            {{-- 最后一个标签后加句号,其余标签后加逗号 --}}
            @if($loop->last){{ $tag }}.
            @else{{ $tag }}, 
            @endif
        @endforeach </i><br>
    @else 该技能无标签。<br>
    @endif

    {{-- 技能充能次数 --}}
    充能次数:
    {{-- 已使用次数可能为null,但如果设置了最大充能数,默认显示0,所以使用 "?: 0" --}}
    @isset($ability["charges"]) {{ $ability["used_charges"] ?: 0 }} / {{ $ability["charges"] }}<br>
    @else 无数据<br>
    @endisset

    {{-- 技能描述及图片;使用 {!! !!} 解析HTML内容 --}}
    描述:<br>
    {!! $ability["entry"] !!}<br>
    {!! $ability["thumb"] !!}
@endforeach

Blade本质是PHP、HTML等语法的混合体,结合需求,推荐以下几种主流语言作为高亮替代:

  • PHP:Blade本身是PHP的模板引擎,代码包含大量PHP变量和语法(如$ability、$loop->index、三元运算符?:),用PHP语法高亮能正确识别这些核心元素。虽然@foreach、@if这类Blade指令不会被特殊高亮,但整体代码的可读性能得到保障,是最贴合的选择。
  • HTML:选择HTML语法高亮可识别代码中的<h4>、<b>等HTML标签,同时PHP变量部分也能被部分识别,适合突出Blade中的HTML内容。
  • Twig:作为主流PHP模板引擎,Twig语法和Blade有不少相似点(如模板标签、变量输出方式),如果Prism支持Twig语法,模板指令部分的显示会更贴近Blade风格,实现近似高亮。

内容的提问来源于stack exchange,提问作者Salvatos

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.08 22:13:25