Getting startedwith noir-clojureexchange-2011

Preview:

DESCRIPTION

Really simple guide to Noir, a web framework written in Clojure. Get going with Noir in minutes.

Citation preview

TheThereally frakking really frakking simple guide simple guide

to (Noir)to (Noir)

- or how I learned to stop worrying about

MVC and love the (function)

@jr0cket

john.jr0cket.co.uk

clojure.jr0cket.co.uk

Clojure.jr0cket.co.uk

Why use Noir

Functional programming web framework

Simplicity over design patters

Micro framework built on others

Functional for the web

Big blog of stuff in > Big blob of stuff out

Encourages modularising responsibilities

Good at processing data in parallel

What does Noir look like?

Noir uses other components

Hiccup [hiccup "0.3.7"]

Representing HTML in Clojure. It uses ● vectors to represent tags● maps to represent a tag's attributes

user=> (use 'hiccup.core)

user=> (html [:span {:class "foo"} "bar"])

"<span class=\"foo\">bar</span>"

user=> (html [:div#foo.bar.baz "bang"])

"<div id=\"foo\" class=\"bar baz\">bang</div>"

user=> (html [:ul (for [x (range 1 4)] [:li x])])

"<ul><li>1</li><li>2</li><li>3</li></ul>"

Ring

Modular web applications

applications, web servers, and web frameworks.

Compojure

Maps requests to handlers

(defpage "/" [ ] "hello")

Getting Started

Download

webnoir.org

Or via build tool

Leiningen

Cake

Requirements

Java 5

Java 6 (better performance)

Leiningen Build tool

Get Leiningen (Line – ing – en):

github.com/technomancy/leiningen

lein

Tesing Leiningen

lein repl

Leiningen REPL in action

Use the Leiningen Noir plugin you must

lein plugin install lein-noir 1.2.1

For easy project creation, use lein noir plugin you must

My first Noir project

Create a new Noir project

lein noir new my-website

Choose wisely your website name, you must!

Running your website

lein run

lein repl

(server/start 3000)

Modify your server dynamically you should,

Using lein repl you must!

Choose your port wisely young jedi

Noir project definition

project.clj

Noir server definition

server.clj

Noir server definition

View/welcome.clj

Noir View common definitions

view/common.clj

Simple todo list

Simple todo list - Output

Using forms

A bigger example

All hail ...

An interactive shell for clojure

Experiment with clojure in a safe and easy way

Try Clojure - project.clj

Try Clojure - core.clj

Try Clojure lists - core.clj

Try Clojure text – core.clj

Try Clojure – CSS & JS – core.clj

Getting Data

Where to find out more

Where to find out more...

http://webnoir.org/

https://github.com/ibdknox/noir

Where to find out more...

Extreme Startup Workshop

Use Noir to build your product and compete against others

Thank you

No (parentheses) were harmed in the making of this

presentation....

@jr0cketjohn.jr0cket.co.uk

clojure.jr0cket.co.uk

Recommended