zepto

2012-11-16 9 views
6

के साथ requjs का उपयोग कैसे करें I needjs के साथ काम करने के लिए zepto नहीं लग रहा है।zepto

यहाँ मेरी फ़ाइलें

main.js

require.config({ 
    paths: { 
    zepto: 'libs/zepto/zepto.min', 
    underscore: 'libs/underscore/underscore-min', 
    backbone: 'libs/backbone/backbone-min', 
    cordova: 'libs/cordova/cordova-2.1.0', 
    history: 'libs/history/history', 
    historyZ: 'libs/history/history.adapter.zepto' 
    }, 
    shim: { 
     zepto: { 
      exports: '$' 
     }, 
     backbone: { 
      deps: ['underscore', 'zepto'] 
     }} 
}); 

require([ 

    // Load our app module and pass it to our definition function 
    'app', 
], function(App){ 
    // The "app" dependency is passed in as "App" 
    App.initialize(); 
}); 

app.js

define([ 
    'zepto', 
    'underscore', 
    'backbone', 
    'router' // Request router.js 
], function($, _, Backbone, Router){ 
    var initialize = function(){ 
    // Pass in our Router module and call it's initialize function 
    Router.initialize(); 
    } 

    return { 
    initialize: initialize 
    }; 
}); 

router.js हैं

define([ 
    'zepto', 
    'underscore', 
    'backbone', 
    'views/dashboard' 
], function($, _, Backbone, DashboardView){ 
    var AppRouter = Backbone.Router.extend({ 
    routes: { 
     // Define some URL routes 
     ''  : 'showDashboard', 
    } 
    }); 

    var initialize = function(){ 
    var app_router = new AppRouter; 
    app_router.on('showDashboard', function(){ 
     // We have no matching route, lets just log what the URL was 
     //console.log('No route:', actions); 
     var dashboardView = new DashboardView(); 
     dashboardView.render(); 
     }); 
    Backbone.history.start(); 
    }; 
    return { 
    initialize: initialize 
    }; 
}); 

आप चित्र प्राप्त .. लेकिन जब मैं यह सब चलाता हूं, मुझे यह क्रोमस कॉन में मिलता है एकमात्र:

GET http://localhost/SBApp/www/js/jquery.js 404 (Not Found)   require.js:1824 

और एक स्क्रिप्ट त्रुटि (मैं कोष्टक में फेंक दिया बीसी यह मेरे पोस्ट जाने नहीं होगा।)

और फ़ायरबग साथ Firefox में, यह एक scripterror

किसी को भी सफलता को विन्यस्त किया गया है बाहर थूक Zepto आवश्यकता के साथ और मुझे कुछ मदद फेंक सकते हैं?

+0

आप "jQuery" का कोई उल्लेख के लिए अपने libs और स्रोत grep किया? ऐसा लगता है कि कोई भी lib स्वतंत्र रूप से इसे शामिल करने का प्रयास करेगा। – numbers1311407

+0

मैंने किया और jQuery की संदर्भित एकमात्र चीज की आवश्यकता थी।मुझे लगता है कि जब मैं इसके साथ एएमडी का उपयोग करने की कोशिश करता हूं, तो यह इसके लिए देखता है और मैं थोड़ा सा देख रहा हूं कि ज़ेप्पो और एएमडी के लिए अभी तक कोई समर्थन नहीं है? –

उत्तर

1

बैकबोन में सामान्य रूप से "परिभाषित ([" अंडरस्कोर "," jquery "," export "] है, .." इसमें, इसे बस प्रतिस्थापित करना होगा। फिर, मैंने ज़िप्टो के अंत में निम्नलिखित स्निपेट को जोड़ा .js।

// If `$` is not yet defined, point it to `Zepto` 
window.Zepto = Zepto 
'$' in window || (window.$ = Zepto) 

if (typeof define === "function" && define.amd) { 
    define("zepto", [], function() { return Zepto; }); 
} 

यह काम करने के लिए लगता है। यदि आप एक बैकअप के रूप में jQuery करना चाहते हैं (यह गंदा है), लेकिन मैं के रूप में "jQuery" "zepto" परिभाषित zepto.js फ़ाइल में है, तो में तो requirejs.config मैं इस किया था ...

requirejs.config({ 
    paths: { 
     // Jquery should be zepto, probably a better way to do this... 
     jquery: RegExp(" AppleWebKit/").test(navigator.userAgent) ? '/js/vendor/zepto' : '/js/vendor/jquery.min', 
     underscore: '/js/vendor/underscore.min', 
     backbone: '/js/vendor/backbone.min' 
    } 
}); 

require(['jquery', 'underscore', 'backbone'], function($, _, Backbone) { 
    // Stuff here... 
}); 

लेकिन कर रही है कि मैं backbone.js संशोधित करने के लिए नहीं था द्वारा jQuery और मैं broug के लिए फ़ाइल को परिभाषित आईई के लिए ब्राउज़र समर्थन में एचटी ...

+0

पहला भाग मुझे बहुत मदद करता है क्योंकि यह करने के लिए क्या करता है, दूसरा मैंने – daver

+1

हाँ की कोशिश नहीं की, दूसरा भाग मैं अनुशंसा नहीं करता। असल में मैं बैकबोन के साथ ज़िप्टो का उपयोग करने की अनुशंसा नहीं करता हूं। अब [Backbone.native] (https://github.com/inkling/backbone.native) है जिसकी मैंने कोशिश नहीं की है लेकिन बैकबोन के साथ jquery के प्रतिस्थापन के बारे में अधिक आशाजनक दिखता है। – gwing33

+0

एक सामान्य पुस्तकालय फ़ाइल के स्रोत कोड संशोधित करें? यह एक बुरा विचार है। और मुझे नहीं पता कि आप उस कॉन्फ़िगरेशन में क्या कर रहे हैं, मैं कभी इसकी अनुशंसा नहीं करता। –

2

requjs की शिम सुविधा का उपयोग करें। यह answer देखें। हर बार जब यह स्थिति होती है तो पुस्तकालय के स्रोत को संपादित करने से बचें। इसके अलावा, आपको हर बार जब आप लाइब्रेरी को किसी नए संस्करण में अपडेट करते हैं तो संपादन को याद रखने की आवश्यकता नहीं है।

, इस अस्वीकरण जोड़ा जा रहा है क्योंकि @James वाटकिंस सोचता है कि इतने पर प्रत्येक पोस्ट के लिए उसे अन्यथा यह downvoted किया जाना चाहिए काम करना चाहिए: यह समाधान या (विशेष रूप से विचार कर यह लिखा गया था 3 साल पहले आपके लिए काम नहीं हो सकता है !!!)

+0

यह मेरे लिए काम नहीं किया। निर्यात को ज़िप्टो और $ में सेट करने का प्रयास किया लेकिन आयात करते समय दोनों ने अनिर्धारित किया। एक कामकाजी उदाहरण के साथ अपने जवाब को संशोधित करने पर विचार करें। –

+0

@ जेम्स्सकिकिन्स मैं उत्तर में सुधार के लिए टिप्पणी और सुझाव की सराहना करता हूं। यह एक खराब रूप है हालांकि आपके लिए प्रतिक्रिया को चिह्नित करना क्योंकि यह आपके लिए काम नहीं करता है, या कोई कामकाजी उदाहरण नहीं है। जाहिर है, दूसरों को यह उपयोगी लगता है क्योंकि जब आप उस पर आए थे तो 0 अंक नहीं थे। मुझे आश्चर्य है कि एसओ पर आपके सभी प्रतिक्रियाओं के कामकाजी उदाहरण हैं या नहीं। या शायद अगर गिलास आधा भरा है, तो यह वास्तव में खाली है। –

+0

मैंने कोशिश की और यह काम नहीं किया। प्रतिक्रिया को चिह्नित करने के लिए यह एक वैध पर्याप्त कारण है। मेरी टिप्पणी ने समझाया कि आप कैसे सुधार कर सकते हैं। मुझे यहां समस्या नहीं दिखाई दे रही है। –

1

आप 'का विस्तार/zepto.js' फ़ाइल के बजाय संशोधित zepto.js जोड़ सकते हैं:

/** 
* extend Zepto 
*/ 

define([ 
    'zepto' 
], function() { 

    "use strict"; 

    window.Zepto = Zepto 
    // If `$` or `jQuery` is not yet defined, point them to `Zepto` 
    '$' in window || (window.$ = Zepto) 
    'jQuery' in window || (window.jQuery = Zepto) 

    return Zepto; 

}); 

फिर सेट jquery पथ extend/zepto रहे हैं:

require.config({ 
    paths: { 
    'jquery': 'extend/zepto' 
    } 
}) 
+0

यह एकमात्र समाधान है जो स्रोत कोड को संशोधित किए बिना मेरे लिए काम करता है। धन्यवाद! –