ecmascript-6 - 使用 Masonry 作为 Nuxt.js 插件客户端
问题描述
我正在尝试让 Masonry 在我正在构建的 Nuxt 网站上工作。我只需要它在客户端加载,我无法让它工作。
我认为根本问题是 Masonry 会自动初始化并在 HTML 中查找数据属性,因此如果它在服务器端运行,它会因为window
不存在而崩溃。我以为我了解 Nuxt 的工作原理,但这让我质疑一切!哈哈!
然后我导入 masonry 包,然后导出它。我的理解是这只会在客户端运行。
这样做会导致服务器崩溃,并出现来自 Masonry 的窗口未定义错误。为什么?!它应该只在客户端加载插件?!
我实际上已经通过不使用插件步骤来实现这一点,并在我的组件中执行此操作:
let Masonry
if (process.client) {
Masonry = require("masonry-layout")
}
但这似乎是一种非常非 Nuxt 的做事方式。
那么我应该怎么做呢?我真的不想使用流行的 Vue-Masonry 包(它强制 Nuxt 上的 HTML 没有 ssr)并且它有很多布局错误,我也真的想用它来理解 Nuxt更好的。
我不应该使用 Nuxt 插件来做到这一点吗?将脚本放入头部并像普通 JS 一样使用它并进行 process.client 检查会更好吗?
解决方案
推荐阅读
- python - 急切执行:找不到节点的有效设备。{{node Conv2D}}
- html - Bootstrap 在中等屏幕上拉 div 不起作用
- java - 如何使用骆驼邮件调整 imap 的轮询频率
- ruby-on-rails - 我应该在哪里为包含 Web 视图和 API 的 Rails API 添加 ActionDispatch 中间件
- google-analytics - 如何使用 Google Analytics 跟踪单页应用程序
- python - TensorFlow 导入数据进行线性回归
- mongodb - 如何在 Meteor 1.8 中使用 MongoDB 4.0 多文档 ACID 事务
- javascript - 图表未从 JSON 数据中显示
- json - 如何根据从反应引导表中的选择过滤 json 数组?
- python - 如何在字符串中删除模式“On x John 写:”之后的所有内容