首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Enlive片段给了我奇怪的HTML

Enlive片段给了我奇怪的HTML
EN

Stack Overflow用户
提问于 2014-01-27 13:56:10
回答 1查看 91关注 0票数 0

问题: Enlive片段制作时髦的HTML

问题的视觉参考:http://i.imgur.com/FIOzgZv.png

有关奇怪的HTML,请参见代码段底部

代码语言:javascript
复制
(ns notebook.handler
  (:require [compojure.core :refer :all]
            [compojure.handler :as handler]
            [compojure.route :as route]
            [net.cgrand.enlive-html :as html]))

(html/defsnippet nav "templates/nav.html" [:*]
      [])

(html/deftemplate home-page "templates/base.html"
  []
   [:body] (html/prepend (nav)))

(defroutes app-routes
  (GET "/" [] (home-page))
  (route/resources "/")
  (route/not-found "Not Found"))

(def app
   (handler/site app-routes))

Base.html的内容:

代码语言:javascript
复制
<html>
  <head>
    <link rel=stylesheet href="css/base.css">
  </head>
  <body>
  </body>
</html>

Nav.html的内容:

代码语言:javascript
复制
<nav>
  <ul>
    <li>FlatNotes</li>
  </ul>
</nav>

访问localhost:3000时的HTML:

代码语言:javascript
复制
<html>
  <head>
    <link href="css/base.css" rel="stylesheet" />
  </head>
  <body><nav>
  <ul>
    <li>FlatNotes</li>
  </ul>

</nav><ul>
    <li>FlatNotes</li>
  </ul><li>FlatNotes</li>
  </body>

</html>

(reduce str (html/emit* (nav)))显示了奇怪的HTML,这意味着问题发生在deftemplate之前的deftemplate中。

代码语言:javascript
复制
"<nav>\n  <ul>\n\t<li>FlatNotes</li>\n  </ul>\n\n</nav><ul>\n\t<li>FlatNotes</li>\n  </ul><li>FlatNotes</li>"

也许我弄错了[:*]所做的事情,或者有一个根本的误解,或者有一个我不知道的问题。我已经尽可能地将代码降到了最低限度,这样就可以了。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2014-01-27 14:17:01

:*表示通用选择器。它匹配nav.html中的每个元素-- navulli --这意味着导航段是:

代码语言:javascript
复制
<nav>
  <ul>
    <li>FlatNotes</li>
  </ul>
</nav>

<ul>
  <li>FlatNotes</li>
</ul>

<li>FlatNotes</li>

传递给代码段定义的选择器应该指向代码段的单个顶级元素。如果您将:*更改为匹配单个元素(即:nav),那么它应该会为您提供您要寻找的片段。

票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/21382703

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档