一些灵感

刚才整理笔记的时候,突然迸发出来了一些灵感。如果我想让我的文件管理工具更灵活,我就不应该设计我在什么场景使用它。

可是我又如何实现这个想法呢?我做了如下的设计(初步):

  1. 假如每个文件都对应如下的属性,其中比较特殊的tags字段,tags字段的key为文件夹Id,值为该文件在该文件夹中的tag,其中key为root时表表示该文件在根目录中的tag值。这些tag值会被如何设置,后面的内容会讲到。
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12

{
    "fileName": "这是一个测试文件夹",
    "createTime": "134324832478",
    "updateTime": "134324832478",
    "tags": {
        "root": ["root_1", "root_2", "root_3"],
        "DirId_1": ["tag_1_1","tag_1_2","tag_1_3"],
        "DirId_2": ["tag_2_1","tag_2_2","tag_2_3"]
    }
}

  1. 假设每个文件夹都对应如下属性,这个比较特殊的是scripts字段,scripts中key是事件名,当该文件被删除子文件夹时触发什么事件,当该文件夹被移动文件时执行什么事件。
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22

{
    "fileName": "这是一个测试文件夹",
    "createTime": "134324832478",
    "updateTime": "134324832478",
    "tags": {
        "root": ["root_1", "root_2", "root_3"],
        "DirId_1": ["tag_1_1","tag_1_2","tag_1_3"],
        "DirId_2": ["tag_2_1","tag_2_2","tag_2_3"]
    },
    "scripts": {
        "onDeleteFile": "",
        "onDeleteDir": "",
        "onCreateFile": "",
        "onCreateDir": "",
        "onFileDragToDir": "",
        "onFileDragToFile": "",
        "onDirDragToFile": "",
        "onDirDragToDir": ""
    }
}

  1. 事件接受的参数有哪些呢?当前文件夹的所有属性信息、被移动文件的所有属性信息。事件的输出有哪些呢?输出新的文件属性信息的tags字段。

  2. Explore本身也是有属性的,属性结构没想好。

Explore可以配置全局的事件。

这些都是初步设计,数据机构还有优化和丰富,数据结构转换也需要再精心设计以下。

还需要提供Explore相关的API。

我们让真正的文件操作也在这些事件中完成吧。

我现在在这套架构下实现我目前的需求:

  1. 文件顺序可以任意调整,这个应该是文件夹级别的,就是说每个文件夹都会有自己的方案。我在文件夹A的每个事件中都加一行代码,得到当前Explore视图(随便造的概念),然后进行排序,ra