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