

Clojure's Webframework "Noir" hits 1.2.0 - ibdknox
https://github.com/ibdknox/noir/blob/master/history.md

======
icey
I 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
> Noir isn't very large

None of the main clojure web libs are very large, so this applies to all of
them :)

~~~
ibdknox
Nothing in Clojure is large by, say, C standards ;)

~~~
mhd
Well, compared to (older) Unix C standards, it's definitely closer to the Java
(i.e. large) side. Compared to things like Win32 or gobject-like C
abominations, I'd agree…

------
sixbit
Noir 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-m...](http://thecomputersarewinning.com/post/clojure-heroku-noir-mongo)

------
st3fan
Noir is awesome. I've been hacking on some small web apps and web services and
Noir is just a pleasure to work with.

------
CurrentB
Thanks for all the work! I'm using Noir right now for a few things, and I love
it.

------
mark_l_watson
I 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
That actually _is_ noir specific. I wrote a bunch of stuff to display them
like that and make them useable. :)

~~~
mark_l_watson
Cool!

It would be great if your stack trace cleaned up code made it back into
Clojure.

------
learc83
What 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?

~~~
brehaut
There 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
It 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.

