Ember Engines #
一、Engines概述 #
Ember Engines是一种将大型应用拆分为独立模块的机制,支持微前端架构。
1.1 Engines优势 #
| 优势 | 说明 |
|---|---|
| 模块化 | 独立开发和部署 |
| 代码隔离 | 减少耦合 |
| 按需加载 | 提高性能 |
| 团队协作 | 独立团队开发 |
1.2 Engines类型 #
- Route-less Engines:无路由,仅提供组件和资源
- Route-able Engines:有独立路由
二、创建Engine #
2.1 生成Engine #
bash
ember engine my-engine
2.2 Engine结构 #
text
my-engine/
├── addon/
│ ├── engine.js
│ ├── routes.js
│ └── index.js
├── app/
├── config/
├── lib/
├── tests/
└── package.json
2.3 Engine配置 #
javascript
// lib/my-engine/addon/engine.js
import Engine from '@ember/engine';
import loadInitializers from 'ember-load-initializers';
import Resolver from 'ember-resolver';
export default class MyEngine extends Engine {
modulePrefix = 'my-engine';
Resolver = Resolver;
}
loadInitializers(MyEngine, 'modulePrefix');
javascript
// lib/my-engine/addon/routes.js
import buildRoutes from 'ember-engines/routes';
export default buildRoutes(function () {
this.route('dashboard');
this.route('settings');
});
三、挂载Engine #
3.1 安装Engine #
bash
npm install --save my-engine
3.2 配置路由 #
javascript
// app/router.js
Router.map(function () {
this.mount('my-engine', { path: '/engine' });
});
3.3 访问Engine #
text
/engine/dashboard
/engine/settings
四、Engine通信 #
4.1 共享服务 #
javascript
// lib/my-engine/addon/engine.js
import Engine from '@ember/engine';
export default class MyEngine extends Engine {
dependencies = {
services: ['session', 'store'],
};
}
4.2 共享组件 #
javascript
// lib/my-engine/addon/engine.js
export default class MyEngine extends Engine {
dependencies = {
externalRoutes: ['login', 'home'],
};
}
五、总结 #
Ember Engines要点:
| 概念 | 说明 |
|---|---|
| Engine | 独立模块 |
| mount | 挂载Engine |
| dependencies | 依赖声明 |
Engines是构建大型应用的重要工具。
最后更新:2026-03-28