【问题标题】:Using `title` with ScalaTags将 `title` 与 ScalaTags 一起使用
【发布时间】:2021-04-29 04:48:23
【问题描述】:

标题标签在 ScalaTags 库中没有按预期工作。

import scalatags.Text.all._

title("My Awesome Website")

我怎样才能让它工作?

帮助文档/教程很方便地缺少无处不在的标题标签。我希望开发人员能解决这个问题..

https://github.com/lihaoyi/scalatags

没有按预期工作:

如果您查看linkscriptheadhtml 等标记的使用方式,title 标记的工作方式应该相同。

出于某种原因,开发人员选择将此标签设为ConcreteHtmlTag[Nothing],而不是之前标签的类型ConcreteHtmlTag[String]。奇怪的是这个标签在Tags2包中而不是Tags,毕竟它是一个常用的标签。

【问题讨论】:

    标签: scala scalatags


    【解决方案1】:

    这个似乎有效:

    scala> scalatags.Text.tags2.title("test")
    res7: scalatags.Text.TypedTag[Nothing] = <title>test</title>
    

    似乎scalatags.Text.all 中的title 是标签属性(scalatags.generic.Attr) 而不是TypedTag。这是否放错了位置(或者应该是TypedTag[String]),我不知道。也许这只是代码中的符号冲突。

    明确的import scalatags.Text.tags2.title 应该会有所帮助。

    【讨论】:

    • 我现在看到了不同之处。这意味着两个 title 对象之间存在符号冲突 - 开发人员可能应该将 title 属性重命名为其他名称,就像他为 class 所做的那样,将其重命名为 cls
    【解决方案2】:

    除了导入 all,您还可以使用其他导入。

    import scalatags.Text.short._
    import scalatags.Text.tags2._
    
    html(
      head(
        title("Your Title Here")
      ),
      body(
    
      )
    )
    

    更多示例在文档的Managing Imports 部分。

    【讨论】:

      【解决方案3】:

      或者

      import scalatags.Text.all.{title=>titleAttr,_}
      import scalatags.Text.tags2.title
      

      如果您使用的是 scalatra,您还需要保护头部

      import scalatags.Text.all.{head=>headTag, title=>titleAttr,_}
      import scalatags.Text.tags2.title
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2017-08-11
        • 1970-01-01
        • 2014-07-07
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2016-06-15
        相关资源
        最近更新 更多