हास्केल के स्नैप और यसोद वेब फ्रेमवर्क की तुलना करना


231

समाचार में दो हास्केल वेब फ्रेमवर्क हाल ही में यसोड (0.8 पर) और स्नैप (0.4 पर) हैं।

यह बिल्कुल स्पष्ट है कि Yesod वर्तमान में Snap की तुलना में बहुत अधिक सुविधाओं का समर्थन करता है। हालाँकि, मैं HTML, CSS और जावास्क्रिप्ट के लिए सिंटैक्स Yesod का उपयोग नहीं कर सकता।

इसलिए, मैं यह समझना चाहूंगा कि अगर मैं इसके बजाय स्नैप के साथ चला गया तो मुझे क्या याद आ रहा है। उदाहरण के लिए, डेटाबेस समर्थन नहीं है। सत्रों के बारे में कैसे? अन्य सुविधाओं?


138
व्यक्तिगत रूप से मैं वाक्यविन्यास नहीं कर सकता कि HTML html के लिए उपयोग करता है;)
Rehno Lindeque

2
html बनाने के लिए हैमलेट टेम्पलेट सिंटैक्स के बारे में आपको क्या पसंद नहीं है?
mxc

6
मुझे यह पसंद नहीं है कि मैं ड्रीमविवर और यसोड के बीच नहीं जा सकता क्योंकि वाक्य रचना अलग है।
मुचिन

6
सामान्य तौर पर, यसोद टीम नए विचारों के लिए बहुत खुली है। अब जब मैं आपके उपयोग के मामले को जानता हूं, तो मैं शायद आपके लिए एक अच्छे समाधान की सिफारिश कर सकता हूं। यह सबसे अच्छा होगा यदि आप एक वेब-डेवेल सूची को ईमेल भेजते हैं, तो एसओ एक सहयोगी चर्चा के लिए सबसे अच्छी जगह नहीं है।
माइकल स्नॉयमैन

76
लोग अभी भी ड्रीमविवर का उपयोग करते हैं ? ;)
ओ जे।

जवाबों:


236

पूर्ण प्रकटीकरण: मैं स्नैप के प्रमुख डेवलपर्स में से एक हूं।

सबसे पहले बात करते हैं कि Snap क्या है। अभी स्नैप टीम हैकैज पर पांच अलग-अलग प्रोजेक्ट्स का रखरखाव करती है: स्नैप-कोर, स्नैप-सर्वर, हेइस्ट, स्नैप और xmlhtml। स्नैप-सर्वर एक वेब सर्वर है जो स्नैप-कोर द्वारा परिभाषित एपीआई को उजागर करता है। heist एक अस्थायी प्रणाली है। xmlhtml एक XML / HTML पार्सिंग और रेंडरिंग लाइब्रेरी है जिसका उपयोग हीस्ट द्वारा किया जाता है। स्नैप एक छाता परियोजना है जो उन सभी को एक साथ जोड़ देती है और शक्तिशाली स्नैपलेट एपीआई प्रदान करती है जो वेब ऐप्स को रचना और मॉड्यूलर बनाती है।

Yesod के पास हैकेज पर परियोजनाओं का एक मेजबान है। उनमें से अधिकांश (सभी?) Yesod श्रेणी में सूचीबद्ध हैं । उल्लेखनीय लोगों में से कुछ Yesod- कोर, ताना, लगातार, और हैमलेट हैं।

हास्केल वेब विकास की वास्तविकता यह है कि यह किसी विशेष या पसंद की तुलना में कम माना जाता है। सामान्य तौर पर परियोजनाएं बहुत शिथिल युग्मित और काफी विनिमेय होती हैं। आप ताना (यसोद टीम के वेब सर्वर), हेइस्ट (स्नैप टीम के टेम्पलेट सिस्टम), और एसिड-स्टेट (हैप्पस्टैक प्रोजेक्ट की दृढ़ता प्रणाली) का उपयोग करके एक वेबसाइट का निर्माण कर सकते हैं। आप स्नैप-सर्वर का उपयोग हैमलेट या लगातार के साथ भी कर सकते हैं।

उस ने कहा, दोनों परियोजनाओं में निश्चित रूप से कुछ अंतर हैं। सबसे बड़ा अंतर जो मैं स्पष्ट रूप से बता सकता हूं कि यसोड परियोजनाएं आमतौर पर संक्षिप्त डीएसएल बनाने के लिए खाका हास्केल और क्वासिकोटिंग का भारी उपयोग करती हैं, जबकि स्नैप प्रोजेक्ट्स कंपैटिबिलिटी लाइब्रेरी का निर्माण करते हैं जो कंपोजिबिलिटी का पक्ष लेते हैं। बस किसी भी अन्य मतभेदों के बारे में मैं सोच सकता हूं कि यह स्नैप के प्रति पक्षपाती होगा। दोनों परियोजनाओं के नाम वाले छत्र पैकेज स्पष्ट रूप से उपर्युक्त घटकों के लिए विशिष्ट विकल्प बनाने जा रहे हैं, और ये विकल्प परियोजना निर्भरता में परिलक्षित होंगे। लेकिन इसका मतलब यह नहीं है कि आप कुछ अलग नहीं कर सकते और इसका इस्तेमाल भी कर सकते हैं।

स्नैप में सत्र और प्रमाणीकरण होता है , कई डेटाबेस में इंटरफेस होता है, और पाचन-फंक्शनलर्स का उपयोग करते हुए अच्छा फॉर्म हैंडलिंग ( यहां और यहां ) होता है, जिसमें मनमाने ढंग से गतिशील सूचियों के लिए पूर्वनिर्धारित समर्थन शामिल होता है। ये सिर्फ प्लगेबल स्नैपलेट्स के बढ़ते पारिस्थितिकी तंत्र में से कुछ हैं । सत्र और प्रमाणीकरण स्नैपलेट को एक तरह से लिखा जाता है जो बैक-एंड अज्ञेयवादी है। इसलिए गोंद कोड की एक छोटी मात्रा के साथ आप इसे किसी भी दृढ़ता प्रणाली के बारे में सोच सकते हैं जिसका आप उपयोग कर सकते हैं। भविष्य में, स्नैप इस नीति के साथ जितनी बार संभव हो सकेगा।

अधिकांश भाग के लिए मुझे लगता है कि स्नैप बनाम यसोद बनाम हैपस्टैक की पसंद कम सुविधाओं का मुद्दा है और व्यक्तिगत स्वाद का एक अधिक है। जब भी कोई कहता है कि फ्रेमवर्क में से कुछ ऐसा नहीं है जो किसी दूसरे के पास है, तो अधिकांश समय आवश्यक पैकेज को आयात करके अन्य फ्रेमवर्क से लापता कार्यक्षमता में खींचना बहुत आसान होगा।

संपादित करें: बड़े तीन हास्केल वेब फ्रेमवर्क की अधिक विस्तृत तुलना के लिए मेरी हालिया ब्लॉग पोस्ट देखें । कुछ व्यापक सामान्यीकरणों का उपयोग करके रफ़र (लेकिन संभवतः अधिक उपयोगी) की तुलना के लिए, मेरा हास्केल वेब फ्रेमवर्क तुलना मैट्रिक्स देखें


34
हास्केल वेब विकास में अनुकूल प्रतिस्पर्धा और मिक्स-एंड-मैच की दोहरी प्रकृति बहुत आशाजनक लगती है। उस ने कहा, मैं अनुशंसा करूंगा कि स्नैप-ऐस को हैक करने के लिए तैयार किया जाए। सत्र और प्रमाणीकरण एक बड़ी बात है।
डैन बर्टन

2
Yesod भी लगातार के लिए mongodb के रूप में एक अभी तक अप्रकाशित इंटरफ़ेस है।
mxc

4
विकास के वेग का मुझ पर प्रभाव है, इसलिए यह सवाल है। यह बहुत ही अच्छा लग रहा है जैसे Yesod में फीचर्स जोड़ने की गति है, जबकि Snap स्थिर है। मैं अभी यह नहीं जानता कि 6+ महीने पहले मैंने इसके बारे में पहली बार सुना था कि नई सुविधाएँ क्या हैं।
मुचिन

3
स्नैप में बहुत अच्छी गति है। सबसे पहले, यह पिछले साल हैकेज पर सबसे अधिक डाउनलोड किया गया वेब फ्रेमवर्क था, हालांकि यह परियोजना मई तक सार्वजनिक रूप से लॉन्च नहीं हुई थी। दूसरा, दिसंबर में 0.3 रिलीज के बाद से, हमने गतिविधि में एक बड़ी वृद्धि देखी है। सत्र, सामान्य, mongoDB, xmlhtml लाइब्रेरी और अधिक के लिए लाइब्रेरी, उन सभी लोगों द्वारा काम किया जा रहा है जो 2011 में सबसे अधिक नए योगदानकर्ताओं के लिए हैं। आप आमतौर पर #snapframework CC चैनल में 30 या अधिक लोगों को ढूंढ सकते हैं। यह निश्चित रूप से एक सक्रिय परियोजना है।
ताकतवर

2
दो में से मैंने स्नैप के लिए बस इसलिए कहा क्योंकि उस समय, ऐसा लग रहा था कि यह और बड़ा होगा। मैं घटकों की गुणवत्ता से बेहद प्रभावित रहा हूं। हीस्ट के पास एक सुंदर सरल और साफ डिजाइन है जो शायद सबसे अच्छा टेम्पलेटिंग सिस्टम है जिसे मैंने किसी भी भाषा में किसी भी वेब फ्रेमवर्क पर देखा है जो मैंने उपयोग किया है। स्नैप मोनैड्स के साथ काम करना आसान है और आप बहुत अच्छा व्यवहार करते हैं जैसा कि आप चाहते हैं कि कोई बुरा आश्चर्य न हो। मैं सिर्फ यह चाहता हूं कि वे या तो बाइटस्ट्रीम या टेक्स्ट पर मानकीकृत हों क्योंकि आप उनके बीच लगातार रूपांतरण कर रहे हैं!
एंड्रयू

223

निष्पक्ष चेतावनी: मैं यसोद का प्रमुख डेवलपर हूं।

मुझे यकीन नहीं है कि आप जावास्क्रिप्ट सिंटैक्स के बारे में क्या पसंद नहीं करते हैं: यह चर जावास्क्रिप्ट के साथ सादे जावास्क्रिप्ट है। CSS Yesod के लिए अब Lucius है जो आपको सादे CSS का उपयोग करने की अनुमति देता है। HTML के लिए, आप आसानी से किसी भी अन्य पुस्तकालय का उपयोग कर सकते हैं, जिसमें Heist (क्या स्नैप उपयोग करता है) शामिल है। उस ने कहा, यह सीएसएस / जावास्क्रिप्ट सिंटैक्स पर Yesod को छोड़ने के लिए एक अजीब बात है, जब Snap के पास भी सिंटैक्स नहीं है। आप निश्चित रूप से सिर्फ स्थिर फ़ाइलों के उनके समाधान में आपका स्वागत है।

Yesod प्रमाणीकरण / प्राधिकरण, प्रकार-सुरक्षित URL, विगेट्स, ईमेल और सभी जगह छोटी चीज़ों का एक गुच्छा (ब्रेडक्रंब, संदेश, अंतिम गंतव्य) के लिए सहज समर्थन के साथ आता है। साथ ही, यसोड में टिप्पणियों और मार्कडाउन जैसी चीजों के लिए ऐड-ऑन पैकेजों का काफी समृद्ध सेट है, और उदाहरणों के लिए कुछ बड़े वास्तविक-विश्व कोड आधारों को चुनना है। यदि इनमें से कोई भी आपके लिए आकर्षक है, तो आप यह जांचना चाहेंगे कि क्या आपके विकल्प उनका समर्थन करते हैं।


यह बहुत नया है, मुझे अभी तक प्रलेखन अद्यतन करने का मौका नहीं मिला है। लेकिन मूल रूप से, बस सामान्य सीएसएस में टाइप करें, और हैमलेट / कैसियस / जूलियस की तरह प्रक्षेप के लिए # {...} और @ {...} का उपयोग करें। घोंसले के शिकार का भी समर्थन किया जाता है, लेकिन इस टिप्पणी की तुलना में समझाने के लिए थोड़ी अधिक जगह मिलेगी;) यदि आप वेब-डेवेल को ईमेल करते हैं, तो हम आपको कुछ और विवरण दे सकते हैं, जबकि प्रलेखन पकड़ता है।
माइकल स्नॉयमैन

Juliusकोड के बिना उपयोग करने के लिए कोई भी परिवर्तन संपीड़ित किया जा रहा है? मैं usig हूं Google Closureऔर मुझे संकलक के लिए टिप्पणियों में मेटाडेटा रखने की आवश्यकता है।
एंड्रास गियोम्रे

1
मुझे नहीं लगता कि यह इस तरह की चर्चा करने के लिए एक अच्छी जगह है, लेकिन जूलियस कोड को संकुचित होने की कोई आवश्यकता नहीं है (यह डिफ़ॉल्ट रूप से ऐसा नहीं करता है)। यदि आपको अधिक सहायता की आवश्यकता है, तो एक अलग SO प्रश्न या मेलिंग सूची थ्रेड बेहतर शर्त होगी।
माइकल स्नॉयमैन

29

दे गांव एक try- आप हो सकता है अंत में यह पसंद। सतही स्तर पर एक नकारात्मक प्रतिक्रिया असामान्य नहीं है। हालाँकि, किसी ने भी वास्तव में हैमलेट का इस्तेमाल नहीं किया है।

इसके अलावा, हैप्पस्टैक का उपयोग क्यों नहीं किया जाता है? सिर्फ इसलिए कि वे "समाचार में नहीं हैं" इसका मतलब यह नहीं है कि उनके पास एक ठोस ढांचा नहीं है।


21
यस के एक अनुचर ने एक प्रतिस्पर्धा ढांचे को एक कोशिश देने का सुझाव दिया। हमारे पास एक महान समुदाय है।
mxc

12

आप शायद हां के पुराने संस्करण का जिक्र कर रहे हैं। नवीनतम Yesod संस्करणों में html, जावास्क्रिप्ट और सीएसएस के लिए सादे वाक्यविन्यास हैं।

Yesod के टेम्प्लेट लाइब्रेरी हैमलेट का html सिंटैक्स, पूर्ण खोलने और बंद होने वाले टैग और सभी सामान्य HTML विशेषताओं के साथ सादे html है। हां, आप समापन टैग को छोड़ सकते हैं और आईडी और क्लास विशेषताओं के लिए शॉर्टकट का उपयोग कर सकते हैं। लेकिन आपके पास नहीं है। आप सादे html लिखना जारी रख सकते हैं।

न केवल, बल्कि html टेम्पलेट, अलग-अलग फाइलों में, जैसे स्नैप के टेम्प्लेट लाइब्रेरी हेइस्ट में निवास कर सकते हैं।

जावा स्क्रिप्ट टेम्प्लेट (जूलियस) सादे जावास्क्रिप्ट फाइलें हैं, जो अलग-अलग फाइलों में भी रहती हैं।

सीएसएस टेम्प्लेट में वास्तव में एक अलग सिंटैक्स होता है, लेकिन यस के हालिया संस्करण अब सादा सीएसएस सिंटैक्स भी प्रदान करता है।

यदि आप हीस्ट के साथ जाते हैं तो आपके पास सुरक्षित सेफल्स नहीं होंगे।

Heist html में टेम्पलेट हार्डड्राइव से हर बार पढ़ा जाता है। Yesod सीधे निष्पादन योग्य में सभी टेम्पलेटों को संकलित करता है। हार्डड्राइव से कोई फाइल नहीं पढ़ी जाती है। इस प्रकार प्रतिक्रिया बहुत तेज है। आप स्वयं बेंचमार्क देख सकते हैं।

Yesod में आप ऐसे विजेट बना सकते हैं जो अच्छी तरह से सहयोग करते हैं। स्नैप विगेट्स के साथ बिल्कुल भी व्यवहार नहीं करता है। आपको अपना रोल खुद करना होगा।


1
जैसा कि मैंने ऊपर वर्णित किया है, टाइप सुरक्षित URL के बारे में आपकी टिप्पणी गलत है, और मेरे द्वारा बताई गई गलत धारणा को समाप्त करने में मदद करती है। यह अधिक सटीक होगा यदि आपने "स्नैप" के बजाय "हीस्ट" कहा।
पराक्रमी

3
टेम्पलेट इंजन और रूटिंग तंत्र के संयोजन के कारण टाइप सेफ यूरेल संभव है। तो यह केवल Heist नहीं है। आपको केवल हैमलेट का उपयोग करके स्नैप में सुरक्षित सेफ यूआरएल नहीं मिलेगा।
वागीफ वर्डी

1
मैं हैमलेट की बात नहीं कर रहा हूं। वेब-रूट्स पैकेज मूल रूप से हैपस्टैक के लिए लिखा गया था जिसमें अनिवार्य रूप से वही रूटिंग इंटरफ़ेस है जो स्नैप में है। आपको शायद थोड़ा गोंद कोड की आवश्यकता होगी, लेकिन यह हमेशा मामला बनने वाला है।

4
मैं उस "गोंद कोड" का इतना छोटा बिंदु नहीं बनाऊंगा। टेम्पलेट हास्केल जिसे आप नीचे संदर्भित करते हैं, वह वह है जो "गोंद कोड" को एक सुरक्षित, संक्षिप्त तरीके से संभव बनाता है। मैंने पता करने के लिए एक छोटा सा ब्लॉग पोस्ट लिखा है कि: Yesodweb.com/blog/yesod-template-haskell
माइकल स्नॉयमैन 14'11

3
उन लोगों के लिए जो दूसरे (कमजोर, लेकिन अधिक लचीले) टेंपलेटिंग दृष्टिकोण के साथ जाना चाहते हैं, HStringTemplate भी सभी चौखटे के साथ अच्छी तरह से खेलता है, जहां तक ​​मुझे पता है, और विकास के लिए मक्खी पर पढ़ने के टेम्पलेट्स की अनुमति देता है, उन्हें उत्पादन के लिए कैशिंग करता है, और संकलन भी करता है। यदि वांछित हो तो उन्हें quasiquotation के माध्यम से। Qq समर्थन शायद 13 लाइनें हैं, और मुझे कोई संदेह नहीं है कि उत्तराधिकारी इसे तुच्छ रूप से जोड़ सकते हैं, क्या मांग थी।
sclv
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.