使用ember-cli的多个"应用程序"

Wes*_*man 24 ember.js ember-cli

我正试图从一些旧的本土构建工具迁移到ember-cli.我们的应用程序非常庞大,实际上分为几个ember.js单页应用程序(例如索引,管理,报告等),它们共享一组通用的工具和组件.

我试图弄清楚是否可以使用ember-cli,如果是这样,我该怎么做?我看到有人谈论豆荚,其他人谈论插件和另一组人谈论私人凉亭回购.我试图找出每一个的信息,但似乎它有点变化.

我对目录结构或细节并不挑剔.但我想这就是我想象的方式:

[app]
  - [controllers]
  - [models]
  - [routes]
  - [views]
  - index.html
[admin]
  - [controllers]
  - [models]
  - [routes]
  - [views]
  - index.html
[reports]
  - [controllers]
  - [models]
  - [routes]
  - [views]
  - index.html
[shared_code]
  - [components]
  - [utils]
Brocfile.js
etc
Run Code Online (Sandbox Code Playgroud)

任何建议将不胜感激.即使只是一个起点也会非常有帮助.


编辑(2015年1月28日):

Ember-cli插件现在更加稳定,可用于此应用.但恕我直言,他们仍然有一些这个用例的缺点.他们创建更多的锅炉板,因为您仍然需要将单个模型/控制器/组件/等导入您的应用程序空间.请参阅此处插件下的"组件"部分:http://www.ember-cli.com/#managing-addon-dependencies

还有一个有趣的RFC可以为ember和ember-cli提供类似支持的引擎,以满足这一要求:https://github.com/emberjs/rfcs/pull/10


编辑(2015年10月3日):

Engines RFC有一个新的更新,对许多用户来说看起来很有希望.但是,我们仍然需要多个实际上不同的应用程序.我工作的另一位开发人员花了一些时间来清除如何最好地使用这种模式的细节.

我已经记录了这个并在回购中创建了演示:https://github.com/workmanw/ember-multi-app

frz*_*zng 3

Ember-cli 不\xe2\x80\x99t 支持多个开箱即用的应用程序。(顺便说一句,我仍然很惊讶 SproutCore 中常见的许多事情在 Ember 中仍然存在问题)。您提到的pod受到 ember-cli 依赖的工具的支持,因此大多数 ember-cli 命令都可以正常工作解析器(ember-cli 依赖项)将所有内容组合在一起的方式在其拉取请求中进行了描述中进行了描述。但是你\xe2\x80\x99无法使用生成器,因为它们还不知道 Pod。Ember 插件主要扩展 ember-cli 或 Ember 本身,虽然它们可能能够解决您的问题,但它们不是正确的工具。

\n\n

我认为对您来说最好的办法是等待更多 pod 感知的 ember-cli 命令,或者自己向 ember-cli 实现此功能。

\n\n

下一个最好的事情是将您的项目实际拆分为多个项目,每个应用程序一个,并通过 Bower、NPM 或其他解决方案包含共享代码。如果您有自己的私有组件,它们通常都允许通过 git 或文件系统导入依赖项。您可能有一个超级项目,其中所有内容都整合在一起(通过 NPM 或Git 子模块),并且您\xe2\x80\x99d 仍然有一些自行开发的解决方案来编排所有内容(基本上将其委托给 ember-cli)。

\n

  • 抱歉来晚了。我确实尝试使用带有“npm link”的插件,但它们不符合需要,感觉就像我在逆流而上。首先,它们是“不受监视的”,更改插件代码不会触发应用程序重建。其次,它们最终夹在应用程序解析路径下。因此“my-addon/controllers/alpha”变成“app/controllers/alpha”......可能会导致冲突。最后,我无法模拟生产。prod 中的“/”、“/admin”、“/report”分别变为:“localhost:4200/”、“localhost:5200/admin”和“/localhost:6200/report”。 (3认同)