AdonisJS - 2017 का सबसे अच्छा NodeJS ढांचा

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

इसलिए हमने अपनी नोडज परियोजनाओं को स्थानांतरित करने के लिए कुछ खोजना शुरू किया। हमने Koa.js की कोशिश की (लेकिन इसमें बहुत सी चीजों की कमी थी), Meteor.js (हमें वास्तव में सभी में एक समाधान, केवल API की आवश्यकता नहीं है), लूपबैक (बहुत अधिक जादू) और कुछ और।

जब तक मैं AdonisJS में ठोकर खाई। ईमानदार होने के लिए, भले ही फ्रेमवर्क जीथब पर 2.5k शुरू होता है, लेकिन इसे ढूंढना आसान नहीं था। लेकिन मुझे तुरंत ही इससे प्यार हो गया। मैं यह समझाने की कोशिश करूंगा कि क्यों।

पेशेवरों

1. पीछे फ़ोल्डर संरचना और तर्क को देखते हुए, यह लगभग सुपर लोकप्रिय PHP- फ्रेमवर्क - लारवेल के समान है। और लारवेल की एक अच्छी विचार-संरचना है, जो आपको चीजों को स्पष्ट रखने की अनुमति देती है। इसलिए यदि आपने कभी इसके साथ काम किया है, तो आप Adonis को जल्दी सीखेंगे।

2. इसका ORM SQL- डेटाबेस को ध्यान में रखकर बनाया गया है - जैसे Postgres या MySQL। यह कुशल SQL-क्वेरी बनाता है और सक्रिय रिकॉर्ड विचार पर आधारित है। इसका क्वेरी बिल्डर सीखना आसान है और हमें सरल प्रश्नों को जल्दी बनाने की अनुमति देता है। उदाहरण के लिए:

const साइकिल = उपज साइकिल.क्वेरी () .जहां ('लोकेशन', 'लोकेशन')। इसमें ('ताले')। ऑर्डरबी ('लेबल', 'एस्क')।) ()

लेकिन यहां तक ​​कि जब हमें माइग्रेशन, लेनदेन, जॉइन, चक या पूरी तरह से "मूल एसक्यूएल भाषा" प्रश्नों की तरह अधिक जटिल सामान की आवश्यकता होती है - यह सब वहाँ है और उपयोग करने में आसान है। MongoDB प्रेमियों के लिए - एडोनिस इसका समर्थन करता है।

3. यह एक आसान सत्यापन विस्तार है। उदाहरण के लिए, नियम लिखना आसान है:

कॉन्स्ट नियम = {
  उपयोगकर्ता नाम: 'आवश्यक | अद्वितीय: उपयोगकर्ता';
  ईमेल: 'आवश्यक | ईमेल | अद्वितीय: उपयोगकर्ता',
  पासवर्ड: 'आवश्यक | पुष्टि की गई',
  समूह: 'अस्तित्व: समूह'
}
const सत्यापन = उपज Validator.validate (userData, User.rules)
अगर (सत्यापन .fails ()) नई त्रुटियाँ फेंकते हैं। सत्यापन (सत्यापन)

ये चेक सिंक्रोनस या एसिंक्रोनस दोनों हो सकते हैं, डेटाबेस तक पहुँच सकते हैं या जो भी आवश्यक हो। और यह बहुत आसानी से बढ़ाया जा सकता है, उदाहरण के लिए, हमने यह साबित करने के लिए एक चेक लिखा है कि क्या हमारे डेटाबेस में कोई रिकॉर्ड मौजूद है।

4. बस एक बोनस! निजी तौर पर, मुझे प्यार है कि एडोनिस जनरेटर कार्यों का उपयोग और उपयोग कैसे करता है। उदाहरण के लिए:

// शास्त्रीय उर्फ ​​स्पेगेटी तरीका
Users.all ((इरेट, उपयोगकर्ताओं के लिए) => {
  users.bicycles ()। फ़िक्च ((गलत तरीके से साइकिल) => {
    res.send ({उपयोगकर्ता, साइकिल})
  })
})
// वादा तरीका
यूजर्स = null दें
Users.all ()
.then (fetchedUsers => {
  उपयोगकर्ता = fetchedUsers
  यूज़र्स को वापस भेजें। साइकिल ()।
})
.then (साइकिल => {
  res.send ({उपयोगकर्ता, साइकिल})
})
// जेनरेटर तरीका (उर्फ AdonisJS तरीका)
// Async फ़ंक्शन समाप्त होने तक कोड निष्पादन को रोक देता है
const Users = उपज Users.all ()
const साइकिल = उपज users.bicycles ()। फ़ेच ()
res.send ({उपयोगकर्ता, साइकिल})

यह कोड को बहुत स्पष्ट करता है! कोई और संलग्न कार्य या वादे नहीं, केवल सारणीकरण के बिना सरल कोड।

विपक्ष

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

निष्कर्ष के बजाय

हम पिछले छह महीनों से उत्पादन में AdonisJS का उपयोग कर रहे हैं। यह स्थिर और तेज है। हमें बहुत पसंद है!

यदि आप ईएस 6 के साथ एक आधुनिक नोड.जेएस ढांचे की तलाश कर रहे हैं, तो समर्थन और एक अच्छी संरचना को स्थगित करें - Adonis.js की जांच करें

पी। एस। मेरी नवीनतम परियोजना - https://pingdisco.com 100% adonisjs है, यह एक निःशुल्क अपटाइम निगरानी उपकरण है। वहां एक खाता बनाने का प्रयास करें (केवल एक फ़ील्ड को भरने के लिए) और अपने आप को देखें कि यह कितना तेज़ और चिकना है।

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