2015-03-01 20 views
7

ट्रांसलेटर के उपयोग के साथ ES6 मॉड्यूल का उपयोग करना पहले से ही संभव है। ब्राउज़रइफ़ और बेबेलिफ़ाई का उपयोग करने का सबसे आसान तरीका है। मेरी समस्या यह है कि निर्भरता प्रबंधन को कैसे संभालना है।ES6 मॉड्यूल आयात और निर्भरता प्रबंधन

पुराने दिनों में आपके पास कुछ बोवर निर्भरताएं होंगी। निर्माण गैर-सीडीएन को vendor.js और प्रोजेक्ट विशिष्ट फ़ाइलों को foobar.js (या जो कुछ भी) पर बंडल करेगा। तो आप bower install foobar --save द्वारा एक अलग परियोजना में परिणामस्वरूप कोड का उपयोग करने में सक्षम होंगे। यदि दोनों foobar और आपकी नई परियोजना में एक आम निर्भरता थी तो इसे आसानी से बोवर फ्लैट निर्भरता के साथ हल किया जाएगा।

आ ES6 मॉड्यूल में अब: मैं एक परियोजना foolodash का उपयोग कर कहो।

src/js/foo.js src/vendor/lodash/dist/lodash.min.js

और foo.js शुरू होता है की घोषणा के द्वारा:

import * as _ from '../../vendor/lodash/dist/lodash.min.js';

या (Browserify CommonJS को Babelify transpiles के बाद से चाहता है के रूप में):

निर्देशिका संरचना इस प्रकार है

import * as _ from './../../vendor/lodash/dist/lodash.min.js';

यदि अब मैं अपना foo प्रोजेक्ट प्रकाशित करता हूं और एक नई परियोजना बार शुरू करता हूं जो foo का उपयोग करता है तो यह मेरी निर्देशिका संरचना होगी।

src/js/bar.js src/vendor/foo/dist/foo.js src/vendor/lodash/dist/lodash.min.js

लेकिन उस foo से पथ के बाद से काम नहीं होगाlodash के लिए अब टूट गया है (अगर मैं Browserify समझते हैं './blaat/file.js' में सही ढंग से डॉट स्लेश रिश्तेदार है फ़ाइल से इसे बुलाया जा रहा है)।

कोई फ़ाइल पथ मान्यताओं के बिना आयात करने का कोई तरीका है?

क्या एकाधिक स्रोत जड़ों को इंगित करने का कोई तरीका नहीं है? (यानी उपर्युक्त मामले में src/js और src/विक्रेता ... अच्छी तरह से, आदर्श रूप से आप केवल import * as _ from 'lodash';)

मैंने क्लाइली पर बैबिलिफ़ाई के साथ ब्राउज़रइफ़ का उपयोग किया है। क्या मुझे कुछ अन्य ट्रांसपेलर का उपयोग करना चाहिए?

उत्तर

2

मुझे लगता है कि jspm वह समाधान है जिसे आप ढूंढ रहे हैं। यह मॉड्यूल आयात करते समय फ़ाइल पथ मान्यताओं के बिना आपकी मदद करेगा। यह SystemJS dynamic ES6 loader का उपयोग करता है। Guy Bedford: Package Management for ES6 Modules [JSConf2014] पर यह कैसे काम करता है, इस बारे में बहुत अच्छी व्याख्या के लिए अपनी साइट पर पोस्ट किया गया वीडियो देखें।

संबंधित मुद्दे