问题标签 [compojure]

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 回答
1178 浏览

google-app-engine - 你用 Clojure 做 GAE 应用程序的方法是什么?

我想在 GAE 上使用 Clojure 和 Compojure 开发应用程序,使用 Eclipse 或 Idea,emacs 不是一个坏主意:P

那么哪些是最好的方法呢?我不认为我想使用 leiningen,因为我相信如果你通过学习曲线,maven 会非常强大 - 我读了这个博客http://compojureongae.posterous.com/tag/googleappengine '到目前为止是一个的最佳信息来源。

如果你必须这样做,你的方法是什么?或者你会推荐我什么?

这个插件 - > http://code.google.com/p/maven-gae-plugin/好吗?因为如果我使用那个插件,我可以在 pom.xml 中包含 clojure.jar,基本上我已经准备好了,对吧?IntelliJ IDEA 有类似的东西吗?

还有其他建议吗?你的方法是什么?

0 投票
5 回答
21634 浏览

clojure - compojure 路线背后的“大创意”是什么?

我是 Clojure 的新手,一直在使用 Compojure 编写一个基本的 Web 应用程序。不过,我在 Compojure 的语法上碰壁了defroutes,我认为我需要了解这一切背后的“如何”和“为什么”。

看起来像 Ring 风格的应用程序以 HTTP 请求映射开始,然后只是将请求通过一系列中间件函数传递,直到它转换为响应映射,然后再发送回浏览器。这种风格对开发人员来说似乎太“低级”了,因此需要像 Compojure 这样的工具。我可以看到在其他软件生态系统中也需要更多抽象,尤其是 Python 的 WSGI。

问题是我不理解 Compojure 的方法。让我们采用以下defroutesS 表达式:

我知道理解所有这些的关键在于一些宏巫术,但我并不完全理解宏(还)。我已经盯着defroutes源头很久了,但就是不明白!这里发生了什么?了解“大创意”可能会帮助我回答这些具体问题:

  1. 如何从路由函数(例如workbench函数)中访问 Ring 环境?例如,假设我想访问 HTTP_ACCEPT 标头或请求/中间件的其他部分?
  2. 解构 ( {form-params :form-params}) 是怎么回事?解构时可以使用哪些关键字?

我真的很喜欢 Clojure,但我很难过!

0 投票
1 回答
405 浏览

html - 在打嗝中更改 div 颜色

有没有办法可以在打嗝中设置 div 背景颜色?到目前为止,这是我尝试过的,但没有结果:

[:div {:background-color "#003366"} (escape-html rest)]

在 html 中,我看到<div background-color="#663366">了我认为不正确的颜色格式。

有没有办法在打嗝时做到这一点?

0 投票
2 回答
783 浏览

google-app-engine - 来自 Google App Engine 的 http 请求

我正在尝试从我的 Google App Engine webapp 发出 http 请求,并发现我必须使用 URLConnection 因为它是唯一列入白名单的类。对应的Clojure库是clojure.contrib.http.agent,我的代码如下:

这在我的开发环境中运行良好 - 浏览器显示 example.com 的文本。但是当我用谷歌的开发应用服务器测试它时:

它只是在我加载页面时挂起。没有错误,或任何东西。知道会发生什么吗?

0 投票
1 回答
3849 浏览

clojure - 您如何使用 Compojure/Ring 会话?

我正在使用 Compojure 开发一个 Web 应用程序,我非常感谢一个存储和检索会话数据的小而完整的示例。

非常感谢,詹姆斯。

0 投票
3 回答
4749 浏览

clojure - Compojure 绑定来自 URL 的 HTTP 请求参数,而不是来自 POST 表单

Compojure 不绑定 POST 表单中的字段。这是我的路线定义:

当我发布一个包含字段的表单时,我得到|{}|,即没有参数。顺便说一句,当我去http://localhost/query?param1=value1时, params 不为空,并且值会打印在服务器控制台上。

表单字段是否有另一个绑定?

0 投票
1 回答
2703 浏览

clojure - Compojure 路由问题

我有一个小的 compojure 站点,其路由定义如下:

当我尝试加载项目时,出现此错误:
java.lang.Exception: Unsupported binding form: (or (serve-file (params :*)) :next)

我究竟做错了什么?我从互联网上分散的示例中获取了大部分内容。

添加空向量后,我收到此错误:
java.lang.Exception: Unable to resolve symbol: serve-file in this context

0 投票
1 回答
492 浏览

clojure - MYOB ODBC 驱动程序使用 Compojure 将工作目录更改为临时目录

我编写了一个小的内部 web 应用程序,用于将发票从我们的工作卡数据库导入到 MYOB。我使用 Clojure 和 Compojure 编写了它,它实际上工作得很好,这对我来说也是一个很好的学习练习。

但是,我遇到了一个问题,似乎在成功导入发票后,码头服务器将不再提供静态 CSS 文件。

默认路由如下:

(该文件只是 css/default.css,它在第一次导入之前完美运行。)

现在我想我找到了问题所在,似乎 MYOB ODBC 驱动程序正在更改 Jetty 服务器(和我的 REPL)的工作目录,因为当我在 REPL 中输入以下内容时:

我得到了我的临时文件目录的列表,这可以解释为什么我的 CSS 文件不再被找到。

奇怪的是,如果我这样做:

我得到了我的应用程序的正确目录。

有没有人知道可以绕过 MYOB ODBC 驱动程序的这个怪癖的东西(除了在绝对路径中编码)?

我猜我可以在启动时抓取并存储绝对路径,但这适用于 uberjar 吗?

编辑:由于 JVM 的限制,似乎无法修复?

如何使用 Clojure 在命令行中更改目录?

0 投票
2 回答
3135 浏览

clojure - 使用 compojure 从数据库中提供二进制文件

我有以下路线定义:

在这个例子中,请求/就像一个魅力,并返回预期的Hello World 2

get-images-response 方法定义如下:

我得到了一个 404,所以二进制文件的服务还不能很好地工作。任何想法为什么?

编辑:好的,这个问题与请求图像的事实有关/images/name.jpg。一旦我删除.jpg处理程序就会被调用。所以问题变成了我如何匹配除了扩展名之外的任何东西?

0 投票
2 回答
3461 浏览

clojure - 为从 nginx 反向代理转发的请求添加唯一 id

我们将 nginx 作为反向代理运行,它将请求转发到运行 Compojure 的 Clojure 应用程序,Compojure 是一个包装 Jetty 并为我们的应用程序提供服务 Web 请求的能力的库。

我们目前捕获 nginx 和 Clojure 应用程序生成的日志(通过 log4j 到 syslog)。但是,我们无法将 nginx 日志中的条目与 Clojure 应用程序的 syslog 输出中的条目相匹配。

我们需要找到一种方法来修改上游发送到 Clojure 应用程序的请求以包含某种 ID。这可以是一个整数、UUID 等等。

你对如何最好地做到这一点有什么建议吗?

谢谢你的帮助!