diff --git a/CHANGELOG.md b/CHANGELOG.md index 08b3bc4..1991e5d 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,3 +1,10 @@ +## 1.8.0 +### Bug fixes +- Using `v-pre` skip compilation. + +### Features +- Execute script when vue exists. + ## 1.7.4 ### Bug fixes - Fix bugs caused by the previous version diff --git a/docs/_coverpage.md b/docs/_coverpage.md index 8287100..c7543c1 100644 --- a/docs/_coverpage.md +++ b/docs/_coverpage.md @@ -1,6 +1,6 @@ ![logo](_media/icon.svg) -# docsify 1.7.4 +# docsify 1.7.5 > A magical documentation site generator. diff --git a/src/index.js b/src/index.js index 9b445d6..b90e33b 100644 --- a/src/index.js +++ b/src/index.js @@ -76,11 +76,10 @@ const mainRender = function (cb) { if (OPTIONS.coverpage && page !== OPTIONS.homepage) render.renderCover() // render sidebar if (OPTIONS.loadSidebar) { - load(basePath + OPTIONS.loadSidebar) - .then(result => { - render.renderSidebar(result) - cb() - }) + const renderSidebar = result => { render.renderSidebar(result); cb() } + + load(basePath + OPTIONS.loadSidebar).then(renderSidebar, + load(OPTIONS.loadSidebar).then(renderSidebar)) } else { cb() } @@ -88,7 +87,8 @@ const mainRender = function (cb) { // Render navbar if (OPTIONS.loadNavbar) { - load(basePath + OPTIONS.loadNavbar).then(render.renderNavbar) + load(basePath + OPTIONS.loadNavbar).then(render.renderNavbar, + () => load(OPTIONS.loadNavbar).then(render.renderNavbar)) } } diff --git a/src/render.js b/src/render.js index 8f784fd..7014aaf 100644 --- a/src/render.js +++ b/src/render.js @@ -98,9 +98,14 @@ export function renderArticle (content) { renderTo('article', content ? markdown(content) : 'not found') if (!OPTIONS.sidebar && !OPTIONS.loadSidebar) renderSidebar() - if (content && typeof Vue !== 'undefined' && typeof Vuep !== 'undefined') { - const vm = new Vue({ el: 'main' }) // eslint-disable-line - vm.$nextTick(_ => event.scrollActiveSidebar()) + if (content && typeof Vue !== 'undefined') { + const script = content.match(']*?>([^<]+)') + script && document.body.querySelector('article script').remove() + + const vm = script + ? new Function(`return ${script[1].trim()}`)() + : new Vue({ el: 'main' }) // eslint-disable-line + vm && vm.$nextTick(_ => event.scrollActiveSidebar()) } if (OPTIONS.auto2top) setTimeout(() => event.scroll2Top(OPTIONS.auto2top), 0) }