কম্পিউটার অ্যাপ্লিকেশন বিকাশের জন্য কমপেজ আর সম্পূর্ণ কাঠামো নয়। 0.4 প্রকাশের পর থেকে, কম্পোজারটি কয়েকটি প্রকল্পে বিভক্ত হয়ে গেছে।
রিং এইচটিটিপি অনুরোধ এবং প্রতিক্রিয়া প্রক্রিয়া দূরে রেখে ফাউন্ডেশন সরবরাহ করে। রিং আগত অনুরোধটিকে বিশ্লেষণ করবে এবং অনুরোধের সমস্ত অংশ যেমন ইউরি, সার্ভার-নাম এবং অনুরোধ-পদ্ধতি সম্বলিত একটি মানচিত্র তৈরি করবে। অ্যাপ্লিকেশন তারপরে অনুরোধটি পরিচালনা করবে এবং অনুরোধের ভিত্তিতে একটি প্রতিক্রিয়া উত্পন্ন করবে। প্রতিক্রিয়াটিকে নিম্নোক্ত কীগুলি সহ একটি মানচিত্র হিসাবে উপস্থাপিত করা হয়: স্থিতি, শিরোনাম এবং বডি। সুতরাং একটি সাধারণ অ্যাপ্লিকেশন এর মত দেখতে হবে:
(def app [req]
(if (= "/home" (:uri req))
{:status 200
:body "<h3>Welcome Home</h3>"}
{:status 200
:body "<a href='/home'>Go Home!</a>"}))
রিংয়ের অন্য একটি অংশ হ'ল মাঝারি জিনিসপত্রের ধারণা। এটি হ্যান্ডলার এবং আগত অনুরোধ এবং / অথবা বহির্গামী প্রতিক্রিয়ার মধ্যে বসে এমন কোড। মাঝারি ওয়্যার মধ্যে নির্মিত কিছু সেশন এবং স্ট্যাকট্রেস অন্তর্ভুক্ত। সেশন মাঝারি ওয়্যার একটি যুক্ত করবে: অনুরোধ মানচিত্রে সেশন কী যা ব্যবহারকারীর জন্য অনুরোধটি করার জন্য সেশন সম্পর্কিত সমস্ত তথ্য রাখে। যদি সেশন কী প্রতিক্রিয়া মানচিত্রে উপস্থিত থাকে তবে এটি বর্তমান ব্যবহারকারীর দ্বারা পরবর্তী অনুরোধের জন্য সংরক্ষণ করা হবে। স্ট্যাক ট্রেস মিডল ওয়্যার অনুরোধটি প্রক্রিয়া করার সময় ঘটে যাওয়া কোনও ব্যতিক্রম ক্যাপচার করবে এবং কোনও ব্যতিক্রম ঘটলে প্রতিক্রিয়া হিসাবে ফেরত পাঠানো স্ট্যাকের ট্রেস তৈরি করবে।
রিংয়ের সাথে সরাসরি কাজ করা ক্লান্তিকর হতে পারে, সুতরাং বিবরণটি বিমুগ্ধ করে রিংয়ের শীর্ষে কমপেজ তৈরি করা হয়েছে। অ্যাপ্লিকেশনটি এখন রাউটিংয়ের ক্ষেত্রে প্রকাশ করা যেতে পারে যাতে আপনার এর মতো কিছু থাকতে পারে:
(defroutes my-routes
(GET "/" [] "<h1>Hello all!</h1>")
(GET "/user/:id" [id] (str "<h1>Hello " id "</h1>")))
কমপোজারটি এখনও অনুরোধ / প্রতিক্রিয়া মানচিত্রের সাথে কাজ করছে যাতে প্রয়োজন হলে আপনি সর্বদা এগুলিতে অ্যাক্সেস করতে পারেন:
(defroutes my-routes
(GET "*" {uri :uri}
{:staus 200 :body (str "The uri of the current page is: " uri)}))
এক্ষেত্রে {ইউরি: ইউরি} অংশটি অনুরোধের মানচিত্রে ইউরি কীটি অ্যাক্সেস করে এবং ইউরিটিকে সেই মানটিতে সেট করে।
শেষ উপাদান হিচাপ যা এইচটিএমএল উত্পাদন সহজ করে তোলে। বিভিন্ন এইচটিএমএল ট্যাগগুলি প্রথম উপাদানটির সাথে ট্যাগের নাম উপস্থাপন করে এবং বাকিগুলি ট্যাগের মূল অংশ হিসাবে ভেক্টর হিসাবে উপস্থাপিত হয়। "<h2>A header</h2>"
হয়ে [:h2 "A Header"]
। একটি ট্যাগের বৈশিষ্ট্যগুলি একটি alচ্ছিক মানচিত্রে রয়েছে। "<a href='/login'>Log In Page</a>"
হয়ে [:a {:href "/login"} "Log In Page"]
। এইচটিএমএল উত্পন্ন করতে একটি টেম্পলেট ব্যবহার করে এখানে একটি ছোট উদাহরণ।
(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)))
এখানে কয়েকটি ডকুমেন্টেশনের রুক্ষ খসড়ার লিঙ্কটি বর্তমানে রচনা করেছেন রচনাটির রচয়িতা যা আপনাকে সহায়ক হিসাবে খুঁজে পেতে পারে: কমপেজ ডক