我目前正在开发一个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操作方法。
你有没有试过基本的DOM技术,如::
document.head.appendChild
和::
document.head.removeChild
内建的函数方法,从现有的节点或根元素中添加和删除节点?
那是在你预处理了JSON响应并创建了html标签到html元素之后。
由于应用程序从nuxt服务器init中获取数据,你可以做的是将这些信息存储为nuxt内部状态的一部分(例如,通过vuex传递这些数据),并根据页面状态更新头部。
另外,你也可以利用asyncdata(在页面创建之前,用来调用远程API)。这对于SSR在页面创建之前动态改变数据是非常有用的。这样你就可以根据 asyncData 有配置时设置的任何东西来设置头部脚本。