2015-01-28 10 views
5

एम्बरजे और एम्बर-क्ली के लिए काफी नया है।आयात कथन एम्बर-क्ली में कैसे काम करता है?

और मैं हमेशा सोच कर दिया गया है कि कैसे इस तरह एक बयान काम करता है:

import Ember from 'ember' 

करता है 'एंबर निर्माण' node_modules में 'एंबर' के लिए देखो?

मैं संबंधित पथ के साथ इस तरह के बयानों को समझने:

import ENV from './config/environment' 

नहीं बल्कि एक रास्ता बिना संदर्भित किया जाता वाले।

यह प्रश्न Could not find module ember-validations के साथ अपने मूल कारण को खोजने के प्रयास में उठाता है।

उत्तर

8

सॉर्ट उत्तर यह है कि एम्बर-सीएलआई मॉड्यूल सिस्टम के साथ सीधे वैश्विक वस्तुओं को पंजीकृत करता है। कोड here पर एक नज़र डालें। हालांकि यह एक छोटे से सहायक कोड में लिपटे है, वे अनिवार्य रूप से ऐसा करते हैं:

define('ember', [], function() { 
    return { 
     'default': window.Ember, 
    }; 
}); 

फिर, एंबर-CLI संकलन के दौरान आपके import बयान बदल देता है:

var Ember = require('ember')['default']; 
:

import Ember from 'ember'; 

में परिवर्तित हो जाता

ध्यान रखें कि यह एएमडी मॉड्यूल का उपयोग करने के लिए एक ट्रांसलेटर का उपयोग करते समय किया जाता है। मैं 100% निश्चित नहीं हूं कि अगर हम मूल ES6 कार्यान्वयन का उपयोग कर रहे थे, तो यह कोड कैसे काम करेगा, हालांकि मुझे पता है कि वाक्यविन्यास इस तरह की चीज़ का समर्थन करता है।

+1

ग्रेट। इससे मुझे एक अच्छी अंतर्दृष्टि मिलती है कि आयात में क्या परिवर्तन किया जाता है, और शिम कैसे काम करते हैं। – droidbot

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