免责声明:这是我的理解,但我自己没有构建插件,所以我可能会有一些误解。
Ember 插件基本上是带有一些额外结构的普通包,使它们更容易集成到 ember 应用程序中。
使用 Ember 插件时,您可以像使用任何普通包一样导入内容。唯一的区别在于需要向解析器注册的对象(服务、适配器、助手等):它们将被自动检测、添加到您的项目并进行注册。这就是为什么在安装之后,比如说ember-notify
,你可以Ember.inject.service('notify')
在一些组件/控制器中并且它会工作。
详情供插件作者选择。通常,插件将注册受益于依赖注入的常见对象(主要是模板助手和服务 - 尽管一些插件定义了新的注入类型并附带一些打包,例如ember-validations
注册它的validators
)。对于其他功能,您可以正常导入内容 ( import thing from 'addon/thing';
)。
Ember 插件是使用安装的npm
(您可以在项目中找到它们,在 下node_modules
)。您甚至可以npm
自己安装它们,只需记住将它们添加package.json
到ember build
.
在构建输出中,它们应该被简单地打包到assets/vendor.js
.
我会说经验法则应该是:如果它是特定于 ember 的,则将其作为插件。否则,坚持正常包装。但实际上,ember 插件基本上是一个具有特定布局的普通包。