mdf-plugin-viewhook
Version:
template view hook plugin for mdd framework
49 lines (44 loc) • 1.98 kB
JavaScript
import invariant from 'invariant'
import env from '../../src/server/env'
const isDev = process.env.NODE_ENV === 'development';
const baseUrl = env.HTTP_SCRIPT_BASEURL
const suffix = env.HTTP_SCRIPT_SUFFIX
const random = isDev ? '' : `?_=${env.STATIC_RANDOM_SUFFIX}`;
export default function html(pageInfo, content, state) {
// 开发环境使用样式热更新, 不再用打包后的独立css文件
const loadCss = isDev ? '' : `<link href="${baseUrl}/stylesheets/${pageInfo.entryPoint}${suffix}.css${random}" rel="stylesheet" type="text/css" />`
const yyyScript = isDev ? '' : `<script src="${baseUrl}/javascripts/yonyou-yyy.js${random}"></script>`
invariant(
typeof pageInfo === 'object',
`ctx.render函数的参数格式为:${JSON.stringify({
title: 'html>head>title的值',
keyword: 'html>head>keyword的值',
description: 'html>head>description的值',
baseUrl: '静态资源的根路径,如:http://localhost:3004/static/',
content: 'ReactDOMServer.renderToString|renderToStaticMarkup输出的字符串',
state: 'ctx.store.getState()',
})},可传入空对象。`
)
return `<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8"/>
<title>${pageInfo.title}</title>
<meta httpEquiv="X-UA-Compatible" content="IE=edge,chrome=1"/>
<meta name="referrer" content="no-referrer">
<link rel="shortcut icon" href="${baseUrl}/styles/default/images/bee.ico" type="images/x-icon">
${loadCss}
</head>
<body>
<div id="container">${content}</div>
<div id="popup-container"></div>
<script>
window.__INITIAL_STATE__ = ${JSON.stringify(state)}
</script>
${yyyScript}
<script src="${baseUrl}/${isDev ? '' : 'java'}scripts/vendor${suffix}.js${random}"></script>
<script src="${baseUrl}/javascripts/${pageInfo.entryPoint}${suffix}.js${random}"></script>
<script src="${baseUrl}/${isDev ? '' : 'java'}scripts/font.js${random}"></script>
</body>
</html>`
}