fix(embed): compatible ssr

This commit is contained in:
qingwei.li
2018-02-12 16:19:04 +08:00
committed by cinwell.li
parent 62ce447fc3
commit dc0c3ced4e
3 changed files with 42 additions and 19 deletions

View File

@@ -7,6 +7,7 @@ import { readFileSync } from 'fs'
import { resolve, basename } from 'path'
import resolvePathname from 'resolve-pathname'
import debug from 'debug'
import { prerenderEmbed } from '../../src/core/render/embed'
function cwd (...args) {
return resolve(process.cwd(), ...args)
@@ -61,7 +62,7 @@ export default class Renderer {
const { loadSidebar, loadNavbar, coverpage } = this.config
const mainFile = this._getPath(url)
this._renderHtml('main', await this._render(mainFile))
this._renderHtml('main', await this._render(mainFile, 'main'))
if (loadSidebar) {
const name = loadSidebar === true ? '_sidebar.md' : loadSidebar
@@ -120,6 +121,19 @@ export default class Renderer {
case 'cover':
html = this.compiler.cover(html)
break
case 'main':
const tokens = await new Promise(r => {
prerenderEmbed(
{
fetch: url => this._loadFile(this._getPath(url)),
compiler: this.compiler,
raw: html
},
r
)
})
html = this.compiler.compile(tokens)
break
case 'navbar':
case 'article':
default: