From c7328732fbf7c47a9a9a71291b54def3444e1463 Mon Sep 17 00:00:00 2001 From: Daniel Roe Date: Wed, 19 May 2021 16:34:44 +0100 Subject: [PATCH] fix(nitro): add body + body prepended scripts to template (#154) --- .../src/_templates/views/app.template.html | 2 ++ packages/nitro/src/runtime/app/render.ts | 21 ++++++++++++++----- 2 files changed, 18 insertions(+), 5 deletions(-) diff --git a/packages/app/src/_templates/views/app.template.html b/packages/app/src/_templates/views/app.template.html index a5e47bbba9..8047a24cc9 100644 --- a/packages/app/src/_templates/views/app.template.html +++ b/packages/app/src/_templates/views/app.template.html @@ -4,8 +4,10 @@ {{ HEAD }} + {{ BODY_SCRIPTS_PREPEND }}
{{ APP }}
<% if (nuxtOptions.vite && nuxtOptions.dev) { %> <% } %> + {{ BODY_SCRIPTS }} diff --git a/packages/nitro/src/runtime/app/render.ts b/packages/nitro/src/runtime/app/render.ts index da486f6bb3..a453673f68 100644 --- a/packages/nitro/src/runtime/app/render.ts +++ b/packages/nitro/src/runtime/app/render.ts @@ -84,7 +84,9 @@ function renderHTML (payload, rendered, ssrContext) { bodyAttrs: '', headAttrs: '', headTags: '', - bodyTags: '' + bodyTags: '', + bodyScriptsPrepend: '', + bodyScripts: '' } // @vueuse/head @@ -100,21 +102,30 @@ function renderHTML (payload, rendered, ssrContext) { }) meta.htmlAttrs += _meta.htmlAttrs.text() meta.headAttrs += _meta.headAttrs.text() - meta.bodyAttrs += _meta.bodyAttrs.text() meta.headTags += _meta.title.text() + _meta.meta.text() + _meta.link.text() + _meta.style.text() + _meta.script.text() + _meta.noscript.text() - // TODO: Body prepend/append tags + meta.bodyAttrs += _meta.bodyAttrs.text() + meta.bodyScriptsPrepend = + _meta.meta.text({ pbody: true }) + _meta.link.text({ pbody: true }) + + _meta.style.text({ pbody: true }) + _meta.script.text({ pbody: true }) + + _meta.noscript.text({ pbody: true }) + meta.bodyScripts = + _meta.meta.text({ body: true }) + _meta.link.text({ body: true }) + + _meta.style.text({ body: true }) + _meta.script.text({ body: true }) + + _meta.noscript.text({ body: true }) } return htmlTemplate({ HTML_ATTRS: meta.htmlAttrs, HEAD_ATTRS: meta.headAttrs, - BODY_ATTRS: meta.bodyAttrs, HEAD: meta.headTags + rendered.renderResourceHints() + rendered.renderStyles() + (ssrContext.styles || ''), - APP: _html + state + rendered.renderScripts() + BODY_ATTRS: meta.bodyAttrs, + BODY_SCRIPTS_PREPEND: meta.bodyScriptsPrepend, + APP: _html + state + rendered.renderScripts(), + BODY_SCRIPTS: meta.bodyScripts }) }