在Nuxt JS应用中的<head>标签中注入动态内容,数据来自API响应。

问题描述 投票:1回答:1

我目前正在开发一个NUXT应用程序,其中有必要在其内部添加一些动态内容。<head> 部分的选定页面。需要被插入到页面中的内容是 <head> 来自于应用程序初始启动时的一次性API响应(nuxtServerInit)。这将反过来被存储在VUEX中。

[{
   pages:['index','home','..',....],
   script:'<script>....</script><script>...</script>,<link href="someCss.css</link>"'
},
{
   pages:['about','..',...],
   script:'<script>....</script><script>...</script>,<link href="someOtherCss.css</link>"'
}]

所以脚本应该注入removed到 <head> 基于配置的页面部分(即键中的内容)。脚本 应放在 <head>).我对这个问题进行了研究,发现NUXT提供了一个头部功能,它可以在一个 构件布局,该函数返回的对象可以根据页面路径名动态构造

//dynamically generate head scripts based on page route 
head () {
    return getScriptsForThisPage()        
  }

但问题是,关键是 脚本 包含了脚本、外部链接、元信息,这些信息应该直接用在 <head> 标签。所以这些解析逻辑需要写在函数getScriptsForThisPage()里面,以便使用NUXT head()函数。如果我们可以直接把任何东西放在里面,就会很方便。脚本 键附加到 <head> 标签。

还有什么比这更聪明的方法吗?

最新情况---- <head> 在页面挂载之前,应该被填充(以SEO为目的),所以我们不应该使用客户端的DOM操作方法。

javascript vue.js nuxt.js
1个回答
0
投票

你有没有试过基本的DOM技术,如::

  document.head.appendChild

和::

 document.head.removeChild

内建的函数方法,从现有的节点或根元素中添加和删除节点?

那是在你预处理了JSON响应并创建了html标签到html元素之后。


0
投票
  1. 由于应用程序从nuxt服务器init中获取数据,你可以做的是将这些信息存储为nuxt内部状态的一部分(例如,通过vuex传递这些数据),并根据页面状态更新头部。

  2. 另外,你也可以利用asyncdata(在页面创建之前,用来调用远程API)。这对于SSR在页面创建之前动态改变数据是非常有用的。这样你就可以根据 asyncData 有配置时设置的任何东西来设置头部脚本。

© www.soinside.com 2019 - 2024. All rights reserved.