1. 程式人生 > >從前端菜鳥到大神,看這一篇就夠了

從前端菜鳥到大神,看這一篇就夠了

結合個人經歷總結的前端入門方法,總結從零基礎到具備前端基本技能的道路、學習方法、資料。由於能力有限,不能保證面面俱到,只是作為入門參考,面向初學者,讓初學者少走彎路。

網際網路的快速發展和激烈競爭,使用者體驗成為一個重要的關注點,導致專業前端工程師成為熱門職業,各大公司對前端工程師的需求量都很大,要求也越來越高,優秀的前端工程師更是稀缺。個人感覺前端入門相對容易,但是也需要系統地認真學習,在打好基礎後堅持學習,成為優秀前端工程師也只是時間問題。

學習任何知識最重要的都是興趣,如果經過一段時間的學習感覺不喜歡,那可能強迫自己學習是很痛苦的,效果也不會好,畢竟這很可能就是以後很多年生存的技能。不過隨著網際網路行業的發展,前端必然是Web開發人員需要學習的知識,有時候是沒有專業前端工程師一起合作的,所以即使不做專門的前端工程師,掌握基本的前端技能為工作帶來方便。


後期邀請了一些同學分享學習經歷。如果有同學願意分享,歡迎push

必備基礎技能

前端技能彙總(https://github.com/JacksonTian/fks)這個專案詳細記錄 了前端工程師牽涉到的各方面知識。在具備基本技能之後可以在裡面找到學習 的方向,完善技能和知識面。

frontend-dev-bookmarks(https://github.com/dypsilon/frontend-dev-bookmarks)是老外總結的前端開發資源。覆蓋面非常廣。包括各種知識點、工具、技術,非常全面。

以下是個人覺得入門階段應該熟練掌握的基礎技能:

HTML4,HTML5語法、標籤、語義
CSS2.1,CSS3規範,與HTML結合實現各種佈局、效果

Ecma-262定義的javascript的語言核心,原生客戶端javascript,DOM操作,HTML5新增功能
一個成熟的客戶端javascript庫,推薦jquery
一門伺服器端語言:如果有伺服器端開發經驗,使用已經會的語言即可,如果沒有伺服器端開發經驗,熟悉Java可以選擇Servlet,不熟悉的可以選PHP,能實現簡單登陸註冊功能就足夠支援前端開發了,後續可能需要繼續學習,最基本要求是實現簡單的功能模擬,
HTTP

在掌握以上基礎技能之後,工作中遇到需要的技術也能快速學習。

基本開發工具

恰當的工具能有效提高學習效率,將重點放在知識本身,在出現問題時能快速定位並 解決問題,以下是個人覺得必備的前端開發工具:


文字編輯器:推薦Sublime Text,支援各種外掛、主題、設定,使用方便
瀏覽器:推薦Google Chrome,更新快,對前端各種標準提供了非常好的支援
除錯工具:推薦Chrome自帶的Chrome develop tools,可以輕鬆檢視DOM結構、樣式,通過控制檯輸出除錯資訊,除錯javascript,檢視網路等
輔助工具:PhotoShop編輯圖片、取色,fireworks量尺寸,AlloyDesigner對比尺寸,以及前面的到的Chrome develop tools,
翻牆工具:lantern, 壁虎漫步

學習方法和學習目標

方法:

入門階段反覆閱讀經典書籍的中文版,書籍中的每一個例子都動手實現並在瀏覽器中檢視效果
在具備一定基礎之後可以上網搜各種教程、demo,瞭解各種功能的實際用法和常見功能的實現方法
閱讀HTML,CSS,Javascript標準全面完善知識點
閱讀前端牛人的部落格、文章提升對知識的理解
善用搜索引擎

目標:

熟記前面知識點部分的重要概念,結合學習經歷得到自己的理解
熟悉常見功能的實現方法,如常見CSS佈局,Tab控制元件等。

入門之路

以下是入門階段不錯的書籍和資料

HTML先看《HTML & CSS: Design and Build Websites》1-9章,然後《HTML5: The Missing Manual》1-4章。
CSS先看《CSS: The Missing Manual》,然後《CSS權威指南》
javascript先看《javascript高階程式設計》,然後《javascript權威指南》
HTTP看HTTP權威指南
在整個學習過程中HTML CSS JavaScript會有很多地方需要互相結合,實際工作中也是這樣,一個簡單的功能模組都需要三者結合才能實現。
動手是學習的重要組成部分,書籍重點講解知識點,例子可能不是很充足,這就需要利用搜索引擎尋找一些簡單教程,照著教程實現功能。以下是一些比較好的教程網址
可以搜尋各大公司前端校招筆試面試題作為練習題或者他人總結的前端面試題還有個人總結的面試題(帶參考答案)
http://code.tutsplus.com有各種各樣的教程
MDN也有很多教程,更重要的是裡面有詳細的文件,需要查詢某個功能時在Google搜尋:xxx site:https://developer.mozilla.org
http://www5rocks.com/zh/也有很多優質教程
http://www.sitepoint.com/
http://alistapart.com/
原生javascript是需要重點掌握的技能,在掌握原生javascript的基礎上推薦熟練掌握jQuery,在實際工作中用處很大,這方面的書籍有《Learning jQuery》或者去jQuery官網
建一個https://github.com/賬號,儲存平時學習中的各種程式碼和專案。
有了一定基礎之後可以搭建一個個人部落格,記錄學習過程中遇到的問題和解決方法,方便自己查閱也為其他人提供了幫助。也可以去http://www.cnblogs.com/或者http://www.csdn.net/這樣的網站註冊賬號,方便實用
經常實用Google搜尋英文資料應該經常找到來自http://stackoverflow.com/的高質量答案,與到問題可以直接在這裡搜尋,如果有精力,註冊一個賬號為別人解答問題也能極大提高個人能力。
經典書籍熟讀之後,可以開啟前面必備基礎技能部分的連結。認真讀對應標準,全面掌握知識

繼續提高

有了前面的基礎之後,前端基本算是入門了,這時候可能每個人心中都有了一些學習方向,如果還是沒有。 可以參考前面必備技能部分提到的那兩個專案,從裡面選一些進行發展學習。以下是一些不錯的方面:

Grunt:前端自動化工具,提高工作效率
less css:優秀的CSS前處理器
bootstrap:優秀的CSS框架,對沒有設計師的團隊很不錯,與less結合使用效果完美
requirejs:AMD規範的模組載入器,前端模組化趨勢的必備工具
Node.js:JavaScript也可以做後臺,前端工程師地位更上一步
AngularJS:做Single Page Application的好工具
移動端web開發:智慧手機的普及讓移動端的流量正在逐步趕超PC端
Javascript記憶體管理:SPA長期執行需要注意記憶體洩露的問題
High Performance JavaScript(Build Faster Web Application Interfaces)
Best Practices for Speeding Up Your Web Site:重要技能

一些個人經歷

LingyuCoder的學習經歷

上面的大神都總結得差不多了,我這裡就胡扯一些吧

工具

chrome dev tools:前端開發除錯利器,著重注意幾個功能:
console(廢話)
elements:元素樣式調整,很常用
sources:程式碼中新增斷點,單步除錯,以及單步除錯過程中檢視記憶體中的物件
watch expression:通過表示式檢視當前記憶體中的值
call stack:檢視呼叫棧,開啟async,可以看非同步呼叫棧(這個非常有用,尤其是ajax除錯的時候)
scope variables:作用域鏈上的變數,非常有用
network:抓包檢視每個請求,非常重要,前後端聯調必備
timeline:分析渲染、js執行等等各個階段,效能優化利器
emulation:模擬移動端環境,mobile頁面開發必備
一些外掛:
liveload: 修改頁面後自動重新整理,不用按F5
dimensions:直接在頁面上測量的利器
livestyle:css樣式修改後自動起效果,不需要重新整理,elements修改後也能同步到程式碼中
image tool:測量,取色
UC二維碼:移動端除錯掃碼必備
pagespeed,YSlow:頁面效能分析和優化外掛
馬克飛象:優秀的線上markdown編輯器,快速寫週報,做記錄
sublime text2:編碼方便,外掛多,速度快,效能好
emmet:提升html編碼速度必備
sublimelinter + 各種語言的lint和hint:程式碼糾錯
一些snippets:自動補全,提升開發效率
Intellij IDEA和WebStorm:整合開發環境,集成了各種功能,開發比sublime要方便,但會比較吃效能
Mark Men:測量、取色、標註利器,拿到視覺稿之後第一個開啟的軟體
GFW Fucker:我用紅杏,可以的話買個虛擬伺服器當梯子
iHosts:非常優秀的hosts管理軟體,輕鬆修改hosts,開發除錯必備
Charles:Mac 平臺最好用的抓包分析工具
Rythem:AlloyTeam出品的代理抓包軟體,非常輕量,安裝簡單,移動端(真機)開發除錯很好用
Wunderlist:一個非常不錯的Todo List,任務、需求多的時候管理起來很方便

技能

前端的技能其實除了JavaScript(包括NodeJS)、HTML、CSS以外,還有很多。其實前端的技能樹很大,這裡只能列一些我開發中見到的說一說

語言基礎

JavaScript:

作用域鏈、閉包、執行時上下文、this
原型鏈、繼承
NodeJS基礎和常用API

CSS:

選擇器
瀏覽器相容性及常見的hack處理
CSS佈局的方式和原理(盒子模型、BFC、IFC等等)
CSS 3,如animation、gradient、等等

HTML:

語義化標籤

進階

JavaScript:

非同步控制(Promise、ES6 generator、Async)
模組化的開發方式(AMD、CMD、KMD等等)
JavaScript直譯器的一些相關知識
非同步IO實現
垃圾回收
事件佇列
常用框架使用及其原理
jQuery:基於選擇器的框架,但個人認為不能叫框架,應該算工具庫,因為不具備模組載入機制,其中原始碼很適合閱讀鑽研
AngularJS/Avalon等MVVM框架:著重理解MVVM模式本身的理念和雙向繫結的實現,如何解耦
underscore:優秀的工具庫,方便的理解常用工具程式碼片段的實現
polymer/React: 元件化開發,面向未來,理解元件化開發的原理

CSS和HTML:主要是CSS3的特性和HTML5的特性,以及瀏覽器處理的流程和繪製原理

DOM樹、CSSOM樹、渲染樹的構建流程及頁面渲染的過程
解析HTML、CSS、JavaScript時造成的阻塞
HTML5相關
SVG及向量圖原理
Canvas開發及動畫原理(幀動畫)
Video和Audio
flex box佈局方式
icon fonts的使用

常用NodeJs的package:

koa
express
underscore
async
gulp
grunt
connect
request

一些理念:

響應式Web
優雅降級、漸進增強
dont make me think
網頁可用性、可訪問性、其中的意義
SEO搜尋引擎優化,瞭解搜尋引擎的原理
SPA的好處和問題

效能優化:

減少請求數量(sprite、combo)
善用快取(application cache、http快取、CDN、localstorage、sessionstorage,備忘錄模式)
減少選擇器消耗(從右到左),減少DOM操作(DOM和JavaScript直譯器的分離)
CSS的迴流與重繪

專案

版本管理:首推Git,用過Git都不會想用SVN了
Git:本地版本管理的機制
SVN:遠端中心的版本管理機制
自動化構建:主要就是less、模板、coffee等的預處理以及對程式碼壓縮和合並
Gulp:基於流構建,速度快、模組質量好
Grunt:獨立任務構建,速度慢,配置蛋疼,靈活性高
預處理和模板引擎
less:語法簡單,但功能有限

相關推薦

前端

結合個人經歷總結的前端入門方法,總結從零基礎到具備前端基本技能的道路、學習方法、資料。由於能力有限,不能保證面面俱到,只是作為入門參考,面向初學者,讓初學者少走彎路。網際網路的快速發展和激烈競爭,使用者體驗成為一個重要的關注點,導致專業前端工程師成為熱門職業,各大公司對前端

資料】華為內部狂轉好文資料

來源:華為IT產品解決方案導讀科技的進步在很多的時候總會超出我們的想象,試想如果未來我們一個人擁

C語言入門到精通

影響 內容 當前 位置 replace 雙精度 下標 寄存器變量 一個 No.1 計算機與程序設計語言的關系 計算機系統由硬件系統和軟件系統構成,硬件相當於人類的肉體,而軟件相當於人類的靈魂,如果脫離了靈魂,人類就是一具行屍走肉 No.2 C語言的特點 代碼簡潔,靈活性高

前端小白要搞懂什麼是HTML

本文是《HTML5與CSS3基礎語法自學教程》的第一篇,首發於【前端課湛】微信公眾號。 導讀:本小節主要講解 HTML 的基本資訊,其中包含 HTML 概念、HTML 發展歷程和 HTML 標準版本的發展歷程。通過本小節的學習可以對 HTML 的含義有個初步的理解,為後續進一步學習 HTML 相關概念打下

Azure IOT 設備固件更新技巧

trigger 物聯網平臺 搭建 href ice 有效 面板 調用 創建 嫌長不看版 今天為大家準備的硬菜是:在 Azure IoT 中心創建 Node.js 控制臺應用,進行端到端模擬固件更新,為基於 Intel Edison 的設備安裝新版固件的流程。通過創建模擬設備

想做好PPT折線圖

12月 image 菊花 -c 強調 spa any border 線圖 配圖主題無關今天鄭少跟大家聊聊折線圖的使用方法,或者你有疑問,折線圖很簡單,插入修改數據不就好了嗎?如果你要是這樣想的,恭喜你,有可能你會做出下面這樣的效果。如果你要是稍微懂一點折線圖的使用方法,你就

Linux 問題故障定位

1. 背景 有時候會遇到一些疑難雜症,並且監控外掛並不能一眼立馬發現問題的根源。這時候就需要登入伺服器進一步深入分析問題的根源。那麼分析問題需要有一定的技術經驗積累,並且有些問題涉及到的領域非常廣,才能定位到問題。所以,分析問題和踩坑是非常鍛鍊一個人的成長和提升自我能力。如果我們有一套好的分析工具,那將是事

【MYSQL學習筆記02】MySQL的高階應用之Explain(完美詳細版

版權宣告:本文為博主原創文章,未經博主允許不得轉載。 https://blog.csdn.net/wx1528159409 最近學習MySQL的高階應用Explain,寫一篇學習心得與總結,目錄腦圖如下: 一、Explain基本概念 1. Explain定義 · 我們知道M

抖音內容運營全解剖 !

抖音的火爆已經不用多說,作為短視訊的頭部APP,抖音已經從微信手中奪走不少使用者時間,成為新的“時間黑洞”。 比如:“中毒了,我每天晚上要刷2個小時”,“下一站,逃離微信,上抖音”… 一個企業運營抖音的目的是什麼? 答案顯而易見,無非就是做品牌營銷、擴大品牌影響力。 在短視訊領域積累

百萬併發下的Nginx優化

本文作者主要分享在 Nginx 效能方面的實踐經驗,希望能給大家帶來一些系統化思考,幫助大家更有效地去做 Nginx。 優化方法論 我重點分享如下兩個問題: 保持併發連線數,怎麼樣做到記憶體有效使用。 在高併發的同時保持高吞吐量的重要要點。 實現層面主要是三方面優化,主要聚焦

理解Sharding jdbc原理

相比於Spring基於AbstractRoutingDataSource實現的分庫分表功能,Sharding jdbc在單庫單表擴充套件到多庫多表時,相容性方面表現的更好一點。例如,spring實現的分庫分表sql寫法如下: select id, name, price,

產品設計教程:如何理解 px,dp,dpi, pt

先聊聊熟悉的幾個單位 圍繞著各種螢幕做設計和開發的人會碰到下面幾個單位:in, pt, px, dpi,dip/dp, sp 下面先簡單回顧下前四個單位: "in" inches的縮寫,英寸。就是螢幕的物理長度單位。一英寸等於2.54cm。比如Android手機

中後臺產品的表格設計(原型規範下載)

中後臺產品的表格設計,看這一篇就夠了(原型規範下載) 2018年4月16日luodonggan 中後臺產品的表格設計,看這一篇就夠了(原型規範下載) 經過了將近一年的後臺產品經歷,踩了很多坑,試了很多錯,也學習到了很多東西,目前也形成了自己的一套規範。本文將其中的部分收穫彙總成文,

Linux 常用指令 —— 摘自《Linux Probe》

touch:用於建立空白檔案或設定檔案的時間,ps:黑客可以用touch指令來修改檔案的最後修改時間,以隱藏自己的修改行為。 mkdir:用於建立空白的目錄,如mkdir path,可以結合引數-p來遞迴建立檔案目錄,如mkdir -p a/b/c/d/e cp:用於複製檔案或目錄,如cp 1.txt p

樹狀陣列(Binary Indexed Tree)

定義 根據維基百科的定義: A Fenwick tree or binary indexed tree is a data structure that can efficiently update elements and calculate pr

Cookie介紹及在Android中的使用總結超詳細

Cookie介紹 cookie的起源 早期Web開發面臨的最大問題之一是如何管理狀態。簡言之,伺服器端沒有辦法知道兩個請求是否來自於同一個瀏覽器。那時的辦法是在請求的頁面中插入一個token,並且在下一次請求中將這個token返回(至伺服器)。這就需要在form中插入一個包含toke

關於Kaggle入門

這次醞釀了很久想給大家講一些關於Kaggle那點兒事,幫助對資料科學(Data Science)有興趣的同學們更好的瞭解這個專案,最好能親身參與進來,體會一下學校所學的東西和想要解決一個實際的問題所需要的能力的差距。雖然不是Data Science出身,但本著嚴謹的科研態

並查集(Union-Find Algorithm)

動態連線(Dynamic connectivity)的問題 所謂的動態連線問題是指在一組可能相互連線也可能相互沒有連線的物件中,判斷給定的兩個物件是否聯通的一類問題。這類問題可以有如下抽象: 有一組構成不相交集合的物件 union: 聯通兩個物件

Android 必須知道2018年流行的框架庫及開發語言

導語2017 已經悄悄的走了,2018 也已經匆匆的來了,我們在總結過去的同時,也要展望一下未來,來規劃一下今年要學哪些新技術。這幾年優秀Android的開源庫不斷推出,新技術層出不窮,需要我們不斷去了解和掌握,在提高自身開發水平的同時,我們需要付出更多學習精力和時間。俗話說

Android 必須知道2018年流行的框架庫及開發語言

本文更新時間:2018年07月12日15:50:40導語    2017 已經悄悄的走了,2018 也已經匆匆的來了,我們在總結過去的同時,也要展望一下未來,來規劃一下今年要學哪些新技術。這幾年優秀Android的開源庫不斷推出,新技術層出不窮,需要我們不斷去了解和掌握,在提