सामान्य ES5 में अगर मैं एक पैकेज है कि या तो सर्वर साइड या ब्राउज़र (CJS, एएमडी, RequireJS के माध्यम से) पर इस्तेमाल किया जा सकता है लेखक को चाहते हैं, मैं कुछ इस तरह करना होगा:बेबेल के साथ ES6 में कॉमनजेएस, एएमडी और ब्राउज़र के साथ संगत मॉड्यूल को आप कैसे लिखते हैं?
(function(name, definition)){
if (typeof exports !== 'undefined' && typeof module !== 'undefined') {
module.exports = definition();
} else if (typeof define === 'function' && typeof define.amd === 'object') {
define(definition);
} else {
this[name] = definition();
}
}('foo', function foo(){
'use strict';
return 'foo';
})
कैसे मैं प्राप्त ईएस 6 में एक पैकेज लिखते समय यह कार्यक्षमता?
मैं क्या करने की कोशिश की:
if (typeof exports !== 'undefined' && typeof module !== 'undefined') export Foo;
else if (typeof define === 'function' && typeof define.amd === 'object') define(Foo);
else this['Foo'] = Foo;
हालांकि यह transpiling, कोलाहल मुझे एक त्रुटि फेंकता है:
SyntaxError: src/index.js: 'import' and 'export' may only appear at the top level (10:69)
9 |
> 10 | if (typeof exports !== 'undefined' && typeof module !== 'undefined') export Foo;
| ^
11 | else if (typeof define === 'function' && typeof define.amd === 'object') define(Foo);
12 | else this['Foo'] = Foo;
13 |
यह किया काम जब मैं export
के बजाय module.exports
इस्तेमाल किया, लेकिन यह इस सख्ती से ऐसा करना संभव है ES6 का उपयोग कर?
इसे यूएमडी, * यूनिवर्सल मॉड्यूल डेफिनिशन * भी कहा जाता है। आपकी खोज को थोड़ा सा मदद कर सकता है :-) – Bergi
आपको यह कोड स्वयं लिखने की आवश्यकता नहीं है। आपको बस अपने स्रोत में ES6 'निर्यात' घोषणा करना चाहिए। यूएमडी इसे से पारदर्शी द्वारा उत्पन्न किया जाना चाहिए। – Bergi
https://babeljs.io/docs/usage/modules/ ... यह सब दस्तावेज़ों में है। –