Meteor的临时的存储:Session
在開發(fā)的過程中有的時(shí)候我們只需要存儲一些臨時(shí)的變量,我們并不想使用collection來存儲,這個(gè)時(shí)候我們可以使用Session來存儲,Session可以方便的存儲一些狀態(tài),也可以在helpers中使用。
Session是變化的在客戶端
我們在colletcions存儲的數(shù)據(jù),當(dāng)數(shù)據(jù)在一個(gè)客戶端更新的時(shí)候,更新的數(shù)據(jù)會立刻同步到服務(wù)器和其他的客戶端,這樣因?yàn)镸ongo.Collection是可以是別處Meteor的更新數(shù)據(jù),Session是一樣的道理,但是他并不會同步到服務(wù)器端,和collections一樣我們并不需要寫額外的代碼維護(hù)Session的狀態(tài),更新Session的內(nèi)容只需要是用Sessiong.set(key,value),當(dāng)Session的值變化的時(shí)候,只需要在helpers里面調(diào)用Session.get(key)即可。
在html里面顯示點(diǎn)擊數(shù)
<head><title>meteor-session</title> </head><body>{{> counter_template}} </body><template name="counter_template"><button>點(diǎn)擊</button><p>一共點(diǎn)擊了 {{counter}} times.</p> </template>counter的值需要在helpers中返回
用Session存儲點(diǎn)擊的總數(shù)
if (Meteor.isClient) {if (typeof( Session.get('counter')) == 'undefined') {Session.setDefault('counter', 0);}Template.counter_template.helpers({counter: function () {return Session.get('counter');}});Template.counter_template.events({'click button': function () {var counter = Session.get('counter')counter++;Session.set('counter', counter);}}); }我們先檢查Session里面的counter有沒有值,沒有的話就設(shè)置一個(gè)默認(rèn)值為0,不然我們在做加法的時(shí)候會有NaN(Not a Number )的錯(cuò)誤。
在helper里面給counter賦值為Session.get('counter')。
處理button的點(diǎn)擊事件,每點(diǎn)擊一次,計(jì)數(shù)器加1.
我們同樣的打開連個(gè)瀏覽器做測試,點(diǎn)擊一個(gè)瀏覽器的button的時(shí)候,其顯示的計(jì)數(shù)器會加1,另一個(gè)瀏覽器沒有任何變化。
刷新瀏覽器會導(dǎo)致計(jì)數(shù)器從0開始
Session并不會在server或者click中保存數(shù)據(jù),這樣就會出現(xiàn)一個(gè)問題當(dāng)我刷新瀏覽器的時(shí)候,計(jì)數(shù)器會從0開始,怎么去解決這個(gè)問題呢?
可以在在瀏覽器中保存計(jì)數(shù)器的值。
localStorage是html5中的本地存儲,在每次給Session的計(jì)數(shù)器賦值的同時(shí),我們也給本地存儲賦值,在每次初始化的時(shí)候我們給Session的默認(rèn)值是本地存儲的計(jì)數(shù)器的值,這樣只要我們本地存儲的計(jì)數(shù)器不被清除,刷新瀏覽器就不會導(dǎo)致計(jì)數(shù)器從0開始了。
localStorage中存儲的counter的值:
項(xiàng)目地址:https://github.com/jjz/meteor/tree/master/meteor-session
總結(jié)
以上是生活随笔為你收集整理的Meteor的临时的存储:Session的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。