24 पॉइंट द्वारा GN⁺ 2024-03-03 | 1 टिप्पणियां | WhatsApp पर शेयर करें
  • FastUI declarative Python code के साथ web application user interface बनाने का एक नया तरीका है
  • Pydantic models और TypeScript interfaces का एक सेट, जो user interface को define करता है
  • Python developers JavaScript या npm का उपयोग किए बिना भी React के साथ responsive web apps बना सकते हैं
  • Frontend developers हर बार copy-paste किए बिना reusable components बनाने पर ध्यान केंद्रित कर सकते हैं
  • इससे सच्चा separation of concerns संभव होता है, जहां backend पूरे application को define करता है और frontend केवल user interface को implement करता है
  • कई components built-in मिलते हैं: token-based authentication, GitHub OAuth, Markdown, Text, Paragraph, Heading, Code, Button, Link, Navbar, Modal, ServerLoad, Image, Iframe, Video, Table, Pagination, ModelForm

वास्तविक उपयोग

  • FastUI चार हिस्सों से बना है:
    • fastui PyPI package: UI components के लिए Pydantic models और utilities देता है। यह FastAPI के साथ अच्छी तरह काम करता है, लेकिन FastAPI पर निर्भर नहीं है, और अन्य Python web frameworks के साथ भी इस्तेमाल किया जा सकता है।
    • @pydantic/fastui npm package: एक React TypeScript package जो अपने components implement करते हुए FastUI के internals और types को reuse करने देता है।
    • @pydantic/fastui-bootstrap npm package: Bootstrap का उपयोग करके सभी FastUI components को implement/customize करता है।
    • @pydantic/fastui-prebuilt npm package: npm packages install किए बिना या कुछ खुद build किए बिना FastUI React app का prebuilt version देता है। Python package इस app को serve करने के लिए एक simple HTML page प्रदान करता है।

सिद्धांत (लंबा संस्करण)

  • FastUI RESTful सिद्धांतों का एक implementation है, लेकिन सामान्य समझ वाले तरीके से नहीं, बल्कि Roy Fielding की doctoral thesis में परिभाषित सिद्धांतों के अनुसार।
  • RESTful सिद्धांतों के अनुसार frontend को उस application के बारे में जानने की आवश्यकता नहीं होती जिसे बनाया जा रहा है; उसे केवल interface बनाने के लिए आवश्यक सभी components उपलब्ध कराने होते हैं।
  • इस तरीके से application बनाने के कई महत्वपूर्ण फायदे हैं:
    • नई functionality बनाने के लिए केवल एक ही जगह code लिखना पड़ता है।
    • Frontend और backend deployments को पूरी तरह अलग किया जा सकता है।
    • Open source component sets को reuse किया जा सकता है, क्योंकि components को उस context के बारे में जानने की आवश्यकता नहीं होती जिसमें उनका उपयोग होगा।
    • Pydantic, TypeScript और JSON schema का उपयोग करके यह सुनिश्चित किया जा सकता है कि दोनों पक्ष एक agreed schema के साथ communicate कर रहे हैं।

Python और React से आगे

  • यह सिद्धांत केवल Python और React applications तक सीमित नहीं है; यदि वही agreed schema और encoding इस्तेमाल हो रही हो, तो इसे schema को implement करने वाले किसी भी frontend और backend में इस्तेमाल किया जा सकता है।

GN⁺ की राय

  • FastUI में development process को सरल बनाने की क्षमता है, क्योंकि यह backend developers को frontend development के बिना भी applications को expand करने का एक efficient तरीका देता है।
  • यह तकनीक frontend और backend के बीच roles को स्पष्ट करती है, जिससे ऐसा environment बनता है जहां दोनों अपनी-अपनी विशेषज्ञता का अधिकतम उपयोग कर सकें।
  • फिलहाल FastUI अभी भी एक ongoing project है, इसलिए इसे वास्तविक production environment में इस्तेमाल करने से पहले इसकी stability और functionality की सावधानीपूर्वक जांच करनी चाहिए।
  • FastUI अपनाते समय मौजूदा frontend development workflow के साथ compatibility, components की reusability और scalability, और project के long-term maintenance को ध्यान में रखना चाहिए।
  • इस तकनीक को चुनने का लाभ development time में कमी और backend-केंद्रित development flow हो सकता है, लेकिन दूसरी ओर frontend flexibility सीमित हो सकती है, और community support तथा resources अपेक्षाकृत कम हो सकते हैं।

1 टिप्पणियां

 
GN⁺ 2024-03-03
Hacker News राय
  • प्रेज़ेंटेशन लेयर और कोड के coupling पर राय

    • प्रेज़ेंटेशन लेयर और कोड का coupling: प्रेज़ेंटेशन लेयर को कोड से बहुत ज़्यादा क़रीब से नहीं जुड़ा होना चाहिए। Python की बजाय template language अधिक उपयुक्त है, और ऐसा होना बेहतर है कि templates को अलग-अलग भाषाओं में render किया जा सके.
  • FastUI और Streamlit के साथ ऐप डेवलपमेंट का अनुभव

    • FastUI और Streamlit का उपयोग: Streamlit से prototyping किया, लेकिन कभी-कभी असुविधा महसूस हुई। FastUI में अभी कुछ कमियाँ हैं, लेकिन हल्के apps के लिए इसका उपयोग करने पर Streamlit से तेज़ response speed का अनुभव हुआ.
  • Django और HTMX पर राय

    • Django और HTMX: Django और HTMX का संयोजन सुंदर है और तेज़ी से काम करता है। frontend में render किया गया code ही भेजा जाता है, और scale बढ़ने पर DB management किया जा सकता है.
  • server-side event handling के लिए internal apps की उपयोगिता

    • server-side event handling: यह concept नया नहीं है, और Solara (React-आधारित) या NiceGUI (Vue-आधारित) जैसे अन्य उदाहरण भी हैं। internal apps के लिए यह बहुत व्यावहारिक है, लेकिन यह स्वीकार करना होगा कि हर control के event को server side पर handle करने में थोड़ी latency होती है.
  • backend server की ज़रूरत वाले frontend frameworks की बढ़ोतरी

    • frontend frameworks की जटिलता: कई frontend frameworks को basic HTML render करने के लिए backend server चलाना पड़ता है। सवाल यह है कि क्या इन frameworks द्वारा दी जाने वाली सुविधाएँ इस जटिलता को सही ठहराती हैं.
  • FastUI और NiceGUI के अनुभव की तुलना

    • FastUI और NiceGUI: NiceGUI box से निकालते ही उपयोग करने लायक अच्छा अनुभव देता है। FastUI मुख्य रूप से Pydantic models के लिए एक form adapter जैसा लगता है.
  • AI की प्रगति का project use cases पर प्रभाव

    • AI और frontend development: यह विचार कि backend developer अपनी ही भाषा में जल्दी UI बना सके, वैध है, लेकिन कुछ घंटों तक AI का उपयोग करके basic UI बनाया जा सकता है, इसलिए ऐसे projects की ज़रूरत कमज़ोर पड़ सकती है.
  • Dart/Flutter के साथ side project development का अनुभव

    • Dart/Flutter का उपयोग: Dart/Flutter में side projects लिखने से friction कम होता है और झंझट भी कम रहती है। अगर web app लिखना हो और Flutter उपयुक्त न हो, तो HTMX का उपयोग किया जाएगा.
  • Java Server Faces से तुलना और server-side abstraction की सीमाएँ

    • Java Server Faces का अनुभव: यह Java Server Faces जैसा महसूस होता है। frontend development की बारीकियों को server-side abstraction में ले जाने की कोशिश शायद केवल सीमित application sets, जैसे management UI, में ही काम करेगी.
  • server के साथ roundtrip क्या user interface बनाने के लिए उपयुक्त है, इस पर सवाल

    • server के साथ roundtrip: यह सवाल उठाया गया कि क्या हर client interaction पर server तक roundtrip करना user interface बनाने के लिए हमेशा अच्छा विचार है.