标签: pedestal

Pedestal与其他Clojure Web框架相比有哪些功能?

最近,Relevance宣布了Coudjure的新Web框架Pedestal.

在功能,应用程序开发的简易性,开发人员工具等方面,该框架如何与其他Clojure Web框架(如Compojure,Webjure,Conjure,Mustache等)进行比较.

请参阅Clojure Web框架的比较

clojure web-frameworks pedestal

20
推荐指数
4
解决办法
7602
查看次数

ClojureScript的客户端MVC框架

我正在尝试在ClojureScript中为客户端MVC选择一个库.这是我到目前为止找到的ClojureScript库:

  1. WebFUI(https://github.com/drcode/webfui)
  2. Enfocus:(http://ckirkendall.github.io/enfocus-site/)
  3. 基座(http://pedestal.io)
  4. Ducttape(https://github.com/hozumi/ducttape.cljs)
  5. C2(http://keminglabs.com/c2/)似乎这可以用作DOM框架.

我该如何在它们之间做出选择?此外,他们将如何与使用ClojureScript的AngularJS或Backbone进行比较?

backbone.js clojurescript angularjs pedestal

18
推荐指数
2
解决办法
4114
查看次数

Clojure web frameworks for responsive apps

I have recently inherited a non-finished web app written in Clojure, based on compojure and hiccup basically. It's a bad attempt to model some sort of MVC with OO style not in the FP style as seen here . So I bet to re-start the project almost from the scratch reusing the useful parts. I consider these alternatives:

The least breaking alternative would be Compojure+Enlive+jquery-pjax

Using a clojure web framework like Pedestal Any experiences about this?

The initial idea was …

clojure compojure enlive liberator pedestal

7
推荐指数
1
解决办法
4182
查看次数

用clojure编写的桌面应用程序

可以推荐使用clojure生态系统中的哪些技术来开发独立的桌面应用程序?我正在寻找的技术应该得到支持

  • 访问本地文件系统(例如文件对话框).
  • 通过http/https访问网络
  • 支持更新桌面应用程序
  • 异步支持(运行多个线程)
  • 跨平台(不需要智能手机)
  • 对本机库的互操作支持(不是100%需要,但如果它没有支持则存在风险)
  • 合理的生态系 例如,我需要将xml文件验证到xsd,最终我需要进行一些线性代数计算.

我想到了以下替代方案:

Clojure的/跷跷板:

  • - 需要java运行时
  • - 标准的挥杆外观可能是一个缺点
  • ++健壮的java平台
  • ++庞大的生态系统
  • ++互操作支持不是问题
  • ++ core.async

clojurescript/HTML5/CSS:

  • ++可以与node-webkit或appjs一起使用,以提供独立的桌面应用程序.
  • ++通过CSS灵活的外观/感觉
  • ++健壮的平台
  • - 较小的生态系统 例如,处理xml文件或支持数学库呢?
  • - 互操作支持可能是一个问题.我可以从node-webkit调用例如本机库吗?
  • - 单线程环境,异步支持怎么样?
  • - 不清楚如何更新应用程序.

  • ++简化了应用程序架构的开发
  • - 不确定它是否可以部署为node-webkit app或appjs.

clojure clojurescript pedestal

7
推荐指数
1
解决办法
1163
查看次数

基座:您可以使用什么数据流来呈现新初始化的空列表?

我正在尝试创建一个非常基本的基座应用程序来显示项目列表,或者如果列表为空则创建一条短信.

我以为我想要的是:

  • 一个数据模型,其中[:root:items]将是我的项目列表
  • 页面的模板函数([:root])
  • 空列表的静态模板函数
  • 包含元素的列表的动态模板函数
  • 在应用程序的开头,发送一条消息,将列表初始化为空
  • 在渲染中,回复:
    • [node-create [] :map] 通过做......什么都没有?
    • [node-create [:root] :map] 通过渲染整页的模板
    • [node-create [:root :items] :map] 通过添加空列表的模板

要清楚,我最终想要展示的是(没有元素)

<html>
 <div>My list</div>
 <p>There is nothing in the list</p>
</html>
Run Code Online (Sandbox Code Playgroud)

当列表中有东西时:

<html>
 <div>My list</div>
 <ul>
   <li>item1</li>
   <li>item2</li>
 </ul>
</html>
Run Code Online (Sandbox Code Playgroud)

我在这里走在正确的轨道上吗?

我坚持初始化数据模型是我想要的.我得到的最接近的是:

;; behavior.clj
(defn init-root-transform [old-value message]
  {})

(defn init-items-transform [old-value message]
  [])

(def example-app
  {:version 2
   ;; :transform [[:set-value [:greeting] set-value-transform]]})
   :transform [[:bootstrap [:root] init-app-transform]
               [:bootstrap-systems [:root :items] init-items-transform]
               ]})

;; start.cljs
... skipped...
    (app/begin app)
    (p/put-message …
Run Code Online (Sandbox Code Playgroud)

clojure clojurescript pedestal

6
推荐指数
1
解决办法
289
查看次数

Clojure Pedestal root用作应用程序/八位字节流

我试图在Pedestal 0.5.1中托管静态资产和服务.我使用::file-path指向一个目录来托管文件.如果我直接导​​航到文件http:// localhost:8888/index.html,这可以正常工作,但如果我转到站点的根目录http:// localhost:8888,它将提供文件application/octet-stream而不是text/html.我调整了Hello World Sample并且它具有相同的行为.

SRC /程序hello_world/server.clj

(ns hello-world.server
  (:require [io.pedestal.http :as http]
            [io.pedestal.http.route :as route])
  (:gen-class))

(def routes
  (route/expand-routes [[]]))

(def service
  {:env                 :prod
   ::http/join? false
   ::http/routes routes
   ::http/file-path "/tmp/www"       
   ::http/type          :jetty
   ::http/allowed-origins {:creds true :allowed-origins (constantly true)}       
   ::http/port          8888})

(defonce runnable-service (http/create-server service))

(defn -main
  "The entry-point for 'lein run'"
  [& args]
  (println "\nCreating your server...")
  (http/start runnable-service))
Run Code Online (Sandbox Code Playgroud)

开始 lein run

$ curl …
Run Code Online (Sandbox Code Playgroud)

clojure pedestal

6
推荐指数
1
解决办法
358
查看次数

Ring和Pedestal之间的关系是什么 - 我需要知道Ring才能使用Pedestal吗?

我被引导相信Pedestal是Ring的替代品但是从我看到Pedestal实际上使用Ring的所有例子.这是最令人困惑的!我是否需要了解并了解Ring的工作原理才能有效地使用Pedestal.从本质上讲,Pedestal"站在Ring的肩膀上"还是打算完全取代它?

clojure ring pedestal

5
推荐指数
1
解决办法
556
查看次数

Clojure Pedestal框架中的架构模型是否与Google Wave类似?

阅读基座演示文稿(并阅读示例源代码) - 我看到了一个基于变换和操作的模型.

Pedestal是否真的使用类似于Google Wave中使用的操作转换(在这里这里看)?

clojure google-wave clojurescript operational-transform pedestal

5
推荐指数
1
解决办法
582
查看次数

Clojure基座数据流模型 - 正确的步骤

Pedestal Docs中,它讨论了基座数据流中的以下步骤:

  • 转变
  • 影响
  • 结合
  • 继续
  • 发射

Pedestal一位作者的重要项目中,我们看到了以下要素

  • 转变
  • 继续
  • 派生
  • 影响
  • 发射

我的问题是 - 是否得出数据流的未记录的功能?它是联合收割机的新名称吗?这仅仅是基座文档过时的问题吗?

clojure pedestal

5
推荐指数
1
解决办法
594
查看次数

在 Pedestal 中设置和使用基于 cookie 的会话

我很欣赏一个基本的 Pedestal 示例,说明如何 (1) 设置在服务器重启后仍然存在的 cookie 和 (2) 使用基于 cookie 的会话;特别是如何获取和设置值。

我有点惊讶没有找到一个使用的例子ring.middleware.session/wrap-session(源代码在这里:https : //github.com/ring-clojure/ring/blob/master/ring-core/src/ring/middleware/session.clj) .

设置

根据这个使用 Ring 中间件的 Pedestal 示例代码,有两个关键的东西要添加到你的service.clj. 首先,定义会话拦截器:

; aliases for namespace :require
[io.pedestal.http.ring-middlewares :as middlewares]
[ring.middleware.session.cookie :as cookie]

(definterceptor session-interceptor
  (middlewares/session {:store (cookie/cookie-store)}))
Run Code Online (Sandbox Code Playgroud)

但是,示例代码有这个警告:

在此示例代码中,我们没有指定会话数据在发送回浏览器之前使用的加密密钥。这有两个后果,第一个是我们需要在整个服务中使用相同的拦截器实例,以便会话数据对所有路径都是可读和可写的。第二个后果是当服务器进程结束时会话数据将变得不可恢复。即使浏览器保留了 cookie,它也不是不可恢复的密文,会话拦截器会将其视为不存在。

如何克服上述限制?

其次,添加session-interceptor到您的路线(以下是我的示例代码):

(defroutes routes
  [[["/"
     {:get [:root root/index]}
     ^:interceptors [session-interceptor
                     (body-params/body-params)
                     bootstrap/html-body]]]]
Run Code Online (Sandbox Code Playgroud)

使用(获取和设置)

我知道上面的设置步骤会导致 Ring 中间件向:session请求映射添加一个键。所以获取很容易:(:session request). 但是我如何以及在哪里添加到会话中?一个例子将不胜感激。

session middleware clojure ring pedestal

5
推荐指数
1
解决办法
1407
查看次数

如何使用 Lacinia Pedestal 设置 COR?

我正在使用 Clojure 设置 lacinia-pedestal graphql 服务器,并尝试使用 apollo 使用客户端 javascript 代码访问它。但是,我无法访问本地主机上的 /graphql 端点,因为我试图从 COR 不允许的本地主机源 (localhost:3000) 访问它。如何使用 lacinia-pedestal 设置 COR?

这是服务器端代码(使用 lacinia 教程https://lacinia.readthedocs.io/en/latest/tutorial/component.html 进行设置

(ns project.server
  (:require [com.stuartsierra.component :as component]
            [com.walmartlabs.lacinia.pedestal :as lp]
            [io.pedestal.http :as http]))

(defrecord Server [schema-provider server]

  component/Lifecycle

  (start [this]
    (assoc this :server (-> schema-provider
                            :schema
                            (lp/service-map {:graphiql true})
                            http/create-server
                            http/start)))

  (stop [this]
    (http/stop server)
    (assoc this :server nil)))

(defn new-server
  []
  {:server (-> {}
               map->Server
               (component/using [:schema-provider]))})
Run Code Online (Sandbox Code Playgroud)

客户端代码超级简单(使用 Apollo):

const client = new ApolloClient({
  uri: …
Run Code Online (Sandbox Code Playgroud)

clojure cors pedestal server graphql

4
推荐指数
1
解决办法
351
查看次数

从 POST 请求获取 POST 正文数据到 Pedestal

我已将数据发布到基座端点“/my-post。我已按如下方式路由该端点:

[[["/" {:get landing} ^:interceptors [(body-params/body-params) ...]
  ["/my-post {:post mypost-handler}
  ....
Run Code Online (Sandbox Code Playgroud)

所以在我看来,这意味着 body-params 拦截器也会针对 /my-post 触发。

在我的后处理程序中我有:

(defn mypost-handler
   [request]
   ****HOW TO ACCESS THEN FORM DATA HERE ****
)      
Run Code Online (Sandbox Code Playgroud)

我现在如何访问此处的表单数据?我可以从打印请求中看到我有一个 #object[org.eclipse.jetty.sever.HttpInputOverHTTP..] ,它显然需要进一步处理才能对我有用。

(我必须说,Pedestal 的文档充其量只是相当粗略......)

clojure pedestal

4
推荐指数
1
解决办法
2525
查看次数

如何在Pedestal中呈现HTML模板?

我正在讨论Pedestal文档

https://github.com/pedestal/pedestal/tree/master/guides/documentation
Run Code Online (Sandbox Code Playgroud)

没有关于如何从模板渲染html的示例.基座甚至有这个功能吗?如果是这样,任何人都可以通过一个例子解释这是如何工作的......

clojure pedestal

3
推荐指数
1
解决办法
223
查看次数