
Jeremy Keith Jeffrey Sambells
本書講述了JavaScript、DOM 和HTML5 的基礎知識,着重介紹DOM 編程技術背後的思路和原則:平穩退化、漸進增強和以用戶爲中心等。這些概念對於任何前端Web 開發工作都非常重要。本書將這些概念貫穿在書中的所有代碼示例中,以便呈現用來創建圖片庫頁面的腳本、用來創建動畫效果的腳本和用來豐富頁面元素呈現效果的腳本,最後結合所講述的內容創建了一個實際的網站。
一、書中提到的一些觀點: 沒人能把一種程序設計語言的所有語法和關鍵字都記住。平穩退化、漸近增強、以用戶爲中心的設計對任何前端Web開發工作都非常重要。這些思路貫穿在本書的所有示例代碼中。本書的精華在於作者在書中提到的關於JavaScript和DOM腳本編程工作的基本原則、良好習慣和正確思路。 在有些場合,需要決定是採用純粹的CSS解決還是利用DOM來設置樣式,作者提到,“如果你手裏頭只有榔頭,那麼你看到的任何東西都像釘子。”如果你只喜歡CSS,那麼十有八九會選擇一個CSS解決方案,而不考慮JavaScript解決方案的效果會不會更好。反之,如果只懂得寫DOM腳本,往往會立刻編寫JavaScript函數,而不去考慮用CSS來解決問題會不會更簡明快捷。如果想改變某個元素的呈現效果,使用CSS;如果想改變某個元素的行爲,使用DOM;如果想根據某個元素的行爲去改變它的呈現效果,則沒有放之四海皆準的答案。 二、整本書的大致內容: 第1章介紹了JavaScript的起源,瀏覽器戰爭以及W3C推出標準化DOM,遵循DOM標準,終於可以實現“編寫一次,隨處運行”的夢想。 第2章簡要介紹了一下JavaScript語法,需要詳細瞭解JavaScript語法可以參考《JavaScript高級程序設計(第4版)》。 第3章首先介紹了DOM(Document Object Model)的概念,然後介紹了DOM中三種主要的節點:元素節點、文本節點和屬性節點,其中DOM的原子是元素節點。簡單介紹了CSS(層疊樣式表)。獲取元素節點有3種DOM方法:getElementById、getElementsByTagName、getElementsByClassName。通過getAttribute和setAttribute可以獲取和設置特定元素的屬性。 第4章展示了一個案例:JavaScript圖片庫。本章介紹了DOM的其他屬性,包括:childNodes、nodeType、nodeValue、firstChild和lastChild。元素節點的nodeType屬性值是1;屬性節點的nodeType屬性值是2;文本節點的nodeType屬性值是3。重點有兩個:一個是如何利用DOM提供的方法編寫圖片庫腳本,另一個是如何利用事件處理函數把JavaScript代碼與網頁集成在一起。 第5章介紹了與DOM腳本編程有關的概念和實踐。包括,平穩退化:確保網頁在沒有JavaScript的情況下也能正常工作。分離JavaScript:把網頁的結構和內容與JavaScript腳本的動作分開。向後兼容性:確保老版本的瀏覽器不會因爲JavaScript腳本而死掉。性能考慮:確定腳本執行的性能最優。 第6章:圖片庫改進版。對第4章的圖片庫案例進行了優化。(1)儘量讓JavaScript代碼能夠平穩退化,引入了許多項測試和檢查。(2)沒有使用onkeypress事件處理函數,使JavaScript代碼的可訪問性得到保證。(3)結構與行爲分離。將事件處理函數從標記文檔分離到一個外部的JavaScript文件。 第7章介紹了向瀏覽器裏的文檔動態添加標記的方法,包括傳統的document.write方法和innerHTML屬性。並介紹了利用DOM方法動態創建標記的方法:createElement、createTextNode、appendChild、insertBefore。使用createElement或createTextNode方法剛剛創建出來的節點只是JavaScript世界裏的孤兒。利用appendChild、insertBefore方法可以將這些DocumentFragment對象插入某個文檔的節點樹,使它們呈現在瀏覽器窗口裏。構建了一個非常實用的insertAfter函數。還簡要討論了Ajax和異步請求。 第8章繼續使用DOM方法和屬性動態創建標記。本章編寫了三個函數:爲文檔創建“縮略語列表”的displayAbbreviations函數,爲文檔創建“文獻來源鏈接”的displayCitations函數,爲文檔創建“快捷鍵清單”的displayAccessKeys函數。 第9章介紹了3種CSS-DOM技術的具體應用示例。(1)根據元素在節點樹裏的位置設置它們的樣式(styleHeaderSiblings函數)。(2)遍歷一個節點集合設置有關元素的樣式(stripeTables函數)。(3)在事件發生時設置有關元素的樣式(highlightRows函數)。 第10章使用JavaScript實現動畫效果,編寫了一個通用函數prepareSlideshow函數,具有平滑的動畫效果和平穩退化。 第11章簡單介紹了HTML5的一些特性,包括Canvas、視頻、音頻和表單。 第12章使用前文介紹的所有與DOM腳本編程相關的技術,從頭開始爲某個樂隊Jay Skript and the Domsters做一個網站,然後使用JavaScript爲網站增強交互功能。 附錄介紹了JavaScript庫,包括jQuery、Prototype、YUI、Dojo Toolkit、MooTools,主要介紹了jQuery。
二零二零年讀完的第二本,感覺比較入行不久的前端工程師看吧,雖然現在是虛擬DOM橫向天下的時代,彷彿不懂遠古時代的DOM知識也能交付,但是缺少了這塊知識的工程師就猶如無根之樹,風大一點就倒。對於前端技術的理解最終都必須落到這樣的實處,因爲它纔是最原始的載體。作者思路也很清晰的,舉的例子也不錯,不愧爲經典。😄
比較適合入門,內容淺顯易懂,簡單講解了前端開發入門所需的技能和知識點,並有實戰案例學習練習,讓初學者快速掌握書中所學知識點
從工作以來就到處碰到JS代碼,不過從來沒有深入瞭解過這門語言,特別是虛擬DOM橫行後原先那點點基礎就都過時了,重新瞭解一下
非常好的入門書,不管你是新手還是老手,都能從中獲取到你想要的知識,好書永不過時,即使裏面有些寫法已經老舊,但是思想卻是一貫的,非常值得推薦閱讀。
2023 看完的第6本書,也是今年第一本前端相關的書, js 權威指南看了1/3 看不下去了,現在回過頭看簡單一點的 DOM,發現js那邊又有了新的一些感想, 這本書從演示了無前端框架前,前端代碼應該怎麼寫,然後前端的思想,總結起來就是 結構,表示,與動作 應分離, 現代的前端框架也在實踐這樣的思想,只不過從整個項目細化到單個頁面,每個頁面有自己的 結構,表示,與動作
兩個小時草草讀完,瞭解了js和瀏覽器的一些歷史,同時也對某些代碼規範有了認識,以及一些名詞,比如js僞協議,平穩退化,漸進增強,向後兼容等。 作者用較爲白話的方式對解釋型語言和編譯型的特點進行了闡述,同時也對某些api進行評價,方便以後使用的時候有得取捨。 作者以flash的沒落爲例,一項技術既簡單又好用的時候,就會有更多的人使用,然而一旦成爲潮流,就會導致該項技術的使用者良莠不齊,從而導致技術被濫用。其實並不是技術不好,而是用的人多了,更多時候是因爲“別人都用了,所以我也要用”而去使用,爲了使用而去使用,從而導致技術的口碑越來越差,最終被時代所拋棄。 個人感覺這本書對前端小白還是很友好的,語言通俗易懂,適合閒來無事的時候當科普書讀。 最後以作者的一句話結束,只有勤于思考,善於借鑑,才能編寫出高質量的腳本,共勉!
草草讀完,雖然有一些方法用不上,但是DOM知識還是有必要的,不愧是經典!
三年前在這本書的帶領下入門前端。時隔三年重新閱讀,新的閱讀新的收穫。雖說是十年前的書,書裏一些理念稍顯老舊與過時。但就DOM而言,講得是非常簡單清晰的。
東西很基礎,但看書確實讓知識更系統。 穩妥和嘗試新東西是我看這本書印象最深的地方,代碼是這樣,人生又何嘗不是。