JavaScript是單線程的,這意味著它只有一個調用棧和一個內存堆。這經常會導致性能卡頓以及頁面元素或整個網站的無響應。如果給JavaScript分配大量任務,它就會忙於處理這些任務,而無法快速處理其他事情,例如事件處理程序。
最近圍繞這個問題出現了一些有趣的觀點和反駁。
Das Surma一直提倡盡可能多地將JavaScript任務從主線程轉移出去。事實上,在使用Web Workers時,他建議:始終使用Web Workers。 Web Workers是將JavaScript從主線程中分離出來的主要方法。 Paul Lewis將這個問題比作早高峰:一天中最糟糕的出行時間。許多人無法在其他時間出行,因為他們必須在9點前到達工作地點。這正是許多Web代碼如今的樣子:所有內容都在單線程(主線程)上運行,流量很大。事實上,情況比這更糟:從市中心到郊區只有一條車道,幾乎每個人都在路上,即使他們不需要在9點前到達辦公室。
Surma將其他語言中經常將“主線程”稱為“UI線程”的做法進行了比較。如果你的任務與UI相關,就在主線程上執行;如果不是,就在其他線程上執行。他在《Web Platform Podcast – 194: Off the Main Thread》這一期節目中深入探討了這個問題。我認為這可能會改變JavaScript開發人員的態度和思維方式。
將任務從UI線程中分離的一個例子是狀態管理。
David Gilbertson可能讀到了這篇文章,並寫道:我最近看到一篇文章認為更新Redux存儲是Web Workers的理想選擇,因為它不是UI工作(非UI工作不屬於主線程)。將數據處理轉移到工作線程聽起來很合理,但這個想法讓我覺得有點學術性。
David的主要觀點似乎是,我們需要處理的一些繁重的JavaScript任務是對用戶發起的操作的響應,用戶無論如何都需要等待任務完成,因此在此期間UI無響應是可以接受的。但對於任何非用戶發起的任務——並且耗時超過100毫秒——他同意使用Web Worker會有所幫助。
(關於這100毫秒,值得注意的是,Surma的一個主要觀點是,世界上有很多低端手機——誰知道高端手機上的100毫秒在低端手機上會是什麼樣的。)
在JavaScript中將任務從主線程中分離出來的主要技巧是使用Web Workers。它不是什麼hack,Web Workers確實是為JavaScript帶來多個後台線程的原生API。與Service Worker類似,它們通常位於另一個文件中:
var myWorker = new Worker('worker.js');
但它們不必如此——你可以內聯它們或使用庫。 API並不糟糕,但也並不出色。 Surma為此創建了一個庫:Comlink。
Surma在這方面的努力是長期的。這是2018年Chrome峰會上的一個特色,主題是《A Quest to Guarantee Responsiveness: Scheduling On and Off the Main Thread》,並在2019年再次出現,主題是《The main thread is overworked & underpaid》,但這次的觀看次數幾乎是當時的六倍:
而且他並非孤軍奮戰。 Alex MacArthur也談到了調整他對事件處理程序的看法以適應在非主線程上執行任務。
以上是'關閉主線程”的詳細內容。更多資訊請關注PHP中文網其他相關文章!

在這篇文章中,布萊克·莫里(Blackle Mori)向您展示了一些駭客,同時試圖推動同位HTML支持的極限。如果您敢於使用這些,以免您也被標記為CSS罪犯。

具有CSS的自定義光標很棒,但是我們可以將JavaScript提升到一個新的水平。使用JavaScript,我們可以在光標狀態之間過渡,將動態文本放置在光標中,應用複雜的動畫並應用過濾器。

互動CSS動畫和元素相互啟動的元素在2025年似乎更合理。雖然不需要在CSS中實施乒乓球,但CSS的靈活性和力量的增加,可以懷疑Lee&Aver Lee有一天會成為一種

有關利用CSS背景濾波器屬性來樣式用戶界面的提示和技巧。您將學習如何在多個元素之間進行背景過濾器,並將它們與其他CSS圖形效果集成在一起以創建精心設計的設計。

好吧,事實證明,SVG的內置動畫功能從未按計劃進行棄用。當然,CSS和JavaScript具有承載負載的能力,但是很高興知道Smil並沒有像以前那樣死在水中

是的,讓#039;跳上文字包裝:Safari Technology Preview In Pretty Landing!但是請注意,它與在鉻瀏覽器中的工作方式不同。

此CSS-tricks更新了,重點介紹了年鑑,最近的播客出現,新的CSS計數器指南以及增加了幾位新作者,這些新作者貢獻了有價值的內容。

在大多數情況下,人們展示了@Apply的@Apply功能,其中包括Tailwind的單個property實用程序之一(會改變單個CSS聲明)。當以這種方式展示時,@Apply聽起來似乎很有希望。如此明顯


熱AI工具

Undresser.AI Undress
人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover
用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool
免費脫衣圖片

Clothoff.io
AI脫衣器

Video Face Swap
使用我們完全免費的人工智慧換臉工具,輕鬆在任何影片中換臉!

熱門文章

熱工具

PhpStorm Mac 版本
最新(2018.2.1 )專業的PHP整合開發工具

VSCode Windows 64位元 下載
微軟推出的免費、功能強大的一款IDE編輯器

SublimeText3 Mac版
神級程式碼編輯軟體(SublimeText3)

MantisBT
Mantis是一個易於部署的基於Web的缺陷追蹤工具,用於幫助產品缺陷追蹤。它需要PHP、MySQL和一個Web伺服器。請查看我們的演示和託管服務。

Dreamweaver CS6
視覺化網頁開發工具