場景
平時在js中儲存資料的場景還是很多的,比如:
var data;
$.get("http://demo.com/api", {}, function(res) {
data = res;
// ...
});
這時候ajax獲取的資料被快取到data中,這種場景及其普遍。假設突然這個被改成一個函式:
function getData(params) {
var data;
$.get("http://demo.com/api", params, function(res) {
data = res;
// ...
});
}
這時候想在外面獲取data
,就得修改原來的程式碼,一種方式就是把return data
,另一種是把data
定義到函式外面。
這時候,這個js要被改成模組:
define("getData", function(require, module, exports) {
var data;
function getData(params) {
$.get("http://demo.com/api", params, function(res) {
data = res;
// ...
});
}
module.exports = getData;
});
這時候悲催了,想在別的模組使用data
,又得繼續修改程式碼,隨著專案增大,程式碼越改越亂。
data.js
這種情況,就可以使用data.js
作為資料的統一儲存中心:
define("getData", function(require, module, exports) {
var Data = require("data.js");
function getData(params) {
$.get("http://demo.com/api", params, function(res) {
Data.set("apiData", res);
// ...
});
}
module.exports = getData;
});
在另一個模組就可以這麼獲取資料:
var Data = require("data.js");
var apiData = Data.get("apiData");
資料儲存獨立存在於函式模組,使用起來非常方便。
專案
Github地址:data.js
專案程式碼非常非常簡單,但是思路很重要哈~