使用data.js作為統一的資料儲存中心

binnng發表於2015-08-13

場景

平時在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

專案程式碼非常非常簡單,但是思路很重要哈~

相關文章