静态资源构建
外部静态资源链接
直接 script 引入即可
import React, { Component } from 'react';
import HeaderComponet from './header';
export default class Layout extends Component {
render() {
if(EASY_ENV_IS_NODE) {
return <html>
<head>
<title>{this.props.title}</title>
<meta charSet="utf-8"></meta>
<meta name="viewport" content="initial-scale=1, maximum-scale=1, user-scalable=no, minimal-ui"></meta>
<meta name="keywords" content={this.props.keywords}></meta>
<meta name="description" content={this.props.description}></meta>
<link rel="shortcut icon" href="/favicon.ico" type="image/x-icon"></link>
<script src="/public/lib/react-core-lib-1.0.0.min.js"></script>
</head>
<body><div id="app">{this.props.children}</div></body>
</html>;
}
return this.props.children;
}
}
静态资源内敛
在日常业务开发过程中,我们可能需要内联文本,JS,CSS到页面,这时我们可以通过 webpack raw-loader 把文件转成字符串,为了防止 javaScript 被转义, 可以通过 dangerouslySetInnerHTML inline javaScript 代码。https://github.com/easy-team/egg-react-webpack-boilerplate/commit/904e17ba50f68f4160ee285bfbf06400510c1da1
// inline.js
function inlineTest(a, b) {
console.log('Egg React inline javascript');
var name = 'Egg React';
var title = 'Server Side Render';
return name + '-' + title;
}
import React, { Component } from 'react';
import HeaderComponet from './header';
import inlineTest from 'raw-loader!./inline.js';
export default class Layout extends Component {
render() {
const inlineCode = `
function inlineCodeTest() {
console.log('Egg React inline Code javascript');
var name = 'Egg React';
var title = 'Server Side Render';
return name + '-' + title;
}
`;
if(EASY_ENV_IS_NODE) {
return <html>
<head>
<title>{this.props.title}</title>
<meta charSet="utf-8"></meta>
<meta name="viewport" content="initial-scale=1, maximum-scale=1, user-scalable=no, minimal-ui"></meta>
<meta name="keywords" content={this.props.keywords}></meta>
<meta name="description" content={this.props.description}></meta>
<link rel="shortcut icon" href="/favicon.ico" type="image/x-icon"></link>
<script src="/public/lib/react-core-lib-1.0.0.min.js"></script>
<script dangerouslySetInnerHTML={{__html: inlineCode }}></script>
<script dangerouslySetInnerHTML={{__html: inlineTest }}></script>
<script>inlineFileTest();inlineCodeTest();</script>
</head>
<body><HeaderComponet></HeaderComponet><div id="app">{this.props.children}</div></body>
</html>;
}
return this.props.children;
}
}