Aurelia 中组件和视图的区别(及其生命周期)
Difference between a Component and a View in Aurelia (and their lifecycles)
您能告诉我 Aurelia 中的组件和视图有什么区别吗?
它们的架构是什么?它们的生命周期有什么区别?
组件只是一个名称,通常用于描述视图和视图模型的配对。视图是 HTML 文件/模板,视图模型是支持 JavaScript 文件,尽管绝对可以有一个仅供查看的组件。
一个组件可以被认为是一个网络组件,尽管在 Aurelia 中文档描述了一些差异。 MDN describes Web Components well
根据经验,Aurelia 中的 view 和 component 的区别可以概括为:
- Aurelia 中的 view 只是将 .html 和它附带的样式 (.scss/.less/.css)
- Aurelia中的一个view-model是其背后的代码(.js/.tsclass)
- A component 是视图和视图模型之间的组合,由 Aurelia
自动粘合在一起
本质上你可以说,使用 Aurelia,你开发的几乎所有 'page' 或 'reusable element' 都可以被视为一个组件。这就是 Aurelia docs on components means 与:
Components are the basic building blocks of all Aurelia applications.
但是目前文档中没有明确描述的是,至少在我看来,并非所有组件都是相同的。至少,就它们在 Aurelia 中的生命周期而言。例如,Component Lifecycle 具有以下默认挂钩:
- constructor() - 首先调用视图模型的构造函数。
- 已创建(owningView:视图,myView:视图)
- 绑定(绑定上下文:对象,覆盖上下文:对象)
- 附上()
- 分离()
- 解除绑定()
这个生命周期适用于所有组件。但是有一个微妙的区别,当一个组件运行(初始化)通过路由器时,一组额外的钩子变得可用:
- canActivate(参数,routeConfig,navigationInstruction)
- 激活(参数、routeConfig、navigationInstruction)
- canDeactivate()
- 停用()
因此,通过路由器管道的组件,例如您通过代码或通过用户操作(如单击) 明确导航到 的组件在其生命周期中将有额外的激活步骤。
如前所述,我个人喜欢将这些组件称为 "pages",只是为了给它一个清晰的标签,并将它们与例如可重用控件和其他组件区分开来。
您能告诉我 Aurelia 中的组件和视图有什么区别吗? 它们的架构是什么?它们的生命周期有什么区别?
组件只是一个名称,通常用于描述视图和视图模型的配对。视图是 HTML 文件/模板,视图模型是支持 JavaScript 文件,尽管绝对可以有一个仅供查看的组件。
一个组件可以被认为是一个网络组件,尽管在 Aurelia 中文档描述了一些差异。 MDN describes Web Components well
根据经验,Aurelia 中的 view 和 component 的区别可以概括为:
- Aurelia 中的 view 只是将 .html 和它附带的样式 (.scss/.less/.css)
- Aurelia中的一个view-model是其背后的代码(.js/.tsclass)
- A component 是视图和视图模型之间的组合,由 Aurelia 自动粘合在一起
本质上你可以说,使用 Aurelia,你开发的几乎所有 'page' 或 'reusable element' 都可以被视为一个组件。这就是 Aurelia docs on components means 与:
Components are the basic building blocks of all Aurelia applications.
但是目前文档中没有明确描述的是,至少在我看来,并非所有组件都是相同的。至少,就它们在 Aurelia 中的生命周期而言。例如,Component Lifecycle 具有以下默认挂钩:
- constructor() - 首先调用视图模型的构造函数。
- 已创建(owningView:视图,myView:视图)
- 绑定(绑定上下文:对象,覆盖上下文:对象)
- 附上()
- 分离()
- 解除绑定()
这个生命周期适用于所有组件。但是有一个微妙的区别,当一个组件运行(初始化)通过路由器时,一组额外的钩子变得可用:
- canActivate(参数,routeConfig,navigationInstruction)
- 激活(参数、routeConfig、navigationInstruction)
- canDeactivate()
- 停用()
因此,通过路由器管道的组件,例如您通过代码或通过用户操作(如单击) 明确导航到 的组件在其生命周期中将有额外的激活步骤。
如前所述,我个人喜欢将这些组件称为 "pages",只是为了给它一个清晰的标签,并将它们与例如可重用控件和其他组件区分开来。