2013-05-28 12 views
5

कुछ अच्छे तरीके (पुस्तकालयों या कोड) दोनों मार्ग और Clojure में URL पीढ़ी करने के लिए क्या हैं?क्लोजर में रूटिंग रूटिंग/यूआरएल पीढ़ी?

मैं Compojure स्रोत कोड को देखा है, लेकिन कोई संकेत नहीं है कि अपने मार्ग भी यूआरएल पीढ़ी के लिए की सेवा करने के लिए है देखा। उसके अलावा और क्या है वहाँ?

एक जवाब है कि कहते हैं वास्तव में बहुत उपयोगी है, इसे वापस ऊपर सबूत और/या अनुभव के साथ यदि आप "ऐसी कोई पुस्तकालय है।"

इस प्रश्न के लिए प्रेरणा Rails Routing Guide के पहले खंड से आती है: "रेल राउटर यूआरएल को पहचानता है और उन्हें नियंत्रक की क्रिया में भेजता है। यह आपके विचारों में हार्डकोड स्ट्रिंग की आवश्यकता से बचने के पथ और यूआरएल भी उत्पन्न कर सकता है। "

प्रिय आप: मैं किसी को वहां से जानता हूं (शायद आप?) कहना चाहते हैं, "यूआरएल पीढ़ी के बारे में चिंता न करें; बस अपने यूआरएल के लिए हार्डकोड स्ट्रिंग्स"। हां, मुझे पता है कि ऐसा कर सकता है, लेकिन यह इस प्रश्न का उत्तर नहीं देता है। :) यह संयुक्त रूटिंग और यूआरएल पीढ़ी के ज्ञान या पेशेवरों और विपक्ष के बारे में एक प्रश्न है। यह लगभग है आप इसे कैसे करते हैं?

उत्तर

4

Pedestal की सेवा परत दोनों मार्ग और यूआरएल पीढ़ी करता है, इस कार्यक्षमता को पेडस्टल दस्तावेज के Service Routing अनुभाग में वर्णित किया गया है।

1

मैं तुम्हें मार्ग पैटर्न नाम और उनके लिए यूआरएल उत्पन्न करने के लिए अनुमति देता है कि compojure के मार्ग मैक्रो के लिए एक न्यूनतम प्रतिस्थापन लिखा है। यह https://github.com/joodie/clout-link

2

मैं बस route-one पर आया जो ऐसा लगता है कि यह ऐसा करता है। यह एक छोटी पुस्तकालय है जो कंपोज़र के साथ पूरी तरह से संगत है, और मार्गों को परिभाषित करने का एक तरीका प्रदान करता है जिसे रिवर्स में चलाया जा सकता है।

अपनी दस्तावेज़ीकरण से, आप इस तरह एक मार्ग को परिभाषित कर सकते हैं:

(defroute document "/documents/:document-id") 

और सहायक कार्यों की एक जोड़ी उत्पन्न हो जाएगा:

(document-path :document-id "123") 
;; => "/documents/123" 

(with-base-url "https://myservice.com" 
    (document-url :document-id "123")) 
;; => "https://myservice.com/documents/123" 
0

बहुत बाद में, लेकिन Clojure पारिस्थितिकी तंत्र काफी ले जाया गया है थोड़ा:

  • pedestal service-routing ऐसा करता है (लेकिन अन्य चीजों के लिए खरीद-इन की आवश्यकता है)
  • bidi केवल करता है कि तुम क्या वर्णन है, और यह भी अन्य पुस्तकालयों के साथ एक अच्छा तुलना है।

बीड़ी README से लिया, यहाँ एक तुलना (Run code बटन का उपयोग) है: (मुझे लगता है कि क्योंकि stackoverflow markdown कोई तालिका समर्थन हासिल है HTML का उपयोग करने में किया था)।

<table> 
 
<thead> 
 
<tr> 
 
<th>Library</th> 
 
<th>clj</th> 
 
<th>cljs</th> 
 
<th>Syntax</th> 
 
<th>Isomorphic?</th> 
 
<th>Self-contained?</th> 
 
<th>Extensible?</th> 
 
</tr> 
 
</thead> 
 
<tbody> 
 
<tr> 
 
<td><a href="https://github.com/weavejester/compojure">Compojure</a></td> 
 
<td>✔</td> 
 
<td></td> 
 
<td>Macros</td> 
 
<td></td> 
 
<td>✔</td> 
 
<td></td> 
 
</tr> 
 
<tr> 
 
<td><a href="https://github.com/cgrand/moustache">Moustache</a></td> 
 
<td>✔</td> 
 
<td></td> 
 
<td>Macros</td> 
 
<td></td> 
 
<td>✔</td> 
 
<td></td> 
 
</tr> 
 
<tr> 
 
<td><a href="https://github.com/clojurewerkz/route-one">RouteOne</a></td> 
 
<td>✔</td> 
 
<td></td> 
 
<td>Macros</td> 
 
<td>✔</td> 
 
<td>✔</td> 
 
<td></td> 
 
</tr> 
 
<tr> 
 
<td><a href="http://pedestal.io/">Pedestal</a></td> 
 
<td>✔</td> 
 
<td></td> 
 
<td>Data</td> 
 
<td>✔</td> 
 
<td></td> 
 
<td></td> 
 
</tr> 
 
<tr> 
 
<td><a href="https://github.com/thatismatt/gudu">gudu</a></td> 
 
<td>✔</td> 
 
<td></td> 
 
<td>Data</td> 
 
<td>✔</td> 
 
<td>✔</td> 
 
<td></td> 
 
</tr> 
 
<tr> 
 
<td><a href="https://github.com/gf3/secretary">secretary</a></td> 
 
<td></td> 
 
<td>✔</td> 
 
<td>Macros</td> 
 
<td>✔</td> 
 
<td>✔</td> 
 
<td>✔</td> 
 
</tr> 
 
<tr> 
 
<td><a href="https://github.com/DomKM/silk">silk</a></td> 
 
<td>✔</td> 
 
<td>✔</td> 
 
<td>Data</td> 
 
<td>✔</td> 
 
<td>✔</td> 
 
<td>✔</td> 
 
</tr> 
 
<tr> 
 
<td><a href="https://github.com/Prismatic/fnhouse">fnhouse</a></td> 
 
<td>✔</td> 
 
<td></td> 
 
<td>Macros</td> 
 
<td></td> 
 
<td></td> 
 
<td>✔</td> 
 
</tr> 
 
<tr> 
 
<td>bidi</td> 
 
<td>✔</td> 
 
<td>✔</td> 
 
<td>Data</td> 
 
<td>✔</td> 
 
<td>✔</td> 
 
<td>✔</td> 
 
</tr> 
 
</tbody> 
 
</table>

संबंधित मुद्दे