Skip to content

Commit

Permalink
feat: 动态生成路由 (#7)
Browse files Browse the repository at this point in the history
* feat: 引入 react-router & server 启动时生成路由

* fix: 修复按需加载时根目录路径错误的问题

* chore: 移除多余静态资源处理
  • Loading branch information
orzyyyy authored Jan 28, 2019
1 parent 16b3659 commit 8954c76
Show file tree
Hide file tree
Showing 15 changed files with 63 additions and 37 deletions.
2 changes: 1 addition & 1 deletion dist/index.html
Original file line number Diff line number Diff line change
@@ -1 +1 @@
<!DOCTYPE html><html xmlns="http://www.w3.org/1999/xhtml"><head><meta name="viewport" content="width=device-width,initial-scale=1"><meta http-equiv="Pragma" content="no-cache"><meta http-equiv="Cache-Control" content="no-cache"><meta http-equiv="Expires" content="0"><link rel="shortcut icon" href="dist/assets/favicon.ico" type="image/x-icon"><meta http-equiv="Content-Type" content="text/html; charset=utf-8"><style>*{margin:0;padding:0}</style></head><body><div id="root"></div><script type="text/javascript" src="ninoninoni.js?23651c9bd998f1687b7d"></script></body></html>
<!DOCTYPE html><html xmlns="http://www.w3.org/1999/xhtml"><head><meta name="viewport" content="width=device-width,initial-scale=1"><meta http-equiv="Pragma" content="no-cache"><meta http-equiv="Cache-Control" content="no-cache"><meta http-equiv="Expires" content="0"><link rel="shortcut icon" href="dist/assets/favicon.ico" type="image/x-icon"><meta http-equiv="Content-Type" content="text/html; charset=utf-8"><style>*{margin:0;padding:0}</style></head><body><div id="root"></div><script type="text/javascript" src="/dist/ninoninoni.js?c013f720fb82d65f1405"></script></body></html>
2 changes: 1 addition & 1 deletion dist/mapping.json
Original file line number Diff line number Diff line change
@@ -1 +1 @@
[{"id":"1a79a4d60de6718e8e5b326e338ae533","title":"test1","thumbnailUrl":"dist/assets/5795774_0.jpg","hoverText":"测试 layout-1a79a4d60de6718e8e5b326e338ae533.json","createTime":1548578388069,"modifyTime":1548578388069},{"id":"1a79a4d60de6718e8e5b326e338ae534","title":"test1","thumbnailUrl":"dist/assets/5795774_0.jpg","hoverText":"测试 layout-1a79a4d60de6718e8e5b326e338ae534.json","createTime":1548578388069,"modifyTime":1548578388069}]
[{"id":"1a79a4d60de6718e8e5b326e338ae533","title":"test1","thumbnailUrl":"dist/assets/5795774_0.jpg","hoverText":"测试 layout-1a79a4d60de6718e8e5b326e338ae533.json","createTime":1548647900804,"modifyTime":1548647900804},{"id":"1a79a4d60de6718e8e5b326e338ae534","title":"test1","thumbnailUrl":"dist/assets/5795774_0.jpg","hoverText":"测试 layout-1a79a4d60de6718e8e5b326e338ae534.json","createTime":1548647900804,"modifyTime":1548647900804}]
21 changes: 5 additions & 16 deletions dist/ninoninoni.js

Large diffs are not rendered by default.

13 changes: 12 additions & 1 deletion dist/vendor/1.js

Large diffs are not rendered by default.

1 change: 1 addition & 0 deletions dist/vendor/2.js

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

1 change: 1 addition & 0 deletions dist/vendor/3.js

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

2 changes: 1 addition & 1 deletion index.html
Original file line number Diff line number Diff line change
@@ -1 +1 @@
<!DOCTYPE html><html xmlns="http://www.w3.org/1999/xhtml"><head><meta name="viewport" content="width=device-width,initial-scale=1"><meta http-equiv="Pragma" content="no-cache"><meta http-equiv="Cache-Control" content="no-cache"><meta http-equiv="Expires" content="0"><link rel="shortcut icon" href="dist/assets/favicon.ico" type="image/x-icon"><meta http-equiv="Content-Type" content="text/html; charset=utf-8"><style>*{margin:0;padding:0}</style></head><body><div id="root"></div><script type="text/javascript" src="dist/ninoninoni.js"></script></body></html>
<!DOCTYPE html><html xmlns="http://www.w3.org/1999/xhtml"><head><meta name="viewport" content="width=device-width,initial-scale=1"><meta http-equiv="Pragma" content="no-cache"><meta http-equiv="Cache-Control" content="no-cache"><meta http-equiv="Expires" content="0"><link rel="shortcut icon" href="dist/assets/favicon.ico" type="image/x-icon"><meta http-equiv="Content-Type" content="text/html; charset=utf-8"><style>*{margin:0;padding:0}</style></head><body><div id="root"></div><script type="text/javascript" src="/dist/ninoninoni.js"></script></body></html>
3 changes: 2 additions & 1 deletion package.json
Original file line number Diff line number Diff line change
Expand Up @@ -42,7 +42,8 @@
"mini-xmind": "^1.0.3",
"nino-cli": "^0.2.5",
"pre-commit": "^1.2.2",
"prettier": "^1.15.3"
"prettier": "^1.15.3",
"react-router-dom": "^4.3.1"
},
"pre-commit": [
"lint-staged"
Expand Down
1 change: 1 addition & 0 deletions scripts/build.js
Original file line number Diff line number Diff line change
Expand Up @@ -6,6 +6,7 @@ const CopyWebpackPlugin = require('copy-webpack-plugin');
module.exports = {
output: {
path: path.join(cwd + '/dist'),
publicPath: '/dist/',
},
plugins: [
new HtmlWebpackPlugin({
Expand Down
1 change: 0 additions & 1 deletion server/index.js
Original file line number Diff line number Diff line change
Expand Up @@ -37,7 +37,6 @@ app.use(bodyParser());
app.use(router.routes());

app.use(KoaStatic(process.cwd()));
app.use(KoaStatic(path.join(process.cwd(), 'dist')));

app.listen(9099);
// eslint-disable-next-line
Expand Down
8 changes: 2 additions & 6 deletions src/index.js
Original file line number Diff line number Diff line change
@@ -1,11 +1,7 @@
import React from 'react';
import ReactDOM from 'react-dom';
import Demo from './pages';
import App from './router';

const MOUNT_NODE = document.getElementById('root');

ReactDOM.render(<Demo />, MOUNT_NODE);

if (module.hot) {
module.hot.accept();
}
ReactDOM.render(<App />, MOUNT_NODE);
2 changes: 1 addition & 1 deletion src/mapping.json
Original file line number Diff line number Diff line change
@@ -1 +1 @@
[{"id":"1a79a4d60de6718e8e5b326e338ae533","title":"test1","thumbnailUrl":"dist/assets/5795774_0.jpg","hoverText":"测试 layout-1a79a4d60de6718e8e5b326e338ae533.json","createTime":1548578388069,"modifyTime":1548578388069},{"id":"1a79a4d60de6718e8e5b326e338ae534","title":"test1","thumbnailUrl":"dist/assets/5795774_0.jpg","hoverText":"测试 layout-1a79a4d60de6718e8e5b326e338ae534.json","createTime":1548578388069,"modifyTime":1548578388069}]
[{"id":"1a79a4d60de6718e8e5b326e338ae533","title":"test1","thumbnailUrl":"dist/assets/5795774_0.jpg","hoverText":"测试 layout-1a79a4d60de6718e8e5b326e338ae533.json","createTime":1548647900804,"modifyTime":1548647900804},{"id":"1a79a4d60de6718e8e5b326e338ae534","title":"test1","thumbnailUrl":"dist/assets/5795774_0.jpg","hoverText":"测试 layout-1a79a4d60de6718e8e5b326e338ae534.json","createTime":1548647900804,"modifyTime":1548647900804}]
8 changes: 1 addition & 7 deletions src/pages/index.js
Original file line number Diff line number Diff line change
Expand Up @@ -27,13 +27,7 @@ export default class MainPage extends Component {
};

handleClick = ({ id }) => {
import('./mapping').then(target => {
this.setState({
Detail: target.default,
status: 'detail',
mappingId: id,
});
});
location.hash = `/${id}`;
};

generateMainPage = () => {
Expand Down
2 changes: 1 addition & 1 deletion src/pages/mapping.js
Original file line number Diff line number Diff line change
Expand Up @@ -15,7 +15,7 @@ export default class mapping extends Component {

componentDidMount = () => {
// eslint-disable-next-line
console.log(this.props.id);
console.log(location);
};

render = () => {
Expand Down
33 changes: 33 additions & 0 deletions src/router.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,33 @@
import React, { Component, Suspense, lazy } from 'react';
import { HashRouter as Router, Route, Switch } from 'react-router-dom';
const MainPage = lazy(() => import('./pages'));
const MappingDetail = lazy(() => import('./pages/mapping'));
import mapping from './mapping.json';

export default class Entry extends Component {
render = () => {
return (
<Router>
<Suspense fallback={<div>加载中...</div>}>
<Switch>
<Route
path="/"
component={props => <MainPage {...props} />}
exact
/>
{mapping.map(item => {
const { id } = item;
return (
<Route
key={id}
path={`/${id}`}
component={props => <MappingDetail {...props} />}
/>
);
})}
</Switch>
</Suspense>
</Router>
);
};
}

0 comments on commit 8954c76

Please sign in to comment.