【发布时间】:2019-08-14 00:19:42
【问题描述】:
我想在服务器端和客户端访问变量gun。
这是我的模块:
import Gun from 'gun/gun'
import Sea from 'gun/sea' // eslint-disable-line no-unused-vars
export const gun = Gun({
localStorage: true,
radisk: true,
peers: ['http://localhost:8765/gun']
})
如果它是 Nuxt,我想放弃它以支持 Sapper,我会这样实现它:
import Gun from 'gun/gun'
import 'gun/sea'
import 'gun/lib/open'
const gun = Gun({
localStorage: true,
radisk: true,
peers: ['http://localhost:8765/gun']
})
export default ({ app }, inject) => {
inject('gun', () => gun)
}
// nuxt.config.js
...
plugins: [{ src: '@/plugins/gun.js' }]
...
因此,我可以在任何地方访问$gun:
在服务器端:
export default {
asyncData(context){
context.app.$gun()
}
}
在客户端:
methods: {
submit() {
const gun = this.$gun()
const user = this.$gun().user()
...
}
}
还有在模板中:
<template>
<div>{{ $gun }}</div>
</tempalte>
这个问题不涉及问题中讨论的特定库的使用 (gun)。它可以是Websocet 连接(然后我们将以相同的方式传递ws 变量sun。)或rpc(与Bitcoin 连接)-我可以举很多例子,这很重要。
在某处我读到你需要通过rollbar 来实现这个,在某处我读到一个常规模块(es6 或.svelte) - 但后来我遇到了许多其他问题......
【问题讨论】:
-
GUN 作者在这里,对不起,我对 sapper 了解不多,看起来(正如你提到的)这更好地由其他人回答。
标签: javascript svelte gun sapper