मुख्य सामग्री पर जाएँ
CrossFly 100% ओपन सोर्सGitHub पर फ़ॉलो करें
CrossFlyCrossFly
शुरू करें

यह पृष्ठ पुर्तगाली से मशीन-अनुवादित है और इसमें त्रुटियाँ हो सकती हैं। पुर्तगाली संस्करण प्रामाणिक है।

दर्शन: CrossFly बनाम डिक्लेरेटिव-रिएक्टिव

मूल के अनुसार अनुवाद तालिकाओं से पहले, वह मानसिक अनुबंध जो सभी के लिए मान्य है।

केवल एक बदलाव जो मायने रखता है

डिक्लेरेटिव-रिएक्टिव फ्रेमवर्क (Flutter, Compose, SwiftUI, React Native) UI को स्टेट के फ़ंक्शन के रूप में वर्णित करते हैं और स्टेट बदलने पर उसे पुनर्निर्मित करते हैं। CrossFly इम्पेरेटिव और ऑब्जेक्ट- ओरिएंटेड है: आप एक बार म्यूटेबल Component ऑब्जेक्ट बनाते हैं (onShow() में), रेफ़रेंस रखते हैं, प्रॉपर्टीज़ बदलते हैं और repaint() कॉल करते हैं।

कोई पुनः निष्पादित build() नहीं है, कोई setState नहीं है, कोई async/await नहीं है। Flutter/Compose के साथ समानता का बिंदु: सब कुछ GPU के माध्यम से रेंडर होता है (OpenGL/WebGL), बिना नेटिव विजेट्स के — दिखावट सभी प्लेटफ़ॉर्म पर एक समान है।

4 स्तंभों का मैपिंग

आपके फ्रेमवर्क में CrossFly में
पुनः निष्पादित build()/body onShow() में एक बार माउंट होता है; उसके बाद आप ऑब्जेक्ट्स को म्यूट करते हैं
setState/@State/useState → rebuild फ़ील्ड बदलें + repaint() (+ setValidLayout(false) यदि आकार बदल गया)
नेस्टेड लेआउट विजेट्स add(valor, comp) — LAY_AUTO(0f) / LAY_FILL(-1f) / अंश
async/await/Future Thread + Component.onUI(...) (स्पष्ट थ्रेडिंग)

काउंटर, दो मॉडल

// डिक्लेरेटिव-रिएक्टिव (छद्म): स्टेट बदलता है → UI खुद ही पुनर्निर्मित होती है।
// CrossFly: आप रेफ़रेंस रखते हैं और मैन्युअली अपडेट करते हैं।
public class Contador extends Window {
   private int n = 0;
   private Label display;
   @Override public void onShow() throws Exception {
      super.onShow();
      setLayout(new VerticalLayout());
      add(LAY_AUTO, display = new Label("0"));
      Button mais = new Button("+");
      mais.onAction(c -> { n++; display.setText(String.valueOf(n)); });  // म्यूटेट करता है + रीपेंट करता है
      add(LAY_AUTO, mais);
   }
}

सार्वभौमिक जाल (हर मूल के लिए मान्य)

  • उन कंपोनेंट्स के रेफ़रेंस रखें जिन्हें आप अपडेट करने वाले हैं (Window के फ़ील्ड) — पुनर्निर्माण द्वारा उन्हें “फिर से खोजने” का कोई तरीका नहीं है।
  • Padding/मार्जिन विजेट्स नहीं हैं: वे कंपोनेंट के स्टाइल में ingap/outgap हैं।
  • कोई hot-reload नहीं — यह संकलित Java है (डेस्कटॉप पर चक्र तेज़ है; देखें platforms)।
  • टेक्स्ट का i18n मैनुअल है — कोई अंतर्निहित स्ट्रिंग कैटलॉग नहीं है (देखें i18n)।
  • रंग int ARGB 0xAARRGGBB हैं — कोई Color क्लास नहीं है (UIConstants/ColorUtils का उपयोग करें)।

अपना मूल चुनें

Flutter · Jetpack Compose · SwiftUI · React Native · TotalCross/SuperWaba

यह भी देखें

क्या यह पृष्ठ उपयोगी था?