View on GitHub

Basestone

聪明的数据结构

下载 .ZIP下载 .TGZ

欢迎使用Basestone

Basestone是一个JavaScript常用的数据结构集合,包含了ECMASCript 6 中出现的新特性,比如MapSet等新的数据结构以及一些方便的方法(keysvalues)等等。

往往我们在处理一些较为复杂的业务逻辑时,从UI binding开始写起,很多业务逻辑都写在事件的回调函数之中,这往往会造成代码的冗余和逻辑混乱,Basestone目的就是提供一个具有事件特性的常用数据结构,来帮助前端工程师,把界面操作和业务逻辑解耦出来,相当于提供一个数据Model中间层。

下面这段代码,展示了如何使用Basestonemap来异步地批量读取文件:

var filesToRead, fs, basestone;
fs = require('fs');
basestone = require('basestone');
filesToRead = basestone.map([
    ['./google.js', ''],
    ['./baidu.js', ''],
    ['./douban.js', '']
]);
filesToRead.on('change', function (key, value) {
    var filesData, isAllReaded;
    console.log(key + ' is readed')
    filesData = this.values();
    isAllReaded = filesData.every(function (data) {
        return data !== '';
    });
    if (isAllReaded) {
        console.log('all files are readed and combined:\n')
        console.log(filesData.join('\n'));
    }
});
filesToRead.keys(function (fileName) {
    fs.readFile(fileName, function (err, data) {
        if (!err) {
            filesToRead.set(fileName, data);
        }
    });
});

看看文档?

文档中有详细的接口说明和使用示例。

Basestone项目是按照Node的模块标准开发的,但它并不依赖于Node环境或者某些模块,我们可以在任何JS Context中使用它。在build有一些文件,我们使用noloader打包成了多模块标准的包,大家可以结合RequireJSSeaJS来使用它,或者直接在浏览器中使用。