网上看了N篇文章,有几篇比较高级的我看不太懂,其他基本全是吹逼复制不讲实质性东西的,我结合了一些自己的见解,写下了这篇可直接复制可用的,虽然还有基于流的解决方案,但是资料不多,时间也有限,就采用这个吧暂时。
1.create-react-app
2.src同级目录下新建server文件夹,新建index.js和entry.js
3.第一个问题:让koa支持import
//index.js 写koa
import Koa from 'koa';
const app = new Koa();
app.listen(8889, () => {
console.log('ssr starting');
})
//entry.js 作为入口文件处理koa使用import
require('babel-register')({
presets:["env","react"]
});
require('babel-polyfill');
module.exports = require('./index');
//依赖
"devDependencies": {
"babel-polyfill": "^6.26.0",
"babel-preset-env": "^1.7.0",
"babel-preset-react": "^6.24.1",
"babel-register": "^6.26.0"
}
4.第二个问题:我之前使用的是react提供的lazy和Suspense来处理code splitting,做SSR的时候发现不行,改为react-loadable,
抽离组件,新建util>loadable>index.js
import React from 'react';
import Loadable from 'react-loadable';
const loadingComponent = () => {
return (
<div>我正在加