问题标签 [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.
clojure - 解构形式和组合?
我想我会发布这个,因为我在没有真正了解发生了什么的情况下通过猜测来工作,我认为如果有人解释它可能会有所帮助。
我了解如何在 Compojure 处理程序中获取 :params 映射的元素:
或者
虽然我不完全理解这{some_arg "some_arg"}
部分在做什么:(
我还想访问:remote-addr
请求的部分以及some_arg
. 最后我得到了
因此,我得到了未加引号的字符串some_arg
,并且ip
是我希望将值绑定到的变量的名称,但上面的映射不是有效的 Clojure 映射。它是如何工作的?
我还知道这是针对 Ring 请求映射(以某种方式由defroutes
宏提供)进行评估的,但上面的表达式不是函数或宏定义,那么它如何“存在”为我的代码中的有效表达式?宏参数的正常规则是否有某种暂停?我一直无法找到这个非 Lisp'er 可以理解的解构形式的语法定义。
clojure - 使用 lein uberjar 生成的 Jar 在 NoClassDefFoundError 上失败
我有一个带有这个 project.clj 的简单网络应用程序:
我的主要看起来像这样:
使用 REPL 就可以了。但是,当我生成一个 jarlein uberjar
并尝试将其执行为:
它死于此异常:
我究竟做错了什么?如何让它工作?
不确定这是否重要,但我注意到在 jar 中我的文件、clojure 本身和 Java 库被解压缩为 .class 文件,而所有 clojure 库仅作为普通的 .clj 文件存在。
clojure - 安装组合
按照http://en.wikibooks.org/wiki/Compojure/Getting_Started中的说明,我:
- 下载http://github.com/weavejester/compojure/tarball/0.3.2
- 提取到 ~/compojure
- chdir 到那里
- 将权限更改为可执行文件
- 运行蚂蚁部门
- 蚂蚁
- 运行 export CLASSPATH=~/compojure/compojure.jar
- 创建了 compojure shell 脚本
- Clojure 源文件
- chdir 到那里
- 运行 ./compojure hello.clj
然后,我得到:
我尝试将 Compojure shell 脚本更改为使用完整的类路径,但仍然没有用。
为什么不?如何安装 Compojure?
internationalization - 如何在 Clojure 中编写多语言应用程序?
我正在尝试弄清楚如何创建一个基于 Compojure 且支持多语言的网站。有没有像 i18n 之类的解决方案?
google-app-engine - compojure 0.6.0:使用谷歌应用引擎获取帖子参数的问题
这就是我定义我的应用程序的方式:
这里的站点用于捕获 :params,这是 compojure 0.6.0 中的一个新功能。但是,我在投票后得到了一张空地图。我想知道上面的代码有什么问题?
tomcat - Clojure + Compojure + Maven 应用程序在 Tomcat 中不起作用
我正在使用 Compojure Web 应用程序框架和 Maven 编写一个用 Clojure 编写的简单 Web 应用程序。
这是我的 servlet 的简化版本:
使用 Maven 的 Jetty 目标可以正常工作,如下所示:
但是,当我以此构建 WAR 并将其部署在 Tomcat 上时,我总是看到我的 404 页面,即“找不到文件。”。你能告诉我为什么会这样吗?
我按如下方式构建WAR:
我注意到 Tomcat 中有一个关于重复 servlet-api.jar 的警告,而 Maven 确实将它放入了 WEB-INF/lib。我从 WAR 中删除了 servlet-api.jar 仍然遇到同样的问题,但这是否意味着我的整个 WAR 打包过程有问题?
这可能是不同 URL 路径的问题吗?当我启动一个本地 Jetty 时,URL 如下:
但是如果我在 Tomcat 上启动它,它是这样的:
http://localhost:8080/myapp/home
那么“/myapp”可能是路线的一部分吗?我将如何解决这个问题?
clojure - compojure 中的 run-server 去哪儿了?
我曾经能够像这样在 compojure 中启动 Web 服务器:
有谁知道这个功能在最新的组合中去了哪里?(0.6.2)
文档说我应该从命令行运行它并使用一些奇怪的自动重新加载的东西,此时我还不如使用 python。
java - 关于使用 Clojure 在 Eclipse 上开发 GAE 应用程序的问题
在逆时针处理我的 Eclipse 设置和以交互模式运行的 GAE 开发服务器后,我发现这些事情对我来说仍然不清楚:
1) 如何在不使用 REPL 命令的情况下启动服务器和应用程序?
2)当我将应用程序部署到谷歌服务器时,我如何以及在哪里定义应用程序的入口点?我的意思是,Google 如何知道要使用哪些应用程序、应用程序处理程序和路由?
3) 我可以在同一个项目中结合使用 java 类和 clojure 文件,以便在我的 src 文件夹上创建和编辑它们时自动编译它们吗?
4)最后上传到GAE实际上需要哪些文件和jar?我曾经将 PHP 应用程序部署到 GAE,但在这里我不知道是否应该制作 jar,包括编译的 clj 文件。我也可能想以不同于逆时针或 appengine-magic 的方式组织文件,那么我在哪里指定资源和类的路径?
5) 最后是否可以将 Google 生产服务器与 Emacs - Slime - Swank 组合连接起来?那将是梦想的实现,大声笑。
我将 appengine-magic 与 Jetty、Compojure、Ring 和 Hiccup 一起使用。
deployment - 如何在 Apache 中集成 Clojure Web 应用程序
笔记
鉴于此 OP 是大约两年前编写的,而不是再次问同样的问题,我想知道是否存在分步说明,以便我可以将 Noir 或其他 Clojure Web 应用程序集成到 Apache 中,无论是 Jetty、Tomcat , 或者是其他东西。Django 也存在类似的指令,我想我理解 Python 在 Django 的案例中作为引擎而不是环框架运行,因此 Clojure Web 应用程序的情况更加复杂。
尾注
我深深爱上了 Clojure,而且 Compojure 看起来像是一个简洁的 Web 框架。
但是当我想将我的应用程序部署在像 Tomcat 这样的常规应用程序服务器上作为 WAR 时,一切都崩溃了。实际上,我必须为静态文件和资源编写自定义 Ring 处理程序,这些处理程序可以在本地 Jetty 和 Tomcat 上工作,因为股票处理程序没有,而且我必须手动在任何地方添加上下文根。
我很惊讶我必须编写所有这些代码来创建可以在 Jetty 和 Tomcat 上运行的最简单的 Web 应用程序。我对此只有三种可能的解释:
- 没有人将 Clojure/Compojure 用于使用 Jetty 进行本地开发以外的任何事情,即在生产中
- 每个人都在没有上下文根的专用 Jetty 上部署 Clojure/Compojure 应用程序(就像人们使用 Node.js 应用程序一样)
- 有一种非常简单的方法可以规避我遇到的我不知道的问题
在你看来,这些情况中的哪一个?或者是别的什么?
编辑:
请注意,使用 Maven/Leiningen 创建一个战争文件是轻而易举的事,而不是我的意思。我想知道我必须编写这么多代码才能使 Compojure 与 Tomcat 一起工作,基本的东西,如静态文件服务和上下文根感知,应该开箱即用。
google-app-engine - lein appengine-prepare 失败
我正在尝试按照https://github.com/gcv/appengine-magic上的示例让 Clojure/Compojure/appengine-magic 工作
但是当我跑步时,lein appengine-prepare
我得到:
我错过了什么吗?
lein new simple-example
编辑项目.clj:
lein deps
lein appengine-new
编辑 core.clj:
lein appengine-prepare