Skip to content

Commit 25c3b06

Browse files
committed
完善Node Server API && 完成List复用
1 parent 81c3c77 commit 25c3b06

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

52 files changed

+1600
-645
lines changed

.gitignore

+2
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,7 @@
11
node_modules/
2+
npm-debug.log
23
dist/
34
.DS_Store
45
.idea
56
.project
7+
tmp.json

README.md

+2-2
Original file line numberDiff line numberDiff line change
@@ -23,10 +23,10 @@ npm install
2323

2424
## 开发环境运行方式
2525
Node.js端:
26-
npm run node // 如果报错了 很可能是Node.js版本不够高
26+
npm run dev-node // 如果报错了 很可能是Node.js版本不够高
2727

2828
Borwser端:
29-
npm run dev // 会自动打开浏览器
29+
npm run dev-web // 会自动打开浏览器
3030

3131
## 部署环境运行方式
3232

app.js

+4-12
Original file line numberDiff line numberDiff line change
@@ -10,28 +10,20 @@ const convert = require('koa-convert');
1010
const cors = require('koa-cors');
1111
const serve = require('koa-static-server');
1212
const bodyParser = require('koa-bodyparser');
13-
const authMiddleware = require('./middleware/auth.js');
1413

1514
let isDev = process.env.NODE_ENV === 'develop'; // 是否是开发环境
1615

17-
18-
// app.use(authMiddleware); // 开启统一鉴权
1916
app.use(bodyParser()); // 解析HTTP请求体
2017
app.use(convert(cors())); // 允许跨域
18+
// app.use(require('./middleware/auth.js')); // 开启统一鉴权
2119

22-
// 开发环境 延迟模拟
23-
if (isDev) {
24-
app.use(require('./middleware/sleep.js'));
25-
}
20+
isDev && app.use(require('./middleware/sleep.js')); // 开发环境 延迟模拟
2621

2722
require('./router')(app); // 初始化路由信息
2823

29-
app.use(serve({rootDir: path.join(__dirname, './static'), rootPath: '/static'})); // 本地静态服务器,主要给图片使用
24+
app.use(serve({rootDir: path.join(__dirname, './static'), rootPath: '/static/'})); // 本地静态服务器,主要给图片使用
3025

31-
// 线上发布的
32-
if (!isDev) {
33-
app.use(serve({rootDir: path.join(__dirname, './dist'), rootPath: '/'})); // 在router之后要注意
34-
}
26+
!isDev && app.use(serve({rootDir: path.join(__dirname, './dist'), rootPath: '/'})); // 线上的静态路由
3527

3628

3729
app.listen(port, () => {
+47
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,47 @@
1+
/**
2+
* Created by Weil on 2017/7/9.
3+
*/
4+
import React, { Component } from 'react';
5+
import PropTypes from 'prop-types';
6+
7+
export default class extends Component {
8+
constructor () {
9+
super();
10+
}
11+
12+
static propTypes = {
13+
userName: PropTypes.string,
14+
avatar: PropTypes.string,
15+
getupTime: PropTypes.string,
16+
rank: PropTypes.number,
17+
continued: PropTypes.number,
18+
uid: PropTypes.number,
19+
20+
};
21+
22+
static defaultProps = {
23+
userName: null,
24+
avatar: null,
25+
getupTime: null,
26+
rank: null,
27+
continued: null,
28+
uid: null,
29+
};
30+
31+
render () {
32+
let { userName, avatar, getupTime, rank, continued, uid } = this.props;
33+
34+
return (
35+
<div className="_user-info-wrap">
36+
<img className="avatar" src={avatar}/>
37+
<div className="user-name">{userName}</div>
38+
<div className="rank-wrap">
39+
<span>{`在好友中排名第${rank}名`}</span>
40+
<span>{`坚持了${continued}天`}</span>
41+
</div>
42+
</div>
43+
)
44+
}
45+
}
46+
import './userInfo.less';
47+
+12
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,12 @@
1+
._user-info-wrap {
2+
text-align: center;
3+
margin: 20px;
4+
.avatar {
5+
width: 100px;
6+
height: 100px;
7+
border-radius: 50%;
8+
}
9+
.user-name {
10+
font-size: 22px;
11+
}
12+
}

client/config/develop.config.js

+6
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,6 @@
1+
/**
2+
* Created by Weil on 2017/7/9.
3+
*/
4+
export default {
5+
requestPrefix: 'http://localhost:9333'
6+
}

client/config/index.js

+19
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,19 @@
1+
/**
2+
* Created by Weil on 2017/7/9.
3+
*/
4+
import devConfig from './develop.config.js';
5+
import prodConfig from './production.config.js';
6+
7+
let Config = {};
8+
9+
if (process.env.NODE_ENV === 'production') {
10+
Config = prodConfig;
11+
} else if (process.env.NODE_ENV === 'develop') {
12+
Config = devConfig;
13+
} else {
14+
throw new Error('请设置正确的NODE_ENV,为production或者develop');
15+
}
16+
17+
export default Config;
18+
19+

client/config/production.config.js

+6
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,6 @@
1+
/**
2+
* Created by Weil on 2017/7/9.
3+
*/
4+
export default {
5+
requestPrefix: 'http://localhost:9333'
6+
}

client/container/rank/rank.jsx

-50
This file was deleted.

client/container/user/user.jsx

-46
This file was deleted.

client/container/user/user.less

-17
This file was deleted.

client/index.js

+8-8
Original file line numberDiff line numberDiff line change
@@ -19,14 +19,14 @@ import store from './redux/index.js';
1919
window._store = store; // 方便调试 并不是好的写法
2020

2121
// 引入组件
22-
import Index from './container/index/index.jsx';
23-
import Today from './container/today/today.jsx';
24-
import Rank from './container/rank/rank.jsx';
25-
import Mine from './container/mine/mine.jsx';
26-
import Wrap from './container/wrap/wrap.jsx';
27-
import New from './container/new/new.jsx';
28-
import Detail from './container/detail/detail.jsx';
29-
import User from './container/user/user.jsx';
22+
import Index from './page/index/index.jsx';
23+
import Today from './page/today/today.jsx';
24+
import Rank from './page/rank/rank.jsx';
25+
import Mine from './page/mine/mine.jsx';
26+
import Wrap from './page/wrap/wrap.jsx';
27+
import New from './page/new/new.jsx';
28+
import Detail from './page/detail/detail.jsx';
29+
import User from './page/user/user.jsx';
3030

3131
ReactDOM.render(
3232
<Provider store={store}>
File renamed without changes.
File renamed without changes.
Original file line numberDiff line numberDiff line change
@@ -1,16 +1,15 @@
1-
import './index.less';
21
import React, { Component } from 'react';
32
import { connect } from 'react-redux';
43
import actions from '../../redux/actions/index.js';
54
import { Link } from 'react-router-dom';
65
import ScrollList from '../../component/scrollList/scrollList.jsx';
76
import FeedCard from '../../component/feedCard/feedCard.jsx';
7+
import UserInfo from '@/component/userInfo/userInfo.jsx';
88

99
@connect((state) => {
1010
return {
1111
myInfo: state.myInfo,
12-
myListInfo: state.myListInfo,
13-
mainPage: state.mainPage
12+
myListInfo: state.myListInfo
1413
}
1514
},{...actions})
1615
export default class extends Component {
@@ -22,56 +21,48 @@ export default class extends Component {
2221
}
2322

2423
componentWillMount () {
25-
this.props.getMyInfo();
26-
this.props.getMyList();
2724
}
2825

2926
componentDidMount () {
30-
// console.log(this.refs);
31-
// debugger
27+
let { userName, loading: isLoadingMyInfo } = this.props.myInfo;
28+
let isMyListInit = this.props.myListInfo.isInit;
29+
30+
!userName && this.props.getMyInfo();
31+
!isMyListInit && this.props.getMyList();
3232
}
3333

3434
render () {
35-
let {
36-
myInfo: { userName, avatar, getupTime, rank, continued }
37-
} = this.props;
38-
3935
let { list, hasMore, loading, isEmpty } = this.props.myListInfo;
4036

4137
return (
4238
<div className="page-wrap main-page" ref="mainPage">
43-
<div className="my-avatar">
44-
<img src={avatar}/>
45-
</div>
46-
<div className="my-name">{userName}</div>
47-
<div className="get-up-wrap">
48-
<span>{getupTime}</span>
49-
</div>
39+
<UserInfo {...this.props.myInfo} />
5040
<Link to='/new'>
5141
<div className="new-wrap weui-cells">
5242
<span className="add-icon">+</span>
5343
<span className="add-text">添加今日状态</span>
5444
</div>
5545
</Link>
56-
<div className="weui-cells__title">最近七天</div>
46+
<div className="weui-cells__title">最近状态</div>
5747
<ScrollList
5848
element={this.refs.mainPage}
5949
onLoad={this.props.getMyList}
6050
hasMore={hasMore}
6151
loading={loading}
6252
isEmpty={isEmpty}
6353
>
64-
<ul className="recently-wrap">
54+
<div className="recently-wrap">
6555
{
6656
list.map((item, index) => {
6757
return (
6858
<FeedCard route="/detail/222" item={item} key={index}/>
6959
)
7060
})
7161
}
72-
</ul>
62+
</div>
7363
</ScrollList>
7464
</div>
7565
)
7666
}
7767
}
68+
import './index.less';

client/container/index/index.less client/page/index/index.less

-20
Original file line numberDiff line numberDiff line change
@@ -1,25 +1,5 @@
11
.main-page {
22
padding-top: 100px;
3-
.my-avatar {
4-
text-align: center;
5-
margin-top: 30px;
6-
img {
7-
width: 100px;
8-
height: 100px;
9-
border-radius: 50%;
10-
border: 1px solid #f0f0f0;
11-
}
12-
}
13-
.my-name {
14-
margin-top: 20px;
15-
font-size: 20px;
16-
text-align: center;
17-
}
18-
19-
.get-up-wrap {
20-
text-align: center;
21-
}
22-
233
.new-wrap {
244
height: 70px;
255
padding: 10px 10px 10px 20px;

0 commit comments

Comments
 (0)