SORU
3 EKİM 2008, Cuma


Nasıl Clojure bir web uygulaması yapıyor musunuz?

Bu günlük Java ile çalışan programcılar büyük çoğunluğu garip bir soru olacak sanırım. Bilmiyorum. Java projelerinde, ama Java dünyayı değil çalıştığım için Java-dil, biliyorum. Ben hiç Java sıfırdan bir web uygulaması yaptılar. Eğer bunu yapmak zorundayım ile Python, Ruby, nereye gideceğimi biliyorum (Django ya da Rails), ama yapmak istersem bir web uygulamasında Clojure, çünkü ben zorla yaşamak için bir Java dünya, ama çünkü ben gibi dil ve istediğim bir deneyin vermek için, ne kütüphaneler ve çerçeveler kullanmalıyım?

CEVAP
17 Temmuz 2010, CUMARTESİ


Compojure artık web uygulamaları geliştirmek için tam bir çerçeve. 0.4 yayımlandıktan sonra, compojure çeşitli projeler içine kırılmış oldu.

Ring HTTP istek ve yanıt süreci özetleme uzakta bir temel oluşturmaktadır. Halka gelen isteği ayrıştırmak ve bir harita uri, sunucu adı ve istek yöntemi gibi istek parçaları içeren oluşturur. Uygulama daha sonra isteği işlemek ve isteğine göre bir tepki oluşturur. Bir harita aşağıdaki anahtarları içeren olarak temsil edildiği bir cevap: durum, başlıkları ve vücut. Basit bir uygulama gibi görünecektir:

(def app [req]
  (if (= "/home" (:uri req))
    {:status 200
     :body "<h3>Welcome Home</h3>"}
    {:status 200 
     :body "<a href='/home'>Go Home!</a>"}))

Ring, diğer kısmı orta-ware kavramı. Bu işleyici ve gelen istek ve/veya giden yanıt arasında yer alan kodudur. Bazı orta-ware inşa seans ve stacktrace vardır. Oturum orta-tesisat ekler :istek için oturum anahtarı info oturum her kullanıcı için istekte içeren harita. Eğer :oturum anahtarı yanıt varsa göster, sonraki isteği geçerli kullanıcı tarafından yapılan saklı olacak. İzleme orta-ware yığın istek işleme sırasında oluşan tüm özel durumları yakalamak ve bir yığın izleme oluşturur iken, eğer herhangi bir özel durum oluşursa yanıt olarak gönderilir.

Doğrudan Halka ile çalışmak sıkıcı olabilir, Compojure Yüzük ayrıntıları özetleme hemen üstüne inşa edilmiştir. Uygulama şimdi şöyle bir şey var böylece yönlendirme: olarak ifade edilebilir

(defroutes my-routes
  (GET "/" [] "<h1>Hello all!</h1>")
  (GET "/user/:id" [id] (str "<h1>Hello " id "</h1>")))

Compojure hala gerekirse her zaman onları erişebilirsiniz böylece yanıt haritalar/: istek ile çalışıyor

(defroutes my-routes
  (GET "*" {uri :uri} 
           {:staus 200 :body (str "The uri of the current page is: " uri)}))

Bu durumda {urı :urı} bölümü erişir :urı anahtar ve değer için urı ayarlar göster.

Son bileşen daha kolay html üreten yapan Hiccup. Çeşitli html etiketlerini ilk öğe etiket adı temsil eden ve geri kalan etiketi gövdesi ile vektör olarak temsil edilir. "<h2>A header</h2>" [:h2 "A Header"] olur. Etiket öznitelikleri isteğe bağlı bir harita. "<a href='/login'>Log In Page</a>" [:a {:href "/login"} "Log In Page"] olur. İşte küçük bir örnek, html oluşturmak için bir şablon kullanarak.

(defn layout [title & body]
  (html
    [:head [:title title]]
    [:body [:h1.header title] body])) 

(defn say-hello [name]
  (layout "Welcome Page" [:h3 (str "Hello " name)]))

(defn hiccup-routes
  (GET "/user/:name" [name] (say-hello name)))

Burada bazı belgeler şu anda yararlı olabilir compojure yazarı tarafından yazılan kaba taslak bir link: Compojure Doc

Bunu Paylaş:
  • Google+
  • E-Posta
Etiketler:

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • CommonArtisan

    CommonArtisa

    7 Temmuz 2012
  • LiveForGodsKingdom

    LiveForGodsK

    6 NİSAN 2008
  • Tinkernut

    Tinkernut

    28 Aralık 2006