javascript - 仍然可以在 Nuxt 生成的站点中使用运行时 DOM 操作吗?
问题描述
我有一个 Nuxt/Vue 项目,用于通过 generate 命令预渲染单页网站(不是 SPA,而是静态通用模式)。所有静态 html 都正确呈现,但我想在运行时调用 Google Sheets API并使用我收到的值更新 DOM。在 nuxt 生成后,Vue 的任何反应性是否仍然存在?或者我是否必须使用 vanilla javascript Nuxt 插件路由来进行 DOM 操作?
我们放置此代码的系统由 Adobe Experience Manager 提供服务,因此很遗憾,Nuxt SSR 是不可能的。
解决方案
我找到了一种适合我的方法。通过 nuxt.config 的 header 对象从 CDN 加载 Vue:
script: [
{src: 'https://cdn.jsdelivr.net/npm/vue/dist/vue.js'}
],
将导致 Vue 在运行时加载。在我们进行运行时模板时,请记住使用编译器加载完整的包。现在只为客户端创建一个插件(将模式设置为“客户端”或将您的文件命名为 my-script.client.js)并将其放在 ~/plugins 目录中:
plugins: [
{src: '~/plugins/my-script', mode: 'client' }
],
在 my-script.js 中,您可以创建一个新的 Vue() 来挂载 *.vue SFC:
import Vue from 'vue'; // Not sure if this is strictly required
import MyComponent from '@/components/MyComponent.vue';
new Vue({
render: h => h(MyComponent)
}).$mount('#app');
显然,要使其正常工作,您需要在预渲染代码中使用 id 为 #app 的 div。
推荐阅读
- c# - 用异步方法覆盖同步方法
- c# - C# For 循环如何只显示匹配的值
- open-liberty - Open Liberty 入门:404
- html - 使用 snapchat 浏览器下载 HTML 文件失败
- javascript - 硬刮 API
- python - 在 pyQt4 中 QCheckBox 的 clicked() 和 stateChanged() 信号有什么区别?
- java - 让 Java Consumer 接受 Kotlin lambda
- python - 当使用 sympy 的积分有多个解时如何检索特定解?
- python - Google Sheets API Python 批量更新和插入注释
- python - 在 matplotlib 上缩放两个不同的 y 轴的问题