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

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

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

      

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

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

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

javascript的生命周期相关推荐

  1. 【基础篇1】JavaScript页面生命周期

    各位看官老爷,是否在框架横行的时代,忽略了原生js的方法.今天给大家带来一期html页面生命周期的分享. 页面生命周期方法 HTML 页面的生命周期包含四个重要事件: 事件 说明 应用场景 DOMCo ...

  2. 前端学习(1720):前端系列javascript之生命周期下

    page2.vue <template><view>这是page2<button type="primary" @click="open&q ...

  3. 前端学习(1718):前端系列javascript之生命周期上

    <script>export default {onLaunch: function() {console.log('App Launch')//登录//用户信息//存储},onShow: ...

  4. JavaScript 生命周期

    一.JavaScript有生命周期吗? 转自:http://blog.sina.com.cn/s/blog_694c144f0101pida.html 从页面数据被装载到页面数据装载完毕的初始化阶段: ...

  5. javascript函数的生命周期

    javascript函数的生命周期 var a = 10; function fun(){var a=100;a++;console.log(a); } fun(); console.log(a); ...

  6. JavaScript 变量的作用域和生命周期

    代码有生命吗?答案是有.它也像我们一样,拥有自己的生命.变量有局部变量和全局变量,它们的生命长短不一样.不过它的生命都是从它被声明的时候开始的,不同的是局部变量 会在函数运行以后被删除,也就是死亡,而 ...

  7. Vue 生命周期记录_学习笔记

    官方给出的设计图入戏 为了能更好的理解这个图呢,写了下面的demo <!DOCTYPE html> <html><head><meta charset=&qu ...

  8. React 组件生命周期

    组件的生命周期可分成三个状态: Mounting:已插入真实 DOM Updating:正在被重新渲染 Unmounting:已移出真实 DOM 生命周期的方法有: componentWillMoun ...

  9. React State和生命周期 3

    微信小程序开发交流qq群   173683895    承接微信小程序开发.扫码加微信. 一:组件的生命周期 组件的生命周期可分成三个状态: 安装:已插入真实DOM 更新:正在被重新渲染 卸载:已移出 ...

  10. alert 返回页面 刷新_详解 HTML 页面原生的生命周期事件

    DOMContentLoaded,load,beforeunload,unload HTML 页面的生命周期包含三个重要事件: DOMContentLoaded -- 浏览器已完全加载 HTML,并构 ...

最新文章

  1. 排序算法---冒泡排序(java版)
  2. UA OPTI570 量子力学1 电磁波与光子
  3. 使用Qt创建XML文档及XML文档的增删改
  4. C#字符串处理(String与StringBuilder)
  5. python爬虫动态解析js_Python爬虫实战入门五:获取JS动态内容—爬取今日头条
  6. node.js打开指定浏览器的四种方式
  7. php怎么获取cid,Typecho根据文章cid获取文章信息
  8. 819C - RAW文件系统、集成文件系统
  9. python xpath 中文乱码_Python爬虫实战 批量下载高清美女图片!让你们开开眼!
  10. iOS架构-cocoaPods之Podfile语法(18)
  11. Rest-assured框架详解
  12. amd cpu排行_最新intel和amd处理器性能排行cpu天梯图2019
  13. 三层交换机和路由器的区别
  14. 微信小程序引入组件以及catchtouchmove实现拖动效果
  15. 470Ω排阻阻值测量
  16. IDEA控制台为什么不打印日志
  17. AD转换器输入之前为何要接一个电压跟随器?
  18. 调试本地SQLServer存储过程
  19. 开源知识库存储管理平台
  20. 如何使用晨曦记账本,记录借还款

热门文章

  1. Windows10中,如何改变鼠标光标(指针)的大小和颜色?
  2. 学习C语言的心路历程
  3. 什么是Windows驱动程序?
  4. Redux Reducer 的拆分
  5. 那些所倚靠的利器记载
  6. java实现数字0-9转换为繁体字
  7. ubantu软件安装
  8. 【Week 1】Preferences and Ratings
  9. 推荐两个软件下载网站:多特和绿盟
  10. html文档半结构化数据,半结构化数据