成人国产在线小视频_日韩寡妇人妻调教在线播放_色成人www永久在线观看_2018国产精品久久_亚洲欧美高清在线30p_亚洲少妇综合一区_黄色在线播放国产_亚洲另类技巧小说校园_国产主播xx日韩_a级毛片在线免费

資訊專欄INFORMATION COLUMN

使用betty.js將Javascript代碼存儲到LocalStorage

buildupchao / 2813人閱讀

摘要:前言是一款極輕量的使用存儲代碼的工具??缬蚓彺鏁J(rèn)使用請求待緩存的資源,如果跨域則會請求出錯。會以格式存儲代碼,例如所以和有一個發(fā)生變化,都會引起重新請求并存儲。

前言

betty.js是一款極輕量的、使用localStorage存儲Javascript代碼的工具。市面上已經(jīng)有很多類似的工具:比如餓了么團(tuán)隊最近發(fā)布的bowl.js,微信團(tuán)隊的MOON(未開源),以及這個想法的鼻祖basket.js。

但為何還要“重復(fù)造輪子”?是因為betty.js她足夠輕量,足夠簡潔易用,足夠具有擴展性,壓縮后的min.betty.js只有1KB!使得你可以直接以inline引入的方式(這也是推薦的引入方式)將betty用到你的項目里。

三年前就想著將Javascript的代碼存儲到LS里,在百度工作的時候曾寫出一個基于mod.js的存儲工具mocket.js,它的思想是動態(tài)分析項目依賴,本地沒有存儲過的JS再去網(wǎng)絡(luò)請求再存儲下來,這也順利應(yīng)用到百度的部分項目里。

但為何不直接開源mocket.js,就是因為betty不依賴任何組件,是一個獨立的極其輕量的小工具。當(dāng)然,可以借助betty.js來擴展實現(xiàn)mocket.js動態(tài)分析組件的思想。

好了,廢話這么多,接下來是介紹文檔:

安裝
npm install betty.js

拷貝min.betty.js的代碼,使用inline的方式引入項目里:

如果你的項目基于FIS,可以這么引入:

示例 方式一:
var betty = Betty({
    uri: "/path/min.allLib.js",
    key: "allLib",
    noCache: false,
    xDomain: false
}, function() {
    // your code...
})
方式二:
var betty = Betty({
    uri: "/path/min.allLib.version.js",
    key: "allLib",
    noCache: false,
    xDomain: false
});

betty.apply(function() {
    // your code...
})

betty.apply(function() {
    // your others code...
})

以上兩種方式的代碼執(zhí)行一遍之后,min.allLib.js的內(nèi)容就會被betty存儲到localStorage里,第二次執(zhí)行時就不會從網(wǎng)絡(luò)請求min.allLib.js,直接從緩存中讀取并執(zhí)行。

至于為何除了第一種寫法,還支持了第二種寫法?是因為在前端工程里,可以考慮把定義betty的操作放到通用的layout里,把betty.apply寫進(jìn)每個頁面對應(yīng)的js文件里。

當(dāng)然,你可以自由選擇自己的喜好。

跨域緩存

betty.js會默認(rèn)使用Ajax請求待緩存的JS資源,如果跨域則會請求出錯。這時候你需要設(shè)置betty paddingxDomain來讓跨域請求JS資源被支持:

index.html

min.allLib_with_padding.js

betty.store(function() {
    // your code...
})

注意:

請設(shè)置xDomaintrue

請在待緩存的JS文件中設(shè)置betty padding,如以上的betty.store(....)

請設(shè)置betty為全局變量

版本管理

betty.js絕對依賴urikey來管理JS版本。如果你的代碼需要更新,請更換uri的值,新的JS就會被請求,然后代碼內(nèi)容會被重新存儲到LocalStorage里,并且會刪掉舊版本的代碼

betty.js會以BETTY:{key}:{uri}格式存儲JS代碼,例如:

BETTY:allLib:/path/min.allLib.version.js

所以keyuri有一個發(fā)生變化,都會引起重新請求并存儲。

API Betty

配置betty

var betty = Betty({config, callback[option]})

config:

urikey必須設(shè)置

noCache: 設(shè)置不緩存,默認(rèn)為false

xDomain: 設(shè)置跨域緩存,默認(rèn)false,詳見[跨域緩存]

betty.store

添加存儲的代碼

betty.store(function() {
    ...
})
betty.apply

執(zhí)行依賴緩存的代碼

betty.apply(function() {
    ...
})
betty.remove

移除緩存的代碼

betty.remove("allLib")
關(guān)于緩存CSS

目前還不支持,也不建議隨意緩存CSS內(nèi)容,還是建議直接在head里引入CSS,主要是基于以下的考慮:

動態(tài)插入CSS會使頁面閃動

CSS樣式順序管理問題

當(dāng)然,一些不在首屏展示的CSS可以被緩存,但建議將其轉(zhuǎn)換成JS文件合并到你的min.allLib.js中,可以借助這個小工具addcss:

addcss("a{color: red,font-size: 12px}")

如果你使用FIS,可以這么處理:

addcss(__inline("style.css"))
原始文檔

https://binnng.github.io/betty.js

文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請注明本文地址:http://systransis.cn/yun/91311.html

相關(guān)文章

  • 使用betty.jsJavascript代碼存儲LocalStorage

    摘要:前言是一款極輕量的使用存儲代碼的工具??缬蚓彺鏁J(rèn)使用請求待緩存的資源,如果跨域則會請求出錯。會以格式存儲代碼,例如所以和有一個發(fā)生變化,都會引起重新請求并存儲。 前言 betty.js是一款極輕量的、使用localStorage存儲Javascript代碼的工具。市面上已經(jīng)有很多類似的工具:比如餓了么團(tuán)隊最近發(fā)布的bowl.js,微信團(tuán)隊的MOON(未開源),以及這個想法的鼻祖ba...

    fish 評論0 收藏0
  • 我推薦的一些前端開發(fā)工具

    摘要:性能卓越的模板引擎簡潔的模版語法,簡單的,關(guān)鍵還能前后端共用模板,簡直就是前端開發(fā)利器。是由阿里巴巴部門推出的矢量圖標(biāo)管理網(wǎng)站。是一個簡單的設(shè)備檢測工具。 artTemplate 性能卓越的 js 模板引擎 簡潔的模版語法,簡單的API,關(guān)鍵還能前后端(Nodejs)共用模板,簡直就是前端開發(fā)利器。今天有個想法,把artTemplate封裝下,模版render后給input等注冊幾個事...

    nodejh 評論0 收藏0
  • Javascript本地存儲小結(jié)

    摘要:不是很安全,別人可以分析存放在本地的并進(jìn)行欺騙,考慮到安全應(yīng)當(dāng)使用。因此不是一種持久化的本地存儲,僅僅是會話級別的存儲。用于持久化的本地存儲,除非主動刪除數(shù)據(jù),否則數(shù)據(jù)是永遠(yuǎn)不會過期的。 前言 總括:詳細(xì)講述Cookie,LocalStorge,SesstionStorge的區(qū)別和用法。 人生如畫,歲月如歌。 原文博客地址:Javascript本地存儲小結(jié) 知乎專欄&&簡書專題:前端...

    garfileo 評論0 收藏0
  • JavaScript學(xué)習(xí)篇--本地存儲

    摘要:本地存儲的方案傳統(tǒng)把信息存儲到客戶端的瀏覽器中但是項目服務(wù)器端也是可以獲取的把信息存儲到服務(wù)器上的服務(wù)器存儲永久存儲在客服端的本地。 在客戶端運行的js是不能操作用戶電腦磁盤中的文件的(這是為了保護(hù)客戶端運行的安全)。 1、js中的本地存儲: 使用js向瀏覽器的某一個位置中存儲一些內(nèi)容,瀏覽器即使關(guān)閉了,存儲的信息也不會銷毀,當(dāng)在重新打開瀏覽器的時候我們依然可以獲取到上一次存儲的信息。...

    hss01248 評論0 收藏0

發(fā)表評論

0條評論

最新活動
閱讀需要支付1元查看
<