【问题标题】:Sapper. How to globally use third-party libraries工兵。如何全局使用第三方库
【发布时间】: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


【解决方案1】:

我并没有真正看到直接的问题,但我只是猜测...您正在尝试在 svelte 中使用全局变量(从 nuxt 移动)?

Svelte 使用汇总,您的根目录中应该有一个 .rollup.config.js 文件。

export default {
...
    plugins: [
        svelte({ 
           // magic happens here
        })
    ]
}

关于(我认为您的问题是什么)的更多文档,包括全局变量。 https://svelte.dev/docs#Compile_time & https://github.com/rollup/rollup-plugin-svelte

【讨论】:

  • 我的问题实际上如下:如何在Sapper 的客户端和服务器环境中使inject 成为变量,类似于Nuxt 中的插件。这样这个变量在templatescript 中都可用,类似于$var
  • 能举个使用例子吗?
猜你喜欢
  • 1970-01-01
  • 2014-10-25
  • 2017-05-18
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-08-02
  • 2019-12-14
  • 2011-05-05
相关资源
最近更新 更多