9

Javascript 资源如何最好地集成到环应用程序中?

具体来说:

  • 我们应该把我们的 .js 文件放在哪里?
  • 应该如何以及在哪里设置单元测试?
  • 为跨越客户端和服务器端的功能设置验收测试的最佳方法是什么?

带有环形应用程序的 javascript 是否有任何最佳实践?一个可能的答案是完全分开开发客户端和服务器端,基本上将所有内容分成两个独立的项目,但我对这个想法并不完全满意。

(我也知道 clojurescript,尽管我主要考虑的是被编写为 javascript 的 javscript 代码。)

4

4 回答 4

1

Ring 支持直接从文件夹(ring.middleware.file或者ring.middleware.static我将使用的文件夹)或 jar/war 中的资源提供文件。您最好的选择是使用这些机制来提供您的静态(javascript/图像)内容。如果您可以自由地执行此操作,我将添加一条与此类似的路由,以服务/static/来自此类文件夹的所有 HTTP 请求:

(def *route*
    (ring/wrap-static "c:/statics/" ["/static/"]))

一旦您知道如何处理对静态资源(如 javascript 资源)的请求,它就与 PHP 或 ASP 等其他任何东西相同。

另一种选择是按照正常方式定义资源路由,然后在“包罗万象”中(通常类似于此(ring/GET * request (handle-static-request request))路由,使用静态请求处理任何剩余的未服务请求。

于 2011-03-17T15:11:29.243 回答
0

要快速开始,在 clojure/ring 开发环境中开始提供静态文件的最简单方法可能是使用 ring.util.response/file-response。

如果您使用 mustache,您可以将这样的路由添加到路由列表的末尾(作为直通路由):

[&] (fn [req] (file-response (req :uri) {:root "resources/public"}))

它将选择任何路由并尝试在“[proj-root]/resources/public”目录下找到与提供的 uri 匹配的文件。

例如,在您的 html 脚本标记中,您可以只使用 ,src="/js/all.js"然后确保您有一个类似“[proj-root]/resources/public/js/all.js”的文件。

http://mmcgrana.github.com/ring/ring.util.response.html

于 2012-04-20T09:51:32.927 回答
-1

我会选择“完全分离关注点”的路径。您的服务器端 clojure 代码只会公开 json 服务,而您的 javascript 将查询数据并将其附加到 html。Clojure 使您可以非常轻松地创建此类服务并将其数据结构转换为 json。当然,这种方法有它的缺点,你会严重依赖 javascript。

于 2011-09-01T16:41:45.150 回答
-6

我不是 clojure 网络专家,但我会试一试。

我认为这与您使用的模板语言无关。

模板语言

  • Enlive:正确地将所有内容分开(而不是单独的项目)并将其与 enlive 结合在一起
  • Fleet:你会怎么用 PHP 或其他东西来做。
  • 打嗝:用内联 html 编写你的 clojure 函数,而 js 只有在 sepret 文件中有大型 js 库。

我真的不能谈论测试。

于 2011-03-16T10:53:15.693 回答