1

我试图从我的应用程序的消费端更多地了解 Ember 插件与普通包之间的区别。

所以我想了解以下几点;

  1. 两者消费的区别?比如我们需要导入什么,Brocfile 更改等,这些如何在路由或控制器中对单个模块可用,等等
  2. 两者的安装过程相同吗?他们都可以住在任何仓库或注册表中(如 npm 或 bower 注册表)
  3. 它们如何或在哪里驻留在构建输出中,即在 dist 文件夹中?
  4. 我们如何决定是否将某些东西打包为插件与普通包(这更多是从开发人员的角度来看)?

您还可以突出显示任何其他显着差异。

4

1 回答 1

0

免责声明:这是我的理解,但我自己没有构建插件,所以我可能会有一些误解。

Ember 插件基本上是带有一些额外结构的普通包,使它们更容易集成到 ember 应用程序中。

  1. 使用 Ember 插件时,您可以像使用任何普通包一样导入内容。唯一的区别在于需要向解析器注册的对象(服务、适配器、助手等):它们将被自动检测、添加到您的项目并进行注册。这就是为什么在安装之后,比如说ember-notify,你可以Ember.inject.service('notify')在一些组件/控制器中并且它会工作。

    详情供插件作者选择。通常,插件将注册受益于依赖注入的常见对象(主要是模板助手和服务 - 尽管一些插件定义了新的注入类型并附带一些打包,例如ember-validations注册它的validators)。对于其他功能,您可以正常导入内容 ( import thing from 'addon/thing';)。

  2. Ember 插件是使用安装的npm(您可以在项目中找到它们,在 下node_modules)。您甚至可以npm自己安装它们,只需记住将它们添加package.jsonember build.

  3. 在构建输出中,它们应该被简单地打包到assets/vendor.js.

  4. 我会说经验法则应该是:如果它是特定于 ember 的,则将其作为插件。否则,坚持正常包装。但实际上,ember 插件基本上是一个具有特定布局的普通包。

于 2015-11-24T10:04:26.290 回答