Nodejs 发一个简单的包 Basestone

Nodejs 发一个简单的包 Basestone

Basestone的目标是做一个JavaScript数据结构的集合,且这写数据结构应该足够smart。 一个combine文件的例子:

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);
        }
    });
});

可以说是attr的一个扩展,还有点像Backbone的model和collection。

现在还比较粗糙,wrapper也不够高效。 大家帮忙看看,文档在这里


5 回复

Nodejs 发一个简单的包 Basestone

Basestone 是一个旨在提供一组智能 JavaScript 数据结构的库。这些数据结构可以方便地处理文件读取、组合等任务,使得开发者能够更高效地操作数据。

示例代码

下面是一个简单的例子,展示了如何使用 Basestone 来读取多个文件,并将它们的数据组合在一起:

// 引入所需的模块
const fs = require('fs');
const basestone = require('basestone');

// 定义需要读取的文件列表
const filesToRead = basestone.map([
    ['./google.js', ''],
    ['./baidu.js', ''],
    ['./douban.js', '']
]);

// 监听文件读取完成事件
filesToRead.on('change', function (key, value) {
    console.log(`${key} is readed`);
    
    // 获取所有文件数据
    const filesData = this.values();
    
    // 检查是否所有文件都已读取完成
    const isAllReaded = filesData.every(data => data !== '');
    
    if (isAllReaded) {
        console.log('all files are readed and combined:');
        console.log(filesData.join('\n'));
    }
});

// 逐个读取文件并设置到 `filesToRead`
filesToRead.keys((fileName) => {
    fs.readFile(fileName, (err, data) => {
        if (!err) {
            filesToRead.set(fileName, data);
        }
    });
});

解释

  1. 引入模块:

    • 使用 require 导入 fs 模块来处理文件系统操作。
    • 使用 require 导入 Basestone 库。
  2. 定义文件列表:

    • 使用 basestone.map 方法创建一个映射对象 filesToRead,其中包含需要读取的文件路径和初始值(空字符串)。
  3. 监听文件读取完成事件:

    • 监听 change 事件,当某个文件读取完成后触发。
    • 在事件处理器中,获取所有文件的数据并检查是否全部读取完成。
    • 如果所有文件都已读取完成,则打印出所有文件的数据并合并输出。
  4. 逐个读取文件:

    • 遍历 filesToRead 的键(即文件名),逐个读取文件内容。
    • 将读取到的数据设置到 filesToRead 中对应的键上。

通过这种方式,Basestone 可以帮助你轻松地管理文件读取和数据组合的任务。你可以根据实际需求调整代码逻辑,进一步优化你的应用。

文档

详细的文档可以在 这里 查看。如果你有任何问题或建议,请随时反馈。


希望这个简单的示例能帮助你更好地理解和使用 Basestone 库。


没接触过, "数据接口集合"比方说怎么用?

god,写错了,是数据结构。

您好,DeNA在招聘资深node.js的职位,您有兴趣考虑吗?

Nodejs 发一个简单的包 Basestone

Basestone 是一个旨在提供智能 JavaScript 数据结构的库。目前它主要实现了一个 map 方法,可以用来处理文件读取并组合结果。下面是一个 Basestone 的简单使用示例。

示例代码

const fs = require('fs');
const basestone = require('basestone');

// 创建一个 map 实例来存储需要读取的文件及其内容
const filesToRead = basestone.map([
    ['./google.js', ''],
    ['./baidu.js', ''],
    ['./douban.js', '']
]);

// 监听 'change' 事件,当所有文件都读取完毕后打印组合的结果
filesToRead.on('change', function (key, value) {
    const filesData = this.values();
    const isAllReaded = filesData.every(data => data !== '');

    if (isAllReaded) {
        console.log('所有文件已读取并组合:\n');
        console.log(filesData.join('\n'));
    }
});

// 读取每个文件并将内容存储到 map 中
filesToRead.keys(function (fileName) {
    fs.readFile(fileName, (err, data) => {
        if (!err) {
            filesToRead.set(fileName, data);
        }
    });
});

解释

  1. 引入依赖

    • 引入 fs 模块用于文件操作。
    • 引入 basestone 库用于管理文件读取与组合。
  2. 创建 map 实例

    • 使用 basestone.map 创建一个实例,并传入需要读取的文件路径及初始值(空字符串)。
  3. 监听 change 事件

    • 当某个文件内容发生变化时触发 change 事件。检查所有文件是否都已读取完毕,如果都已读取,则将它们的内容合并并打印出来。
  4. 读取文件内容

    • 遍历 keys,调用 fs.readFile 逐个读取文件内容,并将其设置为 map 的值。

注意事项

  • Basestone 还在开发中,可能会有一些粗糙的地方。
  • 可以查看详细的文档 这里 获取更多关于 Basestone 的信息。

希望这个简单的例子能帮助你理解如何使用 Basestone 处理文件读取和组合任务。

回到顶部