學習前端我推薦這5本書

来源:http://www.cnblogs.com/luozhihao/archive/2016/11/16/6067963.html
-Advertisement-
Play Games

前言 作為一名前端開發人員,如果你告訴我你沒有看過任何關於前端的書籍,那麼我完全可以認為你不是一名合格的前端開發工程師。為什麼我要以“看書”來衡量合格前端的標準?因為前端作為一個特殊的極具變化與開拓性的工種,沒有較強的自我學習與思考能力,很難在這激烈又紛雜的環境里存活而不被淘汰,而“看書”則是最基本 ...


前言

作為一名前端開發人員,如果你告訴我你沒有看過任何關於前端的書籍,那麼我完全可以認為你不是一名合格的前端開發工程師。為什麼我要以“看書”來衡量合格前端的標準?因為前端作為一個特殊的極具變化與開拓性的工種,沒有較強的自我學習與思考能力,很難在這激烈又紛雜的環境里存活而不被淘汰,而“看書”則是最基本的自我提升與補充知識的途徑。

書中自有黃金屋。不管你是想涉獵前端抑或進行系統性的學習,我都推薦大家閱讀前端的相關書籍。那麼對於想入門或者扎實前端基礎的童鞋來說我們應該挑選哪幾把適合我們的書籍呢?下麵我就推薦5本帶我踏入前端並產生較大幫助的圖書供大家參考。

書單

1. Web前端開發最佳實踐

這本書是前端開發領域的經典之作,是一本扎實前端基本功,規範我們前端代碼的實踐性書籍。本書主要講解了HTML、CSS、Javascript以及移動端開發的最佳實踐方案,能夠對缺乏良好指導的開發者產生很大的幫助。通過閱讀本書我們可以掌握如何編寫高可讀性、高維護性、高性能的HTML、CSS以及Javascript。比如:

<!-- 如果class名稱僅作為Javascript調用的“鉤子”,可在名稱中添加“js”首碼 -->
<ul id="js_mylist">
    <li class="menu js-active">Web前端開發最佳實踐</li>
    <li class="menu">編寫可維護的Javascript</li>
    <li class="menu">鋒利的jQuery</li>
    <li class="menu">圖解HTTP</li>
    <li class="menu">Javascript設計模式與開發實踐</li>
</ul>
<!-- 為了做到禁用腳本時頁面自動跳轉,百度首頁中添加瞭如下代碼 -->
<noscript>
    <meta http-equiv=refresh content="0; url=http://www.baidu.com/baidu.html?from=noscript">
</noscript>

2. 編寫可維護的Javascript

本書是我極力推薦的一本幫助大家改善Javascript編程風格與編碼規範的書籍。那麼為什麼我們要如此註重JS的編碼規範?引用高德納的一句話就是:程式是寫給人讀的,只是偶爾讓電腦執行一下。在我們的日常開發中,往往維護代碼的時間占據著很大比重, 既然這樣那麼為什麼我們不在編寫代碼的時候就重視它呢?以下是書中的兩個例子:

// 二元運算符前後必須使用一個空格來保持表達式的整潔
// 好的寫法,使用空格
for (i = 0; i < count; i++) {
    process(i);
}

// 不好的寫法,丟失了空格
for (i=0; i<count; i++) {
    process(i);
}
// 函數的第一個單詞名稱應該是動詞(而不是名詞),以避免與變數混淆。
// 好的寫法,第一個單詞是動詞
function doSomething() {
    // 代碼
}

// 不好的寫法,第一個單詞是名詞
function car() {
    // 代碼
}

3. 鋒利的jQuery

這本書應該算是學習jQuery必讀的一本書,也是講解jQuery的經典之作。在正式學習這本書之前,你有必要先瞭解下原生Javascript,才能領悟jQuery其“write less, do more”的理念。本書深入淺出的介紹了jQuery的代碼風格、選擇器、事件及動畫等,結合豐富的實例讓讀者能夠快速理解與應用。比如:

var $ul = $('ul').prev(); // 獲取緊鄰<ul>元素前的同輩元素
var $p = $('p').siblings(); // 獲取<p>元素的同輩元素
$('input').trigger('focus'); // 觸發輸入框focus事件並獲取焦點
$('input').triggerHandler('focus'); // 觸發輸入框focus事件但不會獲取焦點

4. 圖解HTTP

作為和瀏覽器打交道的前端開發者,我們理應學習關於頁面從請求開始到呈現的過程和實現方式,而這本書便是快速瞭解HTTP請求背後原理的不二之選。本書結合漫畫圖片的形式講解HTTP協議、工作機制、報文及狀態碼等,圖文並茂,通俗易懂。示例:

// 請求首部欄位
Host: www.hackr.jp  // Host會告知伺服器,請求資源所處的互聯網主機名與埠號
Range: bytes=5001-10000 // 告知伺服器資源的指定範圍
// 相應首部欄位
Age: 600 // 告知客戶端,源伺服器在多久前創建了響應
Retry-After: 120 // 告知客戶端應該在多久之後再次發送請求

5. Javascript設計模式與開發實踐

之所以把這本書放在最後是因為閱讀這本書需要一定的Javascript基礎與功底,當我們掌握了JS的語法與編碼規範後再來翻閱此書,你會獲得別樣的收穫。那麼為什麼我們要研究設計模式?使用設計模式能夠給我們解決怎樣的問題?

我想答案和小說家為什麼很少從開始設計劇情,足球教練為什麼也很少從頭開始發明戰術一樣,他們總是沿襲了一些已經存在的模式來解決問題。下麵是書中的兩種模式:

// 單例模式: 保證一個類僅有一個實例,並提供一個全局的訪問點
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本書中便可找到答案。

當然除了文本中推薦的5本前端入門書籍,還有很多優秀的書籍沒能在此一一推薦,請見諒。

正所謂紙上得來終覺淺,絕知此事要躬行。除了從書中汲取我們所需的知識外,我們還需要將理論化為實踐,親自動手敲擊鍵盤,從而加深並鞏固書中的知識點,才能羽化而登仙。

 

本文為勞卜原創文章,首發於微信公眾號:前端呼啦圈(Love-FED)

轉載請註明來自——微信公眾號:前端呼啦圈(Love-FED)

公眾號地址 簡書地址 segmentfault地址


您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • 微信 小程式 drawImage wx.canvasToTempFilePath wx.saveFile 獲取設備寬高 尺寸問題 ...
  • JS中的事件處理(事件綁定)就是讓某種或某些事件觸發某些活動。有兩種常見的形式,分別是DOM Level 0 和DOM Level 2。這兩種方式最大的區別就在於DOM 0級事件處理只能用於事件冒泡,而DOM 2級事件處理卻可以通過設置第三個參數來分別支持事件冒泡和事件捕獲。 DOM 0級事件處理一 ...
  • value 屬性為 input 元素設定值。 對於不同的輸入類型,value 屬性的用法也不同: type="button", "reset", "submit" - 定義按鈕上的顯示的文本 type="text", "password", "hidden" - 定義輸入欄位的初始值 type="c ...
  • 一、篩選沒有選中的覆選框:not("input:checked") 二、匹配有VARCHAR的字元串:".*VARCHAR.*?" 三、json取值的兩種方法 一個對象,有兩種取裡面值的方法,拿裡面的KEY做例子 第一種:data.KEY 第二種:data['KEY'] 相信我,瞭解這兩種方法絕對比 ...
  • 1. 可以說幾乎每個做過Web開發的人都問過,到底元素的ID和Name有什麼區別阿?為什麼有了ID還要有Name呢?! 而同樣我們也可以得到最classical的答案:ID就像是一個人的身份證號碼,而Name就像是他的名字,ID顯然是唯一的,而Name是可以重覆的。 上周我也遇到了ID和Name的問 ...
  • 這是一個令人激動的革新。 CSS 變數,顧名思義,也就是由網頁的作者或用戶定義的實體,用來指定文檔中的特定變數。 更準確的說法,應該稱之為 CSS 自定義屬性 ,不過下文為了好理解都稱之為 CSS 變數。 一直以來我們都知道,CSS 中是沒有變數而言的,要使用 CSS 變數,只能藉助 SASS 或者 ...
  • 方法一: 方法二:正則法 ...
  • webix的表格,頭部沒有tooltip的屬性支持 onmousemove只監聽了數據部分,對列頭沒有監聽。官網上演示的是在header屬性上寫個span 加個title的屬性,但是樣式不好看。然後我就直接參照寫了個。用的是監聽載入完成後的事件。用於載入後確定列的情況。 1、效果如下 代碼如下,拷貝 ...
一周排行
    -Advertisement-
    Play Games
  • 移動開發(一):使用.NET MAUI開發第一個安卓APP 對於工作多年的C#程式員來說,近來想嘗試開發一款安卓APP,考慮了很久最終選擇使用.NET MAUI這個微軟官方的框架來嘗試體驗開發安卓APP,畢竟是使用Visual Studio開發工具,使用起來也比較的順手,結合微軟官方的教程進行了安卓 ...
  • 前言 QuestPDF 是一個開源 .NET 庫,用於生成 PDF 文檔。使用了C# Fluent API方式可簡化開發、減少錯誤並提高工作效率。利用它可以輕鬆生成 PDF 報告、發票、導出文件等。 項目介紹 QuestPDF 是一個革命性的開源 .NET 庫,它徹底改變了我們生成 PDF 文檔的方 ...
  • 項目地址 項目後端地址: https://github.com/ZyPLJ/ZYTteeHole 項目前端頁面地址: ZyPLJ/TreeHoleVue (github.com) https://github.com/ZyPLJ/TreeHoleVue 目前項目測試訪問地址: http://tree ...
  • 話不多說,直接開乾 一.下載 1.官方鏈接下載: https://www.microsoft.com/zh-cn/sql-server/sql-server-downloads 2.在下載目錄中找到下麵這個小的安裝包 SQL2022-SSEI-Dev.exe,運行開始下載SQL server; 二. ...
  • 前言 隨著物聯網(IoT)技術的迅猛發展,MQTT(消息隊列遙測傳輸)協議憑藉其輕量級和高效性,已成為眾多物聯網應用的首選通信標準。 MQTTnet 作為一個高性能的 .NET 開源庫,為 .NET 平臺上的 MQTT 客戶端與伺服器開發提供了強大的支持。 本文將全面介紹 MQTTnet 的核心功能 ...
  • Serilog支持多種接收器用於日誌存儲,增強器用於添加屬性,LogContext管理動態屬性,支持多種輸出格式包括純文本、JSON及ExpressionTemplate。還提供了自定義格式化選項,適用於不同需求。 ...
  • 目錄簡介獲取 HTML 文檔解析 HTML 文檔測試參考文章 簡介 動態內容網站使用 JavaScript 腳本動態檢索和渲染數據,爬取信息時需要模擬瀏覽器行為,否則獲取到的源碼基本是空的。 本文使用的爬取步驟如下: 使用 Selenium 獲取渲染後的 HTML 文檔 使用 HtmlAgility ...
  • 1.前言 什麼是熱更新 游戲或者軟體更新時,無需重新下載客戶端進行安裝,而是在應用程式啟動的情況下,在內部進行資源或者代碼更新 Unity目前常用熱更新解決方案 HybridCLR,Xlua,ILRuntime等 Unity目前常用資源管理解決方案 AssetBundles,Addressable, ...
  • 本文章主要是在C# ASP.NET Core Web API框架實現向手機發送驗證碼簡訊功能。這裡我選擇是一個互億無線簡訊驗證碼平臺,其實像阿裡雲,騰訊雲上面也可以。 首先我們先去 互億無線 https://www.ihuyi.com/api/sms.html 去註冊一個賬號 註冊完成賬號後,它會送 ...
  • 通過以下方式可以高效,並保證數據同步的可靠性 1.API設計 使用RESTful設計,確保API端點明確,並使用適當的HTTP方法(如POST用於創建,PUT用於更新)。 設計清晰的請求和響應模型,以確保客戶端能夠理解預期格式。 2.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...