我试图了解Ember插件和正常包装之间的差异,而不是在我的应用程序中消费方面。
所以我想了解以下几点;
- 消费两者的差异?比如我们需要导入什么,Brocfile更改等等各个模块可以在路由或控制器内部使用它们等等。
- 两者的安装过程是否相同?他们都可以住在任何仓库或注册表(如npm或bower注册表)
- 它们如何或在何处驻留在构建输出中,即在dist文件夹中?
- 我们如何决定是否将某些内容打包为addon Vs普通包(从开发人员的角度来看,这更多)?
醇>
您还可以突出显示任何其他重大差异。
答案 0 :(得分:0)
免责声明:这是我的理解,但我自己并没有建立一个插件,所以我可能会有一些误解。
Ember插件基本上是普通的封装,带有一些额外的结构,使它们更容易集成到ember应用程序中。
使用Ember插件时,您可以导入与任何普通包完全相同的内容。唯一的区别来自需要向解析器注册的对象(服务,adapers,帮助器等):它们将被自动检测,添加到您的项目并注册。这就是为什么在安装之后说ember-notify
,你可以在某个组件/控制器中Ember.inject.service('notify')
,它就可以工作。
详细信息供插件作者选择。通常,插件将注册受益于依赖注入的公共对象(模板助手和服务,主要是 - 虽然一些插件定义了新的注入类型,并带有一些打包的,例如ember-validations
注册其validators
)。对于其他功能,您可以正常导入内容(import thing from 'addon/thing';
)。
使用npm
安装Ember插件(您可以在项目的node_modules
下找到它们)。您甚至可以自己使用npm
安装它们,只需记住将它们添加到package.json
,以便ember build
包含它们。
在构建输出中,它们应该简单地打包到assets/vendor.js
。
我会说经验法则应该是:如果是特定于余烬,请将其作为插件。否则,坚持正常包装。但实际上,一个ember插件基本上是一个具有特定布局的普通包。