Ecmascript 6 将砌体用作Nuxt.js插件客户端

Ecmascript 6 将砌体用作Nuxt.js插件客户端,ecmascript-6,nuxt.js,masonry,Ecmascript 6,Nuxt.js,Masonry,我正在努力让砌体在我正在建设的Nuxt网站上工作。我只需要在客户端加载它,我很难让它正常工作 我认为根本的问题在于Mashine自动初始化自身并在HTML中查找数据属性,因此如果它运行服务器端,它将崩溃,因为窗口不存在。我原以为我了解Nuxt的工作原理,但这让我对一切都产生了疑问!哈哈 因此,首先我创建一个插件,并仅在客户端加载它: 然后我导入砖石包,然后导出它。我的理解是,这将只运行客户端现在。 然后在我的组件中导入插件: 执行此操作将导致服务器崩溃,并出现来自砌体的窗口未定义错误。为什

我正在努力让砌体在我正在建设的Nuxt网站上工作。我只需要在客户端加载它,我很难让它正常工作

我认为根本的问题在于Mashine自动初始化自身并在HTML中查找数据属性,因此如果它运行服务器端,它将崩溃,因为
窗口
不存在。我原以为我了解Nuxt的工作原理,但这让我对一切都产生了疑问!哈哈

因此,首先我创建一个插件,并仅在客户端加载它:

然后我导入砖石包,然后导出它。我的理解是,这将只运行客户端现在。

然后在我的组件中导入插件:

执行此操作将导致服务器崩溃,并出现来自砌体的窗口未定义错误。为什么?它应该只在客户端加载插件?!

实际上,通过不使用插件步骤,并在我的组件中执行以下操作,我实现了这一点:

 let Masonry
 if (process.client) {
     Masonry = require("masonry-layout")
 }
但这似乎是一种非常不寻常的做事方式

那么我应该怎么做呢?我真的不想使用流行的Vue砌体包(它在Nuxt上不强制HTML的ssr),而且它有很多布局错误,我真的想用它来更好地理解Nuxt


我不应该使用Nuxt插件来做这件事吗?将脚本扔进头部,像常规JS一样使用process.client检查是否更好

由于您已在nuxt.config.js中将其注册为插件,因此无需将其导入单个组件。这可能就是你的问题所在。谢谢@Andrew1325,我已经解决了。现在,我从砌体中的
this.element=queryElement
中得到了一个
这是未定义的
错误,所以也许砌体并不是这样设置的。因为您已经在nuxt.config.js中将其注册为插件,所以您不需要将其导入到单个组件中。这可能就是你的问题所在。谢谢@Andrew1325,我已经解决了。现在我从砌体中的
this.element=queryElement
中得到一个
这是未定义的
错误,所以也许砌体并不是这样设置的。