自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

設計師該如何學習前端?

開發(fā)
筆者的經(jīng)歷在知乎就可以看到,大學專業(yè)是數(shù)字媒體藝術,大一實習過動效設計師,大二拿到了人生第一個大公司的 offer 是交互設計師,后來轉崗到淘寶旅行的前端團隊,現(xiàn)在在微信電影票做前端研發(fā)。

筆者的經(jīng)歷在知乎就可以看到,大學專業(yè)是數(shù)字媒體藝術,大一實習過動效設計師,大二拿到了人生***個大公司的 offer 是交互設計師,后來轉崗到淘寶旅行的前端團隊,現(xiàn)在在微信電影票做前端研發(fā)。也是走過了不少野路子,不過還好有小右哥 @尤雨溪 這樣藝術/設計轉前端的大神在前面做典范,也證明這條路是玩的通的

接下來就說說自己的學習建議吧,一個小教程,也是自己走過的流程,僅供參考哈

————

背景篇

在這個時代學習新東西,一定要善于使用 Bing/Google 等搜索引擎…網(wǎng)絡上的資源非常豐富,自學能力也尤為重要,尤其是對于學習技術!

 

入門篇(HTML/CSS)

說起設計師希望學前端的初衷,大概還是因為各種華麗的網(wǎng)頁特效/交互太過吸引人,這種感覺大概就是:“Hey,我的設計可以做成網(wǎng)頁訪問了呢!”

好在,“展示”對于前端技術來說反而是最簡單的部分。所以,放下你對“編程”兩個字的恐懼,從“稱不上是編程語言”的 HTML/CSS 開始,先做點有成就感的東西出來吧!

對于設計師來說,最有成就感的一定是“可以看到的東西”,而 HTML/CSS 正是用來干這個的,HTML 就是一堆非常簡單的標簽,而 CSS 無非就是把你畫畫的流程用英語按一定的格式寫出來而已:

<p> p is paragraph! </p>

<style>
p { color: red;}
</style>

是不是非常容易,就跟讀英語一樣!

接下來,你就需要開始自學啦,比如常用 HTML 標簽的意思,各種 CSS 的屬性,還有 CSS 的盒模型、優(yōu)先級、選擇器……放心,它們都很容易;能玩得轉 PS/AI/Flash/Axure/AE/Sketch 的設計師們,學這個灑灑水啦

推薦幾個資源:

  • w3school 在線教程 (中文,一個很 Low 但是又很好的入門學習網(wǎng)站)

  • Learn to code (Codecademy,如果你英文 OK,強烈建議你使用它進行交互式的學習!里面從 HTML/CSS 到搭建網(wǎng)站的課程都有,免費,生動直觀)

這個階段的練習主要是“臨摹”:用代碼畫出你想畫的網(wǎng)站,越多越好。

對于書,我非常不推薦上來就去看各種厚厚的入門/指南書,沒必要!這一個階段應該快速上手,培養(yǎng)興趣,培養(yǎng)成就感。先做出可以看的東西再說,掌握常用的 HTML/CSS 就夠用了

如果完成的好,這個階段過后你大概就可以寫出一些簡單又好看的“靜態(tài)網(wǎng)頁”了,比如這個作品集/簡歷:Portfolio – 黃玄的博客 (好久沒更新了…丟人現(xiàn)眼)

入門篇(JavaScript/jQuery)

想要在網(wǎng)頁上實現(xiàn)一些交互效果,比如輪播圖、點擊按鈕后播放動畫?那你就必須要開始學習 JavaScript 了!JavaScript 是一門完整、強大并且非常熱門的編程語言,你在瀏覽器里看到的所有交互或者高級功能都是由它在背后支撐的!

舉個小栗子:

alert("Hello World!")

就這一行,就可以在瀏覽器里彈出 Hello World 啦!

在了解一些基礎的 JavaScript 概念(變量、函數(shù)、基本類型)后,我們可以直接去學習 jQuery,你不用知道它具體是什么(它是一個 JavaScript 代碼庫),你只要知道它可以顯著地降低你編寫交互的難度就好了:

$('.className').click(function(){
    alert("Hello jQuery")
})

通過 jQuery,我們可以繼續(xù)使用在 CSS 中學到的“選擇器”

對于沒有編程基礎的人來說,想要完全掌握它們兩并不容易。作為設計師,很多時候我們可以先不必深究它們的原理,而是嘗試直接應用它!這樣成就感會來得很快,并且你可以通過實際應用更加理解 JavaScript 是用來做什么的。

我仍然推薦你使用 w3school 在線教程 與 http://www.codecademy.com/ 進行學習。另外,你可以看一看諸如《鋒利的jQuery (豆瓣)》 這一類非常實用的書籍,可以讓你很快上手做出一些簡單的效果來!

如果學習得順利,你還可以嘗試使用各種豐富的 jQuery 插件,你會發(fā)現(xiàn)寫出支持用戶交互的網(wǎng)站也沒有那么困難~很多看上去很復雜的功能(比如輪播圖、燈箱、下拉菜單),搜一搜然后看看文檔(教程)、改改示例代碼就好了。

比如說,配合 Huxpro/jquery.HSlider · GitHub 這樣的輪播圖插件,你可以很輕松的寫出 Hux-Slider | Demo 這樣的網(wǎng)頁相冊~

***,我想推薦下 Bootstrap · The world’s most popular mobile-first and respons, 這是世界上最知名的前端 UI 框架之一,提供了大量 CSS 樣式與 jQuery 插件。它非常容易學習并且文英文教程都非常得健全,你并不需要理解它背后的工作原理就能很好的使用它,讓你快速達到“可以建站的水平”。另外,你不但可以 學習如何使用它,還可以學習它背后的思想。

 

轉職方向一:前端重構

業(yè)內通常把專精 HTML/CSS 的前端從業(yè)人員成為重構,而對于注重視覺效果的設計師來說,在掌握基本的 HTML/CSS 后,就可以朝著這個方向發(fā)展了。

到了這個階段,你不但要知道怎么寫頁面,還要知道它們都是為什么,并且知道怎么做更好。這對你理解 Web 世界非常有幫助,并且能幫助你做出更“系統(tǒng)化”的設計。

CSS 的學問很多,你需要開始理解文檔流、浮動流等各種定位的方式與原理,理解 CSS 的繼承復用思想、理解瀏覽器的差異、兼容、優(yōu)雅降級……這里強烈推薦一本書:《精通CSS(第2版) (豆瓣)》,雖然前端技術突飛猛進,但這本書的思想永遠不會過時。

HTML 方面,要開始注重語義化、可訪問性與結構的合理,你要開始學習“結構與樣式的分離”,這里有一本神書將這種分離做到了***:《CSS禪意花園 (豆瓣)》

另外,各種炫酷屌的 CSS 3 屬性你一定會喜歡:你可以用媒體查詢做響應式網(wǎng)頁設計,你可以用 transiton 和 animation 做補間動畫與關鍵幀動畫,用 transform 做縮放、旋轉、3D變換,還有圓角、漸變、陰影、彈性盒!樣樣都是設計師的神器!

如果你還掌握了 入門篇(JavaScript/jQuery)的知識,那么恭喜你!你已經(jīng)可以做出很多有趣的網(wǎng)頁了!很多 minisite 或者微信上的“H5” 小廣告,這個程度的你已經(jīng)可以輕松完成了!

配合上你的設計功力,你可以開始嘗試創(chuàng)作一些好玩的東西,比如這種富含交互和動畫的網(wǎng)站 紳寶 SENOVA ,它仍然是基于 Huxpro/jquery.HSlider · GitHub 實現(xiàn)的!或者給自己做個小小的個人網(wǎng)站試試

轉職方向二:前端工程師

如果你覺得上述的這些都還滿足不了你,你渴望做出更多了不起的交互,甚至你已經(jīng)喜歡上了編程,想要轉行做工程師,或者成為一名全棧設計師,那么你可以朝著這個方向繼續(xù)發(fā)展!

這個階段的***難度,是你必須學會像一名軟件工程師一樣思考。你需要踏踏實實學習編程語言,深入理解作用域、對 象、類、封裝、繼承、面向對象編程、事件偵聽、事件冒泡等一大堆編程概念,你還需要了解瀏覽器,學習 DOM、BOM、CSSOM 的 API,你甚至還需要學習一些網(wǎng)絡原理,包括域名、URL、DNS、HTTP 請求都是什么…

你可能會被這一大堆名詞嚇到。確實,想要搞定他們并不容易。但是,你要相信只要你肯花功夫它們也沒有那么難,而更重要的是,如果你能拿下他們,你所收獲的并不只是這些而已,而是真正跨過了一道坎 —— 你的世界將因此打開, 你看待世界的方式將因此改變

對于這個階段,你可以繼續(xù)在 http://www.codecademy.com/ 上學習,但是 w3school 已經(jīng)不夠用了,遇到不會的語法,我推薦你查閱 Mozilla 開發(fā)者網(wǎng)絡,這是少數(shù)中英文都有的超級專業(yè)且友好的網(wǎng)站。

同時,你可能需要看一些書本來幫助你學習 JavaScript :

  • 《JavaScript高級程序設計(第3版) (豆瓣) 》或 《JavaScript權威指南 (豆瓣)》,大而全的書只需要一本就夠了

  • 如果上面這本你覺得太難,你可以先看 《JavaScript DOM編程藝術 (第2版) (豆瓣)》來過渡一下,這本書比較容易,它會教給你 “優(yōu)雅降級、漸進增強”的優(yōu)秀思想

如果你能順利得渡過了這個階段,我想你已經(jīng)能做出很多令你自豪的網(wǎng)站了!試著向身邊的工程師朋友詢問如何購買域名、配置簡單的靜態(tài)服務器,或者搜搜“Github Pages”,然后把你的作品掛在網(wǎng)絡上讓大家欣賞吧!

你還可以試著用 JavaScript 寫寫小游戲,這不但能鍛煉你的編程水平還非常有趣~比如這是我剛學 JS 不久后 hack 一晚的產(chǎn)物 —— 用 DOM 實現(xiàn)的打飛機:Hux – Aircraft (不支持手機)

 

入行篇

如果你能完成上述所有的學習,你已經(jīng)是一名非常出色的前端學徒了!對于只是想要豐富技能的設計師或者產(chǎn)品經(jīng)理來說,接下來的內容可能會讓你感到不適 ;(
但如果你鐵了心想要真正入行進入大公司從事專職前端開發(fā)的工作,那么你可以接著往下看:

近幾年的前端技術發(fā)展迅猛,前端工程師早已不是切切圖寫寫頁面做點特效就完事的職位,你需要具備相當完善的工程師素質與計算機知識,成為一名真正的工程師。

你需要非常了解 JavaScript 這門語言,包括 閉包、IIFE、this、prototype 及一些底層實現(xiàn)(ES、VO、AO)、熟悉常用的設計模式與 JavaScript 范式(比如實現(xiàn)類與私有屬性)。另外,新的 ES6 已經(jīng)問世,包括 class, module, arrow function 等等

你需要非常了解前端常用的網(wǎng)絡及后端知識,包括 Ajax、JSON、HTTP 請求、GET/POST 差異、RESTful、URL hash/query、webSocket、常用的跨域方式(JSONP/CORS),以及 CDN 緩存、靜態(tài)網(wǎng)站/動態(tài)網(wǎng)站區(qū)別、服務器端渲染/前端渲染區(qū)別等等

你需要學習使用進階的 CSS,包括熟悉 CSS 3,使用 Scss/Less 等編譯到 CSS 的語言,使用 autoprefixer 等 PostCSS 工具,了解 CSS 在 Scope/Namespace 上的缺陷,你還可以學習 CSS Modules、CSS in JS 這些有趣的新玩意

你需要非常了解前端的模塊化規(guī)范,可能在你學習到這里的時候,Require.js/AMD 已經(jīng)再見了,但是 CommonJS 與 ES6 Modules 你必須要了解。(你可以觀看我的分享《JavaScript Modularization Seven Day》 來學習 JS 模塊化的歷史)

你需要熟悉 Git 與 Shell 的使用,包括基于 git 的版本管理、分支管理與團隊協(xié)作,包括簡單的 Linux/Unix 命令、你要知道大部分程序員的工作可以通過 shell 更快更酷的完成,并且很多“軟件”只能通過 shell 來使用。你還可以把你的代碼放到 github 上與人分享,并且學習 github 上其他優(yōu)秀的開源代碼

你需要熟悉并且習慣使用 Node,包括了解 npm、使用 Grunt/Gulp/Browserify/Webpack 優(yōu)化你的工作流、對你的代碼進行打包、混淆、壓縮、發(fā)布,你還可以使用 Express/Koa 配合 MongoDB/Redis 涉足到后端領域,或者嘗試用 Node 做后端渲染優(yōu)化你的首屏體驗

你需要了解各種 HTML 5 的新 API,包括 <video>/<audio>,包括 Canvas,webGL、File API、App Cache、localStorage、IndexedDB、Drag & Drop、更高級的 DOM API、Fetch API 等等

你需要學習 JavaScript 的單線程與異步編程方法,因為它們非常非常常用、包括 setTimeout/setInterval,回調與回調地獄、事件與event loop、還有 Promise 甚至 Async/Await

你需要非常了解瀏覽器,包括主流瀏覽器的名稱、內核與差異、包括私有屬性與 -webkit-,你需要學習如何使用 Chrome DevTool,你需要了解瀏覽器渲染的 reflow/repaint 來避免 Jank 并進行有針對性的性能優(yōu)化

你需要專門學習 Mobile Web,因為移動互聯(lián)網(wǎng)是趨勢。包括 viewport、CSS pixel、 touch 事件、iOS/Android 瀏覽器的差異與兼容、移動端的性能優(yōu)化、300ms delay 等等…你還需要知道 Hybrid 是什么,包括 Cordova/Phonegap,更復雜的比如和 iOS/Android 通信的機制,比如 URI Scheme 或者 JS Bridge

你需要學習一些非?;馃岬那岸丝蚣?庫,他們不但能幫助你更快的進行開發(fā)、 更重要的是他們背后所蘊含的思想。包括 Backbone、Angular、Vue、React、Polymer 等等、了解它們背后的雙向數(shù)據(jù)綁定、單向數(shù)據(jù)流、MVC/MVVM/Flux 思想、Web Component 與組件化等等

你需要學習如何構建 web 單頁應用,這是 web 的未來,包括利用 history API 或者 hash 實現(xiàn)路由,包括基于 Ajax + 模版引擎或者其他技術的前端渲染、包括組織較為復雜的軟件設計等等

我還建議你學習更多的計算機知識,它們能對你的代碼能起到潛移默化的作用,包括簡單的計算機體系結構、更廣泛的編程知識(面向對象/函數(shù)式等)、棧、堆、數(shù)組、隊列、哈希表、樹、圖等數(shù)據(jù)結構、時間復雜度與空間復雜度以及簡單的算法等等

你需要了解業(yè)內的大神并閱讀它們的博客/知乎/微博,比如 @尤雨溪@賀師俊@張云龍@徐飛@張克軍@玉伯@拔赤@寸志@題葉@郭達峰 等等等等,很多思想和新東西只有從他們身上才能學到。我還推薦你多參加技術交流會,多認識一些可以一起學習的小伙伴,你們可以互相交流并且一起成長

你需要具備很強的自學能力、對技術有熱情并且不斷跟進。因為 JavaScript/前端的社區(qū)非常非?;钴S,有太多的新東西需要你自己來發(fā)現(xiàn)與學習:比如 Universal JavaScript(同構)、 前端測試、HTML5 游戲、WebRTC、CSS 4、ES 7、React Native、Babel、TypeScript、Electron 等等等等…

雖然一下扯得有點多,但這些確實就是你未來將會遇到的。你并不需要全部掌握它們,但是卻多多益善;你也可以專精在某幾個方面,這已經(jīng)足以讓你成為非常專業(yè)的前端工程師。

責任編輯:王雪燕 來源: 黃玄
相關推薦

2015-10-29 11:35:53

零基礎前端設計

2015-07-21 09:38:11

設計師前端代碼

2020-11-11 14:09:42

UI設計師進階學習

2020-02-21 17:07:19

設計師裁員職業(yè)

2016-09-22 16:14:45

前端設計Photoshop

2011-12-06 16:07:00

網(wǎng)頁設計

2012-08-13 09:35:03

設計師程序員工程師

2013-07-09 09:31:57

設計師創(chuàng)業(yè)團隊

2013-04-16 09:30:09

前端開發(fā)Web網(wǎng)頁設計

2012-08-01 09:41:43

設計設計師UI設計

2011-04-02 10:50:36

WebHTML 5

2019-08-05 13:47:18

2012-04-01 09:10:17

WEB設計師前端

2012-08-22 09:39:28

開發(fā)者

2018-11-01 17:20:39

移動端設計界面

2012-09-24 11:17:11

2019-04-04 14:51:57

banner廣告設計分析

2011-01-05 13:49:21

2019-06-26 10:49:51

設計師前端開發(fā)網(wǎng)頁設計

2020-12-23 07:56:40

前端UICSS
點贊
收藏

51CTO技術棧公眾號