I am houbiao beta 0.1

javascript学习笔记之生命周期

分类:Self

我们通常定义的客户端生命周期起始于浏览器开始装载某个请求的特定数据,结束于浏览器发起一个新的请求(通常意味着页面的跳转或刷新)。客户端的javascript则作用于这个完整的生命周期过程中。

如果进一步细分,我们可以将客户端生命周期划分为从页面数据被装载页面数据装载完毕初始化阶段以及页面数据装载完毕一直到新的请求被发起之前的运行阶段。在前一个阶段里,javascript代码被浏览器解析,运行环境被初始化,函数和闭包被建立,而那些可以被立即执行的指令被执行并实时地得到结果。在后一阶段里,完成初始化的程序环境进入一个缺省的等待消息的循环,捕获用户操作引发的事件并作出正确响应,这种模式同经典的事件驱动模型非常接近。在这一阶段里,javascrip代码真正扮演一个界面交互行为处理者的角色。

很显然,被臃肿哦页面修饰的javascrip代码通常在初始化阶段被执行完毕,而负责用户交互的javascript几乎总是要在运行阶段被触发和执行。区分这两者的作用和执行规律,有助于分解问题,优化我们的系统设计。

来看2个经典的Hello World示例:DEMO - javascript学习笔记之生命周期-1 | DEMO - javascript学习笔记之生命周期-2

两者比较,看起来略显繁琐的第二个示例是一种更加安全的方式,在这种方式中,指令不会对装载期的文档内容产生影响,脚本指令被注册到body的onload事件中执行,这样确保了在执行前所有的文档元素都已经正确初始化完毕。

假如出现某种意外导致程序终止,第一个示例可能因此而导致文档数据不能加载完全,而后者则不会有这样的风险。

一个比较好的习惯是把除声明之外的所有脚本指令都放到运行阶段来执行,这样避免了因为初始化期间的DOM元素加载失败或者低级的次序问题而导致脚本失效。

3511 reads 0 comment

上一篇:javascript学习笔记之数组去重

暂时还没有回复信息

Leave a comment

*