मैं टाइपस्क्रिप्ट, बैकबोन और मूंछ का उपयोग करके एक वेब ऐप लिख रहा हूं। मैं निर्भरता लोडिंग के लिए Requjs का उपयोग करना चाहता हूँ।अपेक्षित मैपिंग से टेक्स्ट प्लगइन को आमंत्रित करें
मैं एएमडी संकलन विकल्प के साथ टाइपस्क्रिप्ट के लिए वेब अनिवार्य दृश्य स्टूडियो प्लगइन का भी उपयोग कर रहा हूं। उन लोगों के लिए जो इससे परिचित नहीं हैं, यदि आप बाहरी मॉड्यूल आयात करते हैं तो यह आपकी टाइप स्क्रिप्ट फ़ाइल को एएमडी मॉड्यूल में लपेट देगा। उदाहरण के लिए:
टाइप स्क्रिप्ट में मैं टाइप परिभाषा फ़ाइलों में निम्न मॉड्यूल आयात करता हूं। ,
declare module "MainTemplate" { }
आदेश में requirejs प्लगइन्स समर्थन करने के लिए: एक प्रकार परिभाषा फ़ाइल में निम्न
define(["require", "exports", "Backbone", "MainTemplate"], function(require, exports, __Backbone__, __mainTemplate__) {
//...code goes here ...
});
टेम्पलेट के लिए, मैं घोषित किया है:
export import Backbone = module("Backbone");
import mainTemplate = module("MainTemplate");
उत्पादन कुछ की तरह है आपको अपना मॉड्यूल घोषित करने की आवश्यकता है:
declare module "text!MainTemplate.html" { }
मैं मॉड्यूल नाम को प्लगइन और फ़ाइल एक्सटेंशन से मुक्त रखना चाहता हूं। यह मुझे भविष्य में कुछ लचीलापन के साथ छोड़ देगा।
मेरे पास निम्नलिखित मैपिंग आवश्यक है।
require.config({
map: {
"MyModule": {
"MainTemplate": "text!MainTemplate.html"
}
}
}
यह सफलतापूर्वक टेक्स्ट प्लगइन को आमंत्रित करता है, हालांकि प्लगइन गलत यूआरएल लोड करता है। पाठ प्लगइन के लिए स्रोत कोड के माध्यम से स्थानांतरण, मैंने पाया कि निम्नलिखित कोड अपराधी है।
load: function (name, req, onLoad, config) {
...
url = req.toUrl(nonStripName),
//returns "scripts/**text!**MainTemplate.html**.html**"
...
}
अगर मैं मॉड्यूल का नाम, 'MainTemplate.html' यह ठीक काम करता है, लेकिन मैं मॉड्यूल का नाम से बाहर विस्तार करना जारी रखना चाहते।
मैंने प्लगइन संदर्भ और डुप्लिकेट एक्सटेंशन को बाहर निकालने के लिए एक साधारण रेगेक्स प्रतिस्थापन के साथ टेक्स्ट प्लगइन को संशोधित किया है।
क्या इसे संभालने का कोई बेहतर तरीका है?
यह एक सभ्य कामकाज है, उम्मीद है कि वे भविष्य में इस मॉड्यूल सिंटैक्स का समर्थन करेंगे। – thomaux