Lawnchair是一個輕量級的移動應用程式資料持久化存儲方案,同時也是用戶端JSON文檔存儲方法,優點是短小,文法簡潔,擴充性比較好。
現在做HTML5移動應用除了LocalStorage的相容性比較好之外,SQL web database以及IndexedDB都處在僵局中,雖然有人叫嚣着“我們應該幹掉 LocalStorage API”,但那是後話,現在也沒得選擇。
應用示例【應用的是dom Storage】:
![](https://img.laitimes.com/img/_0nNw4CM6IyYiwiM6ICdiwiIml2ZuQWZzUTOhljM0cTO2ATOwATNxMWM1EWYxEjY5ADNlFTNfdWbp9CXt92Yu4GZjlGbh5SZslmZxl3Lc9CX6MHc0RHaiojIsJye.gif)
![](https://img.laitimes.com/img/_0nNw4CM6IyYiwiM6ICdiwiIml2ZuQWZzUTOhljM0cTO2ATOwATNxMWM1EWYxEjY5ADNlFTNfdWbp9CXt92Yu4GZjlGbh5SZslmZxl3Lc9CX6MHc0RHaiojIsJye.gif)
或者:
![](https://img.laitimes.com/img/_0nNw4CM6IyYiwiM6ICdiwiIml2ZuQWZzUTOhljM0cTO2ATOwATNxMWM1EWYxEjY5ADNlFTNfdWbp9CXt92Yu4GZjlGbh5SZslmZxl3Lc9CX6MHc0RHaiojIsJye.gif)
![](https://img.laitimes.com/img/_0nNw4CM6IyYiwiM6ICdiwiIml2ZuQWZzUTOhljM0cTO2ATOwATNxMWM1EWYxEjY5ADNlFTNfdWbp9CXt92Yu4GZjlGbh5SZslmZxl3Lc9CX6MHc0RHaiojIsJye.gif)
因為使用了安全的構造函數,是以兩種方法的效果一緻。回調函數的第一個參數與傳回的的store是同一個對象,在回調函數内部也可以用this代替。
初始化:
option預設為空對象,有三個可選屬性:
callback的第一個參數是目前對象,在回調函數内部也可以用this代替。
API:
參數中必須有一個函數作為回調函數,哪怕是空。
![](https://img.laitimes.com/img/_0nNw4CM6IyYiwiM6ICdiwiIml2ZuQWZzUTOhljM0cTO2ATOwATNxMWM1EWYxEjY5ADNlFTNfdWbp9CXt92Yu4GZjlGbh5SZslmZxl3Lc9CX6MHc0RHaiojIsJye.gif)
![](https://img.laitimes.com/img/_0nNw4CM6IyYiwiM6ICdiwiIml2ZuQWZzUTOhljM0cTO2ATOwATNxMWM1EWYxEjY5ADNlFTNfdWbp9CXt92Yu4GZjlGbh5SZslmZxl3Lc9CX6MHc0RHaiojIsJye.gif)
建立Lawnchair對象的時候,如果傳入的option參數含有name屬性,那麼會建立一個類似table._index_的數組用來儲存索引值。
儲存形式為對象,如果傳入的對象有key屬性,那麼key會作為索引值儲存,如果沒有key屬性,則自動生成一個key值,然後儲存在table._index_中,上面的例子的操作結果如下圖:
上面的例子改用batch方法就是:
![](https://img.laitimes.com/img/_0nNw4CM6IyYiwiM6ICdiwiIml2ZuQWZzUTOhljM0cTO2ATOwATNxMWM1EWYxEjY5ADNlFTNfdWbp9CXt92Yu4GZjlGbh5SZslmZxl3Lc9CX6MHc0RHaiojIsJye.gif)
![](https://img.laitimes.com/img/_0nNw4CM6IyYiwiM6ICdiwiIml2ZuQWZzUTOhljM0cTO2ATOwATNxMWM1EWYxEjY5ADNlFTNfdWbp9CXt92Yu4GZjlGbh5SZslmZxl3Lc9CX6MHc0RHaiojIsJye.gif)
lawnchair.js的核心很小,然後有完善的擴充和插件機制,可以按需加載。自己編寫也比較友善,隻需要在自己的代碼中實作adapter valid init keys save batch get exists all remove nuke方法即可。