【问题标题】:Possible to have multiple ember.js apps in one Rails app?一个 Rails 应用程序中可能有多个 ember.js 应用程序吗?
【发布时间】:2014-08-18 19:28:35
【问题描述】:

我正在开发一个 Ember 应用程序,该应用程序需要与另一个具有 Rails 后端的 ember 应用程序合并(使用 ember-rails gem)。是否可以通过 Rails 后端连接两个完全独立的 ember 应用程序?将有一些共享资源(通过 Rails),但除此之外,应用程序非常不同,最好能够使用一个 Rails 应用程序同时为它们提供服务,而不是为每个 Ember 应用程序制作两个单独的 Rails 应用程序......

谢谢

【问题讨论】:

    标签: ruby-on-rails ruby ember.js


    【解决方案1】:

    是的,完全有可能。

    每个应用都需要一个 Rails 路由。例如 /app1 和 /app2

    我的 ember 应用程序和 Rails 应用程序有一个单独的 javascript 清单文件,但我不明白为什么不能将这两个 ember 应用程序合并到 application.js 清单文件中。

    您可以按如下方式实例化您的 Ember 应用:

    App = Ember.Application.create({
      rootElement: '#PUT_YOUR_ROOT_DOM_ELEMENT_HERE',
      Resolver: Ember.DefaultResolver.extend({
        resolveTemplate: function(parsedName) {
          parsedName.fullNameWithoutType = "PUT_THE_RELATIVE_RAILS_URL_FOR_YOR_EMBER_APP_HERE/" + parsedName.fullNameWithoutType;
          return this._super(parsedName);
        }
      })
    });
    

    Embers 默认行为是附加到 DOM 的底部,您可以指定一个 rootElement,如上所示。如果您重用 Rails 应用程序的页眉或页脚,这很有用。上面的解决方案展示了如何为 ember 应用程序指定 Rails url,以便 Ember url 是相对于它的。

    我从这里得到了这个解决方案: Ember-Rails and namespaced templates

    更新:

    您还应该在路由器中指定相对的 Rails url

    App.Router.reopen({    
      rootURL: '/PUT_THE_RELATIVE_RAILS_URL_FOR_YOR_EMBER_APP_HERE'
    });
    

    【讨论】:

    • +1 不错的帖子。这都是关于资产管道和铁路路由的。如果您想要在应用程序之间使用common 文件夹,则添加模板解析器是完美的选择。已经多次使用过这样的模式,并且一直很高兴使用它。
    • 谢谢!我自己使用这个解决方案
    【解决方案2】:

    绝对有可能。有多种方法可以做到这一点。我的建议是让您的 Ember.js 应用程序共享一个命名空间和实例。

    下面是一个代码示例(感谢@brg)

    MainRailsApp = Ember.Application.create(); RailsEngine = Ember.Namespace.create(); RailsEngine2 = Ember.Namespace.create();

    基于this,可接受的方法如下

    App = Ember.Namespace.create({name: "App" }); Main = App.MainApp = Ember.Application.extend(); Main.create();

    两者都有效,您可以根据您的应用程序特定需求和工作流程来决定。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-05-29
      相关资源
      最近更新 更多