1. 程式人生 > >比較全面的前端技能樹 —— 你需要學到什麼?

比較全面的前端技能樹 —— 你需要學到什麼?

語言基礎

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
優雅降級、漸進增強
don`t 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:語法簡單,但功能有限
jade、ejs、velocity等模板引擎,各有各的長處
coffee:python工程師最愛,我沒用過
環境搭建:主要是將線上程式碼對映到本地,並在本地啟動一個demo伺服器,至於模擬資料的mock,見仁見智了
本地代理:ihosts
自動化測試:在業務較為穩定的情況下,可以通過自動化測試來減少測試的事件,但需求較多的時候,維護測試用例的成本會很高,可能用自動化測試會起到反效果
jasmine
mocha
生態系統
npm
bower
spm
搭建一個屬於自己的部落格
git pages
hexo
jekyll
未來

Web Componets:面向未來的元件化開發方式
HTML模板
Shadow DOM
Custom Elements
HTML Import
移動端Native開發:這也是需要了解的,以後前端工程師會經常地和webview打交道,也要了解native開發
其他

有些東西不是考敲碼就能弄好的,我參與實習的時候感受到了很多,這些是我遇到的也是我感覺自己做的不好的地方

對於業務的思考:我個人這方面非常欠缺,所以放在最前面,在敲碼前要多思考業務
交流和溝通能力:這個非常重要,前端同時需要與專案經理、產品、互動、後臺打交道,溝通不善會導致很多無用功,延緩專案
知識管理、時間管理:input和output的平衡,output是最好的input。如何做好分享,參與社群,做好交流,作好記錄
對新技術的渴望,以及敢於嘗試