मैंने एक नोड मॉड्यूल बनाया है जो अनिवार्य रूप से केवल कुछ उपयोगी जेएस है जिसे क्लाइंट साइड भी इस्तेमाल किया जा सकता है। मुझे पता है कि require.js common.js घटकों को लोड कर सकता है, लेकिन मैं अनिवार्य रूप से एक जनादेश नहीं बनाना चाहता हूं कि मेरे मॉड्यूल क्लाइंट पक्ष का उपयोग करने वाले प्रत्येक व्यक्ति को भी आवश्यकता या सामान्य.जेएस या कुछ चाहिए। मैं उन्हें फ़ाइल के नीचे module.exports = ...
को हटाने के लिए मजबूर नहीं करना चाहता हूं। दूसरों को इस समस्या को कैसे हल किया जाए? क्या आप सिर्फ 2 संस्करण, या 2 "संकलित" संस्करण बनाते हैं? क्या मॉड्यूल। निर्यात हर जगह काम करता है?module.exports क्लाइंट साइड
18
A
उत्तर
16
यह Underscore.js क्या करता है:
if (typeof exports !== 'undefined') {
if (typeof module !== 'undefined' && module.exports) {
exports = module.exports = _;
}
exports._ = _;
} else {
root['_'] = _;
}
4
यह मैं हूँ (CoffeeScript) के लिए काम किया है। मान लें 'नाम स्थान' क्या आप ग्राहक
(module ? {}).exports = @Namespace =
my: 'cool'
module: '!'
तो फिर तुम ब्राउज़र में Node.js में require('namespace').my === 'cool'
या Namespace.my === 'cool'
उपयोग कर सकते हैं के लिए window
गुंजाइश पर दावा करना चाहते है। इस रूप में
(typeof module !== "undefined" && module !== null ? module : {}).exports = this.Namespace = {
my: 'cool',
module: '!'
};
1
जे एस में तब्दील हो मैं इस सरल लगता है:
try {
module.exports = exports = MyModule;
} catch (e) {}
इस फ़ाइल में दोनों ब्राउज़र और node.js. में शामिल किया जा सकता
इस विषय पर सबसे अच्छा प्रदर्शन मुझे पता है http://www.2ality.com/2011/11/module-gap.html। लेखक फायदे/नुकसान और विकास/तैनाती मोड पर चर्चा करता है। –