成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

Chrome團隊:如何曲線拯救KPI

系統 瀏覽器
當聊到Chrome,你第一反應是啥?市占率第一的瀏覽器?鼎鼎大名的V8引擎?瀏覽器調試的標配——DevTools?

大家好,我是卡頌。

當聊到Chrome,你第一反應是啥?

市占率第一的瀏覽器?鼎鼎大名的V8引擎?瀏覽器調試的標配——DevTools?

對于Chrome團隊成員來說,第一反應很可能是這兩個指標(KPI):

  • UX(user experience)用戶體驗
  • DX(developer experience)開發者體驗

作為開發者,相信你能感受到諸多圍繞這兩個指標的改進:

  • 底層V8、webassembly引擎的迭代
  • lighthouse工具對UX、DX指標的定量分析
  • Chrome對ES標準新特性的快速支持

當一切都做到極致后,圍繞這兩個指標還有什么可挖掘的呢(KPI能寫啥呢)?

[[413378]]

讓我們一起看看Chrome團隊為了更好的web體驗,做了哪些曲線救國的努力。

邏輯要順

這里的邏輯是這樣的:

當今世界大部分web項目依賴開源工具

更好的開源工具帶來更好的web體驗

按照這個邏輯,只要我們(Chrome團隊)與開源項目合作,讓他們變得更好,那就是為更好的web體驗做貢獻(也就能拯救KPI了)。

[[413379]]

所以,只需要挑選合適的項目,根據其適合的優化類型(UX、DX),展開深度合作就行。

接下來,讓我們看看一些與Chrome團隊合作的項目。

[[413380]]

與Next.js合作Next.js作為基于React的全功能生產可用框架,其SSR功能一直與React團隊深度合作。

Chrome團隊基于SSR這一場景,為Next.js定制了一系列Timing API。

新Timing API將SSR相關指標納入統計(比如hydrate時間)。

圖片

同時,LightHouse工具可以收集更多SSR相關數據供參考:

圖片

與Babel合作

我們常用@babel/preset-env根據目標瀏覽器版本將高級ES語法編譯為ES5語法。

這種降級編譯的實現思路為:每個高級語法可以看作一或多個語法轉換的集合。

在遇到高級語法時,將其替換為這些語法轉換的實現。

舉個例子:函數參數可以作為解構、參數默認值、剩余參數這3個特性的集合。對于如下源代碼:

  1. const foo = ({ a = 1 }, b = 2, ...args) => [a,b,args]; 

經過@babel/preset-env編譯后的輸出包含了解構、參數默認值、剩余參數這3個特性的實現:

  1. const foo = function foo(_ref, b) { 
  2.  let { a = 1 } = _ref; 
  3.  
  4.  if (b === void 0) { b = 2; } 
  5.  
  6.  for ( 
  7.    var _len = arguments.length, 
  8.      args = new Array(_len > 2 ? _len - 2 : 0), 
  9.      _key = 2;  _key < _len; _key++ 
  10.  ) { 
  11.    args[_key - 2] = arguments[_key]; 
  12.  } 
  13.  
  14.  return [a, b, args]; 
  15. }; 

可以看到,編譯后總體代碼量激增!

某些高級語法,現代瀏覽器可能或多或少已經支持了,只是支持度不好。

所以,一個更好的思路是:

將不支持的語法替換為已支持的語法

這樣就能省去「特性實現」這部分代碼。

對于以上例子中的語法,只有一款現代瀏覽器由于自身bug導致不支持。

解決辦法是:將{ a = 1 }替換為{ a: a = 1 }。

所以,以上代碼只需編譯為如下形式在現代瀏覽器都能運行:

  1. const foo = ({ a: a = 1 }, b = 2, ...args) => [a,b,args]; 

對比兩種編譯結果,后者較前者代碼量減少80%!

圖片

這種瀏覽器間差異帶來的優化空間,Babel團隊很難獨自完成。

所以,Chrome團隊與其合作開發了@babel/preset-modules,并且已經作為bugfixes參數集成到@babel/preset-env中。

與React合作

作為前端領域運行時最重的視圖庫,React一直在尋找運行時的優化空間。

navigator.scheduling.isInputPending API就是其與Chrome團隊合作的產物。

該API返回一個函數,調用該函數后如果當前有input事件正在調度,則返回true。

比如如下例子,當有鼠標、鍵盤事件在調度時,暫停JS線程執行:

  1. while (workQueue.length > 0) { 
  2.   if (navigator.scheduling.isInputPending(['mousedown''mouseup''keydown''keyup'])) { 
  3.     break; 
  4.   } 
  5.   let job = workQueue.shift(); 
  6.   job.execute(); 

輸入框的輸入能夠更快被瀏覽器渲染,顯著減少瀏覽器調幀(表現為輸入框輸入內容卡頓)。

總結

樹挪死,人挪活。

當項目發展到一定時期,沒有多少內部可優化空間時,需要主動出擊,賦能其他垂直領域,聚焦用戶感知賽道,采用復用打法達成持久收益!

說人話就是:多去其他團隊蹭蹭,KPI會有的。

你,學會了么?

 

責任編輯:姜華 來源: 魔術師卡頌
相關推薦

2017-07-25 13:16:15

Linux負載經驗

2022-11-07 16:42:35

KPI軟件開發團隊

2016-09-02 16:24:30

2019-11-19 15:39:13

云計算數據中心KPI

2024-09-18 09:00:40

2009-11-23 09:12:32

Chrome OS臺灣團隊

2009-11-25 11:13:56

Chrome OS開發

2010-02-06 09:36:46

gPadChrome

2022-11-10 10:29:07

KPI軟件開發

2018-08-27 16:41:07

KPI技術人

2013-03-16 14:20:24

Windows RT

2021-12-05 22:32:13

人工智能機器人技術

2023-08-01 08:26:32

2011-06-22 10:02:41

2012-01-16 11:16:05

比爾·蓋茨微軟

2019-04-11 08:32:54

物聯網工人安全IOT

2010-04-20 21:55:36

2021-05-31 09:02:55

KPI考核工具公司

2020-07-01 15:46:44

物聯網航空業傳感器

2020-07-31 17:08:12

物聯網航空技術
點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 日日草天天干 | 国产精品久久久久久久一区探花 | 亚洲精品国产区 | 国产97视频在线观看 | 国产欧美日韩综合精品一区二区 | 国产精品成人久久久久 | 免费视频成人国产精品网站 | 欧美日韩在线观看视频网站 | 久久久久久亚洲精品 | 精品国产一区二区三区久久影院 | 免费成人高清在线视频 | 国产精品福利在线观看 | 国产精品无码永久免费888 | 欧美日韩国产免费 | 国产精品特级毛片一区二区三区 | 欧美一区二区三区在线播放 | 97成人精品 | 国产欧美精品 | 黄在线 | 国产91在线 | 中日 | 在线观看中文字幕av | 日韩一级精品视频在线观看 | 天堂色 | 高清18麻豆 | 国产精品久久99 | 国精产品一品二品国精在线观看 | 爱高潮www亚洲精品 中文字幕免费视频 | 亚洲天堂av网 | 蜜臀久久99精品久久久久久宅男 | 日本成人在线观看网站 | 欧美一区二区三区 | 日日爱视频 | 国产精品久久久久久久久久久久久 | 日本a在线 | 亚洲一区二区三区在线免费 | 国产精品毛片一区二区在线看 | 日韩三级电影一区二区 | 激情在线视频网站 | www312aⅴ欧美在线看 | 精品乱码一区二区三四区视频 | 中文字幕一区二区三区在线观看 |