## 第三步:项目结构
在public目录下创建四个目录: css,js,fonts,img。然后,下载这个[favicon.png](https://raw.githubusercontent.com/sahat/newedenfaces-react/master/public/favicon.png),也把它放到这里。
![](https://box.kancloud.cn/2015-09-14_55f6425ce6f50.jpg)
在项目根目录,创建新目录app。
然后在app文件夹里新建四个目录:actions,components,stores,stylesheets,以及三个空文件*alt.js*,*routes.js*和*main.js*。
![](https://box.kancloud.cn/2015-09-14_55f6426217766.jpg)
在stylesheets目录下新建文件*main.less*,我们将在里面填入样式。
回到根目录,创建新文件*bower.json*并粘贴下面的代码:
~~~
{
"name": "newedenfaces",
"dependencies": {
"jquery": "^2.1.4",
"bootstrap": "^3.3.5",
"magnific-popup": "^1.0.0",
"toastr": "^2.1.1"
}
}
~~~
> 注意:Bower是一个让你轻松下载JavaScript库的前端包管理器,通过命令行即可下载上面的库。
在终端运行`bower install`然后等待包下载并安装到bower_components目录。你能在[.bowerrc](http://bower.io/docs/config/#directory)文件改变该路径,不过本教程我们使用默认设置。
和node_modules相似,你可能不想将bower_components提交到Git仓库,但如果你不提交的话,当你部署应用的时候如何下载这些文件?我们将在教程的部署部分来解决这个问题。
复制bower_components/bootstrap/fonts下所有的字体图标(glyphicons fonts)到public/fonts目录。
下载并解压下面的背景图片到public/img目录。
* [Background Images.zip](http://sahatyalkabov.com/assets/Background%20Images.zip)
> 有趣事实:三年前我使用Adobe Photoshop来创建高斯模糊效果,但它们今天能轻松的使用[CSS滤镜](http://codepen.io/aniketpant/pen/DsEve)实现。
打开*main.less*并粘贴下面的文件中的代码。鉴于代码的长度,我决定不将它放在文中。
* [main.less](https://github.com/sahat/newedenfaces-react/blob/master/app/stylesheets/main.less)
如果你以前用过[Bootstrap](http://getbootstrap.com/) CSS框架,那么你应该对里面的大部分代码都感到熟悉。
> 注意:我花了很长时间在这个UI上,调整fonts和颜色,添加精细的变换效果,如果你有时间的话,推荐在完成本教程之后继续探索一下样式的细节。
我不知道你是否知道最近的[趋势](https://speakerdeck.com/vjeux/react-css-in-js),是将样式直接放入React组件当中,但我不太确定我是否喜欢这项实践,也许当相关的工具完善之后我会喜欢吧,但在那之前我还是会使用附加的样式表文件。不过,如果你对使用模块化的CSS感兴趣,可以看看这个[css-modulesify](https://github.com/css-modules/css-modulesify)项目。
在我们开始构建React app之前,我决定先花三个章节的时间讲讲ES6、React、Flux基础,否则要想一下子全部学会它们会让人很崩溃。对我个人来说,我曾花了不少时间理解某些用ES6编写的React + Flux示例代码上,因为我相当于同时学习一个新语法、一个新框架,以及一个全新的应用架构。
由于三者的内容众多,显然我不能在一篇文章中全讲清楚,我将会只讲那些本教程中会用到的主题。
- 前言
- 概述
- 第一步:新建Express项目
- 第二步:构建系统
- 第三步:项目结构
- 第四步: ES6速成教程
- 第五步: React速成教程
- 第六步:Flux架构速成教程
- 第七步:React路由(客户端)
- 第八步:React路由(服务端)
- 第九步:Footer和Navbar组件
- 第十步:Socke.IO – 实时用户数
- 第十一步:添加Character的组件
- 第十二步:数据库模式
- 第十三步:Express API 路由(1/2)
- 第十五步:Home组件
- 第十四步:Express API 路由(2/2)
- 第十六步:角色(资料)组件
- 第十七步:Top 100 组件
- 第十八步:Stats组件
- 第十九步:部署
- 第二十步: 附加资源
- 总结