HTML5WebSQLDatabase与localStorage用途?

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了HTML5WebSQLDatabase与localStorage用途?相关的知识,希望对你有一定的参考价值。

localStorage.setTime()是把值存在本地,可以实现页面之间传值
localStorage.getTime()把值从本地取出来
WebSQLDatabase是存一个数据表在本地,连上网以后再发送到数据库!
参考技术A LocalStorage是KV,WebSQL是SQL系了,这两点就有很大区别。虽然应用场景在浏览器这里做本地数据存储,但是思路还是一样的。

Local与LocalStack

示例

#flask源码中Local对象
import functools
try:
    from greenlet import getcurrent as get_ident
except:
    from threading import get_ident

#作用:为每个线程开辟空间
class Local(object):
    __slots__ = (__storage__, __ident_func__)

    def __init__(self):
        # __storage__ = {1231:{‘stack‘:[]}}
        object.__setattr__(self, __storage__, {})
        object.__setattr__(self, __ident_func__, get_ident)

    def __getattr__(self, name):
        try:
            return self.__storage__[self.__ident_func__()][name]
        except KeyError:
            raise AttributeError(name)

    def __setattr__(self, name, value):
        # name=stack
        # value=[]
        ident = self.__ident_func__()
        storage = self.__storage__
        try:
            storage[ident][name] = value
        except KeyError:
            storage[ident] = {name: value}

    def __delattr__(self, name):
        try:
            del self.__storage__[self.__ident_func__()][name]
        except KeyError:
            raise AttributeError(name)


"""
__storage__ = {
    12312: {stack:[ctx(session/request) ,]}
}

"""

# obj = Local()
# obj.stack = []
# obj.stack.append(‘佳俊‘)
# obj.stack.append(‘咸鱼‘)
# print(obj.stack)
# print(obj.stack.pop())
# print(obj.stack)



#作用:方便我们把Local中的列表维护成栈
class LocalStack(object):
    def __init__(self):
        self._local = Local()

    def push(self,value):
        rv = getattr(self._local, stack, None) # self._local.stack =>local.getattr
        if rv is None:
            self._local.stack = rv = [] #  self._local.stack =>local.setattr
        rv.append(value) # self._local.stack.append(666)
        return rv


    def pop(self):
        """Removes the topmost item from the stack, will return the
        old value or `None` if the stack was already empty.
        """
        stack = getattr(self._local, stack, None)
        if stack is None:
            return None
        elif len(stack) == 1:
            return stack[-1]
        else:
            return stack.pop()

    def top(self):
        try:
            return self._local.stack[-1]
        except (AttributeError, IndexError):
            return None


xxx = LocalStack()
xxx.push(佳俊)
xxx.push(咸鱼)


#以上综合应用
class RequestContext(object):
    def __init__(self):
        self.request = "xx"
        self.session = oo

_request_ctx_stack = LocalStack()

_request_ctx_stack.push(RequestContext())


def _lookup_req_object(arg):

    ctx = _request_ctx_stack.top()

    return getattr(ctx,arg) # ctx.request / ctx.session

request = functools.partial(_lookup_req_object,request)
session = functools.partial(_lookup_req_object,session)


print(request())
print(session())

‘‘‘
    xx
    oo
‘‘‘

 

以上是关于HTML5WebSQLDatabase与localStorage用途?的主要内容,如果未能解决你的问题,请参考以下文章

window.localStorage 与 chrome.storage.local

Local与LocalStack

关于开机自启动文件rc.local的使用与取消

简说 SSH 隧道-- Local 与 Remote 端口转发

将 boost locale 与 Firebreath 一起使用

为什么开源外围包安装指导都是按照到/usr/local/目录下,/usr/local与/usr的区别