2012-06-13 11 views
6

मुझे आवश्यकता के साथ समस्या है। हो सकता है कि मुझे वास्तव में यह नहीं पता कि यह कैसे काम करना चाहिए, लेकिन मेरे लिए यह काफी प्रतिकूल प्रतीत होता है कि requjs मुझे अलग-अलग स्वतंत्र स्क्रिप्ट में अपना कोड विभाजित करने की अनुमति नहीं देता है। चूंकि मैं पृष्ठ की संरचना का निर्माण करने के लिए Play और इसकी टेम्पलेट भाषा का उपयोग कर रहा हूं, इसलिए मैंने पृष्ठ के विभिन्न हिस्सों में अलग-अलग जावास्क्रिप्ट तर्क डालने का प्रयास किया है। उदाहरण के लिए: मेरे पास main.scala.html है जिसमें घटकों को शामिल किया गया है जो प्रत्येक पृष्ठ को अपने जेएस तर्क के साथ मिलकर चाहिए। जब किसी अन्य पृष्ठ को नेविगेशन बार की आवश्यकता होती है, तो मैं इसे संबंधित तर्क के साथ एक साथ सम्मिलित करता हूं। तो मेरे पास main.js और a navigation.js है। चूंकि वे केवल Jquery मोबाइल पर निर्भर हैं और एक दूसरे पर नहीं, इसलिए मैं उन्हें विभिन्न टैग के साथ लोड करना चाहता था। दूसरी स्क्रिप्ट कभी लोड नहीं होती है इसलिए मेरा अंतर्ज्ञान यह था कि requjs एक पृष्ठ पर एकाधिक डेटा-मुख्य विशेषताओं को अनुमति नहीं देता है।requjs के साथ एकाधिक स्क्रिप्ट

तो मेरे प्रश्न यह है: क्या आवश्यकताएं का उपयोग कर एक पृष्ठ में एकाधिक स्वतंत्र स्क्रिप्ट होना संभव है? और यदि नहीं, क्यों?

अग्रिम धन्यवाद

+0

और मेरे सवाल है: जहाँ आपके कोड है? – Joseph

उत्तर

3

विचार यह है कि आप केवल main.js अंदर एक data-main विशेषता है कि main.js लोड करता है, तो आप सशर्त अन्य लिपियों

लोड कर सकते हैं
if (something) { 
    require(["this"], function(this) { ... }); 
} else { 
    require(["that"], function(that) { ... }); 
} 

देखें: http://requirejs.org/docs/start.html

या क्या मैंने इस सवाल को गलत समझा है?

+0

हाँ, यह मेरा सवाल था। यह मेरे लिए बहुत व्यावहारिक प्रतीत नहीं होता है। लेकिन अगर ऐसा करने का यही एकमात्र तरीका है, तो मैं इसके लिए जाऊंगा। आपका बहुत बहुत धन्यवाद। – Calardan

+1

मैं @Calardan से सहमत हूं ... जिस तरह से आपने इस समाधान का वर्णन किया है, मुख्य रूप से पूरी साइट में मुझे संभवतः हर स्क्रिप्ट के बारे में जानने की आवश्यकता है ... जो चिंताओं का एक अच्छा अलगाव की तरह प्रतीत नहीं होता है। – Mir

0

डेटा-मुख्य तब होता है जब आपके पास केवल एक आवश्यकता है ऐप एक पृष्ठ है। यदि आपके पास एकाधिक हैं, तो डेटा-मुख्य का उपयोग न करें। यह काफी आसान है, यहाँ है अपने main.js और navigation.js

<script src='require.js'></script> 
<script> 
    require(['main']); 
    require(['navigation']); 
</script> 

का उपयोग कर हालांकि मैं तर्क है अपने पृष्ठ navigation.js की जरूरत है एक उदाहरण है। प्रत्येक पृष्ठ को ऐप के रूप में देखें। तो आपके मुख्य.जे.एस. में सामान्य के रूप में डेटा-मुख्य।

और फिर main.js अंदर:

// start independent load of navigation.js 
require(['navigation']); 
// load modules required for main 
require(['moduleA', 'moduleB'], function(moduleA, moduleB){ 
    // inside main.js 
}); 
संबंधित मुद्दे