UNPKG

1.91 kBJavaScriptView Raw
1import { localeId as theLocaleId } from '../index'
2
3import injectHtmlLang from './inject/htmlLang'
4import injectMetas from './inject/metas'
5import injectStyles from './inject/styles'
6import injectScripts from './inject/scripts'
7
8/**
9 * 生成 ejs 使用的模板替换对象
10 * @param {Object} options 当前设置
11 * @param {Object} [options.injectCache={}] 静态注入对象/当前语言的静态注入缓存对象
12 * @param {Object} [options.filemap={}] (当前语言的) 文件名对应表
13 * @param {Object} [options.entrypoints={}] (当前语言的) 入口表
14 * @param {String} [localeId] 当前语种 ID
15 * @param {String} [title] 页面标题
16 * @param {String} [metaHtml] meta 标签 HTML 代码
17 * @param {String} [reactHtml] 已处理完毕的 React 同构结果 HTML 代码
18 * @param {String} [stylesHtml] 已处理完毕的样式结果 HTML 代码
19 * @param {String} [reduxHtml] 已处理完毕的 redux store 结果 HTML 代码
20 * @param {Object} [needInjectCritical] 是否需要自动注入 critical 内容
21 * @param {Boolean} [needInjectCritical.styles=false]
22 * @param {Boolean} [needInjectCritical.scripts=false]
23 * @returns {Object}
24 */
25export default (options = {}) => {
26 const {
27 injectCache = {},
28
29 filemap = {},
30 entrypoints = {},
31
32 localeId = theLocaleId,
33 title,
34 metaHtml,
35 reactHtml,
36 stylesHtml,
37 reduxHtml,
38
39 needInjectCritical = {
40 styles: false,
41 scripts: false,
42 },
43 } = options
44
45 return {
46
47 htmlLang: injectHtmlLang(localeId),
48 title,
49 metas: injectMetas(metaHtml),
50 styles: injectStyles(needInjectCritical.styles, injectCache, filemap, stylesHtml),
51
52 react: reactHtml,
53
54 scripts: injectScripts(needInjectCritical.scripts, injectCache, entrypoints, reduxHtml),
55
56 }
57}