防止 Slim 解析 <script>-tags 内的代码

Prevent Slim from parsing code inside <script>-tags

我在 sinatra 应用程序中使用 slim 进行模板化,并在客户端使用 ractive.js 类似 handlebars 的语法。

我将模板代码保存在 script 标签内,但 slim 尝试像文件的其余部分一样解析它们。我的简化代码如下所示:

section.header-section
  h1 Items
section.main-section
script#items type="text/html"
  <ul class="items">
    {{#each items}}
      <li>{{title}}</li>
    {{/each}}
  </ul>

对于此代码 slim 解析器 returns 一个错误:Unknown line indicator ... Line 29, Column 14 {{#each items}} ^.

我尝试了建议的解决方法:

set :slim, {:pretty => true, :attr_list_delims => {'(' => ')', '[' => ']'}, :code_attr_delims => {'(' => ')', '[' => ']'}}

没用。所以我需要 slim 忽略 script 中的所有内容,保留缩进以提高可读性。唯一可能的解决方案是创建我自己的嵌入式引擎,并在其中不做任何事情。还有其他方法可以解决吗?

您可以使用 | for verbatim text:

script#items type="text/html"
  |
    <ul class="items">
      {{#each items}}
        <li>{{title}}</li>
      {{/each}}
    </ul>

产生:

<script id="items" type="text/html"><ul class="items">
  {{#each items}}
    <li>{{title}}</li>
  {{/each}}
</ul></script>