在這個教程里我們將為[EVE Online](http://www.eveonline.com/)游戲創建一個角色投票應用(受Facemash的啟發),EVE是一個大型多人在線游戲。請點擊播放下面美妙的音樂,來進入本教程的學習氛圍當中。
<p style="text-align: center;"><audio controls="controls"><source src="http://7pn5bk.com1.z0.glb.clouddn.com/2014-KronosTheme.ogg" type="audio/ogg" /><source src="http://7pn5bk.com1.z0.glb.clouddn.com/2014-KronosTheme.mp3" type="audio/mpeg" />Your browser does not support the audio tag.</audio><br />
(EVE Online – Kronos (2014) Release Theme)
當你聽著這首音樂時,想象你正身處宇宙深空的某個小行星帶,一邊從小行星中挖取稀有礦物,一邊警戒著雷達上隨時可能出現的宇宙海盜,同時,你還正在研究太空站推進系統的設計圖,為你的宇宙艦隊制造零件,并在完全由玩家需求和供給控制的交易系統下達買賣指令,另外還從遙遠星系趕來的大型宇宙貨船上卸貨。在你的戰艦旁邊,是裝有微型曲速裝置的超高速截擊機和武裝到牙齒的戰斗飛船,它們都是你的忠實護衛。在這場自由的游戲中,你可以計算如何從行星最優化的萃取礦物,也可以投身一場有數千玩家參與的大型宇宙會戰。——這就是EVE Online。
在EVE Online中每個玩家都有一個3D形象以代表他們的角色,我們要開發的這個應用就是來為這些角色形象投票,以選出它們中最好看的。不管怎樣,你的目標是學習Node.js和React,而不是EVE Online。但我想說的是:“在一個教程里,趣味即使不是最重要的,也至少和教程的主要目的同樣重要。”我之前創建[New Eden Faces](http://www.newedenfaces.com/)的唯一目的是學習Backbone.js,我創建[TV Show Tracker](https://github.com/sahat/tvshow-tracker)的目的是為了學習AngularJS。這些日子以來,貌似大家都開始用一個簡單的TODO應用來當做教程項目,但對我來說,上面這些項目的任何一個,都比一個簡單的TODO應用要有趣得多。
編寫這些教程,我所學到的就是,無論是錄屏、書籍還是視頻教程,在學習一項新技術時,沒有什么比創建一個讓你有激情的小項目更高效的了。

項目完整源代碼:?[https://github.com/sahat/newedenfaces-react](https://github.com/sahat/newedenfaces-react)
基于和我之前教程同樣的精神([TV Show Tracker](http://sahatyalkabov.com/create-a-tv-show-tracker-using-angularjs-nodejs-and-mongodb/)和[Instagram Clone](https://hackhands.com/building-instagram-clone-angularjs-satellizer-nodejs-mongodb/)),本教程將是一篇全棧的JavaScript教程,我們將從零開始構建一個完整的應用。
> 注意:這個項目是對我之前[New Eden Faces](http://www.newedenfaces.com/)項目的重制,那是我使用Backbone.js編寫的第一個單頁面應用。它已經在[OpenShift](https://www.openshift.com/)上基于Node.js 0.8.x穩定的運行兩年多了。
對于給定主題的教程,我一般盡量少的做假設(如假設讀者擁有Node.js基礎之類),這也是為什么我的教程都是如此之長。不過即便如此,你至少也需要有一些客戶端JavaScript框架和Node.js的經驗,才能從這個教程中得到最大的收獲。
在開始之前,你需要下載并安裝下列工具:
1. [Node.js](https://nodejs.org/),或[io.js](https://iojs.org/en/index.html)
2. [Bower](http://bower.io/)
3. [MongoDB](https://www.mongodb.org/downloads)
4. [gulp](https://github.com/gulpjs/gulp/blob/master/docs/getting-started.md)
5. [nodemon](https://github.com/remy/nodemon#nodemon)
- 前言
- 概述
- 第一步:新建Express項目
- 第二步:構建系統
- 第三步:項目結構
- 第四步: ES6速成教程
- 第五步: React速成教程
- 第六步:Flux架構速成教程
- 第七步:React路由(客戶端)
- 第八步:React路由(服務端)
- 第九步:Footer和Navbar組件
- 第十步:Socke.IO – 實時用戶數
- 第十一步:添加Character的組件
- 第十二步:數據庫模式
- 第十三步:Express API 路由(1/2)
- 第十五步:Home組件
- 第十四步:Express API 路由(2/2)
- 第十六步:角色(資料)組件
- 第十七步:Top 100 組件
- 第十八步:Stats組件
- 第十九步:部署
- 第二十步: 附加資源
- 總結