2011-03-17 45 views
4

我在腳本上使用的主要是Javascript。我有一些腳本,每1秒執行幾個任務,每0.02秒執行一次,等等。我的間隔執行諸如檢查ifs,執行一些innerHTML,小動畫等任務。現在我有4個,但是我認爲它會增加未來;也許我會把自己控制在10以下。儘管它在我的電腦中完全沒有滯後。有太多setTimeout()很好嗎?

  1. 一般來說,它會對一個網站有好處嗎?
  2. 由於它明顯是客戶端,所以不會有任何與互聯網連接的問題,對吧?
  3. 這是一種不好的做法,還是根本不是問題?

此外,我有一個jQuery的問題。正常的Javascript和jQuery可以做類似的事情(比如innerHTML和.html()),對嗎?鑑於這種情況,我應該更喜歡使用jQuery還是Javascript?

謝謝。

+1

關於你的第二個問題:[什麼時候使用Vanilla Javascript和jQuery?](http://stackoverflow.com/questions/4651923/) – 2011-03-17 14:09:37

回答

6

有太多的setTimeout()很好嗎?:你已經給了你自己的答案太多不好,不管你說什麼。

一般來說這將是很好的網站:可能不會,記得你不知道你的用戶的CPU /瀏覽器的組合,所以你應該建立自己的網站,它仍然是很好用的人誰你的電腦比你慢。一個滯後/無響應的網站是用戶將逃離的第一個站點。

由於它的客戶端顯然不會有任何與互聯網連接的問題,對吧?是正確的,除非您將網絡請求作爲超時的一部分。 Ajax每秒調用一次都不是一個好主意。

這是一種不好的做法,還是根本不是問題?糟糕的架構是不好的做法。如果您希望遵循最佳實踐,請閱讀設計模式。

此外,我有一個jQuery的問題。正常的Javascript和jQuery可以做類似的事情(比如innerHTML和.html()),對嗎?鑑於這種情況,我應該更喜歡使用jQuery還是Javascript?使用jQuery爲您提供了方便的交叉瀏覽器兼容性。在大多數情況下,非專家使用像jQuery這樣的庫比不使用它更好。

+1

如果我有setTimeout 30分鐘會怎麼樣...會超載瀏覽器嗎?推薦它對服務器有任何影響?倒計時的地方在哪裏? – 2013-06-12 23:02:18

1

1)通常很好:不,總的來說,它會產生處理器負載,這會降低瀏覽器速度。但是實際的代碼會比超時本身影響更多。但現代瀏覽器與10個定時器沒有任何問題...;)

2)是的,沒有問題的超時。

3)不,它是進行異步處理的唯一方法。所以它不是真正的問題;)

4)與innerHTML和.html()(和其他jQuery函數)的區別是,jQuery有更好的跨瀏覽器實現。它知道某些瀏覽器的怪癖,並能夠繞過它們。對於簡單的問題,簡單的'JavaScript是完美的(並且帶寬和處理能力更便宜)。但是對於更復雜的腳本,一旦你選擇使用jQuery,爲什麼不使用它。 ;)

2

對於你的第一個問題,更多的是你在超時後調用的每個回調中所做的事情。不知道很難提供更清晰的答案。

但請記住,JavaScript在瀏覽器中是單線程的,所以如果您定期運行昂貴的操作,它將無法正常工作。如果你想用這個來做動畫,我強烈建議你先考慮一個現有的庫(dojo,jquery,mootools等),並且只在你發現它們不足的時候才嘗試和實現它。很多工作已經使這些庫成爲高性能的,並且不太可能在第一次刺激時做得更好。

第二個問題:我再次使用庫。對於一個簡單的innerHTML來說,不太可能有太大的區別,但是在一般情況下,像jQuery或Dojo這樣的庫將有助於涵蓋不同瀏覽器中DOM之間的差異,捕捉您不知道的令人討厭的邊緣案例(或者想要知道),並且可能比您自己的代碼更好地測試和支持。讓它按照自己的方式工作,然後在你需要的時候用你自己的香草JS進行優化。

0

使用jQuery去 - 少寫,多做

你可以有這麼多的功能,效果,插件將幫助您從編碼節省時間。

任何方式,當你正在開發一個網站的JavaScript或jQuery效果,你會期望用戶應該有一個更新的瀏覽器和系統。

你的功能不會工作,即5。 :)

因此,根據我的理解,添加超時和js函數不會影響性能。

http://api.jquery.com/delay/

http://api.jquery.com/toggle/

http://api.jquery.com/html/

圍棋與jQuery API函數和發展自己的USNG插件own..instead。

+0

擅自做我自己的事情而不是插件。謝謝!! – ton 2011-03-18 05:50:17

3

一般來說,這對網站有好處嗎? 大多數其他答覆者都說不,但如果沒有更多信息,他們不可能提出這一說法。該決定僅針對您的網站。這可能會很好。不要猜測性能。衡量事情。將性能問題修復在真正存在的地方,而不是你的直覺告訴你它們存在的地方。

由於它的客戶端顯然不會有任何與互聯網連接的問題,對吧? 正確。

這是一種不好的做法,還是根本不是問題? 有很多最好的執行超時回調的任務。如果您需要定期執行某些操作,或者經過一定時間後,setTimeout不僅合理使用,而且專門用於這些任務。