Skip to content

Commit

Permalink
refactor: 插件处理静态文件 & 尝试按需加载 (#6)
Browse files Browse the repository at this point in the history
* refactor: 引入 koa-static 加载静态文件 & 初始化详情页

* fix: 无法读取 chunk

* style: 修改代码格式
  • Loading branch information
orzyyyy authored Jan 28, 2019
1 parent dd9ca83 commit 16b3659
Show file tree
Hide file tree
Showing 17 changed files with 70 additions and 189 deletions.
1 change: 1 addition & 0 deletions dist/assets/mapping.css
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
.mapping {}
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?64108e74e976f71f2a1e"></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="ninoninoni.js?23651c9bd998f1687b7d"></script></body></html>
1 change: 1 addition & 0 deletions dist/lib/main/assets/mapping.css
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
.mapping {}
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":1548570013470,"modifyTime":1548570013470},{"id":"1a79a4d60de6718e8e5b326e338ae534","title":"test1","thumbnailUrl":"dist/assets/5795774_0.jpg","hoverText":"测试 layout-1a79a4d60de6718e8e5b326e338ae534.json","createTime":1548570013470,"modifyTime":1548570013470}]
[{"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}]
8 changes: 4 additions & 4 deletions dist/ninoninoni.js

Large diffs are not rendered by default.

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

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

1 change: 1 addition & 0 deletions package.json
Original file line number Diff line number Diff line change
Expand Up @@ -31,6 +31,7 @@
"dependencies": {
"koa": "^2.6.2",
"koa-bodyparser": "^4.2.1",
"koa-static": "^5.0.0",
"koa-router": "^7.4.0"
},
"devDependencies": {
Expand Down
28 changes: 3 additions & 25 deletions server/index.js
Original file line number Diff line number Diff line change
Expand Up @@ -3,15 +3,8 @@ const app = new Koa();
const router = require('koa-router')();
const bodyParser = require('koa-bodyparser');
const fs = require('fs');
const KoaStatic = require('koa-static');
const path = require('path');
const content = require('./util/content');
const mimes = require('./util/mimes');

const parseMime = url => {
let extName = path.extname(url);
extName = extName ? extName.slice(1) : 'unknown';
return mimes[extName];
};

const addMapping = (router, mapping) => {
for (let url in mapping) {
Expand Down Expand Up @@ -43,23 +36,8 @@ addControllers(router);
app.use(bodyParser());
app.use(router.routes());

app.use(async ctx => {
const fullStaticPath = path.join(process.cwd());
const contentIns = await content(ctx, fullStaticPath);
const mime = parseMime(ctx.url);

if (mime) {
ctx.type = mime;
}

if (mime && mime.indexOf('image/') >= 0) {
ctx.res.writeHead(200);
ctx.res.write(contentIns, 'binary');
ctx.res.end();
} else {
ctx.body = contentIns;
}
});
app.use(KoaStatic(process.cwd()));
app.use(KoaStatic(path.join(process.cwd(), 'dist')));

app.listen(9099);
// eslint-disable-next-line
Expand Down
45 changes: 0 additions & 45 deletions server/util/content.js

This file was deleted.

27 changes: 0 additions & 27 deletions server/util/dir.js

This file was deleted.

13 changes: 0 additions & 13 deletions server/util/file.js

This file was deleted.

23 changes: 0 additions & 23 deletions server/util/mimes.js

This file was deleted.

32 changes: 0 additions & 32 deletions server/util/walk.js

This file was deleted.

1 change: 1 addition & 0 deletions src/assets/mapping.css
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
.mapping {}
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":1548570013470,"modifyTime":1548570013470},{"id":"1a79a4d60de6718e8e5b326e338ae534","title":"test1","thumbnailUrl":"dist/assets/5795774_0.jpg","hoverText":"测试 layout-1a79a4d60de6718e8e5b326e338ae534.json","createTime":1548570013470,"modifyTime":1548570013470}]
[{"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}]
48 changes: 31 additions & 17 deletions src/pages/index.js
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,6 @@ import React, { Component } from 'react';
import '../assets/MainPage.css';
import { ajax } from '../urlHelper';
import { Card, Dropdown, Menu } from 'antd';
import classNames from 'classnames';

export default class MainPage extends Component {
static propTypes = {};
Expand All @@ -14,6 +13,9 @@ export default class MainPage extends Component {

this.state = {
data: [],
status: 'main', // main => MainPage, detail => mapping
Detail: null,
mappingId: '',
};
}

Expand All @@ -25,34 +27,46 @@ export default class MainPage extends Component {
};

handleClick = ({ id }) => {
// eslint-disable-next-line
console.log(id);
import('./mapping').then(target => {
this.setState({
Detail: target.default,
status: 'detail',
mappingId: id,
});
});
};

render = () => {
generateMainPage = () => {
const { data } = this.state;
const menu = (
<Menu>
<Menu.Item key="1">修改</Menu.Item>
<Menu.Item key="2">删除</Menu.Item>
</Menu>
);
return data.map(item => {
const { thumbnailUrl, id, hoverText } = item;
return (
<Card.Grid className="card" key={id}>
<Dropdown overlay={menu} trigger={['contextMenu']}>
<img src={thumbnailUrl} onClick={() => this.handleClick(item)} />
</Dropdown>
</Card.Grid>
);
});
};

generateDetail = () => {
const { Detail, mappingId } = this.state;
return Detail && <Detail id={mappingId} />;
};

render = () => {
const { status } = this.state;
return (
<div className="MainPage">
{data.map(item => {
const { thumbnailUrl, id, hoverText } = item;
return (
<Card.Grid className="card" key={id}>
<Dropdown overlay={menu} trigger={['contextMenu']}>
<img
src={thumbnailUrl}
onClick={() => this.handleClick(item)}
/>
</Dropdown>
</Card.Grid>
);
})}
{status === 'main' && this.generateMainPage()}
{status === 'detail' && this.generateDetail()}
</div>
);
};
Expand Down
24 changes: 24 additions & 0 deletions src/pages/mapping.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,24 @@
import React, { Component } from 'react';

import '../assets/mapping.css';

export default class mapping extends Component {
static propTypes = {};

static defaultProps = {};

constructor(props) {
super(props);

this.state = {};
}

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

render = () => {
return <div className="mapping">mapping</div>;
};
}

0 comments on commit 16b3659

Please sign in to comment.