UNPKG

2.28 kBJavaScriptView Raw
1const injectHtmlLang = require('./inject/htmlLang')
2const injectMetas = require('./inject/metas')
3const injectStyles = require('./inject/styles')
4const 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 */
24module.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 localeId,
68 reduxHtml,
69 SSRState,
70 compilation
71 }),
72
73 }
74}