Aurelia中组件和视图之间的差异(及其生命周期)

Soh*_*rab 3 lifecycle components view typescript aurelia

你能否告诉我Aurelia中的组件和View之间有什么区别?他们的架构是什么?他们的生命周期有什么区别?

Jul*_*iën 7

根据经验,Aurelia中视图组件之间的差异可以概括为:

  • Aurelia中的一个视图简单地放了.html和它附带的样式(.scss/.less/.css)
  • 视图模型在奥里利亚是它后面的代码(的.js/.TS类)
  • 组件是一个视图,视图模型之间的结合,并且通过奥里利亚胶合在一起自动地

实质上你可以说,对于Aurelia来说,你开发的几乎所有东西都是"页面"或"可重用元素",可以被视为一个组件.这就是Aurelia关于组件的文档意味着:

组件是所有Aurelia应用程序的基本构建块.

但至少在我看来,目前文档中没有明确描述的是,并非所有组件都是相同的.至少,就他们在Aurelia的生命周期而言.例如,组件生命周期具有以下默认挂钩:

  1. constructor() - 首先调用视图模型的构造函数.
  2. 创建(拥有View:View,myView:View)
  3. bind(bindingContext:Object,overrideContext:Object)
  4. 附()
  5. 分离()
  6. 取消绑定()

这个生命周期适用于所有组件.但是,当通过路由器运行(初始化)组件时,存在一个细微的差别,可以使用另外一组挂钩:

  • canActivate(params,routeConfig,navigationInstruction)
  • 激活(params,routeConfig,navigationInstruction)
  • canDeactivate()
  • 关闭()

因此,通过路由器管道的组件,例如您明确导航到代码的组件,或通过单击等用户操作,将在其生命周期中具有其他激活步骤.

如前所述,我个人喜欢将这些组件称为"页面",只是为了给它一个明确的标签,并将它们与例如可重用控件和其他组件区分开来.

  • 很棒的答案!有关组件生命周期与路由页面生命周期的详细信息会让很多开发人员感到高兴. (3认同)