## 總結
在我去年底發布的上一篇[博客](https://hackhands.com/building-instagram-clone-angularjs-satellizer-nodejs-mongodb/)中,我說道:
> 祝賀你成功堅持到了最后!這是我發布過最長的博客了。有趣的是,在TV Show Tracker博客中我也說過同樣的話。
但是現在,這篇文章比那一篇還要長!我的確沒有想到會寫這么長,也絕不是為了打破記錄而特意這么做。但我的確希望這篇教程對讀者有幫助,并且內容豐富。如果你從本文中學到任何一點東西,那么我的辛苦就沒有白費。
如果你喜歡這個項目,可以考慮擴展它,甚至基于New Eden Faces創建一個全新的應用。所有這些代碼都放在[Github](http://github.com/sahat/newedenfaces-react)上并且是完全免費的,所以你可以按照你的想法使用或修改它。下面是我想到的一些主意:
* 為重置統計數據、修正性別、刪除角色創建一個后臺管理界面。
* 為每周統計數據創建一個郵件訂閱程序,類似[Fitbit Weekly Progress Report](https://www.google.com/search?q=fitbit+weekly+progress+report&source=lnms&tbm=isch&sa=X&ved=0CAgQ_AUoAmoVChMItIX17r_oxgIVCVyICh2NUQhh&biw=964&bih=656)。
* 為兩個角色創建一對一的競選投票。
* 更智能的匹配算法,比如高勝率角色應該匹配別的高勝率角色。
* 使用分頁列出[所有角色](http://www.newedenfaces.com/#browse)。
* 將圖片存儲到Amazon S3或者MongoDB?[GridFS](http://docs.mongodb.org/manual/core/gridfs/)來避免每次都請求EVE Online API。
* 研發圖片處理算法,以拒絕添加新角色的[默認角色形象](http://image.eveonline.com/Character/1_512.jpg)。
* 每進行X輪后自動重置統計。
* 在角色資料頁面顯示投票歷史。
* 一個歸檔頁面,以顯示之前幾輪投票的Top 100人物角色。
從我發布的[TV Show Tracker](http://sahatyalkabov.com/create-a-tv-show-tracker-using-angularjs-nodejs-and-mongodb/)教程所收到的郵件,我很高興看到這些文章幾乎對所有水平的人都有用。無論對剛開始編程的初學者,還是對資深的JavaScript專家,或者兩者中間的人。
最后是我的一些學習經驗,送給那些還在迷茫的人。
如果你還在迷茫是否要學習JavaScript:
* 相信我,我也經歷過這個階段。在學校學習C++和Java后,我難以理解JS中的異步和回調那一套東西。我曾經感到如此憤怒和挫敗,以致于我以為以后再也不會用JavaScript了。當然,最后我還是學會了它。這里的技巧是,不要假裝你會JavaScript,而是以一個開放的心態從頭開始扎實的學習它。
如果你還在迷茫是否要學習和使用ES6:
* 我曾經討厭ES6.它根本不像我在過去2-3年里逐漸愛上的JavaScript。盡管ES6從很大程度上不過是一套語法糖,但它對我來說就像外星人一樣。你需要的是給它一些時間,最終你會愛上它的。并且,不管你喜不喜歡它,它就是JavaScript發展的方向。
如果你還在迷茫是否要使用React:
* 我記得第一次使用React時的想法是:“這些HTML跑我JavaScript里干嘛?去死吧,我還是堅持用AngularJS。”不過現在是2015年了,我想不用花時間去說服你React是一個很棒的庫了。1年前還沒什么人用它,但是現在瞅瞅這個[使用React的網站](https://github.com/facebook/react/wiki/Sites-Using-React)的長長的列表。React并不需要你用一種新思維方式去構建應用,而一旦你跨過最初的學習障礙,使用React構建應用其實是很有意思的。我讀過很多React和Flux教程,但老實說,直到我開始構建自己的應用,我才真正的理解了它。這里我只想再次重復我的想法:搭建一個小項目是學習任何技術最好的方式,而不是被動的閱讀一堆教程和書籍,也不是觀看錄屏或教學視頻。
如果你還在為如何學習編程而掙扎:
* 你應該學習如何堅持,并且應對學習路上一定會產生的沮喪和挫敗感,不要放棄。如果2009年我放棄了,我也不會進入大學主修計算機專業;如果2012年我放棄了,我不會獲得大學學位;如果2014年我放棄了Hacker School項目,也不會有后來的Satellizer,到現在被全世界的數千開發者使用。掙扎和挫敗始終存在,特別是在這個發展特別迅速的行業。不管你怎么想,我不認為我是一個專家,我仍然和大多數人一樣每天都有迷茫和掙扎。我很少有走進辦公室,并且清楚知道需要做什么、怎么去做的時候,如果工作對于我來說很輕松,那說明我不再進步,該考慮換個工作了。
如果你是一個尋求建議的大學生:
* 現在就開始打造你的代表作品。去創建一個GitHub賬號,并且開始為開源項目做貢獻或者開發你的個人項目。不要期望學校會教你市場所需要的所有技能。如果你的GPA成績不好也不要擔心,只要你擁有一個好的代表作品,或者對知名開源項目做了重大貢獻,那就沒什么。對GPA成績和學校知名度過于重視的公司過于拘泥于傳統,你可能不太想為它們工作,除非你也很重視這些。為生活確定一個長期目標,并且為之而努力。我今天所獲得的成績并不是因為我有多聰明或有多天才,我也并不是那些幸運兒。我能取得成績僅僅是因為那是我想要的,并且為了獲得它而持續的努力工作。
(全文完)
- 前言
- 概述
- 第一步:新建Express項目
- 第二步:構建系統
- 第三步:項目結構
- 第四步: ES6速成教程
- 第五步: React速成教程
- 第六步:Flux架構速成教程
- 第七步:React路由(客戶端)
- 第八步:React路由(服務端)
- 第九步:Footer和Navbar組件
- 第十步:Socke.IO – 實時用戶數
- 第十一步:添加Character的組件
- 第十二步:數據庫模式
- 第十三步:Express API 路由(1/2)
- 第十五步:Home組件
- 第十四步:Express API 路由(2/2)
- 第十六步:角色(資料)組件
- 第十七步:Top 100 組件
- 第十八步:Stats組件
- 第十九步:部署
- 第二十步: 附加資源
- 總結