關(guān)于編寫性能高效的javascript事件的技術(shù)
如何能做出高效的web前端程序是我每次做前端開發(fā)都會不自覺去考慮的問題。幾年前雅虎里牛逼的前端工程師們出了一本關(guān)于提升web前端性能的書籍,轟動了整個web開發(fā)技術(shù)界,讓神秘的web前端優(yōu)化問題成為了大街的白菜,web前端優(yōu)化變成了菜鳥和大牛都能回答的簡單問題,當(dāng)整個業(yè)界都知道了驚天秘密的答案,那么現(xiàn)有的優(yōu)化技術(shù)已經(jīng)不能對你開發(fā)的網(wǎng)站產(chǎn)生的質(zhì)的飛越,為了讓我們開發(fā)的網(wǎng)站性能比別人的網(wǎng)站更加優(yōu)秀,我們需要更加深入的獨(dú)立思考,儲備更加優(yōu)秀的技能。
Javascript里的事件系統(tǒng)是我想到的第一個突破點(diǎn)。為什么會是javascript的事件系統(tǒng)呢?我們都知道web前端包含三個技術(shù):html、css和javascript,html和css如何結(jié)合真是一目了然:style、class、id以及html標(biāo)簽,這個沒啥好講的,但是javascript是如何切入到html和css中間,讓三者融合呢?最后我發(fā)現(xiàn)這個切入點(diǎn)就是javascript的事件系統(tǒng),不管我們寫多長多復(fù)雜的javascript代碼,最終都是通過事件系統(tǒng)體現(xiàn)在html和css上,因此我就在想既然事件系統(tǒng)是三者融合的切入點(diǎn),那么一個頁面里,特別是當(dāng)今越來越復(fù)雜的網(wǎng)頁里必然會有大量事件操作,沒有這些事件我們精心編寫的javascript代碼只有刀槍入庫,英雄無用武之地了。既然頁面會存在大量事件函數(shù),那么我們按習(xí)慣寫事件函數(shù),會存在影響效率的問題嗎?我研究下來的答案是真有效率問題,而且還是嚴(yán)重的效率問題。
為了說清楚我的答案,我要先詳細(xì)講解下javascript的事件系統(tǒng)。
事件系統(tǒng)是javascript和html以及css融合的切入點(diǎn),這個切入點(diǎn)好比java里的main函數(shù),一切神奇都是由這里開始,那么瀏覽器是如何完成這種切入呢?我研究下來一共有3種方式,它們分別是:
方式一:html事件處理
html事件處理就是將事件函數(shù)直接寫在html標(biāo)簽里,因為這種寫法和html標(biāo)簽緊耦合,所以稱為html事件處理。例如下面代碼:
<input type="button" id="btn" name="btn" onclick="alert('Click Me!')"/>
相關(guān)文章:
1. JavaWeb Servlet中url-pattern的使用2. jsp中sitemesh修改tagRule技術(shù)分享3. asp(vbscript)中自定義函數(shù)的默認(rèn)參數(shù)實(shí)現(xiàn)代碼4. React優(yōu)雅的封裝SvgIcon組件示例5. 輕松學(xué)習(xí)XML教程6. php網(wǎng)絡(luò)安全中命令執(zhí)行漏洞的產(chǎn)生及本質(zhì)探究7. ASP刪除img標(biāo)簽的style屬性只保留src的正則函數(shù)8. JSP servlet實(shí)現(xiàn)文件上傳下載和刪除9. ASP基礎(chǔ)知識VBScript基本元素講解10. 詳解瀏覽器的緩存機(jī)制
