zoukankan      html  css  js  c++  java
  • 游览器

    1. 什么是浏览器内核?

      * 支持浏览器运行的最核心的程序

    2. 不同的浏览器可能不太一样

      * Chrome, Safari: webkit

      * firefox: Gecko

      * IE: Trident

      * 360,搜狗等国内浏览器: Trident + webkit

    3. 内核由很多模块组成

      * html,css文档解析模块 : 负责页面文本的解析

      * dom/css模块 : 负责dom/css在内存中的相关处理

      * 布局和渲染模块 : 负责页面的布局和效果的绘制

      * 布局和渲染模块 : 负责页面的布局和效果的绘制

      * 定时器模块 : 负责定时器的管理

      * 网络请求模块 : 负责服务器请求(常规/Ajax)

      * 事件响应模块 : 负责事件的管理

    -->

    <!--

    1. 定时器真是定时执行的吗?

      * 定时器并不能保证真正定时执行

      * 一般会延迟一丁点(可以接受), 也有可能延迟很长时间(不能接受)

    2. 定时器回调函数是在分线程执行的吗?

      * 在主线程执行的, js是单线程的

    3. 定时器是如何实现的?

      * 事件循环模型(后面讲)

    -->

    <!--

    1. 如何证明js执行是单线程的?

      * setTimeout()的回调函数是在主线程执行的

      * 定时器回调函数只有在运行栈中的代码全部执行完后才有可能执行

    2. 为什么js要用单线程模式, 而不用多线程模式?

      * JavaScript的单线程,与它的用途有关。

      * 作为浏览器脚本语言,JavaScript的主要用途是与用户互动,以及操作DOM。

      * 这决定了它只能是单线程,否则会带来很复杂的同步问题

    3. 代码的分类:

      * 初始化代码

      * 回调代码

    4. js引擎执行代码的基本流程

      * 先执行初始化代码: 包含一些特别的代码   回调函数(异步执行)

        * 设置定时器

        * 绑定事件监听

        * 发送ajax请求

      * 后面在某个时刻才会执行回调代码

    -->

    <!--

    1. 所有代码分类

      * 初始化执行代码(同步代码): 包含绑定dom事件监听, 设置定时器, 发送ajax请求的代码

      * 回调执行代码(异步代码): 处理回调逻辑

    2. js引擎执行代码的基本流程:

      * 初始化代码===>回调代码

    3. 模型的2个重要组成部分:

      * 事件(定时器/DOM事件/Ajax)管理模块

      * 回调队列

    4. 模型的运转流程

      * 执行初始化代码, 将事件回调函数交给对应模块管理

      * 当事件发生时, 管理模块会将回调函数及其数据添加到回调列队中

      * 只有当初始化代码执行完后(可能要一定时间), 才会遍历读取回调队列中的回调函数执行

    -->

    <!--

    1. H5规范提供了js分线程的实现, 取名为: Web Workers

    2. 相关API

      * Worker: 构造函数, 加载分线程执行的js文件

      * Worker.prototype.onmessage: 用于接收另一个线程的回调函数

      * Worker.prototype.postMessage: 向另一个线程发送消息

    3. 不足

      * worker内代码不能操作DOM(更新UI)

      * 不能跨域加载JS

      * 不是每个浏览器都支持这个新特性

    -->

    var btn = document.getElementById('btn')

        var mes = document.getElementById('message')

        btn.onclick = function (ev) {

          var num = mes.value

          var worker = new Worker('worker.js')

          //绑定消息的监听

          worker.onmessage = function (event) {

            console.log("接收主线程返回的数据"+event.data)

          }

          worker.postMessage(num)

          console.log('主线程向分线程发送数据: '+num)

        }

  • 相关阅读:
    单例模式(Singleton)的6种实现
    深入浅出单实例Singleton设计模式
    Singleton单例模式
    面试中的Singleton
    海量数据存储之Key-Value存储简介
    大数据时代的 9 大Key-Value存储数据库
    python 多线程两种实现方式,Python多线程下的_strptime问题,
    pycURL的内存问题
    百万级访问网站前期的技术准备
    IPv6 tutorial – Part 6: Site-local addresses and link-local addresses
  • 原文地址:https://www.cnblogs.com/love-life-insist/p/9063119.html
Copyright © 2011-2022 走看看