下载安卓APP箭头
箭头给我发消息

客服QQ:3315713922

web前端:不要覆盖标准方法

作者:Apolis     来源: https://www.cnblogs.com/apolis/archive/2020/03/19/12526250.h点击数:812发布时间: 2020-03-31 10:13:36

标签: 代码设计window计算机

Web开发

  在网页上点击鼠标右键,选择菜单中的"查看源文件",就可以通过记事本看到网页的实际内容。可以看到网页实际上只是一个纯文本文件。它通过各式各样的标记对页面上的文字、图片、表格、声音等元素进行描述(例如字体、颜色、大小),而浏览器则对这些标记进行解释并生成页面,于是就得到你现在所看到的画面。为什么在源文件看不到任何图片?网页文件中存放的只是图片的链接位置,而图片文件与网页文件是互相独立存放的,甚至可以不在同一台计算机上。

  需求:

  页面不可见时,例如切换浏览器页签、最小化浏览器,暂停所有定时器;页面显示时,再启动定时器。

  一个解决方案如下:

  constuuid=(()=>{

  letno=0;

  return()=>no++;

  })();

  constoriginSetInterval=window.setInterval;

  constoriginClearInterval=window.clearInterval;

  consttimers=[];

  conststartTimers=()=>

  timers.forEach(t=>{

  t.originIntervalId=originSetInterval(

  t.fn,

  t.ms

  );

  });

  conststopTimers=()=>

  timers.forEach(t=>{

  originClearInterval(t.originIntervalId);

  });

  document.addEventListener(

  "visibilitychange",

  ()=>

  document.visibilityState==="visible"

  ?startTimers()

  :stopTimers()

  );

  window.setInterval=(fn,ms)=>{

  constoriginIntervalId=

  document.visibilityState==="visible"

  ?originSetInterval(fn,ms)

  :undefined;

  constid=uuid();

  timers.push({

  fn,

  ms,

  originIntervalId,

  id

  });

  returnid;

  };

  window.clearInterval=id=>{

  constt=timers.find(t=>t.id===id);

  originClearInterval(t.originIntervalId);

  timers.splice(timers.indexOf(t),1);

  };

  覆写setInterval和clearInterval,不用改已有代码,所有定时器就都能自动启停。

  但我不推荐在项目中这么做,宁愿麻烦点,写个setSmartInterval,全局替换setInterval。原因有很多,例如:

  1可能影响第三方库

  2没法再用原生的setInterval

  3新人培训成本增加

  4……

  其中,我最看重的是:这么做导致代码行为出人意料。当一个东西和经验认知不一样时,使用它要付出更多的思考。每次用setInterval,都会想一下它和原生的区别。看起来是小事,却会打断你的思路。“Don'tmakemethink”对于代码设计同样重要。

  从08年开始,国内网页游戏开始不断兴起,网页游戏(Webgame)又称web游戏,无端网游,简称页游。网页游戏也是需要重视水平的,如音效的筛选、恰到好处的乐曲与音效搭配、以及良好的结构平台等等,有了这些元素,才能做出一个好的网页游戏,同时也会引来更多的浏览人数。网页游戏的出现让中国进入了一个新的网络游戏平台,也进入了一个页游发展的竞争时代。

赞(14)
踩(0)
分享到:
华为认证网络工程师 HCIE直播课视频教程