问题标签 [enlive]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
2 回答
645 浏览

clojure - 如何使用 unicode 和 enlive 进行网页抓取

我正在尝试抓取一些需要 unicode 支持的网站。例如,我正在尝试获取这本书的标题,但它返回的字符混乱:

并试图抓取一个阿拉伯语网站返回 ?????? 到处都是。

我不确定我应该如何激活 unicode 支持。

0 投票
1 回答
496 浏览

clojure - 使用相对链接和非根上下文路径将 Clojure webapps 部署到 Jetty 时链接断开

我一直在尝试用 Clojure 编写 webapps,直到现在还很容易。我按照 Chas Emerick 的出色截屏视频开始 clojure,并快速启动并运行了一个 url 缩短器。接下来我希望能够部署它,这就是麻烦开始的时候。

当我在开发中运行它或将它作为根 webapp 部署到 Jetty 时,一切都很好,但是当我使用上下文路径部署它时,它就不行了。或者,更确切地说,它几乎可以工作。我所有的 Compojure 路由仍然有效,但FORMHTML 文件中的操作链接已损坏并给我 404。

这是 Compojure 路由设置:

这是主页模板的 HTML:

问题是action="shorten"网址。当使用上下文路径部署到 Jetty 时/example一切正常,直到我触发表单提交。然后 Jetty 抱怨它找不到localhost:8080/shorten哪个意味着(我认为)它没有被视为相对路径,而是绝对路径。

所以,我的问题是:如何解决这个问题?我想我可以只在操作链接中指定完整路径,但这会很不灵活,并且会使开发中的 servlet 更难运行。有没有办法配置我的出路?或者一些神奇的 URL 前缀(比如~/在 Razor 中)会做正确的事情?

0 投票
2 回答
412 浏览

data-structures - Clojure:如何将映射条目的惰性序列转换为结构映射?

我是 clojure 的新手,一直在使用 enlive 来转换 html 文档的文本节点。我的最终目标是将结构转换回 html、标签和所有内容。

我目前能够获取 enlive-html/html-resource 返回的 structmap 并将其转换回 html 使用

其中节点是结构图。

我还可以根据需要转换 structmap 的 :content 文本节点。然而,在转换了 structmap 的内容文本节点之后,我最终得到了 MapEntries 的lazyseq。我想将其转换回结构图,以便可以在其上使用 emit*。这有点棘手,因为lazyseqs & structmaps 是嵌套的。

tldr:

我如何转换:

进入:

更新

kotarak 的回答为我指明了 的方向update-in,我可以使用它来修改地图而不将其转换为序列,从而使我的问题变得无关紧要。

我以前for在地图上使用过,但是update-in要走的路。

0 投票
2 回答
448 浏览

clojure - 在 deftemplate 中绑定本地 var 以进行激活

我是 clojure 和 Web 开发堆栈的新手。我正在尝试使用 enlive 在 HTML 模板中设置值:

这可以很好地设置我的两个 HTML 元素,但它涉及对我的函数的重复调用get-project。目前这只是从本地地图读取,但最终会涉及一些外部存储访问,所以我宁愿只在这个函数中执行一次。

我正在考虑使用let

但这只会影响描述元素并忽略名称形式。

绑定本地变量的最佳方法是什么deftemplate

0 投票
1 回答
537 浏览

clojure - 启用预定义的选择器步骤

我正在尝试使用 Enlive 克隆此 html 中的 replace-me 脚本标记。

问题1)

我正在努力弄清楚最后一个脚本元素的“惯用”选择器是什么。目前我正在使用

那是对的吗?

问题2)

我有这个片段来转换整个头部实体:

这是根选择器步骤的正确用法吗?我假设在 defsnippet 的上下文中,root 引用了 [:head] 选择器,对吗?

谢谢!

0 投票
1 回答
584 浏览

clojure - 如何在不重新启动的情况下使用 enlive 时重新加载模板

我正在使用 enlive 进行 Web 开发。我使用 repl 启动我的环服务器(serve my-app/handler)

但是,当我对我的任何 html 模板进行更改时,我必须重新启动我的 repl 才能显示更改。如何在不重新启动 repl 的情况下重新加载我的标记?

谢谢,穆尔塔萨

0 投票
3 回答
336 浏览

clojure - 在 enlive 中使用 src 文件夹外部的模板

是否可以在 enlive 中从源文件夹外部提供模板?

我想从我的 resources/public/templates 文件夹而不是 src/templates 文件夹中提取模板,我该怎么做?

谢谢,穆尔塔萨

0 投票
2 回答
903 浏览

clojure - 附加到 Enlive 中的属性

是否可以使用 enlive 将值附加到属性?

例子:我有这个

并且想要这个

我目前正在这样做:

但我不希望将 URL 嵌入到我的代码中,只需将 id 附加到现有 URL

0 投票
1 回答
1205 浏览

clojure - 如何使用 Clojure Enlive 添加包含 HTML 的字符串

我以这种方式定义了一个模板:

这里的内容字符串包含一个 HTML(例如:“<tr><td><a href="mylink">我的链接</a></td></tr>)不幸的是,这不起作用。相反,它是删除 <tr> 和 <td> 只留下 <a> 标记。我尝试了不同的方法(不同的不成功结果)。非常欢迎任何帮助!

0 投票
1 回答
408 浏览

clojure - clojure, 活跃, 多站点

尝试根据 :server-name 在请求中返回的内容加载特定模板:

它适用于返回 /home/usr/rosay/resources/localhost/base.html 的 localhost,但是当我针对不同的主机进行测试时说“hostname2”,我看到 get-template 在哪里查看 /home/usr/rosay/resources /hostname2/base.html 但当它在浏览器中呈现时,它总是指向 ../resources/localhost/base.html。

是否有宏或不同的方式来处理这个用例?