【发布时间】:2016-06-13 12:03:18
【问题描述】:
所以我几乎完成了我的第一个(同构)ReactJS,当我们部署它时,完成build.js 有点慢。一个建议是使用 CDN 来分离资产获取(cdn0、cdn1、cdn2 ...),我想知道如何在我的站点中执行此操作。在本地我的结构是
- build/
- config/
- webpack-development.config.js
- webpack-production.config.js
- node_modules/
- package.json
- public/
- assets/ // (this is where my assets are)
- css/
- img/
- build.js
- README.md
- src/
- views/
我的index.ejs现在是这样的
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<base href="/" />
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
<meta name="viewport" content="width=device-width, initial-scale=1, minimum-scale=1.0, maximum-scale=1.0, user-scalable=no"/>
<link rel="shortcut icon" type="image/x-icon" href="assets/img/ico-a-brain.png" />
<link rel="stylesheet" href="assets/css/normalize.css">
<link rel="stylesheet" href="assets/css/all.css">
<!-- bunch more assets here -->
</head>
<body>
<script type="text/javascript">
window.__INITIAL_STATE__ = <%- JSON.stringify(initialState) %>;
</script>
<div id="app"><%- markup %></div>
<script src="build.js"></script>
</body>
</html>
还有一些有图片的组件
import React from 'react';
export default class HiwComponent extends React.Component {
render() {
return (
<main className="box-960 box-center">
<h1 className="mt-64">How It Works</h1>
<ul id="how">
<li>
<img src="assets/img/ico-how-time.svg" onError={() => { this.onerror=null; this.src='assets/img/ico-how-time.png' }} alt="Pick" />
<p><b>Pick</b> a time</p>
</li>
<li>
<img src="assets/img/ico-how-plane.svg" onError={() => { this.onerror=null; this.src='assets/img/ico-how-plane.png' }} alt="Send" />
<p><b>Send</b> request</p>
</li>
</ul>
</main>
)
}
}
如何开始更改它以使用 CDN?你们用一些包来处理它吗?基本上我认为它应该像在本地一样,它仍然会使用./assets/css/some.css 和./assets/img/some.jpg,而在生产中它可能看起来可能是http://cdn0.amazon.com/assets/css/some.css 或http://cdn1.amazon.com/assets/img/some.jpg
【问题讨论】:
-
如果瓶颈是 build.js 的加载时间,那么您是否考虑过使用代码拆分来仅预先加载最少的功能并按需加载其余功能。
-
什么是分码?这也可能有用。但现在它不是真正的
build.js。我们现在可以在不同的 CDN 中展示大量资产。
标签: javascript reactjs webpack cdn