ngStorage和$ window.localStorage之间的区别

pan*_*s72 7 javascript local-storage angularjs angular-directive ng-storage

ngStorage和$ window.localStorage有什么区别?什么时候使用一个而不是另一个?我必须选择其中一个用于Web应用程序.我必须保存配置文件用户和令牌的数据

Pab*_*ano 6

变量$window通常是全局window变量.Angular建议使用的原因$window是因为有时您想要模拟或替换"真实" window对象(例如,用于测试目的).

这样说,使用$window.localStorage意味着您使用的是本地存储的vanilla API,而ngStorage则是

一个AngularJS模块,使Web存储以Angular方式工作.包含两个服务:$localStorage$sessionStorage

来源于

  • 更明确地说,ngStorage将为您处理序列化方面,这可以节省时间. (2认同)

seb*_*ern 6

这是正常的html5本地存储:

使用本地存储,Web应用程序可以在用户的​​浏览器中本地存储数据.在HTML5之前,应用程序数据必须存储在cookie中,包含在每个服务器请求中.本地存储更安全,可以在本地存储大量数据,而不会影响网站性能.与cookie不同,存储限制要大得多(至少5MB),信息永远不会传输到服务器.本地存储是每个源(每个域和协议).来自一个来源的所有页面都可以存储和访问相同的数据.

它为您提供了访问存储的对象 - window.localStorage和window.sessionStorage

window.localStorage - 存储没有过期日期的数据

window.sessionStorage - 存储一个会话的数据,因此在关闭浏览器选项卡时数据会丢失

要检索数据,您可以执行此类操作

localStorage.getItem("lastname"); 
Run Code Online (Sandbox Code Playgroud)

因此,如果你想在角度中这样做,你会使用$ window服务,但它的行为与上面的例子相同.

资源


要解决ngStorage:

一个AngularJS模块,使Web存储以Angular方式工作.包含两个服务:$ localStorage和$ sessionStorage.在$ window服务中没有像你一样处理getter和setter

您可以在$ scope下通过引用传递$ localStorage或$ sessionStorage:

$scope.$storage = $localStorage;
Run Code Online (Sandbox Code Playgroud)

然后你可以使用$ storage作为和其他角度变量

<body ng-controller="Ctrl">
    <button ng-click="$storage.counter = $storage.counter + 1">{{$storage.counter}}</button>
</body>
Run Code Online (Sandbox Code Playgroud)

资源


如果您将在webapp中使用angularjs,我会使用ngStorage,因为您会更熟悉并熟悉语法.这只是我的观点.