Ember-cli 正在大力开发,所以很多文件结构可能很快就会改变,但这里有一些关于文件夹结构当前状态以及为什么它的排列方式的见解:
该app/
文件夹是直接导入您的应用程序的内容。助手是从这里拉出来的,这就是为什么你必须在这个文件夹中为每个组件都有一个文件的原因。此外,模板将从此处的主应用程序中提取,因此可以按照通常在 ember 应用程序(、、和标准分辨率)中访问模板的方式访问render
它们partial
。
有些人选择将他们所有的组件代码放在 中app/
,但这是一个坏主意,因为该addon/
文件夹不仅作为插件代码的分离存在,而且作为使用 ES6 导入来导入它的一种方式。因此,虽然您不能直接访问 下的组件addon/components/
,但您可以将它们导入到您的应用程序中,如下所示:
import SomeComponent from 'some-addon/components/some-component'
如果他们想要扩展插件以添加一些功能,这对于插件消费者非常有用。
模板在addon
构建树中预编译,这使得插件更加健壮(例如,如果它们使用不同版本的 htmlbars,它们仍将与基本应用程序兼容)。但是,它们无法通过解析器访问,因此您必须在插件的组件中手动导入它们,这就是插件组件的蓝图如下所示的原因:
import Ember from 'ember';
import layout from '../templates/components/some-component';
export default Ember.Component.extend({
layout: layout
});
插件的样式可以放在addon/styles/
或中app/styles/
。默认情况addon/styles/
下,它们也被预编译并包含在应用程序中。我强烈建议在其中包含样式,app/styles
因为这样可以使用基础应用程序中的预处理器导入来访问它们:
@import some-addon/main.css
这使得它们对于插件的用户来说完全是可选app.import
的,而无需诉诸config
诡计(这很好,因为嵌套的插件 _do 不支持app.import
。不要使用它。)
注意:它们不会自动命名空间,因此您应该将样式放在一个文件夹中,以确保它们不会与其他插件样式冲突。
总之:
- 任何不需要由基础应用程序通过帮助程序、初始化程序等直接访问的插件代码。应该存在
addon/
- 您希望通过 ES6 导入访问的任何内容都应该存在
addon/
- 模板应该存在
addon/templates/
并手动导入
- 应该包含在标准 Ember 构建链中的组件存根、初始化程序和其他文件应该存在于
app/
- 样式应该存在
app/styles/
并且应该在文件夹中命名(例如app/styles/some-addon/
)
- 不要使用
app.import
.