5 ms·
Clojure's Webframework "Noir" hits 1.2.0
- learc83 15y agoWhat is generally accepted as the most popular clojure web framework? I'm new to clojure, and functional languages in general, so I'm actually starting with working through SICP before I look into a framework, but I'm curious. tl;dr What is the equivalent of rails in the clojure community?
- thmzlt 15y agoI don't think there's an equivalent framework (fortunately), but there is Compojure (https://github.com/weavejester/compojure https://github.com/weavejester/compojure) which is similar to Sinatra.
- frou_dh 15y agoThis article is the motherlode: http://brehaut.net/blog/2011/ring_introduction http://brehaut.net/blog/2011/ring_introduction
- ibdknox 15y agoI'm biased, so take everything I say with a grain of salt :) I'm not sure there is a rails really and I think that's somewhat by design. Compojure is probably the most famous Clojure web lib, but it's not a framework per se. It's at a level below web-frameworks as most people think of them and Noir is actually built on top of it. If you're just wondering in terms of having an active community, I believe Noir is currently the most trafficked complete package, but Compojure itself draws a lot of discussion :)
- vdm 15y ago> What is generally accepted as the most popular clojure web framework Citation needed.
- brehaut 15y agoThere is no one framework (in fact, most of clj's web ecosystem is not frameworks) that is far and away more popular than the others. At the heart of everything is Ring[1]. Ring is roughly equivalent to WSGI or Rack. However, if you use Django in python you basicly dont ever have to know about WSGI. In Clojure you do want to know about Ring. Thankfully Ring is very simple; its a spec describing request maps and response maps. In addition provides common adapters for various JVM web servers (In the general ring ecosystem there is support for Jetty, Netty (via Aleph/Lamina), Google App Engine (via appengine magic), Servlets, Mongrel2) and middlewares. There are three sets of libraries on top of ring that are commonly used to build sites: ## Moustache Probably the closest to raw ring of the three, moustache provides a sophisticated url routing API. Of the three I'm mentioning here it is probably the least suitable for clojure beginners, however it is my personal favorite. ## Compojure This was the most popular [noir is apparently on par] and oldest (it predates ring but was rewritten ontop of it in the 0.4.0 release). The best analogy here is apparently sinatra for ruby. ## Noir Noir is the most recent addition and is higher level than Moustache or Compojure. In fact, Noir is built on Compojure. I havent had any real experience with Noir myself but it is probably the easiest entry point into web programming in clj. Compojure and Noir both use Hiccup for HTML generation, and Moustache uses Enlive. Enlive is extremely powerful; even if you choose hiccup I would encourage you to take a good look at enlive anyway, the two solutions dont need to be mutually exclusive. [1] Ring: http://github.com/mmcgrana/ring/
- brehaut 15y agoIt would be remiss to not point out that noir probably has the strongest set of documentation (both api and tutorial styles) of the main three libs.
- chc 15y agoClojure doesn't quite have "the equivalent of Rails" yet. Ring is basically equivalent to Rack, Compojure is a lot like Sinatra, and Noir is sort of like Merb, except it's built on top of Compojure.
- gcv 15y agoOthers have mentioned Compojure, Moustache, and Noir. There's also Conjure (https://github.com/macourtney/Conjure https://github.com/macourtney/Conjure), which tries to operate at a higher level, and has been around for quite some time.
- vdm 15y agoringfinger is the closest thing I have seen to rails. https://github.com/myfreeweb/ringfinger https://github.com/myfreeweb/ringfinger
- CurrentB 15y agoThanks for all the work! I'm using Noir right now for a few things, and I love it.
- icey 15y agoI use Noir for a few things, and it's been great so far. You can write Clojure on the front-end as well with Pinot, which is a ClojureScript framework created by the author of Noir (ibdknox). Noir isn't very large, so it's easy to read through the source if you're not sure how something works.
- brehaut 15y ago> Noir isn't very large None of the main clojure web libs are very large, so this applies to all of them :)
- st3fan 15y agoNoir is awesome. I've been hacking on some small web apps and web services and Noir is just a pleasure to work with.
- sixbit 15y agoNoir newbie here, was really happy with how easy it was to deploy to Heroku. Heroku's tutorial isn't tailored for Noir but this article made it very straight forward: http://thecomputersarewinning.com/post/clojure-heroku-noir-mongo http://thecomputersarewinning.com/post/clojure-heroku-noir-m...
- mark_l_watson 15y agoI spent over an hour playing with Noir this afternoon and blogged about it. Not Noir specific, but I like the way stack traces are handled: any error generating a web page shows a tidy and useful stack trace. The linked article of running on Heroku with Noir and MongoDB was also fun to work through. Nice stuff.
- ibdknox 15y agoThat actually is noir specific. I wrote a bunch of stuff to display them like that and make them useable. :)
- mark_l_watson 15y agoCool! It would be great if your stack trace cleaned up code made it back into Clojure.