筆者大學(xué)專業是數字媒體藝術,大一實習過(guò)動效設計師,大二拿到了人生第一個大公司的 offer 是交互設計師,後(hòu)來轉崗到淘寶旅行的前端團隊,現在在微信電影票做前端研發(fā)。也是走過(guò)了不少野路子,不過(guò)還(hái)好(hǎo)有小右哥 @尤小右 這(zhè)樣(yàng)藝術/設計轉前端的大神在前面(miàn)做典範,也證明這(zhè)條路是玩的通的 :)
接下來就說說自己的學(xué)習建議吧,一個小教程,也是自己走過(guò)的流程,僅供參考哈
天貓&京東,内蒙古電商品牌策劃,内蒙古微信營銷,内蒙古微網站,呼和浩特電商品牌策劃,呼和浩特微信營銷,呼和浩特微網站,内蒙古網站制作,内蒙古網站設計,内蒙古網站建設,呼和浩特網站建設,呼和浩特網站制作、呼和浩特網站設計首選内蒙古呼和浩特先誠網絡科技公司。先誠官網:/
—————————————————— 背景篇——————————————————
在這(zhè)個時代學(xué)習新東西,一定要善于使用 Bing/Google 等搜索引擎…網絡上的資源非常豐富,自學(xué)能(néng)力也尤爲重要,尤其是對(duì)于學(xué)習技術!
入門篇(HTML/CSS)
說起(qǐ)設計師希望學(xué)前端的初衷,大概還(hái)是因爲各種(zhǒng)華麗的網頁特效/交互太過(guò)吸引人,這(zhè)種(zhǒng)感覺大概就是:“Hey,我的設計可以做成(chéng)網頁訪問了呢!”
好(hǎo)在,“展示”對(duì)于前端技術來說反而是最簡單的部分。所以,放下你對(duì)“編程”兩(liǎng)個字的恐懼,從“稱不上是編程語言”的 HTML/CSS 開(kāi)始,先做點有成(chéng)就感的東西出來吧!
對(duì)于設計師來說,最有成(chéng)就感的一定是“可以看到的東西”,而 HTML/CSS 正是用來幹這(zhè)個的,HTML 就是一堆非常簡單的标簽,而 CSS 無非就是把你畫畫的流程用英語按一定的格式寫出來而已:
<p> p is paragraph! </p>
<style>
p { color: red;}
</style>
是不是非常容易,就跟讀英語一樣(yàng)!
接下來,你就需要開(kāi)始自學(xué)啦,比如常用 HTML 标簽的意思,各種(zhǒng) CSS 的屬性,還(hái)有 CSS 的盒模型、優先級、選擇器……放心,它們都(dōu)很容易;能(néng)玩得轉 PS/AI/Flash/Axure/AE/Sketch 的設計師們,學(xué)這(zhè)個灑灑水啦
推薦幾個資源:
w3school 在線教程 (中文,一個很 Low 但是又很好(hǎo)的入門學(xué)習網站)
Learn to code (Codecademy,如果你英文 OK,強烈建議你使用它進(jìn)行交互式的學(xué)習!裡(lǐ)面(miàn)從 HTML/CSS 到搭建網站的課程都(dōu)有,免費,生動直觀)
這(zhè)個階段的練習主要是“臨摹”:用代碼畫出你想畫的網站,越多越好(hǎo)。
對(duì)于書,我非常不推薦上來就去看各種(zhǒng)厚厚的入門/指南書,沒(méi)必要!這(zhè)一個階段應該快速上手,培養興趣,培養成(chéng)就感。先做出可以看的東西再說,掌握常用的 HTML/CSS 就夠用了
如果完成(chéng)的好(hǎo),這(zhè)個階段過(guò)後(hòu)你大概就可以寫出一些簡單又好(hǎo)看的“靜态網頁”了,比如這(zhè)個作品集/簡曆:Portfolio – 黃玄的博客 (好(hǎo)久沒(méi)更新了…丢人現眼)
入門篇(JavaScript/jQuery)
想要在網頁上實現一些交互效果,比如輪播圖、點擊按鈕後(hòu)播放動畫?那你就必須要開(kāi)始學(xué)習 JavaScript 了!JavaScript 是一門完整、強大并且非常熱門的編程語言,你在浏覽器裡(lǐ)看到的所有交互或者高級功能(néng)都(dōu)是由它在背後(hòu)支撐的!
舉個小栗子:
alert("Hello World!")
就這(zhè)一行,就可以在浏覽器裡(lǐ)彈出 Hello World 啦!
在了解一些基礎的 JavaScript 概念(變量、函數、基本類型)後(hòu),我們可以直接去學(xué)習 jQuery,你不用知道(dào)它具體是什麼(me)(它是一個 JavaScript 代碼庫),你隻要知道(dào)它可以顯著地降低你編寫交互的難度就好(hǎo)了:
$('.className').click(function(){
alert("Hello jQuery")
})
通過(guò) jQuery,我們可以繼續使用在 CSS 中學(xué)到的“選擇器”
對(duì)于沒(méi)有編程基礎的人來說,想要完全掌握它們兩(liǎng)并不容易。作爲設計師,很多時候我們可以先不必深究它們的原理,而是嘗試直接應用它!這(zhè)樣(yàng)成(chéng)就感會來得很快,并且你可以通過(guò)實際應用更加理解
JavaScript 是用來做什麼(me)的。
我仍然推薦你使用 w3school 在線教程 與 http://www.codecademy.com/ 進(jìn)行學(xué)習。另外,你可以看一看諸如《鋒利的jQuery (豆瓣)》 這(zhè)一類非常實用的書籍,可以讓你很快上手做出一些簡單的效果來!
如果學(xué)習得順利,你還(hái)可以嘗試使用各種(zhǒng)豐富的 jQuery 插件,你會發(fā)現寫出支持用戶交互的網站也沒(méi)有那麼(me)困難~很多看上去很複雜的功能(néng)(比如輪播圖、燈箱、下拉菜單),搜一搜然後(hòu)看看文檔(教程)、改改示例代碼就好(hǎo)了。
比如說,配合 Huxpro/jquery.HSlider · GitHub 這(zhè)樣(yàng)的輪播圖插件,你可以很輕松的寫出 Hux-Slider | Demo 這(zhè)樣(yàng)的網頁相冊~
最後(hòu),我想推薦下 Bootstrap · The world’s most popular mobile-first and respons ,這(zhè)是世界上最知名的前端 UI 框架之一,提供了大量 CSS 樣(yàng)式與 jQuery 插件。它非常容易學(xué)習并且文英文教程都(dōu)非常得健全,你并不需要理解它背後(hòu)的工作原理就能(néng)很好(hǎo)的使用它,讓你快速達到“可以建站的水平”。另外,你不但可以學(xué)習如何使用它,還(hái)可以學(xué)習它背後(hòu)的思想。
轉職方向(xiàng)一:前端重構業内通常把專精 HTML/CSS 的前端從業人員成(chéng)爲重構,而對(duì)于注重視覺效果的設計師來說,在掌握基本的 HTML/CSS 後(hòu),就可以朝著(zhe)這(zhè)個方向(xiàng)發(fā)展了。
到了這(zhè)個階段,你不但要知道(dào)怎麼(me)寫頁面(miàn),還(hái)要知道(dào)它們都(dōu)是爲什麼(me),并且知道(dào)怎麼(me)做更好(hǎo)。這(zhè)對(duì)你理解 Web 世界非常有幫助,并且能(néng)幫助你做出更“系統化”的設計。
CSS 的學(xué)問很多,你需要開(kāi)始理解文檔流、浮動流等各種(zhǒng)定位的方式與原理,理解 CSS 的繼承複用思想、理解浏覽器的差異、兼容、優雅降級……這(zhè)裡(lǐ)強烈推薦一本書:《精通CSS(第2版) (豆瓣)》,雖然前端技術突飛猛進(jìn),但這(zhè)本書的思想永遠不會過(guò)時。
HTML 方面(miàn),要開(kāi)始注重語義化、可訪問性與結構的合理,你要開(kāi)始學(xué)習“結構與樣(yàng)式的分離”,這(zhè)裡(lǐ)有一本神書將(jiāng)這(zhè)種(zhǒng)分離做到了極緻:《CSS禅意花園 (豆瓣)》
另外,各種(zhǒng)炫酷屌的 CSS 3 屬性你一定會喜歡:你可以用媒體查詢做響應式網頁設計,你可以用 transiton 和 animation 做補間動畫與關鍵幀動畫,用 transform 做縮放、旋轉、3D變換,還(hái)有圓角、漸變、陰影、彈性盒!樣(yàng)樣(yàng)都(dōu)是設計師的神器!
如果你還(hái)掌握了 入門篇(JavaScript/jQuery)的知識,那麼(me)恭喜你!你已經(jīng)可以做出很多有趣的網頁了!很多 minisite 或者微信上的“H5” 小廣告,這(zhè)個程度的你已經(jīng)可以輕松完成(chéng)了!
配合上你的設計功力,你可以開(kāi)始嘗試創作一些好(hǎo)玩的東西,比如這(zhè)種(zhǒng)富含交互和動畫的網站 紳寶 SENOVA ,它仍然是基于 Huxpro/jquery.HSlider · GitHub 實現的!或者給自己做個小小的個人網站試試。
轉職方向(xiàng)二:前端工程師
如果你覺得上述的這(zhè)些都(dōu)還(hái)滿足不了你,你渴望做出更多了不起(qǐ)的交互,甚至你已經(jīng)喜歡上了編程,想要轉行做工程師,或者成(chéng)爲一名全棧設計師,那麼(me)你可以朝著(zhe)這(zhè)個方向(xiàng)繼續發(fā)展!
這(zhè)個階段的最大難度,是你必須學(xué)會像一名軟件工程師一樣(yàng)思考。你需要踏踏實實學(xué)習編程語言,深入理解作用域、對(duì)象、類、封裝、繼承、面(miàn)向(xiàng)對(duì)象編程、事(shì)件偵聽、事(shì)件冒泡等一大堆編程概念,你還(hái)需要了解浏覽器,學(xué)習 DOM、BOM、CSSOM 的 API,你甚至還(hái)需要學(xué)習一些網絡原理,包括域名、URL、DNS、HTTP 請求都(dōu)是什麼(me)…
你可能(néng)會被(bèi)這(zhè)一大堆名詞吓到。确實,想要搞定他們并不容易。但是,你要相信隻要你肯花功夫它們也沒(méi)有那麼(me)難,而更重要的是,如果你能(néng)拿下他們,你所收獲的并不隻是這(zhè)些而已,而是真正跨過(guò)了一道(dào)坎 —— 你的世界將(jiāng)因此打開(kāi), 你看待世界的方式將(jiāng)因此改變
對(duì)于這(zhè)個階段,你可以繼續在 http://www.codecademy.com/ 上學(xué)習,但是 w3school 已經(jīng)不夠用了,遇到不會的語法,我推薦你查閱 Mozilla 開(kāi)發(fā)者網絡,這(zhè)是少數中英文都(dōu)有的超級專業且友好(hǎo)的網站。
同時,你可能(néng)需要看一些書本來幫助你學(xué)習 JavaScript :
《JavaScript高級程序設計(第3版) (豆瓣) 》或 《JavaScript權威指南 (豆瓣)》,大而全的書隻需要一本就夠了
如果上面(miàn)這(zhè)本你覺得太難,你可以先看 《JavaScript DOM編程藝術 (第2版) (豆瓣)》來過(guò)渡一下,這(zhè)本書比較容易,它會教給你 “優雅降級、漸進(jìn)增強”的優秀思想
如果你能(néng)順利得渡過(guò)了這(zhè)個階段,我想你已經(jīng)能(néng)做出很多令你自豪的網站了!試著(zhe)向(xiàng)身邊的工程師朋友詢問如何購買域名、配置簡單的靜态服務器,或者搜搜“Github Pages”,然後(hòu)把你的作品挂在網絡上讓大家欣賞吧!
你還(hái)可以試著(zhe)用 JavaScript 寫寫小遊戲,這(zhè)不但能(néng)鍛煉你的編程水平還(hái)非常有趣~比如這(zhè)是我剛學(xué) JS 不久後(hòu) hack 一晚的産物 —— 用 DOM 實現的打飛機:Hux – Aircraft (不支持手機)
—————————————————— 入行篇——————————————————
如果你能(néng)完成(chéng)上述所有的學(xué)習,你已經(jīng)是一名非常出色的前端學(xué)徒了!對(duì)于隻是想要豐富技能(néng)的設計師或者産品經(jīng)理來說,接下來的内容可能(néng)會讓你感到不适 ; (
但如果你鐵了心想要真正入行進(jìn)入大公司從事(shì)專職前端開(kāi)發(fā)的工作,那麼(me)你可以接著(zhe)往下看:
近幾年的前端技術發(fā)展迅猛,前端工程師早已不是切切圖寫寫頁面(miàn)做點特效就完事(shì)的職位,你需要具備相當完善的工程師素質與計算機知識,成(chéng)爲一名真正的工程師。
你需要非常了解 JavaScript 這(zhè)門語言,包括 閉包、IIFE、this、prototype 及一些底層實現(ES、VO、AO)、熟悉常用的設計模式與 JavaScript 範式(比如實現類與私有屬性)。另外,新的 ES6 已經(jīng)問世,包括 class, module, arrow function 等等。
你需要非常了解前端常用的網絡及後(hòu)端知識,包括 Ajax、JSON、HTTP 請求、GET/POST 差異、RESTful、URL hash/query、webSocket、常用的跨域方式(JSONP/CORS),以及 CDN 緩存、靜态網站/動态網站區别、服務器端渲染/前端渲染區别等等。
你需要學(xué)習使用進(jìn)階的 CSS,包括熟悉 CSS 3,使用 Scss/Less 等編譯到 CSS 的語言,使用 autoprefixer 等 PostCSS 工具,了解 CSS 在 Scope/Namespace 上的缺陷,你還(hái)可以學(xué)習 CSS Modules、CSS in JS 這(zhè)些有趣的新玩意。
你需要非常了解前端的模塊化規範,可能(néng)在你學(xué)習到這(zhè)裡(lǐ)的時候,Require.js/AMD 已經(jīng)再見了,但是 CommonJS 與 ES6 Modules 你必須要了解。(你可以觀看我的分享《JavaScript Modularization Seven Day》 來學(xué)習 JS 模塊化的曆史)
你需要熟悉 Git 與 Shell 的使用,包括基于 git 的版本管理、分支管理與團隊協作,包括簡單的 Linux/Unix 命令、你要知道(dào)大部分程序員的工作可以通過(guò) shell 更快更酷的完成(chéng),并且很多“軟件”隻能(néng)通過(guò) shell 來使用。你還(hái)可以把你的代碼放到 github 上與人分享,并且學(xué)習 github 上其他優秀的開(kāi)源代碼。
你需要熟悉并且習慣使用 Node,包括了解 npm、使用 Grunt/Gulp/Browserify/Webpack 優化你的工作流、對(duì)你的代碼進(jìn)行打包、混淆、壓縮、發(fā)布,你還(hái)可以使用 Express/Koa 配合 MongoDB/Redis 涉足到後(hòu)端領域,或者嘗試用 Node 做後(hòu)端渲染優化你的首屏體驗。
你需要了解各種(zhǒng) HTML 5 的新 API,包括 <video>/<audio>,包括 Canvas,webGL、File API、App Cache、localStorage、IndexedDB、Drag & Drop、更高級的 DOM API、Fetch API 等等。
你需要學(xué)習 JavaScript 的單線程與異步編程方法,因爲它們非常非常常用、包括 setTimeout/setInterval,回調與回調地域、事(shì)件與event loop、還(hái)有 Promise 甚至 Async/Await。
你需要非常了解浏覽器,包括主流浏覽器的名稱、内核與差異、包括私有屬性與 -webkit-,你需要學(xué)習如何使用 Chrome DevTool,你需要了解浏覽器渲染的 reflow/repaint 來避免 Jank 并進(jìn)行有針對(duì)性的性能(néng)優化。
你需要專門學(xué)習 Mobile Web,因爲移動互聯網是趨勢。包括 viewport、CSS pixel、 touch 事(shì)件、iOS/Android 浏覽器的差異與兼容、移動端的性能(néng)優化、300ms delay 等等…你還(hái)需要知道(dào) Hybrid 是什麼(me),包括 Cordova/Phonegap,更複雜的比如和 iOS/Android 通信的機制,比如 URI Scheme 或者 JS Bridge。
你需要學(xué)習一些非常火熱的前端框架/庫,他們不但能(néng)幫助你更快的進(jìn)行開(kāi)發(fā)、更重要的是他們背後(hòu)所蘊含的思想。包括 Backbone、Angular、Vue、React、Polymer 等等、了解它們背後(hòu)的雙向(xiàng)數據綁定、單向(xiàng)數據流、MVC/MVVM/Flux 思想、Web Component 與組件化等等。
你需要學(xué)習如何構建 web 單頁應用,這(zhè)是 web 的未來,包括利用 history API 或者 hash 實現路由,包括基于 Ajax + 模版引擎或者其他技術的前端渲染、包括組織較爲複雜的軟件設計等等。
我還(hái)建議你學(xué)習更多的計算機知識,它們能(néng)對(duì)你的代碼能(néng)起(qǐ)到潛移默化的作用,包括簡單的計算機體系結構、更廣泛的編程知識(面(miàn)向(xiàng)對(duì)象/函數式等)、棧、堆、數組、隊列、哈希表、樹、圖等數據結構、時間複雜度與空間複雜度以及簡單的算法等等。
你需要了解業内的大神并閱讀它們的博客/知乎/微博,很多思想和新東西隻有從他們身上才能(néng)學(xué)到。我還(hái)推薦你多參加技術交流會,多認識一些可以一起(qǐ)學(xué)習的小夥伴,你們可以互相交流并且一起(qǐ)成(chéng)長(cháng)。
你需要具備很強的自學(xué)能(néng)力、對(duì)技術有熱情并且不斷跟進(jìn)。因爲 JavaScript/前端的社區非常非常活躍,有太多的新東西需要你自己來發(fā)現與學(xué)習:比如 Universal JavaScript(同構)、 前端測試、HTML5 遊戲、WebRTC、CSS 4、ES 7、React Native、Babel、TypeScript、Electron 等等等等…
雖然一下扯得有點多,但這(zhè)些确實就是你未來將(jiāng)會遇到的。你并不需要全部掌握它們,但是卻多多益善;你也可以專精在某幾個方面(miàn),這(zhè)已經(jīng)足以讓你成(chéng)爲非常專業的前端工程師。
所以,如果你自認爲涵蓋了上述要求的 40%,歡迎簡曆發(fā) huangxuan@wepiao.com ,實習/全職皆可~
注:本文均來自百度搜索,如涉及版權問題,請聯系我們,我們會第一時間解決。