页面生命周期

很早就看了cat chen的深入理解 ASP.NET 动态控件 (Part 3 - 页面生命周期) ,当时是理解了,但是很不好理解。尤其是追赶加载那部分。最近重新看到那篇文章,禁不住想用打比方的方式来描述一下,不知道我的比喻是否恰当?


一下引用自CatChen的原文:

一般加载分为以下几个主要阶段(粗体标出的阶段的特殊性后面解释):

  1. Init - 初始化,是否为动态控件就以此为分界,Init之前加入到控件树的控件其处理过程就和ASPX中静态声明的一致,因为静态控件也就是在Init前加入的。
  2. LoadViewState - 加载ViewState。
  3. ProcessPostData - 处理PostData,倒不如说是加载PostData,因为此阶段控件多数仅加载PostData,顺便判断PostData是否有改变,别的处理不在此阶段作。
  4. Load - 加载,让ASP.NET程序员尽情发挥创意的地方,包括如何糟蹋ASP.NET这个框架。
  5. ProcessPostData Second Try - 第二次尝试处理PostData,和第一次所做的一样,不过第一次执行时已在控件树上的控件不会受到第二次打扰。
  6. Raise ChangedEvents - 冒泡Changed类事件,这里指的是由于PostData变更而引起的Changed类事件。
  7. Raise PostBackEvent - 冒泡PostBack类事件,除了Changed类以外的所有事件都在这里引发。
  8. PreRender - 预呈现,这名字不怎么好记,改为“末日审判”或许会好一些,因为作为上帝的程序员在这里判决每一个变量的最终值。
  9. SaveViewState - 保存ViewState,判决执行的阶段,变量最终值在此保存,判入地狱的变量无权进入ViewState这个天堂并从此消失。
  10. Render - 呈现,可能是生命周期中最无法解耦的一个阶段。
  11. Unload - 卸载,有加载自然有卸载,但其实没有多少人知道它的存在。

追赶加载不同于一般加载,打个比方的话: 
11个步骤中,粗体字部分比喻成“军机处”(专门发布军事任务),非粗体部分(处理PostData事件等)比如成“军事任务”。 
父亲(Parent Control)带领着儿子(Control)加入了光荣的人民解放军,随时准备为伟大的WEB革命献身。 
父子俩人沿着同一条革命行军路线(生命周期路线),一路上有多个军机处。每个军机处仅发布该处到下一处之间军事任务列表(任务太多了,所以分多处发布,分布式嘛)。父子均在军机处获取军事任务。 
父亲比较有经验,被指挥官安排从革命爆发之始就加入了革命,一直在认认真真地执行各处发布的任务。而儿子因为经验不足,由指挥官(asp.net程序员)安排不定时加入革命执行任务。 
如果安排儿子在军机处加入,可以取到该处与下一处之间所有军事任务列表,并顺利完成任务。 
否则, 
如果儿子是在相邻两个军机处之间加入的话,因为没有收到 到达下一军机处之前的 军事任务列表,自然就会在到达下一军机处之前,什么也不会干(因为不知道干什么)。 
儿子接到指挥官(asp.net程序员)的军事任务:“处理PostData事件”,由父亲引导执行(因为老爸年纪大有经验些)。 
如果儿子在名为“load“的军机处或以前被安排加入革命,可以取到“处理PostData事件”的军事任务,完成任务没问题。否则儿子因为没完成任务WEB革命失败,伤心的可是我们这些指挥官了。

本文转自today4king博客园博客,原文链接:http://www.cnblogs.com/jinzhao/archive/2009/05/08/1452539.html,如需转载请自行联系原作者
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
UniApp的页面生命周期包括一系列的生命周期钩子函数,用于在页面的不同阶段执行相应的操作。以下是UniApp中常用的页面生命周期钩子函数: 1. onLoad:页面加载时触发,可以在此函数中进行一些初始化操作。 2. onShow:页面显示时触发,每次页面显示都会执行此函数,可以在此函数中进行数据刷新等操作。 3. onReady:页面初次渲染完成时触发,可以在此函数中进行一些视图操作。 4. onHide:页面隐藏时触发,可以在此函数中进行一些清理工作或保存数据等操作。 5. onUnload:页面卸载时触发,可以在此函数中进行一些清理工作或保存数据等操作。 6. onPullDownRefresh:下拉刷新时触发,可以在此函数中执行下拉刷新相关的操作。 7. onReachBottom:上拉触底时触发,可以在此函数中执行上拉加载更多的操作。 8. onShareAppMessage:点击分享按钮时触发,可以在此函数中定义分享的内容和行为。 9. onPageScroll:页面滚动时触发,可以在此函数中处理页面滚动相关的逻辑。 除了以上常用的生命周期钩子函数,还有其他一些钩子函数用于处理特定场景下的操作,例如onTabItemTap(当点击底部tab栏时触发)和onResize(当页面尺寸变化时触发)等。 通过使用这些生命周期钩子函数,您可以在不同的阶段执行相应的操作,实现页面的初始化、数据更新、清理和交互等功能。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值