ember.js 小部件

2022-01-18 00:00:00 widget javascript ember.js

我知道 ember js 适用于单页应用程序,而且您似乎可以将 ember js 应用程序本地化到单个 dom 容器而不是整个页面,所以我想知道 ember js 是否适合高级应用程序小部件创建,不仅仅是一个稍微花哨的下拉菜单或其他任何东西,而是一个更复杂的小部件,它可以处理它自己的宁静资源等.或者以这种方式使用 ember.js 过大了?

如果它适用于小部件,当 ember 应用程序来自不同作者时,是否可以不必重新编码小部件以在同一页面上使用多个 ember 小部件应用程序,我的意思是我可以在同一页面上轻松拥有来自不同来源的多个 jquery 插件,而不会发生任何冲突.

解决方案

Ember.js 对于复杂的小部件来说并不过分,并且完全可以在单个页面上使用多个 ember 小部件应用程序.但是,需要对代码进行一些修改.来自 Ember.js 代码:

<块引用>

"默认情况下,Ember.Application 将开始监听文档.如果您的应用程序嵌入在页面中,而不是控制整个文档,您可以指定要使用哪个 DOM 元素通过设置 rootElement 属性附加到:

 MyApp = Ember.Application.create({根元素:$('#my-app')});

<块引用>

在课程期间不得删除 Ember.Application 的根页面的生命周期.如果你只有一个概念整个页面的应用程序,并且不嵌入任何第三方页面中的 Ember 应用程序,使用默认的文档根目录你的申请.

如果您的页面包含多个,您只需要指定根Ember.Application 的实例."

现在明显的问题是如何在加载 JavaScript 之前为每个小部件设置 rootElement.我可以想到很多方法来做到这一点,但最好的方法取决于你想要做的任何事情的设置.希望这能让您走上正确的道路.

I know that ember js is good for single page apps and it appears that you can localize ember js app to a single dom container rather than the whole page, so I'm wondering if ember js would be a good fit for advanced widget creation, not just a slightly fancy drop down or anything but a more complex widget which may deal with its own restful resource etc. Or is using ember.js in this way overkill?

If it is suitable for widgets, would it be possible without having to recode the widgets to use multiple ember widget apps on the same page when the ember apps have come from different authors, an example of what I mean is that I can easily have multple jquery plugins from different sources on the same page without any conflicts.

解决方案

Ember.js would not be overkill for complex widgets and it's completely possible to use multiple ember widget apps on a single page. However, there will need to be a little code modification. From the Ember.js code:

"By default, Ember.Application will begin listening for events on the document. If your application is embedded inside a page, instead of controlling the entire document, you can specify which DOM element to attach to by setting the rootElement property:

    MyApp = Ember.Application.create({
      rootElement: $('#my-app')
    });

The root of an Ember.Application must not be removed during the course of the page's lifetime. If you have only a single conceptual application for the entire page, and are not embedding any third-party Ember applications in your page, use the default document root for your application.

You only need to specify the root if your page contains multiple instances of Ember.Application."

Now the obvious issue would be how to set rootElement for each of these widgets before it's JavaScript is loaded. I can think of a number of ways of doing this but the best way depends on the setup of whatever you're trying to do. Hopefully this puts you on the correct path.

相关文章