ember-cli 中的导入语句如何工作?
How does import statements work in ember-cli?
我对 emberjs 和 ember-cli 很陌生。
而且我一直想知道这样的声明是如何工作的:
import Ember from 'ember'
'ember build' 是否在 node_modules 中查找 'ember'?
我理解这样的相对路径语句:
import ENV from './config/environment'
但不是那些没有路径的引用。
此问题与 Could not find module ember-validations 有关,旨在找出其根本原因。
排序答案是 Ember-CLI 直接向模块系统注册全局对象。看一下代码 here。虽然它包含在一些辅助代码中,但它们实际上是这样做的:
define('ember', [], function() {
return {
'default': window.Ember,
};
});
然后,Ember-CLI 在编译期间转换您的 import
语句:
import Ember from 'ember';
转换为:
var Ember = require('ember')['default'];
请记住,这是使用转译器使用 AMD 模块时的处理方式。我不是 100% 确定如果我们使用本机 ES6 实现该代码将如何工作,尽管我知道语法支持这种事情。
我对 emberjs 和 ember-cli 很陌生。
而且我一直想知道这样的声明是如何工作的:
import Ember from 'ember'
'ember build' 是否在 node_modules 中查找 'ember'?
我理解这样的相对路径语句:
import ENV from './config/environment'
但不是那些没有路径的引用。
此问题与 Could not find module ember-validations 有关,旨在找出其根本原因。
排序答案是 Ember-CLI 直接向模块系统注册全局对象。看一下代码 here。虽然它包含在一些辅助代码中,但它们实际上是这样做的:
define('ember', [], function() {
return {
'default': window.Ember,
};
});
然后,Ember-CLI 在编译期间转换您的 import
语句:
import Ember from 'ember';
转换为:
var Ember = require('ember')['default'];
请记住,这是使用转译器使用 AMD 模块时的处理方式。我不是 100% 确定如果我们使用本机 ES6 实现该代码将如何工作,尽管我知道语法支持这种事情。