1 | const ejs = require('ejs')
|
2 |
|
3 | import readClientFile from '../utils/read-client-file'
|
4 | import getClientFilePath from '../utils/get-client-file-path'
|
5 |
|
6 |
|
7 |
|
8 |
|
9 |
|
10 |
|
11 |
|
12 |
|
13 | export default (template = DEFAULT_TEMPLATE, inject = {}) => {
|
14 | try {
|
15 | for (let key in inject) {
|
16 | if (typeof inject[key] === 'function')
|
17 | inject[key] = inject[key](template)
|
18 | }
|
19 | } catch (e) {
|
20 | console.log(e)
|
21 | }
|
22 |
|
23 |
|
24 |
|
25 | return ejs.render(
|
26 | template, {
|
27 | inject,
|
28 | content: readClientFile,
|
29 | pathname: getClientFilePath,
|
30 | }, {}
|
31 | )
|
32 | }
|
33 |
|
34 | const DEFAULT_TEMPLATE = `
|
35 | <!DOCTYPE html>
|
36 | <html lang="en">
|
37 | <head>
|
38 | <meta charset="UTF-8">
|
39 | <script>//inject_meta</script>
|
40 | <title><script>//inject_title</script></title>
|
41 | <script>//inject_component_styles</script>
|
42 | </head>
|
43 | <body>
|
44 | <div id="root">
|
45 | <div><script>//inject_html</script></div>
|
46 | </div>
|
47 | <script>//inject_redux_state</script>
|
48 | <script>//inject_js</script>
|
49 | </body>
|
50 | </html>
|
51 | `
|