作為一名前端開發(fā)人員,如果你告訴我你沒有看過任何關于前端的書籍,那么我完全可以認為你不是一名合格的前端開發(fā)工程師。為什么我要以“看書”來衡量合格前端的標準?因為前端作為一個特殊的極具變化與開拓性的工種,沒有較強的自我學習與思考能力,很難在這激烈又紛雜的環(huán)境里存活而不被淘汰,而“看書”則是最基本的自我提升與補充知識的途徑。
書中自有黃金屋。不管你是想涉獵前端抑或進行系統(tǒng)性的學習,我都推薦大家閱讀前端的相關書籍。那么對于想入門或者扎實前端基礎的童鞋來說我們應該挑選哪幾本適合我們的書籍呢?下面我就推薦5本帶我踏入前端并產(chǎn)生較大幫助的圖書供大家參考。
這本書是前端開發(fā)領域的經(jīng)典之作,是一本扎實前端基本功,規(guī)范我們前端代碼的實踐性書籍。本書主要講解了HTML、CSS、Javascript以及移動端開發(fā)的最佳實踐方案,能夠對缺乏良好指導的開發(fā)者產(chǎn)生很大的幫助。通過閱讀本書我們可以掌握如何編寫高可讀性、高維護性、高性能的HTML、CSS以及Javascript。比如:
<!-- 如果class名稱僅作為Javascript調用的“鉤子”,可在名稱中添加“js”前綴 --><ul id='js_mylist'> <li class='menu js-active'>Web前端開發(fā)最佳實踐</li> <li class='menu'>編寫可維護的Javascript</li> <li class='menu'>鋒利的jQuery</li> <li class='menu'>圖解HTTP</li> <li class='menu'>Javascript設計模式與開發(fā)實踐</li></ul>
<!-- 為了做到禁用腳本時頁面自動跳轉,百度首頁中添加了如下代碼 --><noscript> <meta http-equiv=refresh content='0; url=http://www.baidu.com/baidu.html?from=noscript'></noscript>
本書是我極力推薦的一本幫助大家改善Javascript編程風格與編碼規(guī)范的書籍。那么為什么我們要如此注重JS的編碼規(guī)范?引用高德納的一句話就是:程序是寫給人讀的,只是偶爾讓計算機執(zhí)行一下。在我們的日常開發(fā)中,往往維護代碼的時間占據(jù)著很大比重, 既然這樣那么為什么我們不在編寫代碼的時候就重視它呢?以下是書中的兩個例子:
// 二元運算符前后必須使用一個空格來保持表達式的整潔// 好的寫法,使用空格for (i = 0; i < count; i ) { process(i);}// 不好的寫法,丟失了空格for (i=0; i<count; i ) { process(i);}
// 函數(shù)的第一個單詞名稱應該是動詞(而不是名詞),以避免與變量混淆。// 好的寫法,第一個單詞是動詞function doSomething() { // 代碼}// 不好的寫法,第一個單詞是名詞function car() { // 代碼}
這本書應該算是學習jQuery必讀的一本書,也是講解jQuery的經(jīng)典之作。在正式學習這本書之前,你有必要先了解下原生Javascript,才能領悟jQuery其“write less, do more”的理念。本書深入淺出的介紹了jQuery的代碼風格、選擇器、事件及動畫等,結合豐富的實例讓讀者能夠快速理解與應用。比如:
var $ul = $('ul').prev(); // 獲取緊鄰<ul>元素前的同輩元素var $p = $('p').siblings(); // 獲取<p>元素的同輩元素
$('input').trigger('focus'); // 觸發(fā)輸入框focus事件并獲取焦點$('input').triggerHandler('focus'); // 觸發(fā)輸入框focus事件但不會獲取焦點
作為和瀏覽器打交道的前端開發(fā)者,我們理應學習關于頁面從請求開始到呈現(xiàn)的過程和實現(xiàn)方式,而這本書便是快速了解HTTP請求背后原理的不二之選。本書結合漫畫圖片的形式講解HTTP協(xié)議、工作機制、報文及狀態(tài)碼等,圖文并茂,通俗易懂。示例:
// 請求首部字段Host: www.hackr.jp // Host會告知服務器,請求資源所處的互聯(lián)網(wǎng)主機名與端口號Range: bytes=5001-10000 // 告知服務器資源的指定范圍
// 響應首部字段Age: 600 // 告知客戶端,源服務器在多久前創(chuàng)建了響應Retry-After: 120 // 告知客戶端應該在多久之后再次發(fā)送請求
之所以把這本書放在最后是因為閱讀這本書需要一定的Javascript基礎與功底,當我們掌握了JS的語法與編碼規(guī)范后再來翻閱此書,你會獲得別樣的收獲。那么為什么我們要研究設計模式?使用設計模式能夠給我們解決怎樣的問題?
我想答案和小說家為什么很少從開始設計劇情,足球教練為什么也很少從頭開始發(fā)明戰(zhàn)術一樣,他們總是沿襲了一些已經(jīng)存在的模式來解決問題。下面是書中的兩種模式:
// 單例模式: 保證一個類僅有一個實例,并提供一個全局的訪問點var getSingle = function(fn) { var result; return function() { return result || (result = fn.apply(this, arguments)); }};
// 策略模式:定義一系列算法,把它們一個個封裝起來,并且使它們可以相互替換var strategies = { 'S': function(salary) { return salary * 4; }, 'A': function(salary) { return salary * 3; }};var calculateBonus = function(level, salary) { return strategies[level](salary);};
為什么那些工作沒幾年的人很快就遇到了自己的技術瓶頸? 為什么那些工作了5年以上的人還寫著一手難以維護的代碼?我想在以上5本書中便可找到答案。
正所謂紙上得來終覺淺,絕知此事要躬行。除了從書中汲取我們所需的知識外,我們還需要將理論化為實踐,親自動手敲擊鍵盤,從而加深并鞏固書中的知識點,才能羽化而登仙。
聯(lián)系客服