There's a pretty good page at 
heroku<https://devcenter.heroku.com/articles/clojure-web-application>. 
There's also this classic page<http://brehaut.net/blog/2011/ring_introduction>: 
aging, but still very relevant.

On Friday, January 11, 2013 10:33:15 PM UTC+1, Eric MacAdie wrote:
>
> Is there a page that gives "Clojure web recipes"? It would be great for 
> beginners if you could have one place that says "To make a web app, you 
> need X, Y and Z, and here are libraries that fulfil each of these needs."
>
> - Eric MacAdie
>
> On Fri, Jan 11, 2013 at 12:25 PM, Sean Corfield 
> <seanco...@gmail.com<javascript:>
> > wrote:
>
>> I think there's a philosophical bent in the Clojure community toward
>> small, composable libraries, rather than monolithic pre-built
>> combinations - across all domains. This has come up in discussions
>> before, mostly around the "full-stack web framework" issue, and the
>> consensus each time seems to be we're better served by doing a
>> mix'n'match from the available libraries.
>>
>> Scala is aimed much more squarely at the enterprise world of Java,
>> which in turn is much more inclined toward the full-stack approach.
>>
>> FWIW, I ported my mature, popular, convention-based MVC framework FW/1
>> from CFML to Clojure and even tho' it's nowhere near full-stack, in
>> the Clojure world it's already far beyond the norm of small,
>> composable libraries, as it "bundles" Ring and Enlive and has its own
>> route processing. In the CFML world, FW/1 was a reaction to the large,
>> full-stack frameworks inspired by Spring, Rails etc, and those CFML
>> frameworks have routing, security, DI/AOP, ORM, environment control,
>> logging, test generation and all sorts of things built in... hundreds
>> of files, tens of thousands of lines of code, massive documentation
>> and so on. Even FW/1 (for CFML) has routing, some DI and environment
>> control all built in! FW/1 for Clojure has no DI nor environment
>> control (although that probably will get added at some point). I'm
>> somewhat allergic to ORM, favoring thin, simple data mappers instead
>> :)
>>
>> Sean
>>
>> On Fri, Jan 11, 2013 at 10:08 AM, Paul Umbers 
>> <paul....@gmail.com<javascript:>> 
>> wrote:
>> > My oopsie. You're right, it is 1.2.0. I was looking at the current head 
>> of
>> > master, which I guess is 1.2.0-SNAPSHOT.
>> >
>> > As long as all projects stick to semantic versioning (a lot do), that
>> > problem is not so great.
>> >
>> > The other problem though is that of which libraries to choose for a
>> > particular function. I understand the choice is pretty wide, and that's 
>> a
>> > good thing to some extent, but it means anyone new to Clojure has to
>> > evaluate and choose almost every library they could use - which takes 
>> time &
>> > effort. If I want to build a web app/service with Java I know I can 
>> just go
>> > to Spring and it will have pretty much everything I need - tested &
>> > compatible. The choice almost becomes a no-brainer. I don't have that 
>> same
>> > ease of use with Clojure - if someone asked me to build a web app or 
>> service
>> > now (commercially, so I'm on the Client's clock) I would have to factor 
>> in a
>> > significant amount of time to choose, test & evaluate frameworks.
>> >
>> > I guess that kind of ease-of-use comes from maturity, and Clojure is 
>> still
>> > relatively immature compared with Java. But then Scala is roughly the 
>> same
>> > age and they have TypeSafe which, as a full-stack, has a more certain 
>> "feel"
>> > to it than having to cherry-pick individual Clojure libraries (albeit 
>> those
>> > that have become de facto standards).
>> >
>> > Still, clients pay me to know this stuff, and that was one of the 
>> reasons
>> > for doing the project - to learn what works, what doesn't and how to go
>> > about it.
>> >
>> >
>> > On Friday, 11 January 2013 10:12:43 UTC-7, James Reeves wrote:
>> >>
>> >> On Friday, January 11, 2013 4:52:05 PM UTC, Paul Umbers wrote:
>> >>>
>> >>> For example, the latest vesion of Compojure (1.1.3) uses Ring 1.1.5 
>> and
>> >>> not the latest version of Ring (1.1.6) which has significantly better 
>> util
>> >>> functions available - but I can't use them until Compojure catches up.
>> >>
>> >> Ring 1.1.6 doesn't have any new functions - it's just a patch release.
>> >> You're thinking of Ring 1.2.0-SNAPSHOT, which should be released 
>> within the
>> >> next month, and will go into beta soon.
>> >>
>> >> Both Ring and Compojure use semantic versioning (http://semver.org/), 
>> so
>> >> Ring 1.2.0 is backward compatible with Ring 1.1.0. This means that you 
>> can
>> >> quite happily use Compojure 1.1.3 with Ring 1.2.0-SNAPSHOT if you so 
>> desire.
>> >>
>> >> Semantic versioning solves a lot of the problems you describe, because 
>> if
>> >> a library depends on version 1.0, you know it will work with version 
>> 1.1,
>> >> 1.2, and so forth. Only major versions, such as a leap from 1.5 to 
>> 2.0, have
>> >> breaking changes.
>> >>
>> >> - James
>> >
>> > --
>> > You received this message because you are subscribed to the Google
>> > Groups "Clojure" group.
>> > To post to this group, send email to clo...@googlegroups.com<javascript:>
>> > Note that posts from new members are moderated - please be patient with 
>> your
>> > first post.
>> > To unsubscribe from this group, send email to
>> > clojure+u...@googlegroups.com <javascript:>
>> > For more options, visit this group at
>> > http://groups.google.com/group/clojure?hl=en
>>
>>
>>
>> --
>> Sean A Corfield -- (904) 302-SEAN
>> An Architect's View -- http://corfield.org/
>> World Singles, LLC. -- http://worldsingles.com/
>>
>> "Perfection is the enemy of the good."
>> -- Gustave Flaubert, French realist novelist (1821-1880)
>>
>> --
>> You received this message because you are subscribed to the Google
>> Groups "Clojure" group.
>> To post to this group, send email to clo...@googlegroups.com<javascript:>
>> Note that posts from new members are moderated - please be patient with 
>> your first post.
>> To unsubscribe from this group, send email to
>> clojure+u...@googlegroups.com <javascript:>
>> For more options, visit this group at
>> http://groups.google.com/group/clojure?hl=en
>>
>
>

-- 
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

Reply via email to