如何声明生命周期

统一各端应用生命周期的定义,是跨端框架的重要组成,也是迁移的必经之路。

小程序声明生命周期

可以在 App(Object)Page(Object)Component(Object) 传入Object参数,其指定小程序的生命周期回调等

代码示例

  1. // index.js
  2. Page({
  3. onLoad(options) {
  4. // Do some initialize when page load.
  5. },
  6. onReady() {
  7. // Do something when page ready.
  8. },
  9. onShow() {
  10. // Do something when page show.
  11. },
  12. onHide() {
  13. // Do something when page hide.
  14. },
  15. onUnload() {
  16. // Do something when page close.
  17. },
  18. onShareAppMessage() {
  19. // return custom share data when user share.
  20. }
  21. });

cml 声明生命周期

.cml 文件 <script /> 代码块返回的对象实例,其指定生命周期回调

示例代码

  1. <script>
  2. class Index {
  3. beforeCreate(query) {
  4. // data数据挂载到this根节点上之前,以及methods所有方法挂载到实例根节点之前
  5. // 注意:只用页面的 beforeCreate钩子 会返回页面query
  6. console.log("App beforeCreate: 打开当前页面路径中的参数是 ", query);
  7. }
  8. created() {
  9. // data,methods里面的这些events挂载完成
  10. console.log("App created");
  11. }
  12. beforeMount() {
  13. // 开始挂载已经编译完成的cml到对应的节点时
  14. console.log("App beforeMount");
  15. }
  16. mounted() {
  17. // cml模板编译完成,且渲染到dom中完成,在整个生命周期中只执行一次
  18. console.log("App mounted");
  19. }
  20. beforeDestroy() {
  21. // 实例销毁前
  22. console.log("App beforeDestroy");
  23. }
  24. destroyed() {
  25. // 实例销毁后
  26. console.log("App destroyed");
  27. }
  28. }
  29. export default new Index();
  30. </script>

App 生命周期 映射

小程序 app.js中的生命周期 -> cml src/app/app.cml

小程序chameleon
onLaunchbeforeCreate
onShowmounted
onHidedestroyed

Page 生命周期 映射

小程序 Page()中的生命周期 -> cml src/pages/mypage/mypage.cml

小程序chameleon
onLoadbeforeCreate
onShowmounted
onUnloaddestroyed
onReady生命周期多态
onHide生命周期多态
onShareAppMessage生命周期多态

Component 生命周期 映射

小程序 Component()中的生命周期 -> cml src/components/mycomponent/mycomponent.cml

小程序chameleon
createdcreated
attachedbeforeMount
readymounted
detacheddestroyed

生命周期总结

每个 cml 实例(AppPageComponent)在被创建时都要经过一系列的初始化过程 ————

例如,需要设置数据监听、编译模板、将实例挂载到 CML节点 并在数据变化时更新 CML节点 等。同时在这个过程中也会运行一些叫做生命周期钩子的函数,这给开发者在不同阶段添加自己的代码的机会。

cmlApp页面Page组件Component 提供了一系列生命周期事件,保障应用有序执行。

另外,如果你想使用某个端特定的生命周期,你可以从业务出发使用 生命周期多态