zoukankan      html  css  js  c++  java
  • Js中概念问题(宏任务、微任务、优雅降级、渐进增强)

    1.宏任务和微任务(就是代码的执行顺序)======Event loop/描述场景执行顺序(事件循环机制)

      1.概念:

        通俗易懂的例子:
        去银行办理业务的人就是一个个宏任务,当宏任务P1在柜台办理业务时,其它任务都需等待,当一个宏任务P1办理业务结束时,柜台职员会询问他还有没有其它微任务,如果他还有其他业务,则其他宏任务都需等待。

        就是微任务是在宏任务之前执行。

      2.举例  

        宏任务包括:script(整体代码), setTimeout, setInterval, setImmediate, I/O, UI rendering。

        微任务包括: Promises, Object.observe, Mutation.Observer

       3.执行顺序
        先执行同步代码------》遇到异步宏任务则将异步宏任务放入宏任务队列中-----》遇到异步微任务则将异步微任务放入微任务队列中-----》当所有同步代码执行完毕后,再将异步微任务从队列中调入主线程执行------》微任务执行完毕后再将异步宏任务从队列中调入主线程执行,一直循环直至所有任务执行完毕。

    2.优雅降级与渐进增强

        1.什么是渐进增强、优雅降级?

          渐进增强 :针对低版本浏览器进行构建页面,保证最基本的功能,然后再针对高级浏览器进行效果、交互等改进和追加功能达到更好的用户体验。

          优雅降级 :一开始就构建完整的功能,然后再针对低版本浏览器进行兼容。

        2.区别:

          优雅降级是从复杂的现状开始,并试图减少用户体验的供给

          渐进增强则是从一个非常基础的,能够起作用的版本开始,并不断扩充,以适应未来环境的需要。

          降级(功能衰减)意味着往回看;而渐进增强则意味着朝前看,同时保证其根基处于安全地带。

        “优雅降级”观点

          “优雅降级”观点认为应该针对那些最高级、最完善的浏览器来设计网站。而将那些被认为“过时”或有功能缺失的浏览器下的测试工作安排在开发周期的最后阶段,并把测试对象限定为主流浏览器(如 IE、Mozilla 等)的前一个版本。

           在这种设计范例下,旧版的浏览器被认为仅能提供“简陋却无妨 (poor, but passable)” 的浏览体验。你可以做一些小的调整来适应某个特定的浏览器。但由于它们并非我们所关注的焦点,因此除了修复较大的错误之外,其它的差异将被直接忽略。

         “渐进增强”观点

          “渐进增强”观点则认为应关注于内容本身。

          内容是我们建立网站的诱因。有的网站展示它,有的则收集它,有的寻求,有的操作,还有的网站甚至会包含以上的种种,但相同点是它们全都涉及到内容。这使得“渐进增强”成为一种更为合理的设计范例。这也是它立即被 Yahoo! 所采纳并用以构建其“分级式浏览器支持 (Graded Browser Support)”策略的原因所在。

  • 相关阅读:
    ES6基础之——对象表达式
    ES6基础之——函数的名字name属性
    ES6基础之——解构参数 Destructured Parameters
    ES6基础之——展开操作符Spread和剩余操作符Rest
    ES6基础之——箭头函数Arrow Fuctions
    ES6基础——默认参数 Default Parameter Values
    node.js 调用第三方服务
    node 创建server 及加载静态页面
    VUE插件-图片濑加载
    Less函数说明
  • 原文地址:https://www.cnblogs.com/yxkNotes/p/13936840.html
Copyright © 2011-2022 走看看