سؤال

أعتقد أن هذا هو سؤال غريب أن غالبية كبيرة من المبرمجين أن العمل اليومي مع جافا.لا.أنا أعرف جافا في اللغة, لأنني عملت على جافا مشاريع ، ولكن ليس جافا العالم.لم ويب التطبيق من الصفر في جاوة.إذا كان يجب أن تفعل ذلك مع Python, Ruby, أنا أعرف إلى أين أذهب (جانغو أو القضبان), ولكن إذا كنت تريد أن تجعل تطبيق ويب في Clojure ، ليس لأنني أجبرت على العيش في جافا العالم, ولكن لأنني أحب اللغة و أريد أن محاولة إعطائها ، وما المكتبات والأطر التي يجب استخدامها ؟

هل كانت مفيدة؟

المحلول

وحتى الآن الإطار أفضل كلوجر الويب لقد واجهت حتى الآن هو Compojure: HTTP: // جيثب. كوم / weavejester / compojure / شجرة / سيد

وانها صغيرة ولكنها قوية، وبناء جملة جميلة أنيقة. (ويستخدم جيتي تحت غطاء محرك السيارة، لكنه يخفي API بريمج منك إلا إذا كنت ترغب في ذلك، والتي لن تكون في كثير من الأحيان). يذهب للبحث في README في ذلك URL، ثم تحميل لقطة وبدء اللعب.

نصائح أخرى

وCompojure لم يعد إطارا متكاملا لتطوير تطبيقات الويب. منذ إصدار 0.4، تم كسر compojure خارج في عدة مشاريع.

حلقة يوفر الأساس من خلال الاستخلاص بعيدا طلب HTTP وعملية الاستجابة. سوف عصابة تحليل الطلب الوارد وإنشاء مخطط يحتوي على كافة أجزاء من طلب مثل اوري، اسم الخادم وطلب-الأسلوب. سيقوم التطبيق ثم التعامل مع الطلب وبناء على طلب تولد استجابة. ويمثل استجابة كخريطة تحتوي على المفاتيح التالية: الحالة، ورؤوس، والجسم. حتى تطبيق بسيط ستبدو:

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

واحد جزء آخر من الدائري هو مفهوم المتوسطة وير. هذا هو رمز التي تقع بين المعالج وطلب وارد و / أو الاستجابة الصادرة. بعض بني في منتصف وير تشمل دورات وتتبع مكدس الذاكرة المؤقتة. وستعقد الدورة في منتصف وير إضافة: مفتاح الدورة إلى خريطة طلب أن يحتوي على كافة معلومات الدورة للمستخدم جعل الطلب. إذا: مفتاح جلسة عمل موجود في خريطة ردا على ذلك، سيتم تخزينها لطلب المقبل التي أجراها المستخدم الحالي. في حين تتبع مكدس منتصف وير سوف التقاط أي استثناءات التي تحدث أثناء معالجة الطلب وإنشاء تتبع المكدس التي يتم إرسالها يعود إلى استجابة إذا أي استثناءات لم يحدث.

العمل مباشرة مع حلقة يمكن أن تكون مملة، لذلك Compojure هو مبني على رأس عصابة التلخيص بعيدا تفاصيل. ويمكن الآن أن أعرب عن تطبيق من حيث التوجيه حتى تتمكن من الحصول على شيء من هذا القبيل:

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

وCompojure لا يزال يعمل مع الطلب / استجابة خرائط حتى تتمكن من الوصول دائما لهم إذا لزم الأمر:

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

في هذه الحالة {اوري: أوري} جزء بالوصول إلى: مفتاح أوري في خريطة الطلب ويحدد اوري إلى تلك القيمة

والعنصر الأخير هو زوبعة مما يجعل توليد أتش تي أم أل أسهل. يتم تمثيل مختلف علامات HTML كما ناقلات مع العنصر الأول يمثل اسم العلامة والباقي الجسم من العلامة. يصبح "<h2>A header</h2>" [:h2 "A Header"]. سمات علامة هي في خريطة اختيارية. يصبح "<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)))

وهنا هو وجود صلة لمسودة من بعض الوثائق حاليا كتبه مؤلف compojure التي قد تجد مفيدة: <لأ href = "https://docs.google.com/Doc؟docid=0AQqGP1CDN0uIZGhmZjJmcGZfMjNjNHIycGZu&hl=en "يختلط =" noreferrer "> Compojure الوثيقة

وهناك أيضا "نوار" ( http://www.webnoir.org/ )، وهو جديد إطار الشبكة كلوجر (جديد حتى مستندات ليست هناك حتى الآن). القادمة من جانغو / القضبان، وحفر، وتركيب بسيط بسيط وانها الهزيل جدا.

مينوس إطار الشبكة . ليس لدي أي انتماء لكن سمعت أشياء جيدة من الأصدقاء وأنا أحترم.

بلدي الحالي تذهب إلى مكتبة الويب الآن يادا.

إذا كنت بدأت للتو ، تمهيدية الخادم Compojure.أرى أنها apache من ملقمات ويب في Clojure العالم (في هذه الحالة يادا/أليف سيكون إنجن إكس).هل يمكن استخدام Luminus كقالب.هناك أنواع من مثل compojure-api.

حاولت ou Pedestal وكان عالميا راض عن ذلك.أنا لا أدعي أن السيطرة عليه ، ولكن لديها لطيف الجملة ، يشعر متماسك جدا و يبدو أنه لا يكون أداء رائعا.مدعومة أيضا من قبل Cognitect (إن Clojure/Datomic الشركة حيث الغنية هيكي يعمل).

وجدت Aleph لتقديم مثيرة للاهتمام التجريد ، و المدمج في احداهما تبدو مثيرة للاهتمام.لم تلعب معها, لكنه بالتأكيد على قائمتي.

بعد ان لعب قليلا مع ملقمات ويب مختلفة, هنا هو بلدي سريعة برو/سلبيات قائمة :

الجواب القصير :إلقاء نظرة على لومينوس أن تبدأ بسرعة ، وربما الانتقال إلى شيء آخر كما احتياجاتك تتطور (يادا ربما).

Compojure

  • الايجابيات (1):

    • سهل الكثير من القوالب/أمثلة (ex.مضيئة)
  • سلبيات (2):

    • لا performant (موضوع في الطلب) ، نتوقع أداء أفضل قليلا من القضبان
    • ليست بسيطة ، الوسيطة نموذج inconvenients

التمثال

  • الايجابيات (3):

    • اعتراضية نموذج لطيف جملة لإضافة الاعتراضية إلى مجموعة فرعية من الطرق
    • performant التوجيه
    • يدعم سلمان/العبور/أشكال متعددة بشفافية في الخروج من مربع دون أن يطلب أي شيء.بارد جدا !
  • سلبيات (4):

    • لا websocket الدعم (بعد) ، والعودة الأساسية.المتزامن قنوات سيكون لطيفا
    • بطيئة في تحديث إذا وضعه في ستيوارت سييرا عنصر (على ما أظن كنت من المفترض أن استخدام تحديث اعتراضية)
    • لا اختبار مرفق المتزامن الاعتراضية
    • يتطلب شراء-في (?)

أليف

برو (3):

  • Performant
  • احداهما
  • Websocket/SSE الدعم عند عودته مشعب تيار

سلبيات (1):

  • انخفاض مستوى تفعل ذلك بنفسك نمط (ie.فإنه يوفر لك طريقة لجعل الخاص بك معالجات تفعل شيئا.لا جهاز التوجيه ، لا شيء).لا سلبيات فقط يكون على بينة من ذلك.

يادا

برو (3):

  • بنيت على أليف
  • المحتوى negociation
  • غرور التكامل
  • bidi هو موافق تماما (على الرغم من أنني مثل التمثال التوجيه الجملة أفضل)

سلبيات (1):

  • الوثائق (وإن لم يكن سيئا كما nginx-clojure بسرعة تحسين).

HttpKit

برو (2):

  • مكتوب في Clojure !(و Java...)
  • أداء تبدو جيدة (انظر 600K الاتصالات المتزامنة بعد)

سلبيات (2):

  • لا كر الدعم
  • الحشرات ؟ أيضا ، ليس هناك الكثير من يرتكب الأخيرة

Nginx-Clojure

ملاحظة :أنا لم ألعب معها ، وذلك أساسا بسبب عدم وجود وثائق.تبدو مثيرة للاهتمام على الرغم جدا وقوية.

الايجابيات (2):

  • Nginx (performant, تحميل ssl, تشغيل العمال...)
  • يمكن هذا النموذج يسمح صفر التوقف التحديثات ؟ التي من شأنها أن تكون رهيبة جدا !

سلبيات (1):

  • الوثائق (تحسين).أيضا, أنا لا أريد أن البرنامج في سلاسل المضمنة في ملف التكوين إنجن إكس إذا كان هذا هو السبيل الوحيد للقيام بذلك.
  • ربما يعقد قليلا نشر أول (?)

Immutant

ملاحظة :أنا لم ألعب معها.

الايجابيات :

  • المتكاملة (التخزين المؤقت, الرسائل, جدولة, wildfly نشر)

سلبيات :

  • أي عميل http

Copacabana

ملاحظة :أنا لم ألعب مع ذلك ، على الرغم من أن الوثائق تبدو ممتازة.أنا ربما سوف نحاول المقبل.هناك على سبيل المثال الدردشة المشاريع التي تبدو مثيرة للاهتمام ، الثقيلة استخدام بروتوكولات وضعت لي في البداية كما مبتدئا Clojure dev.

الايجابيات (6):

  • الوثائق !مثل كل funcool المشاريع ، الدكتور جدا ممتعة للقراءة.
  • التمثال-مثل توجيه جملة
  • يجب أن يكون performant (على رأس Ratpack)
  • احداهما
  • websockets, sse, كر, الأمن, ssl...
  • ميزات فريدة من نوعها إلى حفر :البريد

سلبيات (2):

  • ليس متأكدا تماما عن كيف لطيف ct/طرق بناء الجملة ، عن التخندق خاتم المواصفات (يفترض المتزامن القصة ، ولكن اعتقد ان التمثال الرجال الثابتة التي)
  • غير متأكد من كيفية دمج اختيال.... الخ
  • عندما حاولت ذلك, لم أكن قادرة على أن تجعل من العمل مباشرة

ملاحظة :a معيار Clojure ملقمات ويب هو متاح ، إذا الخام الأداء هو كل ما يهم.

الركيزة هو إطار تستحق نظرة. إنها إطار من جانب الخادم الذي يبني على رأس حلقة ، ولكن أيضا يحرر طلب وارد من الخيط الأولي من خلال قدرته على التوقف واستئناف هذا الطلب خاص (وإلا طلب بطيئة عرقلة الواقع أن serverthread). ربما نوع من مثل التخطيط الاستراتيجي المشترك JavaBean.

والأطر باردة أخرى هي hoplon.io و ديفيد نولين في <لأ href = "HTTP: //swannodette.github .io / 2013/12/17 / للمستقبل من بين جافا سكريبت-mvcs / "يختلط =" نوفولو noreferrer "> أم (وبناء على رد فعل)

Webjure أو إطار برمجة الويب لكلوجر.

وميزات: ارسال بريمج يدعو ظائف كلوجر. الجيل HTML الديناميكي. واجهة الاستعلام SQL (من خلال JDBC).

وهذا هو المقصود الجواب كعنصر نائب للحصول على معلومات Webjure.

وفي Compojure ما كنت لبناء تطبيق المدونات الصغيرة. انها على غرار سيناترا، وهو الحد الأدنى، وإطار الشبكة خفيفة الوزن لروبي. أنا في الغالب تستخدم فقط التوجيه، الذي هو تماما مثل سيناترا. يبدو:

(GET "/post/:id/:slug"
  (some-function-that-returns-html :id :slug))

وليس هناك مكتبة ORM أو النموذجيه، ولكن لديها مهام التي تتحول إلى ناقلات HTML.

هل يمكن أن يكون أيضا نظرة على هذه الأطر (مأخوذة من disclojure/المشاريع):

وهناك أيضا أكثر واحد ذات السؤال على تجاوز سعة المكدس: ناضجة Clojure ويب الأطر?

تنويه: أنا مؤلف

.

ولقد وضعت قالب leiningen الذي يجمع بين luminusweb والكستناء القوالب. حتى تحصل على ما يمكنك بناء كود كلوجر مع ورمز clojurescript للجبهة والخلفية.
بالإضافة إلى أنه يوفر إدارة المستخدم بالإضافة إلى بعض جيل CRUD بسيطة وبعض لطيفة أكثر صغير لالأغنياء: https://github.com/sveri / closp

أنا رمي في بلدي اثنين سنتا القناة, أيضا من @weavejester, ، معيل من Compojure وخاتم.

على أنها أساسية ، فإنه يجلب مكون و خاتم التوجيه تحت سقف واحد.أسباب استخدام لاصق:

  • ممتازة الأساس الفلسفي:وتشجع لك لبناء التطبيق الخاص بك في سلسلة من المكونات الصغيرة ، وأنه يضرب توازن لطيف بين عقد بعض الآراء مع توفير عاقل التخلف.
  • مستقرة المسار:أنا أتكلم عن نفسي ، ولكن على مر السنين لقد شعرت أن Clojure المجتمع وقدمت أقل مصداقية إطار الشبكة بعد آخر.بضع ببساطة شعرت أيضا التجريبية (تجربتي مع Om العميل " و " التمثال) من أجل "إنجاز الأمور" (لا يعني أنها لن يثبت متفوقة على الطريق).من ناحية أخرى, أشعر @weavejester جلبت نفس والاستقرار قياس التقدم إلى القناة التي فعلها Compojure وخاتم التي كانت رائعة ولدت في المجتمع.
  • انها سوبر خفيفة الوزن و للخروج من الطريق من المكونات.

الميزات الرئيسية:

  • تنظم طرق من قبل "النهاية" ، والمكونات الصغيرة التي يمكن أن يمكن أن تفكر مصغرة ملقمات ويب (أو الصغيرة عبر أقسام HTTP طرق).
  • الخروج من مربع التأييد حصريا سير العمل.
  • تكامل تام مع الخاتم و Compojure.
  • تطوير و إنتاج تكوينات (شيء لقد وجدت واضح في عداد المفقودين في مكان آخر).
  • وثائق جيدة مع الأمثلة.

ملاحظة: وغني عن القول, ولكن من أجل الاستفادة من الشبكة العالمية للتنمية القادمين الجدد ، مثل معظم Clojurey الأشياء القناة يتطلب فهم متين من Clojure اللغة.وأوصى أيضا القراءة عن العنصر الأول.

على آخر ملاحظة شخصية, لقد تم استخدام القناة في عدة تطبيقات الإنتاج لأكثر من سنة الآن وأنا سعيد للغاية معها.

ويمكنك أيضا محاولة كلوجر على لفائف، http://github.com/zubairq/coils - تنويه: أنا مؤلف

وخادم آخر للاهتمام هو المتشعب طقم . لديها الأداء الجيد وغير متوافقة حلقة، ويحظى بدعم لمآخذ الويب كذلك. وهي مصنوعة معظمها في كلوجر، ويفتقر إلى بعض الأشياء الغريبة في جيتي / القط.

من السهل أن العبث به.

وإعادة تأطير وom.next ربما ما كنت تبحث عنه.

أراكني هو إطار الوافد الجديد على شبكة الإنترنت. نقلا عن وصف الموقع:

<اقتباس فقرة>   

وأراكني هو، إطار تطوير وحدات للغاية الويب الكامل ل   كلوجر. ويؤكد سهولة والبساطة وصلبة وقابلة للتطوير   التصميم.

ولديه كيك ستارتر حملة يدعي تقديم "بدء" تجربة مماثلة لالقضبان. أنه وضعت من قبل Cognitect.

هنا عبارة مناقشة جيدة حول هذا الموضوع مع صاحب مينوس (yogthos).

ولقد تم استخدام المحرر بنجاح في الإنتاج لبعض الوقت الآن. إنها إطار عظيم إذا كنت تريد فقط العظام العارية على سبيل المثال إذا كنت بناء خدمة ويب مريحة أو شيئا من هذا القبيل. انها في الأساس مجمع لعصابة وcompojure ويقدم الرسم البياني القرار عند التحقق من صحة الطلبات الواردة. كما انها سريعة للغاية بالمقارنة مع الأطر الأخرى على شبكة الإنترنت أكثر ضخمة. إذا كنت تريد أن تبدأ في مكان ما بسرعة وببطء بناء من ثم المحرر هو خيار كبير.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top