標籤:

前端小白迷茫,求指導?


對於前端初學者我有幾個始終不變的建議

  1. JavaScript 高級程序設計(JavaScript 權威指南真的不適合做教程,應該做工具書)
  2. 圖解 HTTP(同樣 HTTP 權威指南也不適合做教程)
  3. CSS 說實話更多是靠實踐,但是有一定理論基礎的實踐比沒頭蒼蠅到處亂撞好得多,推薦看看 CSS 揭秘

上面是針對基本功,重點來了

堅持每周寫兩篇技術博客

不要放到 github 這種沒人關注你的地方,放到博客園等流量大,每天有人可能和你交流的地方,堅持寫博客給人帶來的收穫會比想像中大得多

如果想進一步可以看看 前端學到什麼程度可以社招進bat 需要達到什麼水平?


最近一個月因為工作比較繁忙,很少在知乎輸出文章。前端迷茫的原因主要還是因為找不到學習的方向和不知道學到怎樣才能找到工作。那我就寫一寫學什麼和學到怎樣能找到工作好了。

本文較長,看一下目錄,看完你應該會有收穫

  1. 前端學習路線
  2. 前端學成怎樣才能找工作?
  3. 如何寫好簡歷?
  4. 個人的評估和找工作前的生活狀態
  5. 最後:踏實前行

1)前端學習路線

1.1 開發前準備

  • 代碼編輯器

其實就是開發工具,我只推薦一款,現在大家都在用的好東西!

Visual Studio Code - Code Editing. Redefined:調試、終端、插件一體化!重點是只有不到100M的大小!

  • 代碼調試

沒錯,作為一個前端開發,你必須要跟天天見面的瀏覽器打交道!眾多瀏覽器里,谷歌瀏覽器用的人最多!反正大家用,我也用!

Chrome Dev Tools 淺析:成為更高效的開發人員 - 文章 - 伯樂在線:這是一篇教程

  • 代碼、版本管理

剛開始編碼的時候,我根本不知道還能有這種智能化的「回滾,版本控制」功能的軟體!學習了兩個月編程才知道github!慚愧啊!

Github 地址:Build software better, together

github 學習:Git遠程操作詳解 - 阮一峰的網路日誌(不解釋了,我就是看著這篇文章長大的!)

1.2 前端開發最基礎

  • HTML入門級教程:HTML 教程,不用全部看完,知道套路基本就可以了!現在的開發模式基本都是「div+css」的模式,因此了解一下其他html5的元素!直接寫一個簡單網頁出來看看吧!
  • CSS入門學習:HTML+CSS基礎教程-慕課網,稍微註冊一下(或者微信登陸)你就能獲得一整套的HTML+CSS基礎教程!學完包你之後都不用再看了。
  • Javascript教程:JavaScript教程,什麼?你沒聽說過 @廖雪峰 大大?在這麼多Javascript教程裡面,我最喜歡廖大的教程!通過講故事,寫小說一般將js的運用娓娓道來!是一個名副其實的好老師!
  • HTTP協議:對於一個前端人員(或者web開發),如果你不知道,不了解HTTP協議,那麼它就會在你的開發旅程里,像一個幽靈一般的死鬼纏著你!防火防盜防不懂HTTP協議的人!HTTP 協議入門 - 阮一峰的網路日誌,實際上10分鐘看一遍你就懂完了。
  • 課外了解:「互聯網協議入門(一) - 阮一峰的網路日誌」「互聯網協議入門(二) - 阮一峰的網路日誌」,現在單機的應用非常少了,我們每天都在和網路打交道,茶餘飯後花費10-20分鐘了解一下互聯網協議,會對你以後的編程學習有很大幫助!

1.3 進階

  • HTML 5 教程:別再糾結於什麼htmlxxxxx了,直接看html5。新的html5新增了非常多的元素和特性,前端工業標準!
  • CSS 教程:其實css在前面你可能已經了解了,使用css+html5我們可以實現很多的特效。能不用js就不用js!
  • 自適應網頁設計(Responsive Web Design):為什麼現在有些網站,滑鼠放大瀏覽器框,縮小瀏覽器框,他的排版排布會完全不一樣?為什麼現在有些網站,電腦看的時候是一個樣子,手機訪問的時候又是一個樣子?答案全部在這裡!
  • CSS動畫簡介 - 阮一峰的網路日誌:又是他!套用阮大大的開頭一句話「現在,我很少寫介紹CSS的文章,因為感覺網站開發的關鍵還是在伺服器端。但是,CSS動畫除外,它實在太有用了。!!!
  • 進階課外學習:「jQuery 教程 | 菜鳥教程」「Bootstrap 教程 | 菜鳥教程」「AJAX 教程」,建於現在大家都往ng/react/vue上面靠,這部分作為新人有興趣了解即可,我們將重點放在後面的ng/react/vue上!

1.4 高手之路

  • 包/模塊管理:Node.js,直接安裝一個node.js,你就可以擁有了npm包管理工具,基本市面上流行的工具我們都可以使用npm下載到,非常方便!「NPM 使用介紹 | 菜鳥教程」「快速搭建 Node.js 開發環境以及加速 npm」這兩篇文章,十幾分鐘看完,基本上這輩子就不用再看了。
  • 前端自動化:入門Webpack,看這篇就夠了。啥?還沒聽說過Webpack?你在寫工程的時候,每次都要&啊,什麼什麼的寫一大堆你才能開始做你的工程,太慢啦!大家都在用的Webpack就是幫你做這些事情!花半個小時了解一下Webpack配置,你馬上就可以擁有快速開發H5應用的先決條件了!
  • ES6:ECMAScript 6入門,不解釋了。歷史的js有很多二逼得不行的設計,我們說的js變數作用域就是一個非常醜陋的設計!在ES6中,引入了let關鍵字,完美的解決了這個問題。當然ES6語法中,有大量的新的語言特性,快點操作起來!(不要搞錯,不是叫你學一門新的語言,其實es6還是js)
  • 更好的css排布方式:Less 中文網。我們的css代碼越寫越亂,沒有層級感,特別丑,我們可以使用less去讓我們的css更好編排,更好看。Sass基礎教程 Sass快速入門 Sass中文手冊 | Sass中文網,同樣sass也是非常成熟的解決方案!不解釋,反正幾分鐘就能上手,隨便選一個開始吧!
  • 新的網路請求深入淺出Fetch API - WEB前端 - 伯樂在線:以前我們都用的ajax,現在落伍啦!我們趕緊使用Fetch api來進行網路請求吧!(其實fetch也快落伍了哈哈哈
  • 課外:StuQ技能圖譜,這個網站詳細的介紹了前端工程師需要掌握的技巧,課外同學可以查看!

1.5 前端三大流行框架之一:React

ng/vue我都非常喜歡!有興趣的人,可以去學習(實際上學好哪一個都好找工作),因為我工作中用到的是React所以我詳細說一下學習路線。

1.5.1 React入門

  • React 入門實例教程 - 阮一峰的網路日誌
  • React 測試入門教程 - 阮一峰的網路日誌

都是阮大大的教程,都比較古老了,但是依舊是值得我們去學習。深入淺出的介紹了React的工作方式,編程方式,以及重新定義React。測試那一篇可能有點難懂,看不懂可以暫時跳過。(畢竟測試是穿秋褲......

1.5.2 React進階

出學者我只推薦一本react的書,非常好,非常新,用的都是react技術棧的新版本。

  • 《深入淺出React和Redux》(程墨)電子書下載、在線閱讀、內容簡介、評論 - 京東電子書頻道,知乎 @程墨Morgan 大大寫的一本關於React和Redux的書籍。我本人非常喜歡程大對軟體架構的一些理解。
  • 在書中,你能夠很清晰的看到,如何學習整個React技術棧,從React,到Redux,再到React router,單例測試,最後到伺服器端的渲染、同構,應有盡有,看完這本書你基本上就能很好的了解整個React技術棧.
  • 你不僅能從書中學習到React,你還能學習到一個高手如何去排布,組織自己的代碼。程大用淺顯易懂的語言,把現代前端開發架構講得非常透徹,並且以「限制」一詞貫穿始終,大大的點贊。
  • 我沒有收錢,我是真的從書中學到很多,因此非常推薦。我本人買了紙質的版本,喜歡的朋友也可以去買。想立即閱讀的同學,馬上去買電子版本吧!

1.5.3 React進階高手

  • redux-saga:redux解決了項目結構和數據流的問題,但是非同步問題redux解決得非常屎,可以說更噁心了。React社區的人想出了React-thunk的解決方案,但是依舊是讓人頭疼的一個解決方案。在我們學習ES6以後,我們可以輕鬆的使用redux-saga去排布我們的非同步代碼!掌控 redux 非同步
  • Material-UI一個開箱即用的ui庫,符合現在的審美設計。讓你不再腰酸背疼的去寫一套ui庫!
  • A UI Design Language:阿里出品的ui庫,我個人最喜歡的React ui庫之一。風格輕量化,不做作,比起Material-UI油膩的風格,我更喜歡ant design.
  • Introduction · redux-observable:有時候,我們的網路請求會有競爭態,這時候,我們可以使用這款中間件去增強我們的redux,借鑒了rx.js。當你有競爭態的時候,你可以使用這樣的一個庫去解決!

這一部分內容我要單獨說一下。在我們開發的路程中,我們不應該直接去使用這種「高級的特性」,上述我說的都是react後來發展出來的高級特性(庫),這些高級庫其實是為了解決react的某個問題而存在的。

你必須去寫最基本的React應用,你才能夠感受,到底React是哪裡蛋疼,是哪裡需要改進,然後你就能明白為什麼會出現這麼多的「亂七八糟的庫」。

實際上,如果你腦力超凡,你可以「不用任何庫,只用React去締造一個屬於你自己的應用」。

1.6 一些值得我們關注的前端博客:

  • Home - 廖雪峰的官方網站:哈哈,廖老師幽默十足,看他的前端教程你可以樂呵呵的笑出聲來並且學到東西!!
  • Ruan YiFeng"s Personal Website:不解釋了,學過React的人,都知道這位神仙,他的教程,文字,深入淺出,無人不曉。重點就是他的博客中還有很多人生道理,開發收集等。(世界流量前6000的網站哦!
  • 張鑫旭的個人主頁 " 張鑫旭-鑫空間-鑫生活:張大大的博客,非常多的奇巧淫技,很多鬼怪的功能,他都有寫,是一個非常牛x的博客!
  • 聶微東 - 博客園:同樣是一個非常好的博主,博客主要內容包括:HTML5,Python,PHP,Nodejs,MySQL,NoSQL。作者是一位畢業於陸軍航空兵學院,獲計算機科學與技術學士學位的人。熱愛編程,從事JavaScript研發工作。

1.7 一些奇巧淫技:

  • 80+代碼實現一個React版本的酷炫動效簡歷,我實現了,基於react
  • Redux的副作用處理與No-Reducer開發模式,一篇深度好文,讓你脫離繁瑣的reducer。
  • Chrome DevTools 動畫演示,提高你的網頁開發技能:標題詮釋了所有要表達的。
  • 用 JavaScript 實現對滾動時頁面布局變化的控制
  • CoderPad-基於React全家桶寫作/新聞一體綜合應用的實踐總結:一款React做的線上軟體,作者代碼規範統一,屬於優秀的範例。大家在學習React/redux之後,可以看看這款應用,對著自己喜歡的東西,學著做一套出來,上傳github,寫入簡歷,對找工作很有效。
  • 前端基礎面試題(JS部分):去工作,不能少了面試,大家應該去看看面試都考什麼。
  • 前端測試框架 Jest:fb官方出品的測試庫
  • react 後台管理系統解決方案:一個非常好的react開源項目。
  • 繪製隨機不規則三角彩條——小談EvanYou個人主頁的實現:不解釋!知乎大大,vue的作者 @尤雨溪 的博客實現!高端大氣上檔次的博客設計!!!!!
  • [譯] 50 行 CSS 代碼擼一個陰陽八卦的 Loading 動效:真的是黑科技了....
  • 深入了解Timeago.js:這個庫非常有意思,實現了現代的時間設計:1秒前,3秒前,10分鐘前。過了幾天以後就變成2017-8xxxx之類的,非常輕量化。

2) 前端學成怎樣才能找工作?

其實這方面非常的個人化,也要看每個公司需要怎樣的人才和當時的招聘情況,不過我們依舊可以從往年的、以及我現在的工作總結出一些用人經驗,分享給大家。

2.1 緊缺人手的初創型公司

作為一個初創公司,往往容忍能力確實比較差。但是你要知道,小廟容不下大神,初創型公司對於技術的需求實際上來說「普遍不高」,往往這些公司就是需要搬磚的人,技能需求如下:

  • 獨立寫頁面能力:對應的技能其實就是HTML/CSS/Javascript三個東西的運用。
  • 前端任何一個流行框架:三大框架「vue/ng/react」,對於初創型公司來說,他們的想法就是需要一個「上來就能搬磚的夥計」,所以能夠比較熟悉的運用某些前端框架,那麼對你找工作還是非常有利的

然後就沒了,對於這種初創型公司,多數(注意我說多數)都是以「上來就能搬磚的」標準去尋找人才,畢竟初創型公司,暫時性的idea &> 技術,idea實現了,再慢慢優化。

工資預期就是4000-8000/月,看所在城市

2.2 中小型企業

相比於初創公司,中小型企業的定義我定義為:基礎業務基本穩定,正在需要大量拓展、鋪設業務邏輯和代碼。那麼對於這種中小型企業,他們的用人標準其實就會稍微高一點,因為這涉及到他們從初始idea走向成熟市場。技能需求如下:

  • 獨立寫頁面能力:廢話
  • 熟悉某一個框架的各種解決方案:比如React,你必須得知道react的一些生態如何去使用。react-redux狀態管理,redux-saga非同步action,reselect選擇器等一系列工具的搭配。
  • 能夠獨立建站:很多前端人士對於後台的東西完全不熟悉,導致了很多前後端雞同鴨講的笑話。很多中型公司,甚至是小型企業都已經要求,前端人士必須了解一門後端語言,並且能夠擁有獨立建站的能力。獨立建站的能力包括了:「物理伺服器命令、操作」「物理伺服器部署」「資料庫操作」「nginx/apache等web伺服器基本配置」「前端跨域基本解決方案」

能夠獨立建站,你基本和「頁面仔」就有了分水嶺,你不再是一個單純的頁面仔,你還擁有了了解前後端的能力,這個就能給你在招聘中脫穎而出。

工資預期是:8000-15000/月,看所在城市

2.3 bat等大型企業

大公司所需求的能力有兩個:紮實的基礎和解決問題的能力

這兩個能力相輔相成,紮實的基礎為解決問題提供了方向;解決問題的能力又能反過來補充你的基礎。在大公司招聘的過程中,聰明的招聘者絕對會考察你最強的方面有多強!

因為大公司招聘和部門,項目息息相關,所以很難給出一個標準,我給出一些基本的和我見識到的技能需求:

  • 數據結構和演算法:雖然95%以上的情況下用不到,但是這基本是大公司篩選「聰明人」和「勤奮者」的絕對標準。(常見排序,樹的遍歷,各種數據結構的大O時間效率差異)
  • 掌握一門後端語言:能進大公司的人絕非善類,很多人覺得「我他嗎一個前端為什麼要懂後端」。知識面的廣度和深度一直是大公司所看重的,如果你知識面太窄,很多情況你根本不知道怎麼去做,更別說寫好某某某端的代碼。(雖然如此,但是不是一定必須)
  • 前端基礎:閉包,作用域,瀏覽器事件流,甚至是蛋疼的原型鏈,這些能夠體現你基礎的東西,幾乎在每個大廠面試中必問。(雖然不是絕對的重點,但是能答好,那絕對是增加自己的競爭力)
  • 源碼理解:不大公司其實也會用框架,但是很多框架都自己研發,因此他們或許考察的不全是你用框架的能力如何,更多的考察對框架的理解。在此以React為例子:「setState以後,發生了什麼?」「setState是不是非同步的?為什麼這麼設計?如何獲取setState以後的state值?」「redux是怎麼實現的?大概說一下」「為什麼react渲染列表的時候需要key?為什麼key的值絕對不能是數組的index?」「react-router是怎麼實現的?說說前端路由的實現思路?」

工資預期是:15k/月以上了。

3) 如何寫好簡歷?

之前寫過一篇,複製修改粘貼一下


縱觀大部分的簡歷都是沒有「乾貨」的簡歷,那麼這些簡歷,基本上就是10秒鐘就可以刪進垃圾桶里的。

下面我就介紹一下,怎樣的簡歷,最能吸引人。(針對的是比較新的小白


3.1 簡歷面貌

很多人的簡歷,毫無排版,字體亂七八糟,毫無藝術感。雖然說,你的簡歷是描述你這個人到底能幹什麼的東西,但是「樣子好看,別人就會多看你幾眼」。你可以不搞樣式,但是如果有一個人和你水平相同,他的簡歷弄了樣式,那他被選擇的幾率就大很多。

我在這裡直接給出一些乾貨「salomonelli/best-resume-ever」這個是github上的一個不錯的模版,幾天時間就獲得了4000星。大家也可以自己去找找別的,都行。總之以下幾點要注意:

  • 內容精緻
  • 樣式完整統一
  • 細節突出

3.2 突出優點的方式

你簡歷中的「熟悉各種xxxoo」其實就是突出優點的一種。但是目前的環境就是「不太足夠」。

  • 學歷:211/985直接寫。其他的本科寫本科,專科寫專科。
  • 作品:一定要有。你說你熟練了,那麼你拿點作品出來我看看?這個非常重要,很多人的學習模式就是「噢,這個我懂了,噢那個我懂了。噢,這個太簡單了,不做」。眼高手低的人,我相信是各個用人單位最不想看見的。因此,哪怕是你「仿造別人,或者github的項目,做一個出來,部署展示」那麼你就能脫穎而出。
  • 小作品,小demo:我給個標準,代碼少於500行的「一般都屬於小demo」,注意我說的是一般。類似這種小demo呢,就一筆帶過,說一說用到什麼技術,主要是什麼想法,一筆帶過,不用介紹太多。
  • 一些額外的加分項:博客(自己搭建分稍微高點),文章,github項目(有星),參加比賽,實際工作經驗(一般說的都是兼職類似)。

3.3 內容基本構成

基本結構

  • 姓,性,年紀,郵箱(qq,微信
  • 學歷、學校、專業(不是計算機專業可以不寫,不要在簡歷中暴露自己的短處)
  • 技能(重點介紹)
  • 工作經歷(如果有)
  • 期待薪酬(謹慎寫或者不寫)
  • 作品地址、博客地址、github地址(重點介紹)
  • 學生時期成績、比賽獎勵

技能描述

  • 精通:有實際商用項目背景才能寫(或者有非常厲害的開源項目)
  • 掌握、熟練運用:使用某種東西模仿了某種東西出來,並且能夠順利運行。那麼你可以說你掌握了,熟練運用。
  • 了解:不怎麼熟悉,聽過名字,看過一些小demo

作品項目描述(重要)

  • 從最牛逼的到最垃圾的
  • 大項目5行左右的描述:1.幹什麼的,2.怎麼實現的,3.用到了哪個技術棧,4.(遇到什麼問題),5,預覽地址(最好要有,因為起碼告訴看你簡歷的人,你會部署)
  • 小項目,demo類:可以用「關鍵詞+技術棧」描述。

(假設招聘的是python web開發)

1. LuyWeb (採用asyncio的web伺服器)
a) 技術範疇:asyncio,socket,uwsgi(協議) or wsgi
b) 實現細節:一個實用asyncio的高性能伺服器,支持django等眾多web框架
c) 項目特色:asyncio...

2. xx即時聊天平台
a) 技術範疇:xxxxxxx
b) 實現細節:xxxxxxx
c) 項目特色:xxxxxxx

3. 分散式爬蟲
a) 技術範疇:xxxxxxx
b) 實現細節:xxxxxxx
c) 項目特色:xxxxxxx

4. 小項目(日常
a) xxx:xxxxxxx
b) xxx:xxxxxxx
c) xxx:xxxxxxx

github or 博客地址

3.4 題主簡歷修改的建議

  • 熟悉python,熟練使用某某框架

不要光說不練。不是你說熟悉就熟悉的,得上一些乾貨。如:

熟悉python和django

- 使用django開發了一個博客
a) 技術範疇:xxxxxxx
b) 實現細節:xxxxxxx
c) 項目特色:xxxxxxx

預覽地址....

  • 熟悉某前端框架

熟悉vue.js

- vue配合socket製作的在線聊天即時平台
a) 技術範疇:xxxxxxx
b) 實現細節:xxxxxxx
c) 項目特色:xxxxxxx

預覽地址....

其實套路很簡單:我熟練什麼,我就有某個作品來告訴你,我熟練什麼

3.5 簡歷細節

  1. 項目代碼要好看,代碼整齊,統一,最好有注釋。預覽界面也不要太爛,稍微做一下美工。這一點就很容易看出你的態度。
  2. 絕對不要有錯別字。排版統一,字體風格統一。
  3. 投簡歷的時候,可以在「知乎」,「微博」,「掘金」,等一些網站搜索看看,有沒有人招聘,有直接發郵箱。如果實在找不到,再去招聘網站。
  4. 招聘標題以這樣的格式:名字+招聘職位+聯繫方式。(碰到過很多求職者,上來就是,你好xxxxxx,我怎麼懂你要做什麼?」
  5. 找工作前,一定要沉下心來,做一些作品。
  6. 招聘工作經驗在1年的,如果你沒經驗還是可以投(那麼你一定要有好作品了,github上最好有1個或者多個100星以上的作品

4) 個人的評估和找工作前的生活狀態

4.1 個人評估

很多人都來問我如何去學習前端並且能夠找到工作,其中有什麼竅門?說一句非常難聽的,我並不認為這樣的人以後能夠什麼發展,因為這麼問,著實是動了「想走捷徑的念頭」。

前端經過十幾年的發展,已經從遠古時代發展到了高科技時代,框架每天都在更新,瀏覽器也是每天都在更新。妄想幾個月就能學會,並且學好前端,然後去找一份10k的工作,我想說其實是白日作夢。我就光說學習HTML/CSS/javascript基礎好了,你光是看「javascript高級程序設計」就得看一個月,才能說簡單看完!到運用又是一回事了。

學習完前端,當你想做一個動態的網站(商城,博客之類的),你就必須得懂伺服器端的一些事情,那麼你就必須得去學習一門後端語言(不要跟我說node.js,nodejs雖然也是JS,但是是兩個世界),伺服器的知識。又得花去一到兩個月。

所有東西都學完以後,你開始搭建自己的個人網站,又得摸爬滾打,精力好的1個月能搞完,精力差的2-3個月能做出來。包括我之前推薦的張鑫旭大神,他在找工作之前花了9個月學習了後端的知識,花了3個月才做出自己的動態網站。

所以那些想著,學習3個月甚至是半年就能找到一份10k工作的人,我勸你們還是退縮了吧,可能性不大(注意,我說的是可能性),我給出的評估是:平均閉關1年,(當然不是說兩耳不聞窗外事,而是說認真學習一年),才能找到份不錯的工作。

4.2 我找工作的歷程和生活狀態

我學習前端到我找到工作時間是4個月,不要看我只用了四個月,但是之前我寫c++的時候已經接觸了不少前端的東西,我甚至用c++做過web開發。我認真轉行做編程,已經過去快2年了。

我找到工作時的技能:

  • react的熟悉:我對於react還算是很熟悉的,我甚至自己擼了個react-like框架,我過一段時間會開源出來,有興趣的朋友可以關注一下。
  • SQL的熟悉操作:sql語句寫得不下幾百行了,手工巧打sql語句可能超過1000次,我很少用ORM(其實是我懶得學),好處就是我對什麼join,left join ,各種key,各種限制都很熟悉
  • python:當時寫c++的時候順手寫的python腳本,結果後來發現用python不加班,所以漸漸的所有後端東西都用py去寫了,漸漸就熟悉了起來.........
  • 數據結構和演算法:我寫過最牛逼的演算法目前是d星演算法,就是網遊自動尋路的演算法。react的diff我也寫出來了,估計過得一個月左右會開源出來一個學習版。負載均衡的平衡一直哈希演算法我也有c++的實現。排序演算法我沒實現過幾個......

懂得不多,相比於知乎的大神們依舊是菜鳥,不過依舊是能給我找到一份不錯的工作了。

在我學習前端的時間裡(其實不止前端是這樣),我基本都是8點半起床,吃完東西洗漱出門九點半,去到學校的圖書館,坐到下午5.30-6.30,回家以後,吃飯健身,有時候配女朋友說一下話,逛一逛。

那幾個月我基本沒因為任何屁事出門,出門也是去圖書館,無應酬,朋友叫我去吃飯我一律拒絕,給自己連續大塊的時間去專研學習。最值得講的還是在我寫react-like框架的時候,首先是查資料,看源碼,很多時候源碼是很難懂的,因為每一行源碼的存在都是為了解決某個問題而寫上去的,所以你無法將源碼和應用例子結合,那你就搞不懂他在寫什麼。

比如實現react-diff演算法的時候,表層的diff其實是很簡單的,最難的就是「prop children,列表渲染」這部分的演算法,其實就是我之前說的「為什麼react的孩子需要key?key為什麼不能用index代替」。查了很多資料,沒查一個資料,就能找到一點點知識,然後慢慢的拼湊成一個整體的知識,直到最後實現這塊演算法。

那幾個星期里,基本上都是每天戰到晚上1點半,每天都是10+小時的高精力戰鬥。現在回想起來,值得!當我面試前端的時候,問到react問題,那是可以講到最後面試者都大家讚許(那次面試我們聊了2個多小時,後面大家聊high了,到辦公室工作的前的一天,還在跟我聊......

5)最後:踏實前行

關注我的朋友都知道,我不僅是程序員,我還是一個兼職的健身教練。對於我這一切取得的成果,完全沒有捷徑,靠的就是「不斷的逼自己」從而突破。

很多人在學習的時候,學了一點點,叫他實現一個博客,他覺得「卧槽,大家都坐了博客,我做有毛用」,殊不知,這就是我們所說的,眼高手低。是各種用人單位,最鄙視的一種人。

更多編程知識請關注 @方正 ...


大家都是從小白過來的,回顧剛開始學習的時候,有這兩種路徑:

  1. 注重基礎的學習
  2. 以應用為主的學習(代碼能跑就行,不一定知道為什麼)

個人覺得在興趣不夠濃厚或者自制力不夠強的情況下,太過注重基礎反而適得其反。舉個例子:我們要學習a,但是發現理解a需要b的知識,於是我們轉向學習b,這時又發現學習b需要依賴於對c的理解,可能我們在學習c的過程中由於教材等原因一直未能理解,這時候就會產生很強的挫敗感,自制力稍低就會放棄學習。

那麼問題的關鍵點就轉化為:要如何持續高效地學習?

首先要在學習過程中了解自己,比如自己的自制力如何,理解能力是怎麼樣的。理解能力決定了我們的學習途徑,有的人傾向於別人講解(如教學視頻),有的人傾向於看書。自制力如何決定了我們的學習方式,當我們自制力不高的時候,就應該選擇門檻低的方式,比如閱讀一本經典但是門檻低的書,就會讓我們在學習過程中充分投入,減少我們想放棄的想法。(也就是最近流行的心流的狀態)。其他答主提到js高級程序設計,這絕對是一本經典好書,但更容易上手的話,我推薦js dom編程藝術,在閱讀過程中把所有源碼自己實現一遍。

其次就是在學習的過程中保持輸出,比如輸出到博客或者github,這裡我推薦csdn。輸出既可以把我們的知識體系結構化,又能增加我們的學習熱情。不需要害怕輸出的內容過於簡單,每個人都經歷過這樣的階段,對於我們最重要的是在入門初期把效率提升到極致。

最後關於css和js,我個人推薦css在初期的學習以動手為主(比如模仿幾個大型官網主頁),並且要對一些特定的布局問題進行整理,因為很容易忘記。js的話可以參考我另一個回答:都說前端學習是先平緩後陡峭再平緩,那這幾個轉折點大概對應哪一領域的知識?


這種東西知乎搜一下就有啦。問題也不說一下具體要什麼指導?

這是我今年 3 月寫的,可以參考:https://www.zhihu.com/question/19882430/answer/150667369


現在的前端大部分都要求全棧。那麼什麼是全棧工程師呢?通俗的講,就是前後端全能,從數據存儲到前端UI都必須掌握才行,當然不包含UI設計師。所以你必須知道sql、tcp/ip、http/https、html、css、js、一門純後端語言比如Java。有人問,掌握其中之一能不能找到工作或者混到飯吃,答案是能,只不過你的議價能力就會很低,因為不可替代性太弱!總之,編程之路需要沉下心一直不斷地學習!


我看提問者顯示的是學生,那我就從學生的角度來回答問題吧。

【學生】: 對於學生來說我覺得學好基礎知識比較重要。譬如大學期間熟練掌握html,css,JavaScript即可。【不會Vue,React也無所謂】其次就是掌握面向對象編程理念,演算法設計這些。這些是基礎,掌握好基礎才是王道,除非個別天才。這麼說吧,其實我在大學期間也不怎麼會用html和js。包括畢業後進入Newegg後也是做的silverlight開發。工作中沒有用過Jquery這些。後面換工作下家公司需要Jquery。我也可以直接去看API很快入門。包括項目需要使用React的時候我也能做到現學現用。前端變化快。學習能力以及對基礎知識的掌握度才是最重要的。你進入公司了公司自然有人培養你的。大學期間掌握好基礎知識才是王道。【我記得當初大四面試的時候都是靠演算法和思維活躍度,其次就是一些簡單的C語言這些,你要相信好的公司更在乎的是可塑造性的大學生而不是啥都搞得大學生。】


作為cs系學生,在學校自學html,css,js.越學越感到迷茫,從前台的布局到js的特效以及數據處理,然後通過nodejs進入後台,我發現我的心越來越大,面對龐大的知識體系,我有些迷茫,不管是html css js亦或者JAVA,c++都要學很多,我不知道該如何下手,學習前端的邊界究竟在哪,怎樣才能提升前端技術能力。


推薦閱讀:

Node.js被高估了嗎?
Process.nextTick 和 setImmediate 的區別?
如何評價 Node.js 的koa框架?
Object.create Reflect.setPrototypeOf 哪個比較好?

TAG:Nodejs | HTMLCSS |