मोजो एक ऐसी भाषा है जो पायथन की पठनीयता को C++ की गति के साथ जोड़ती है।
यह विभिन्न चीज़ों के लिए उपयोगी है, निम्न-स्तरीय कोड से जो हार्डवेयर के करीब है, बैक-एंड एपीआई डिज़ाइन के माध्यम से, फ्रंट-एंड और वेब की दुनिया तक। मोजो संपूर्ण आधुनिक स्टैक को स्केल करने के लिए पर्याप्त शक्तिशाली है। भाषा को एआई और मशीन लर्निंग को ध्यान में रखकर भी डिजाइन किया गया है - इसलिए यह एआई डेवलपर्स और डेटा वैज्ञानिकों के लिए विशेष रूप से उपयोगी होगी।
हालाँकि मोजो अभी भी जवान है। पारिस्थितिकी तंत्र में रोजमर्रा के सॉफ्टवेयर विकास के लिए नेटवर्किंग या बुनियादी HTTP संचालन जैसे उपकरणों की कमी हो रही है।
लाइटबग 🔥🐝 शुद्ध मोजो में लिखा गया एक सरल HTTP फ्रेमवर्क है, जिसमें डिफ़ॉल्ट रूप से कोई बाहरी निर्भरता नहीं है। इसका उद्देश्य अधिक जटिल परियोजनाओं के लिए एक आधार के रूप में काम करना है और यह आपको एपीआई जैसी वेब सेवाओं को विकसित करने, बुनियादी रूटिंग स्थापित करने या यहां तक कि मोजो के साथ HTML पेजों की सेवा करने की अनुमति देता है, जबकि इस भाषा की स्थिर टाइपिंग और शानदार प्रदर्शन जैसी सुविधाओं का लाभ उठाता है। .
आरंभ करने के लिए, बस मोजो और गिट इंस्टॉल करें, फिर लाइटबग जीथब रेपो को क्लोन करें:
git clone https://github.com/saviorand/lightbug_http.git
एक बार यह क्लोन हो जाए, तो अपनी कमांड लाइन में निर्देशिका पर स्विच करें:
cd lightbug_http
फिर सर्वर चलाएँ (हाँ, वह मोजो फ़ाइल एक्सटेंशन है! 🔥):
mojo lightbug.🔥
आपको कंसोल पर मुद्रित निम्न पंक्ति दिखनी चाहिए:
🔥🐝 Lightbug is listening on 0.0.0.0:8080 Ready to accept connections...
अब, आप अपने सर्वर से अनुरोध करना शुरू कर सकते हैं या ब्राउज़र में localhost:8080
या 0.0.0.0:8080
खोलने का प्रयास कर सकते हैं - आपको परिचय स्क्रीन देखनी चाहिए। वेब, मोजो-शैली में आपका स्वागत है! अब आइए कुछ वास्तविक कोडिंग पर आते हैं।
जबकि लाइटबग अभी भी युवा है, लोग आधुनिक वेब के लिए जिस मुख्य कार्यक्षमता को विकसित करने की उम्मीद करते हैं वह पहले से ही मौजूद है।
ध्यान दें कि चूंकि अभी तक कोई पैकेज मैनेजर नहीं है, इसलिए आपको बस अपने प्रोजेक्ट के अंदर एक सबफ़ोल्डर के रूप में lightbug_http
शामिल करना चाहिए। यह मोजो पैकेज के रूप में काम करेगा और आपको लाइटबग से वेब प्रिमिटिव, सर्वर और अन्य टूल आयात करने की अनुमति देगा।
उदाहरण के लिए, सर्वर को आयात करने के लिए इसे अपनी फ़ाइल के शीर्ष पर जोड़ें:
from lightbug_http.sys.server import SysServer
यह शुद्ध मोजो में एक सर्वर कार्यान्वयन आयात करेगा। यदि आप Python कार्यान्वयन का उपयोग करना चाहते हैं, तो इसके बजाय PythonServer
आयात करें। यह उसी तरीके से काम करेगा.
एक HTTP सेवा बनाने के लिए, बस एक संरचना बनाएं जो HTTPService
विशेषता को संतुष्ट करती है, जिसका अर्थ है कि इसमें निम्नलिखित हस्ताक्षर के साथ एक func
विधि है:
trait HTTPService: fn func(self, req: HTTPRequest) raises -> HTTPResponse: ...
यह HTTPRequest
लेने के लिए अंतर्निहित प्राइमेटिव का उपयोग करता है, मोजो या पायथन में आपके द्वारा लिखे गए किसी भी कस्टम तर्क को निष्पादित करता है, और एपीआई उपभोक्ता को कुछ डेटा के साथ HTTPResponse
ऑब्जेक्ट लौटाता है।
आइए एक ऐसी सेवा बनाएं जो 0.0.0.0:8080
पर भेजे गए सभी अनुरोधों को कंसोल पर प्रिंट करे। ऐसा करने के लिए, my_awesome_service.🔥
नामक एक फ़ाइल बनाएं और निम्नलिखित पेस्ट करें:
from lightbug_http import * @value struct Printer(HTTPService): fn func(self, req: HTTPRequest) raises -> HTTPResponse: let body = req.body_raw print(String(body)) return OK(body) fn main() raises: var server = SysServer() let handler = Printer() server.listen_and_serve("0.0.0.0:8080", handler)
mojo my_awesome_service.🔥
चलाएँ, और इनसोम्निया या ब्रूनो जैसे अपने पसंदीदा एपीआई क्लाइंट से 0.0.0.0:8080
पर अनुरोध भेजें। आपको कंसोल पर मुद्रित अनुरोध के बारे में कुछ विवरण देखना चाहिए।
बधाई! अब आप आधिकारिक तौर पर मोजो वेब डेवलपर हैं 🔥।
उदाहरण में, हम handler
नामक एक वेरिएबल को let
के साथ प्रारंभ करते हैं (जिसका अर्थ है कि इसे दोबारा असाइन नहीं किया जा सकता है) और इसे स्पष्टता के लिए दूसरे पैरामीटर के रूप में listen_and_serve
को पास कर देते हैं।
@value
डेकोरेटर जोड़ना वैकल्पिक है: यदि आप एक उन्नत मोजिशियन हैं, तो आप इसके बजाय एक __init__
कंस्ट्रक्टर विधि जोड़ सकते हैं। यह वैसे ही काम करेगा; @value
इसे और अन्य उपयोगी तरीकों को स्वचालित रूप से उत्पन्न करता है।
struct Printer(HTTPService): fn __init__(inout self): print("Printer initialized!") fn func(self, req: HTTPRequest) raises -> HTTPResponse: let body = req.body_raw print(String(body)) return OK(body)
आप कह सकते हैं, लेकिन यह सिर्फ एक मार्ग है! आधुनिक एपीआई को इससे कहीं अधिक की आवश्यकता होती है।
लाइटबग कुछ बुनियादी रूटिंग भी कर सकता है:
@value struct ExampleRouter(HTTPService): fn func(self, req: HTTPRequest) raises -> HTTPResponse: let body = req.body_raw let uri = req.uri() if uri.path() == "/": print("I'm on the index path!") if uri.path() == "/first": print("I'm on /first!") elif uri.path() == "/second": print("I'm on /second!") return OK(body)
इसे अपनी my_awesome_service.🔥
में जोड़ें, और इसे सर्वर पर हैंडलर के रूप में पास करें:
fn main() raises: var server = SysServer() let handler = ExampleRouter() server.listen_and_serve("0.0.0.0:8080", handler)
अब आप अपना ब्राउज़र खोल सकते हैं और परिवर्तनों को देखने के लिए localhost:8080/first
, localhost:8080/second
पर जा सकते हैं।
इस कार्यक्षमता से आपको अपने स्वयं के ऐप्स, लाइब्रेरीज़ और सेवाओं को विकसित करने का आधार मिलना चाहिए जो HTTP का उपयोग करते हैं, साथ ही हल्के ढांचे/टूलकिट जो कि lightbug_http
प्रदान कर सकता है, लचीलेपन और अनुकूलन विकल्पों का लाभ उठाते हुए।
हम रूटिंग के साथ-साथ ओपनएपीआई विनिर्देश से एपीआई को संलेखन और उत्पन्न करने, आपके डेटा मॉडल को डिजाइन करने और lightbug_api
और lightbug_web
पैकेज बनाकर भविष्य में वेब अनुप्रयोगों को और भी अधिक मनोरंजक बनाने जैसे अन्य कार्य करने की योजना बना रहे हैं। विवरण के लिए हमारा रोडमैप देखें।
लाइटबग के परिचय के लिए बस इतना ही 🔥🐝 ! आशा है यह उपयोगी था.
यह एक ओपन-सोर्स, गैर-व्यावसायिक सामुदायिक परियोजना है।
कृपया हमारे जीथब रेपो को स्टार करें, डिस्कॉर्ड में शामिल हों और देखें कि अपने कोड के साथ योगदान कैसे करें, ताकि हम इसे साथी मोजिशियंस के लिए और भी बेहतर बना सकें।
अगली बार तक!