javascript - Extjs का उपयोग करने के पेशेवर और विपक्ष क्या हैं?




(4)

मेरी परियोजना में से किसी एक ने मुझे extjs का उपयोग करने की सिफारिश की है। मैं extjs के बारे में बहुत कम पता है। मैंने jQuery का उपयोग करके अपनी सारी परियोजना पूरी की है। मुझे पता है कि आप में से कई लोग बहुत अच्छी तरह से extjs के बारे में पता है।

कृपया मुझे extjs का उपयोग करने के पेशेवरों और विपक्ष बताओ?


Answers

आप ढांचे के साथ क्या करने की कोशिश कर रहे हैं यह निर्धारित करने जा रहा है कि किस का उपयोग करना है।

ExtJS

एक पृष्ठ आरआईए एप्लिकेशन के लिए बहुत अच्छा है जहां पेज पर एक बार एक्स्टजेएस फ्रेमवर्क लोड किया गया है, जिसमें 0 हाथ कोडित एचटीएमएल है। इसका मतलब है कि ढांचा आपके आवेदन में सबकुछ प्रबंधित करता है।

JQuery

केस का उपयोग बहुत अलग है: आपका सर्वर साइड फ्रेमवर्क एचटीएमएल (जेएसपी, जीएसपी, एएसपी, जो भी हो) उत्पन्न करता है और आप प्रत्येक पृष्ठ पर JQuery लाइब्रेरी सहित उन पृष्ठों पर कार्यक्षमता जोड़ते हैं।

ExtJS विपक्ष:

  1. जटिल ढांचे - दिल की बेहोशी के लिए नहीं :)
  2. तेजी से सीखने की अवस्था
  3. वहाँ बग हैं - हाँ वहाँ हैं। हालांकि, अधिकांश मुद्दे ढांचे का सही ढंग से उपयोग न करने और दस्तावेज़ीकरण को पर्याप्त रूप से पर्याप्त समझने से उत्पन्न नहीं होते हैं।
  4. ढांचा ढांचा - इसे दोनों + और - के रूप में देखा जा सकता है - लेकिन इस साल ~ 7 रिलीज़ हुए हैं।

ExtJS पेशेवर:

  1. वर्तमान में उपलब्ध घटकों और विगेट्स के सबसे पूर्ण सेट के साथ वास्तव में बहुमुखी ग्राहक पक्ष एमवीसी ढांचा।
  2. एक्सटेंसिबल। सचमुच Ext.extend () पहली चीज है जो आप करते हैं।
  3. सुंदर। बॉक्स थीम में से बहुत अच्छी तरह डिज़ाइन किया गया है कि अधिकांश देवताओं को कोई थीमिंग कौशल नहीं है (हम किसी भी उंगलियों को इंगित नहीं कर रहे हैं) वास्तव में पेशेवर और अच्छे दिखने वाले वेब ऐप्स बना सकते हैं।
  4. दस्तावेज़ीकरण अब तक मैंने किसी भी लाइब्रेरी, एपीआई, या ओपन सोर्स प्रोजेक्ट के बारे में देखा है। लाइव कोड नमूने के साथ एपीआई दस्तावेज़ों के साथ पूरा करें (भले ही कुछ छेद हैं) आप ट्विक कर सकते हैं और देख सकते हैं कि क्या होता है + स्रोत कोड। अधिकांश लाइब्रेरी में फैले महान उदाहरण। एमवीसी से थॉमिंग के सबसे महत्वपूर्ण विषयों पर उत्कृष्ट मार्गदर्शिकाएं। यहां तक ​​कि एक वीडियो लाइब्रेरी भी। यह दस्तावेज हाल ही में बहुत अद्यतन किया गया है, इसलिए यदि आपने पिछले 6 महीनों में नहीं देखा है - ठीक है, देखो!
  5. कई प्रमुख विशेषज्ञ सक्रिय रूप से दैनिक आधार पर भाग लेने के साथ मंच बहुत ज़िंदा हैं।
  6. उपयोगकर्ता एक्सटेंशन (यूएक्स) - एक बड़ा उपयोगकर्ता समुदाय रचनात्मक समाधान की एक अद्भुत सरणी की ओर जाता है।
  7. यह विशाल है! इसमें इतने सारे महान घटक हैं कि मुझे वास्तव में मान्यता से परे कुछ विस्तार करने की ज़रूरत नहीं है। क्या मैंने सीखने की अवस्था का जिक्र किया?
  8. एमवीसी - किसी भी आत्म सम्मानित आरआईए ऐप एमवीसी ढांचे के लिए एक जरूरी है
  9. निर्मित उपकरण
  10. एसएएसएस और कम्पास के साथ जोरदार समर्थन
  11. ... और भी बहुत कुछ है।

अस्वीकरण: मैं एक पूर्व निराश एक्स्टजेस डेवलपर हूं जो वास्तव में सीखने के लिए सीखने की वक्र पर काफी अधिक है :)

  • (एक समुदाय विकी के रूप में खुला)

ExtJS के कुछ प्रमुख पेशेवरों और विपक्ष निम्नलिखित हैं:

पेशेवरों

  1. एक्सटीजेएस सरल लेबल जैसे विजेट्स के सुपरसैट की तरह है, जटिल ग्रिड के लिए टेक्स्टबॉक्स बटन, ड्रैग-ड्रॉप पैनल आदि। यह दूरस्थ सर्वर विधियों को आमंत्रित करने के लिए रिमोटिंग के लिए डेमो भी प्रदान करता है।

  2. यह ट्यूटोरियल, नमूने और उपयोगकर्ता समुदाय के साथ काफी अच्छा दस्तावेज है।

  3. सक्रिय और वर्तमान में सबसे अधिक अपनाया गया जावास्क्रिप्ट आरआईए ढांचा

  4. अच्छी कोड गुणवत्ता / पठनीयता

  5. विजेट्स का अद्भुत सेट, वह सब कुछ करता है जिसे हम संभवतः चाहते हैं। जल्दी लगता है, हर संस्करण नए सुधार लाता है।

विपक्ष

  1. पदचिह्न - लाइब्रेरी आकार में 500 केबी है (mod_gzip का उपयोग करके 150 केबी तक घटाया जा सकता है)। वेब पर होम पेज के लिए लोडिंग समय अधिक होगा।

  2. सीएसएस - खोने के लिए बहुत आसान है। सही वर्ग के नामों को ढूंढना मुश्किल है

  3. एचटीएमएल - divs और अत्यधिक जटिल जेनरेट कोड से भरा है। फायरबग के साथ भी डीबग करना मुश्किल है।

  4. संशोधित जीपीएल 3.0 लाइसेंस प्राप्त। मुक्त स्रोत अनुप्रयोगों के लिए नि: शुल्क लेकिन वाणिज्यिक बंद स्रोत अनुप्रयोगों के लिए भुगतान किया।

  5. ExtJs का उपयोग करने से हमें विश्वास होता है कि जीयूआई डेस्कटॉप और समृद्ध होगा। अनुकूलन आसानी से प्राप्त नहीं किया जा सकता है।

  6. यहां तक ​​कि साधारण चीज़ों को लोड करने के लिए कोडिंग की कुछ पंक्तियों की आवश्यकता होती है जो सादे एचटीएमएल या jQuery में सरल होती हैं।

  7. डिबगिंग बहुत आसान नहीं है। जावास्क्रिप्ट ढांचे के बीच होस्ट किए गए मोड में केवल जीडब्ल्यूटी के पास थोड़ा बेहतर डिबगिंग है।

  8. उपयोगकर्ता के लिए एक निश्चित पृष्ठ को बुकमार्क करना संभव नहीं है। चूंकि वस्तुओं को डीओएम हेरफेर द्वारा प्रस्तुत किया जाता है, इसलिए पृष्ठ को खोज इंजन द्वारा अनुक्रमित नहीं किया जा सकता है

  9. काफी अनुभवी डेवलपर की आवश्यकता है।

  10. मुझे यकीन नहीं है कि पूरे प्रदर्शन के बिना EXT होने के बिना इसका उपयोग कैसे करें। मैं ऐसा कुछ पसंद करूंगा जो हमारे पास पहले से ही एकीकृत हो सके।

संदर्भ: ExtJs - पेशेवरों और विपक्ष

उम्मीद है की यह मदद करेगा।


हालांकि पिछला उत्तर पहले से ही स्वीकार कर लिया गया था, कुछ ऐसे मुद्दे हैं जिन्हें मैं स्पष्ट करना चाहता हूं।

Ext "संशोधित" जीपीएल लाइसेंस का उपयोग नहीं करता है। यह मानक जीपीएल वी 3 और सेन्चा वाणिज्यिक लाइसेंस के तहत पूरी तरह से दोहरी लाइसेंस प्राप्त है। प्लगइन / एक्सटेंशन डेवलपर्स इत्यादि के लिए इसे और अधिक संगत बनाने के लिए FLOSS अपवाद हैं, लेकिन जीपीएल लाइसेंस मानक लाइसेंस है।

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

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

सीएसएस / एचटीएमएल जटिलता विजेट्स की जटिलता और Ext JS द्वारा समर्थित लेआउट सिस्टम के आधार पर दी गई है। यह आरआईए की दुनिया में बहुत आम है और सरल jQuery प्लगइन्स से तुलनीय नहीं है। एक्सटी 4.0 अब एसएएसएस / कम्पास बीटीडब्ल्यू का उपयोग करता है, जेनरेट सीएसएस के साथ, इसलिए स्रोत शैलियों को अनुकूलित करना 3.0 की तुलना में वास्तव में बहुत आसान है।

डीबगिंग 4.0 में कुछ हद तक आसान है (फिर से नई कक्षा प्रणाली के कारण) लेकिन जावा (जीडब्ल्यूटी) जैसी किसी भी स्थिर रूप से टाइप की गई भाषा से निश्चित रूप से कठिन है। यह किसी भी जावास्क्रिप्ट आधारित ढांचे के लिए एक मुद्दा है, न केवल एक्सटी।

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

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


JSONP वास्तव में XMLHttpRequest समान डोमेन नीति को पार करने के लिए एक साधारण चाल है। (जैसा कि आप जानते हैं कि कोई एक अलग डोमेन पर AJAX (XMLHttpRequest) अनुरोध नहीं भेज सकता है।)

तो - XMLHttpRequest का उपयोग करने के बजाय हमें किसी अन्य डोमेन से डेटा प्राप्त करने के लिए, जेएस फ़ाइलों को लोड करने के लिए आमतौर पर स्क्रिप्ट HTML टैग का उपयोग करना होता है। अजीब लगता है?

चीज है - एक्सपीएचएचटीपीआरक्वेट की तरह एक फैशन में स्क्रिप्ट टैग का उपयोग किया जा सकता है! इसकी जांच करें:

script = document.createElement('script');
script.type = 'text/javascript';
script.src = 'http://www.someWebApiServer.com/some-data';

आप एक स्क्रिप्ट सेगमेंट के साथ समाप्त हो जाएंगे जो डेटा लोड करने के बाद ऐसा लगता है:

<script>
{['some string 1', 'some data', 'whatever data']}
</script>

हालांकि यह थोड़ा असुविधाजनक है, क्योंकि हमें इस सरणी को स्क्रिप्ट टैग से प्राप्त करना है। तो जेएसओएनपी रचनाकारों ने फैसला किया कि यह बेहतर काम करेगा (और यह है):

script = document.createElement('script');
script.type = 'text/javascript';
script.src = 'http://www.someWebApiServer.com/some-data?callback=my_callback';

वहाँ my_callback समारोह पर ध्यान दें? तो - जब JSONP सर्वर आपका अनुरोध प्राप्त करता है और कॉलबैक पैरामीटर पाता है - सादा जेएस सरणी लौटने की बजाय यह इसे वापस कर देगा:

my_callback({['some string 1', 'some data', 'whatever data']});

देखें कि लाभ कहां है: अब हमें स्वचालित कॉलबैक (my_callback) मिलता है जो डेटा प्राप्त करने के बाद ट्रिगर हो जाएगा।
जेएसओएनपी के बारे में सब कुछ पता है: यह एक कॉलबैक और स्क्रिप्ट टैग है।

नोट: ये JSONP उपयोग के सरल उदाहरण हैं, ये उत्पादन तैयार स्क्रिप्ट नहीं हैं।

मूल जावास्क्रिप्ट उदाहरण (जेएसओएनपी का उपयोग कर सरल ट्विटर फ़ीड)

<html>
    <head>
    </head>
    <body>
        <div id = 'twitterFeed'></div>
        <script>
        function myCallback(dataWeGotViaJsonp){
            var text = '';
            var len = dataWeGotViaJsonp.length;
            for(var i=0;i<len;i++){
                twitterEntry = dataWeGotViaJsonp[i];
                text += '<p><img src = "' + twitterEntry.user.profile_image_url_https +'"/>' + twitterEntry['text'] + '</p>'
            }
            document.getElementById('twitterFeed').innerHTML = text;
        }
        </script>
        <script type="text/javascript" src="http://twitter.com/status/user_timeline/padraicb.json?count=10&callback=myCallback"></script>
    </body>
</html>

मूल jQuery उदाहरण (जेएसओएनपी का उपयोग कर सरल ट्विटर फ़ीड)

<html>
    <head>
        <script type="text/javascript" src="https://ajax.googleapis.com/ajax/libs/jquery/1.6.2/jquery.min.js"></script>
        <script>
            $(document).ready(function(){
                $.ajax({
                    url: 'http://twitter.com/status/user_timeline/padraicb.json?count=10',
                    dataType: 'jsonp',
                    success: function(dataWeGotViaJsonp){
                        var text = '';
                        var len = dataWeGotViaJsonp.length;
                        for(var i=0;i<len;i++){
                            twitterEntry = dataWeGotViaJsonp[i];
                            text += '<p><img src = "' + twitterEntry.user.profile_image_url_https +'"/>' + twitterEntry['text'] + '</p>'
                        }
                        $('#twitterFeed').html(text);
                    }
                });
            })
        </script>
    </head>
    <body>
        <div id = 'twitterFeed'></div>
    </body>
</html>


JSONP पैडिंग के साथ JSON के लिए खड़ा है। (बहुत खराब नामित तकनीक के रूप में वास्तव में इसके साथ कुछ भी नहीं करना है जो अधिकांश लोग "पैडिंग" के रूप में सोचेंगे।)





javascript extjs