2011-04-02 15 views
5

में जावास्क्रिप्ट लोडर जैसे head.js या labjs का उपयोग कैसे करें बैट मैगेंटो आधे दर्जन से अधिक जावास्क्रिप्ट पुस्तकालयों के साथ आता है जो पहले से ही बोझिल लोड समय में मदद नहीं करते हैं। क्या कोई भी Magento के साथ head.js या labjs जैसे स्क्रिप्ट लोडर का सफलतापूर्वक उपयोग करने में सक्षम है ताकि वे असीमित रूप से लोड हो सकें? मैं कोशिश कर रहा हूं लेकिन इसे काम नहीं कर सकता।Magento

ऐसा लगता है कि पुस्तकालयों को लोड होने से पहले पृष्ठों पर ऑनलाइन स्क्रिप्ट फ़ायरिंग कर रहे हैं। मुझे पता है कि head.js में एक फ़ंक्शन है जो पहले से ही एक स्क्रिप्ट को निष्पादित करने के लिए कहता है, लेकिन इतनी सारी लाइन स्क्रिप्ट हैं जो पूरी साइट में हर घटना में इसे जोड़ने के लिए व्यावहारिक नहीं है।

उत्तर

4

इनलाइन स्क्रिप्ट के बारे में, वहाँ है:

$.getScript('my_script_url',function(){ 
    // do whatever needs to be done after the script loads 
    alert('my script was asynchroniously loaded'); 
}); 

आप और अधिक लिपियों कि आप ajax के माध्यम से जोड़ने के लिए चाहते हैं, तो jQuery ऐसा करने का एक तरीका होता है NEET: वाक्य रचना इस तरह है प्रोग्रामेटिक समाधान।

आप एक पर्यवेक्षक लिख सकते हैं जो core_block_abstract_to_html_after या controller_action_layout_render_before ईवेंट से जुड़ा हुआ है जो प्रस्तुत किए गए HTML को आउटपुट करने से पहले तुरंत आग लगती है। अपने पर्यवेक्षक में, आप प्रत्येक <script> टैग के तुरंत बाद head.ready कथन डालने के लिए preg_replace का उपयोग कर सकते हैं।

यह रेंडर समय में एक अंश अधिक जोड़ देगा, लेकिन मुझे संदेह है कि यह पुस्तकालयों को डाउनलोड करने की विलम्ब से कम होगा। और यदि आप पूर्ण पृष्ठ कैशिंग का उपयोग कर रहे हैं, तो फ़ंक्शन केवल एक बार कॉल किया जाएगा।

आप प्रभाव का परीक्षण करने के लिए इनबिल्ट Magento प्रोफाइलर का उपयोग कर सकते हैं। कम से कम कोशिश करने के लायक है।

HTH,
जद

+0

यह आशाजनक लग रहा है, एक जाना होगा और रिपोर्ट करें –

0

इस प्रकृति के सभी लोडरों को आपकी साइट पर प्रत्येक स्क्रिप्ट में कुछ संशोधन की आवश्यकता होगी। मुझे पता है - मैंने अभी एक सिस्टम पर लैब्स को लागू किया है, जब मैंने grepped, 400 से अधिक फ़ाइलों को कुछ प्रकार के स्क्रिप्ट टैग के साथ दिखाया !!

2

अच्छी तरह से, मैं इसके लिए jquery का उपयोग करता हूं। और यह बहुत अच्छा काम करता है।
आपको केवल एक AJAX अनुरोध करना है जो स्क्रिप्ट देता है और फिर eval का उपयोग करके स्क्रिप्ट का मूल्यांकन करता है। आप इसके लिए अपना स्वयं का फ़ंक्शन लिख सकते हैं, लेकिन jquery में पहले से ही कुछ अच्छे दृष्टिकोण हैं।
एकल स्क्रिप्ट के लिए, $.getScript फ़ंक्शन अच्छी तरह से काम करता है। यह मूल रूप से $.ajax फ़ंक्शन का विस्तार है जो निर्दिष्ट करता है कि आप एक स्क्रिप्ट का अनुरोध कर रहे हैं। एक

$.when(
    $.getScript("/script_1.js"), 
    $.getScript("/script_2.js"), 
    $.getScript("/script_3.js") 
    // ... 
    //$.getScript("/script_n.js") 
).then(
    // on succes 
    function(){ 
     alert('good to go!'); 
    }, 
    // on failure 
    function(){ 
     alert('loading failed. one or more scripts encountered a problem :('); 
    } 
); 
+0

धन्यवाद, इस Magento में इनलाइन स्क्रिप्ट की जनता की समस्या को हल करता है? पुस्तकालयों को लोड होने तक यह विधि