On Thu, Sep 13, 2012 at 12:56:47PM -0400, Chas Emerick wrote: > One of the great advantages of Ring (and other purely functional bits > that stack on top, like Compojure, Bishop, etc) is that its handlers > are readily composable. Among other things, this means that way you > compose handlers from two different namespaces in the same app is > fundamentally no different than the way you compose handlers from > N different applications (which can come from different projects, > maintained by different teams, etc). Combined with something like > Compojure's nested routes[1], this is a simple and powerful way to > build modular web apps and services by default.
Coming from the Ruby world, I was initially drawn to Noir by it's Sinatra-esque API, but like the OP, I was a little dismayed by the magic of defpage and the like. I am, after all, coming to Clojure so that I can be explicit about my data and my state. Thankfully, Noir is a fairly thin layer over Ring, Compojure, and Hiccup, so creating routes and composing them in just the way Chas mentions was easy and quite satisfying. Of course, Noir is not thereby superfluous; the end result for my app is still a namespaced var holding an atom of the app's handlers. It is explicit and more flexible, but it took more time and typing than a beginner may want to invest. guns -- You received this message because you are subscribed to the Google Groups "Clojure" group. To post to this group, send email to clojure@googlegroups.com Note that posts from new members are moderated - please be patient with your first post. To unsubscribe from this group, send email to clojure+unsubscr...@googlegroups.com For more options, visit this group at http://groups.google.com/group/clojure?hl=en