2015-01-28 8 views
5

Bin ziemlich neu zu emberjs und ember-cli.Wie funktionieren Importanweisungen in ember-cli?

Und ich habe immer schon gefragt, wie eine Aussage wie dies funktioniert:

import Ember from 'ember' 

Does 'ember build' aufblicken für 'Ember' in node_modules?

Ich verstehe Aussagen wie diese mit relativen Pfaden:

import ENV from './config/environment' 

aber nicht ohne Pfad aufgeführten Maßnahmen.

Diese Frage erhebt sich in Verbindung mit Could not find module ember-validations, um die Ursache zu finden.

Antwort

8

Die Sortierantwort lautet, dass Ember-CLI die globalen Objekte direkt mit dem Modulsystem registriert. Schauen Sie sich den Code here an. Während es in einem kleinen Helfer Code eingewickelt ist, tun sie im Wesentlichen diese:

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

Dann Ember-CLI konvertiert Ihre import Anweisung während der Kompilierung:

import Ember from 'ember'; 

auf Gets umgewandelt:

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

Beachten Sie, dass dies bei Verwendung eines Transpilers zur Verwendung von AMD-Modulen so gemacht wird. Ich bin nicht 100% sicher, wie dieser Code funktionieren würde, wenn wir eine native ES6-Implementierung verwenden würden, obwohl ich weiß, dass die Syntax dies unterstützt.

+1

Großartig. Das gibt mir einen guten Einblick in die Importe und wie die Shims funktionieren. – droidbot

Verwandte Themen