ember.js - 使用 ember-cli 的多个 "apps"

标签 ember.js ember-cli

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

我试图弄清楚 ember-cli 是否可以做到这一点,如果可以,我该怎么做?我看到一些人在谈论 pod,其他人在谈论插件,还有一组人在谈论私有(private)凉亭 repo 。我试着找出每一个的信息,但似乎一切都在变化。

我对目录结构或细节并不挑剔。但我想这就是我的设想:

[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

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

编辑(2015 年 1 月 28 日):

Ember-cli 插件现在更加稳定,可以用于此应用程序。但是恕我直言,他们对于这个用例仍有一些不足之处。它们创建了更多样板,因为您仍然必须将单个模型/ Controller /组件/等导入您的应用程序空间。请参阅此处插件下的“组件”部分:http://www.ember-cli.com/#managing-addon-dependencies

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

编辑(2015 年 10 月 3 日):

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

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

最佳答案

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

我认为对你来说最好的事情是等待更多的 pod 感知 ember-cli 命令,或者自己实现这个特性到 ember-cli。

下一个最好的事情是将您的项目实际拆分为多个项目,每个应用一个,并通过 Bower、NPM 或其他解决方案包含共享代码。如果您有自己的私有(private)组件,它们通常都允许通过 git 或文件系统导入依赖项。你可能有一个 super 项目,所有东西都在一起(通过 NPM 或 Git submodules )并且你仍然有一些本土解决方案来编排所有东西(基本上将它委托(delegate)给 ember-cli)。

关于ember.js - 使用 ember-cli 的多个 "apps",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24661924/

相关文章:

jquery - 我可以从 jquery 函数创建 ember 计算属性吗?

javascript - 如何将 broccoli-compass 添加到 ember-cli v0.0.28?

Ember.js:直接加载相关模型

ember.js - ember-cli 0.0.47 升级后违反内容安全策略指令

javascript - 如何将 XML API 内容正确解析为 EmberJS?

Ember.js RC2 弃用警告 : register ("store", "main")

javascript - 将 Ember/Angular 应用程序嵌入到现有站点中

javascript - “Ember 生成资源”命令最终将 this.route() 添加到 router.js

ember-cli - 如何扩展 ember-cli 插件?

javascript - Ember 模型对象已创建但未显示在模板中