1 | import { localeId as theLocaleId } from '../index'
|
2 |
|
3 | import injectHtmlLang from './inject/htmlLang'
|
4 | import injectMetas from './inject/metas'
|
5 | import injectStyles from './inject/styles'
|
6 | import 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 | */
|
25 | export 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 | }
|