在LocalStorage中存储数据很有用,但是当您存储需要在多个设备或浏览器上共享的数据时,这不是一个好的解决方案。
例如,假设您想向所有注册产品的新用户展示一种欢迎模式。如果您使用LocalStorage来跟踪用户是否已经看到这种模式,则您的用户每次切换设备或浏览器时都会继续一遍又一遍地获得体验。
这就是远程遗产的来源。使用与LocalStorage相同的API,RemoTestorage允许您轻松地随时读取和写入数据,同时在跨浏览器和设备之间保持状态,以提供更好的用户体验。
使用您喜欢的软件包管理器安装库:
npm install remote-storage或只需将其包含在您的html中:
< script src =" https://unpkg.com/remote-storage@latest/dist/remote-storage.min.js " sync > </ script >导入图书馆并像您将其LocalStorage一样使用:
import { RemoteStorage } from 'remote-storage'
const remoteStorage = new RemoteStorage ( { userId : "my-user-id" } )
const hasSeenNewFeature = await remoteStorage . getItem ( 'hasSeenNewFeature' )
if ( ! hasSeenNewFeature ) {
await remoteStorage . setItem ( 'hasSeenNewFeature' , true )
// Highlight your new and exciting feature!
}就是这样!
remotestorage使用用户ID来识别用户。用户ID是一个唯一标识用户的字符串。它可以是您想要的任何东西,但是我们建议使用非足够的UUID来防止用户猜测其他用户ID并访问其数据。
当您创建remotestorage的新实例时,将设置用户ID:
const remoteStorage = new RemoteStorage ( {
userId : '123e4567-e89b-12d3-a456-426614174000'
} )如果您不提供用户ID,则remotestorage将生成一个随机的UUID,每次用户访问您的网站时都会更改。这对于测试很有用,但由于数据不会在设备或浏览器之间持续存在,因此会破坏Remotestorage的目的。
remotestorage使用实例ID来标识正在提出请求的应用程序实例。实例ID是一个唯一标识应用程序实例的字符串。通常,您将对来自同一应用程序实例的所有请求使用相同的实例ID。
当您创建remotestorage的新实例时,设置了实例ID:
const remoteStorage = new RemoteStorage ( {
userId : '123e4567-e89b-12d3-a456-426614174000' ,
instanceId : 'my-cool-app'
} )我们在https://api.remote.storage上提供免费的托管社区服务器(如果没有提供serverAddress ,则默认行为)。该托管服务器不应用于生产应用程序,但非常适合测试和原型制作。
要使用其他服务器,请在创建remotestorage的新实例时传递serverAddress选项:
const remoteStorage = new RemoteStorage ( {
serverAddress : 'https://api.remote.storage' ,
userId : '123e4567-e89b-12d3-a456-426614174000' ,
instanceId : 'my-cool-app'
} )可以在几分钟内使用Docker旋转服务器。有关更多信息,请参见服务器文档。
远程遗产仅应用于非敏感数据。我们建议将其用于用户偏好,设置和其他非敏感数据之类的东西。由于公共API的性质,它不太适合存储诸如密码或PII之类的敏感数据。
LocalStorage是浏览器API,可让您将数据存储在浏览器中。数据存储在当地的用户设备上,并且不会在设备或浏览器上共享。 Remotestorage是一个将LocalStorage API与远程服务器结合在一起的库,可以在浏览器和设备之间持续数据。
可以不用任何身份验证使用remotestorage,但是我们强烈建议使用JSON Web令牌(JWT)对服务器进行身份验证请求。这可以通过将.env中的JWT_SECRET环境变量设置为服务器的JWT Secret来完成。有关更多信息,请参见服务器文档。
始终欢迎拉动请求。请注意,如果您要提出重大更改,请确保首先开放讨论问题。这将确保您的公关在开始研究之前将被接受。
对于任何尚未有分配贡献者的现有问题,如果您想解决问题,请随时评论该问题。如果我们认为您很合适,我们将把问题分配给您。
进行更改:实现错误修复或功能,编写测试以覆盖它,并确保所有测试都通过。确保您的提交利用语义提交消息,并确保您的提交消息遵循传统提交格式。然后打开向主分支的拉请请求。