diff --git "a/data/1.Web\345\256\236\346\210\230\345\210\235\351\230\266/1.\345\267\245\344\275\234\347\251\272\351\227\264\345\210\233\345\273\272/1.\345\210\233\345\273\272\351\241\271\347\233\256\345\267\245\344\275\234\347\251\272\351\227\264\346\240\271\347\233\256\345\275\225/config.json" "b/data/1.Web\345\256\236\346\210\230\345\210\235\351\230\266/1.\345\267\245\344\275\234\347\251\272\351\227\264\345\210\233\345\273\272/1.\345\210\233\345\273\272\351\241\271\347\233\256\345\267\245\344\275\234\347\251\272\351\227\264\346\240\271\347\233\256\345\275\225/config.json" index 455195053911eda34d90d30b718a22f8ff2c493a..bc1814dac3e222e9d28b57c25f8ddceb566a0f13 100644 --- "a/data/1.Web\345\256\236\346\210\230\345\210\235\351\230\266/1.\345\267\245\344\275\234\347\251\272\351\227\264\345\210\233\345\273\272/1.\345\210\233\345\273\272\351\241\271\347\233\256\345\267\245\344\275\234\347\251\272\351\227\264\346\240\271\347\233\256\345\275\225/config.json" +++ "b/data/1.Web\345\256\236\346\210\230\345\210\235\351\230\266/1.\345\267\245\344\275\234\347\251\272\351\227\264\345\210\233\345\273\272/1.\345\210\233\345\273\272\351\241\271\347\233\256\345\267\245\344\275\234\347\251\272\351\227\264\346\240\271\347\233\256\345\275\225/config.json" @@ -1,5 +1,5 @@ { - "keywords": [], + "keywords": ["web", "工作空间"], "title": "创建工作空间目录", "node_id": "toolchains-0c52dc8621ed42f6b587b99705ca744d", "keywords_must": [], diff --git "a/data/1.Web\345\256\236\346\210\230\345\210\235\351\230\266/1.\345\267\245\344\275\234\347\251\272\351\227\264\345\210\233\345\273\272/2.\345\210\235\345\247\213\345\214\226git\344\273\223\345\272\223/config.json" "b/data/1.Web\345\256\236\346\210\230\345\210\235\351\230\266/1.\345\267\245\344\275\234\347\251\272\351\227\264\345\210\233\345\273\272/2.\345\210\235\345\247\213\345\214\226git\344\273\223\345\272\223/config.json" index dc264855e6b85906bfd22d93e3dcdd19154bf131..e719f31736eb8a5eaa5ae4d511a5a1631e695f62 100644 --- "a/data/1.Web\345\256\236\346\210\230\345\210\235\351\230\266/1.\345\267\245\344\275\234\347\251\272\351\227\264\345\210\233\345\273\272/2.\345\210\235\345\247\213\345\214\226git\344\273\223\345\272\223/config.json" +++ "b/data/1.Web\345\256\236\346\210\230\345\210\235\351\230\266/1.\345\267\245\344\275\234\347\251\272\351\227\264\345\210\233\345\273\272/2.\345\210\235\345\247\213\345\214\226git\344\273\223\345\272\223/config.json" @@ -1,5 +1,5 @@ { - "keywords": [], + "keywords": ["git"], "title": "初始化git仓库", "node_id": "toolchains-e5762965dec14f8a873428e4c04409d6", "keywords_must": [], diff --git "a/data/1.Web\345\256\236\346\210\230\345\210\235\351\230\266/1.\345\267\245\344\275\234\347\251\272\351\227\264\345\210\233\345\273\272/3.\345\210\233\345\273\272gitignore\346\226\207\344\273\266/config.json" "b/data/1.Web\345\256\236\346\210\230\345\210\235\351\230\266/1.\345\267\245\344\275\234\347\251\272\351\227\264\345\210\233\345\273\272/3.\345\210\233\345\273\272gitignore\346\226\207\344\273\266/config.json" index bf7e837e436c9a3d3fb91bdb02b0556020de6c97..20560d5b786224e37a7b2cf033109fb7241f07b0 100644 --- "a/data/1.Web\345\256\236\346\210\230\345\210\235\351\230\266/1.\345\267\245\344\275\234\347\251\272\351\227\264\345\210\233\345\273\272/3.\345\210\233\345\273\272gitignore\346\226\207\344\273\266/config.json" +++ "b/data/1.Web\345\256\236\346\210\230\345\210\235\351\230\266/1.\345\267\245\344\275\234\347\251\272\351\227\264\345\210\233\345\273\272/3.\345\210\233\345\273\272gitignore\346\226\207\344\273\266/config.json" @@ -1,5 +1,5 @@ { - "keywords": [], + "keywords": ["git", "gitignore"], "title": "使用gitignore文件在版本库中忽略文件", "node_id": "toolchains-02d8f669d1c745d599a2b321c6d15ca1", "keywords_must": [], diff --git "a/data/1.Web\345\256\236\346\210\230\345\210\235\351\230\266/1.\345\267\245\344\275\234\347\251\272\351\227\264\345\210\233\345\273\272/4.\346\267\273\345\212\240\351\241\271\347\233\256README.md\346\226\207\346\241\243/config.json" "b/data/1.Web\345\256\236\346\210\230\345\210\235\351\230\266/1.\345\267\245\344\275\234\347\251\272\351\227\264\345\210\233\345\273\272/4.\346\267\273\345\212\240\351\241\271\347\233\256README.md\346\226\207\346\241\243/config.json" index b9b4d728db94c9db259e8dee8ec51fcd4c6ba6f9..362fed3d1302c4d81729a2fd0e5249d406f4fb25 100644 --- "a/data/1.Web\345\256\236\346\210\230\345\210\235\351\230\266/1.\345\267\245\344\275\234\347\251\272\351\227\264\345\210\233\345\273\272/4.\346\267\273\345\212\240\351\241\271\347\233\256README.md\346\226\207\346\241\243/config.json" +++ "b/data/1.Web\345\256\236\346\210\230\345\210\235\351\230\266/1.\345\267\245\344\275\234\347\251\272\351\227\264\345\210\233\345\273\272/4.\346\267\273\345\212\240\351\241\271\347\233\256README.md\346\226\207\346\241\243/config.json" @@ -1,5 +1,5 @@ { - "keywords": [], + "keywords": ["readme"], "title": "为项目添加项目说明文档", "node_id": "toolchains-b10e540d16da4c6b9ce71128fe712750", "keywords_must": [], diff --git "a/data/1.Web\345\256\236\346\210\230\345\210\235\351\230\266/1.\345\267\245\344\275\234\347\251\272\351\227\264\345\210\233\345\273\272/5.\345\256\214\346\210\220\347\254\254\344\270\200\346\254\241\346\234\254\345\234\260\344\273\223\345\272\223\346\217\220\344\272\244/config.json" "b/data/1.Web\345\256\236\346\210\230\345\210\235\351\230\266/1.\345\267\245\344\275\234\347\251\272\351\227\264\345\210\233\345\273\272/5.\345\256\214\346\210\220\347\254\254\344\270\200\346\254\241\346\234\254\345\234\260\344\273\223\345\272\223\346\217\220\344\272\244/config.json" index 03319930caab4fa080a11ecf77b8192b2622cf82..5788e46fdc50068068eba96e3c493099e804c419 100644 --- "a/data/1.Web\345\256\236\346\210\230\345\210\235\351\230\266/1.\345\267\245\344\275\234\347\251\272\351\227\264\345\210\233\345\273\272/5.\345\256\214\346\210\220\347\254\254\344\270\200\346\254\241\346\234\254\345\234\260\344\273\223\345\272\223\346\217\220\344\272\244/config.json" +++ "b/data/1.Web\345\256\236\346\210\230\345\210\235\351\230\266/1.\345\267\245\344\275\234\347\251\272\351\227\264\345\210\233\345\273\272/5.\345\256\214\346\210\220\347\254\254\344\270\200\346\254\241\346\234\254\345\234\260\344\273\223\345\272\223\346\217\220\344\272\244/config.json" @@ -1,5 +1,5 @@ { - "keywords": [], + "keywords": ["git", "commit"], "title": "在本地仓库完成第一次版本提交", "node_id": "toolchains-9c268abdef7e4712828235a4696329c5", "keywords_must": [], diff --git "a/data/1.Web\345\256\236\346\210\230\345\210\235\351\230\266/2.\350\277\234\347\250\213\344\273\223\345\272\223\347\256\241\347\220\206/1.\346\263\250\345\206\214codechina\350\264\246\346\210\267/config.json" "b/data/1.Web\345\256\236\346\210\230\345\210\235\351\230\266/2.\350\277\234\347\250\213\344\273\223\345\272\223\347\256\241\347\220\206/1.\346\263\250\345\206\214codechina\350\264\246\346\210\267/config.json" index 765864c50223fba6363eb8ba0395ecb3a8165df2..04bea20ff527f424064e38871f86b4fc77f2b07d 100644 --- "a/data/1.Web\345\256\236\346\210\230\345\210\235\351\230\266/2.\350\277\234\347\250\213\344\273\223\345\272\223\347\256\241\347\220\206/1.\346\263\250\345\206\214codechina\350\264\246\346\210\267/config.json" +++ "b/data/1.Web\345\256\236\346\210\230\345\210\235\351\230\266/2.\350\277\234\347\250\213\344\273\223\345\272\223\347\256\241\347\220\206/1.\346\263\250\345\206\214codechina\350\264\246\346\210\267/config.json" @@ -1,6 +1,6 @@ { "node_id": "toolchains-1bfc87efcfe04179bba64f6874688ca5", - "keywords": [], + "keywords": ["codechina", "gitcode"], "children": [], "export": [], "keywords_must": [], diff --git "a/data/1.Web\345\256\236\346\210\230\345\210\235\351\230\266/2.\350\277\234\347\250\213\344\273\223\345\272\223\347\256\241\347\220\206/2.\345\210\233\345\273\272\351\241\271\347\233\256\347\273\204\347\273\207/config.json" "b/data/1.Web\345\256\236\346\210\230\345\210\235\351\230\266/2.\350\277\234\347\250\213\344\273\223\345\272\223\347\256\241\347\220\206/2.\345\210\233\345\273\272\351\241\271\347\233\256\347\273\204\347\273\207/config.json" index 028ada82da0de931c5a6493c7b0dd68a95617b2f..6d34a48adc20d9e07bad1d08331c98c9e85d336a 100644 --- "a/data/1.Web\345\256\236\346\210\230\345\210\235\351\230\266/2.\350\277\234\347\250\213\344\273\223\345\272\223\347\256\241\347\220\206/2.\345\210\233\345\273\272\351\241\271\347\233\256\347\273\204\347\273\207/config.json" +++ "b/data/1.Web\345\256\236\346\210\230\345\210\235\351\230\266/2.\350\277\234\347\250\213\344\273\223\345\272\223\347\256\241\347\220\206/2.\345\210\233\345\273\272\351\241\271\347\233\256\347\273\204\347\273\207/config.json" @@ -1,6 +1,6 @@ { "node_id": "toolchains-4a090ef0913f41b9a25348b2a4c5498f", - "keywords": [], + "keywords": ["项目组织"], "children": [], "export": [], "keywords_must": [], diff --git "a/data/1.Web\345\256\236\346\210\230\345\210\235\351\230\266/2.\350\277\234\347\250\213\344\273\223\345\272\223\347\256\241\347\220\206/3.\345\210\233\345\273\272\350\277\234\347\250\213\344\273\223\345\272\223/config.json" "b/data/1.Web\345\256\236\346\210\230\345\210\235\351\230\266/2.\350\277\234\347\250\213\344\273\223\345\272\223\347\256\241\347\220\206/3.\345\210\233\345\273\272\350\277\234\347\250\213\344\273\223\345\272\223/config.json" index f7d9a39de106143d408e650ffec3676d1ef00b82..729718d813a2af0657cc0b6c9363c7b74ccb320c 100644 --- "a/data/1.Web\345\256\236\346\210\230\345\210\235\351\230\266/2.\350\277\234\347\250\213\344\273\223\345\272\223\347\256\241\347\220\206/3.\345\210\233\345\273\272\350\277\234\347\250\213\344\273\223\345\272\223/config.json" +++ "b/data/1.Web\345\256\236\346\210\230\345\210\235\351\230\266/2.\350\277\234\347\250\213\344\273\223\345\272\223\347\256\241\347\220\206/3.\345\210\233\345\273\272\350\277\234\347\250\213\344\273\223\345\272\223/config.json" @@ -1,6 +1,6 @@ { "node_id": "toolchains-d97f24c1f51e47e69e220e37975e49da", - "keywords": [], + "keywords": ["git", "remote"], "children": [], "export": [], "keywords_must": [], diff --git "a/data/1.Web\345\256\236\346\210\230\345\210\235\351\230\266/2.\350\277\234\347\250\213\344\273\223\345\272\223\347\256\241\347\220\206/4.\351\205\215\347\275\256\345\257\206\351\222\245/config.json" "b/data/1.Web\345\256\236\346\210\230\345\210\235\351\230\266/2.\350\277\234\347\250\213\344\273\223\345\272\223\347\256\241\347\220\206/4.\351\205\215\347\275\256\345\257\206\351\222\245/config.json" index 0ed54b40ec15e847cb413d3918dc1905d59e1dce..3784eb60fd14a3ee6437cc390fa3f73aaf8978ee 100644 --- "a/data/1.Web\345\256\236\346\210\230\345\210\235\351\230\266/2.\350\277\234\347\250\213\344\273\223\345\272\223\347\256\241\347\220\206/4.\351\205\215\347\275\256\345\257\206\351\222\245/config.json" +++ "b/data/1.Web\345\256\236\346\210\230\345\210\235\351\230\266/2.\350\277\234\347\250\213\344\273\223\345\272\223\347\256\241\347\220\206/4.\351\205\215\347\275\256\345\257\206\351\222\245/config.json" @@ -1,6 +1,6 @@ { "node_id": "toolchains-a7f5610f9a3242fa9ed3c9445b40d5a3", - "keywords": [], + "keywords": ["git", "key", "ssh"], "children": [], "export": [], "keywords_must": [], diff --git "a/data/1.Web\345\256\236\346\210\230\345\210\235\351\230\266/2.\350\277\234\347\250\213\344\273\223\345\272\223\347\256\241\347\220\206/5.\347\256\241\347\220\206\344\273\223\345\272\223\346\235\203\351\231\220/config.json" "b/data/1.Web\345\256\236\346\210\230\345\210\235\351\230\266/2.\350\277\234\347\250\213\344\273\223\345\272\223\347\256\241\347\220\206/5.\347\256\241\347\220\206\344\273\223\345\272\223\346\235\203\351\231\220/config.json" index 709d838ecd4cf674790c08223d7a5718df8612bd..df336979a26f2797153202cc0ca6afe53e684eff 100644 --- "a/data/1.Web\345\256\236\346\210\230\345\210\235\351\230\266/2.\350\277\234\347\250\213\344\273\223\345\272\223\347\256\241\347\220\206/5.\347\256\241\347\220\206\344\273\223\345\272\223\346\235\203\351\231\220/config.json" +++ "b/data/1.Web\345\256\236\346\210\230\345\210\235\351\230\266/2.\350\277\234\347\250\213\344\273\223\345\272\223\347\256\241\347\220\206/5.\347\256\241\347\220\206\344\273\223\345\272\223\346\235\203\351\231\220/config.json" @@ -1,6 +1,6 @@ { "node_id": "toolchains-d110b9f5b6db482683cf117265eac2e0", - "keywords": [], + "keywords": ["git", "权限"], "children": [], "export": [], "keywords_must": [], diff --git "a/data/1.Web\345\256\236\346\210\230\345\210\235\351\230\266/2.\350\277\234\347\250\213\344\273\223\345\272\223\347\256\241\347\220\206/6.\345\260\206\346\234\254\345\234\260\344\273\223\345\272\223\345\205\263\350\201\224\345\271\266\346\216\250\351\200\201\345\210\260\350\277\234\347\250\213\344\273\223\345\272\223/config.json" "b/data/1.Web\345\256\236\346\210\230\345\210\235\351\230\266/2.\350\277\234\347\250\213\344\273\223\345\272\223\347\256\241\347\220\206/6.\345\260\206\346\234\254\345\234\260\344\273\223\345\272\223\345\205\263\350\201\224\345\271\266\346\216\250\351\200\201\345\210\260\350\277\234\347\250\213\344\273\223\345\272\223/config.json" index 77da085656cb1cc93bba11a2c772504c0f4995fb..eb6d5ff4f393df574a5643af0cc3822953bb0b04 100644 --- "a/data/1.Web\345\256\236\346\210\230\345\210\235\351\230\266/2.\350\277\234\347\250\213\344\273\223\345\272\223\347\256\241\347\220\206/6.\345\260\206\346\234\254\345\234\260\344\273\223\345\272\223\345\205\263\350\201\224\345\271\266\346\216\250\351\200\201\345\210\260\350\277\234\347\250\213\344\273\223\345\272\223/config.json" +++ "b/data/1.Web\345\256\236\346\210\230\345\210\235\351\230\266/2.\350\277\234\347\250\213\344\273\223\345\272\223\347\256\241\347\220\206/6.\345\260\206\346\234\254\345\234\260\344\273\223\345\272\223\345\205\263\350\201\224\345\271\266\346\216\250\351\200\201\345\210\260\350\277\234\347\250\213\344\273\223\345\272\223/config.json" @@ -1,6 +1,6 @@ { "node_id": "toolchains-ffc3c659453a48d19673ac82965d05e8", - "keywords": [], + "keywords": ["git", "remote", "push"], "children": [], "export": [], "keywords_must": [], diff --git "a/data/1.Web\345\256\236\346\210\230\345\210\235\351\230\266/2.\350\277\234\347\250\213\344\273\223\345\272\223\347\256\241\347\220\206/7.\351\241\271\347\233\256\346\210\220\345\221\230\345\222\214\346\235\203\351\231\220\347\256\241\347\220\206/config.json" "b/data/1.Web\345\256\236\346\210\230\345\210\235\351\230\266/2.\350\277\234\347\250\213\344\273\223\345\272\223\347\256\241\347\220\206/7.\351\241\271\347\233\256\346\210\220\345\221\230\345\222\214\346\235\203\351\231\220\347\256\241\347\220\206/config.json" index e6ed4eb256d43db2d5cbf6ef3afb202db731ef49..f76af1b1cd8e81bef06559aee20cecd09ec6ce53 100644 --- "a/data/1.Web\345\256\236\346\210\230\345\210\235\351\230\266/2.\350\277\234\347\250\213\344\273\223\345\272\223\347\256\241\347\220\206/7.\351\241\271\347\233\256\346\210\220\345\221\230\345\222\214\346\235\203\351\231\220\347\256\241\347\220\206/config.json" +++ "b/data/1.Web\345\256\236\346\210\230\345\210\235\351\230\266/2.\350\277\234\347\250\213\344\273\223\345\272\223\347\256\241\347\220\206/7.\351\241\271\347\233\256\346\210\220\345\221\230\345\222\214\346\235\203\351\231\220\347\256\241\347\220\206/config.json" @@ -1,6 +1,6 @@ { "node_id": "toolchains-3a1f4be17fcb4fc38907585dd297d48e", - "keywords": [], + "keywords": ["user", "permission"], "children": [], "export": [], "keywords_must": [], diff --git "a/data/1.Web\345\256\236\346\210\230\345\210\235\351\230\266/3.\345\211\215\347\253\257\351\241\271\347\233\256\345\210\233\345\273\272/1.\345\256\211\350\243\205nodejs\347\216\257\345\242\203/config.json" "b/data/1.Web\345\256\236\346\210\230\345\210\235\351\230\266/3.\345\211\215\347\253\257\351\241\271\347\233\256\345\210\233\345\273\272/1.\345\256\211\350\243\205nodejs\347\216\257\345\242\203/config.json" index f5a23afcf871d7e099a26ec86c13f9274bbaa3d7..6eb902c7f0d8695f1a0de4bb3790f8c217655c1e 100644 --- "a/data/1.Web\345\256\236\346\210\230\345\210\235\351\230\266/3.\345\211\215\347\253\257\351\241\271\347\233\256\345\210\233\345\273\272/1.\345\256\211\350\243\205nodejs\347\216\257\345\242\203/config.json" +++ "b/data/1.Web\345\256\236\346\210\230\345\210\235\351\230\266/3.\345\211\215\347\253\257\351\241\271\347\233\256\345\210\233\345\273\272/1.\345\256\211\350\243\205nodejs\347\216\257\345\242\203/config.json" @@ -1,6 +1,6 @@ { "node_id": "toolchains-adb4004580bc476a85d513d0be3a5033", - "keywords": [], + "keywords": ["nodejs", "install"], "children": [], "export": [], "keywords_must": [], diff --git "a/data/1.Web\345\256\236\346\210\230\345\210\235\351\230\266/3.\345\211\215\347\253\257\351\241\271\347\233\256\345\210\233\345\273\272/2.\350\247\243\345\206\263\345\233\275\345\244\226npm\346\272\220\344\270\213\350\275\275\351\200\237\345\272\246\344\270\216\350\256\277\351\227\256\351\231\220\345\210\266\351\227\256\351\242\230/config.json" "b/data/1.Web\345\256\236\346\210\230\345\210\235\351\230\266/3.\345\211\215\347\253\257\351\241\271\347\233\256\345\210\233\345\273\272/2.\350\247\243\345\206\263\345\233\275\345\244\226npm\346\272\220\344\270\213\350\275\275\351\200\237\345\272\246\344\270\216\350\256\277\351\227\256\351\231\220\345\210\266\351\227\256\351\242\230/config.json" index 68c8ee5ef55b12dcc1ad53963267471e4c76871a..52cc1ef968046b818dd7e6b01eb272e497939f8d 100644 --- "a/data/1.Web\345\256\236\346\210\230\345\210\235\351\230\266/3.\345\211\215\347\253\257\351\241\271\347\233\256\345\210\233\345\273\272/2.\350\247\243\345\206\263\345\233\275\345\244\226npm\346\272\220\344\270\213\350\275\275\351\200\237\345\272\246\344\270\216\350\256\277\351\227\256\351\231\220\345\210\266\351\227\256\351\242\230/config.json" +++ "b/data/1.Web\345\256\236\346\210\230\345\210\235\351\230\266/3.\345\211\215\347\253\257\351\241\271\347\233\256\345\210\233\345\273\272/2.\350\247\243\345\206\263\345\233\275\345\244\226npm\346\272\220\344\270\213\350\275\275\351\200\237\345\272\246\344\270\216\350\256\277\351\227\256\351\231\220\345\210\266\351\227\256\351\242\230/config.json" @@ -1,6 +1,6 @@ { "node_id": "toolchains-9493364f64ac4e0abe44b544b90546a3", - "keywords": [], + "keywords": ["npm"], "children": [], "export": [], "keywords_must": [], diff --git "a/data/1.Web\345\256\236\346\210\230\345\210\235\351\230\266/3.\345\211\215\347\253\257\351\241\271\347\233\256\345\210\233\345\273\272/3.\345\234\250\351\241\271\347\233\256\345\267\245\344\275\234\347\251\272\351\227\264\344\270\255\345\210\233\345\273\272\345\211\215\347\253\257\351\241\271\347\233\256\347\233\256\345\275\225/config.json" "b/data/1.Web\345\256\236\346\210\230\345\210\235\351\230\266/3.\345\211\215\347\253\257\351\241\271\347\233\256\345\210\233\345\273\272/3.\345\234\250\351\241\271\347\233\256\345\267\245\344\275\234\347\251\272\351\227\264\344\270\255\345\210\233\345\273\272\345\211\215\347\253\257\351\241\271\347\233\256\347\233\256\345\275\225/config.json" index 9ce1ce0f3fdea602184fd97e33118313bb7ba954..05e7110d519f6991d59596a8eeae319546ccdcf0 100644 --- "a/data/1.Web\345\256\236\346\210\230\345\210\235\351\230\266/3.\345\211\215\347\253\257\351\241\271\347\233\256\345\210\233\345\273\272/3.\345\234\250\351\241\271\347\233\256\345\267\245\344\275\234\347\251\272\351\227\264\344\270\255\345\210\233\345\273\272\345\211\215\347\253\257\351\241\271\347\233\256\347\233\256\345\275\225/config.json" +++ "b/data/1.Web\345\256\236\346\210\230\345\210\235\351\230\266/3.\345\211\215\347\253\257\351\241\271\347\233\256\345\210\233\345\273\272/3.\345\234\250\351\241\271\347\233\256\345\267\245\344\275\234\347\251\272\351\227\264\344\270\255\345\210\233\345\273\272\345\211\215\347\253\257\351\241\271\347\233\256\347\233\256\345\275\225/config.json" @@ -1,6 +1,6 @@ { "node_id": "toolchains-720ff92db7e94d0db637f7f3329ed92a", - "keywords": [], + "keywords": ["npm", "project"], "children": [], "export": [], "keywords_must": [], diff --git "a/data/1.Web\345\256\236\346\210\230\345\210\235\351\230\266/3.\345\211\215\347\253\257\351\241\271\347\233\256\345\210\233\345\273\272/4.\345\274\200\345\217\221\345\211\215\345\207\206\345\244\207\345\267\245\344\275\234(VUE\347\211\210)/config.json" "b/data/1.Web\345\256\236\346\210\230\345\210\235\351\230\266/3.\345\211\215\347\253\257\351\241\271\347\233\256\345\210\233\345\273\272/4.\345\274\200\345\217\221\345\211\215\345\207\206\345\244\207\345\267\245\344\275\234(VUE\347\211\210)/config.json" index 33f45bf36ed2f8c2401e2dc9588359381b23d110..af1d9d0f60aa6018e4033ee23b3a2c6fd52edbd8 100644 --- "a/data/1.Web\345\256\236\346\210\230\345\210\235\351\230\266/3.\345\211\215\347\253\257\351\241\271\347\233\256\345\210\233\345\273\272/4.\345\274\200\345\217\221\345\211\215\345\207\206\345\244\207\345\267\245\344\275\234(VUE\347\211\210)/config.json" +++ "b/data/1.Web\345\256\236\346\210\230\345\210\235\351\230\266/3.\345\211\215\347\253\257\351\241\271\347\233\256\345\210\233\345\273\272/4.\345\274\200\345\217\221\345\211\215\345\207\206\345\244\207\345\267\245\344\275\234(VUE\347\211\210)/config.json" @@ -1,6 +1,6 @@ { "node_id": "toolchains-e997d39c64ea47e381d0f7097866abdf", - "keywords": [], + "keywords": ["vue"], "children": [], "export": [], "keywords_must": [], diff --git "a/data/1.Web\345\256\236\346\210\230\345\210\235\351\230\266/4.\345\220\216\347\253\257\351\241\271\347\233\256\345\210\233\345\273\272(python\347\211\210)/1.\345\256\211\350\243\205anaconda/config.json" "b/data/1.Web\345\256\236\346\210\230\345\210\235\351\230\266/4.\345\220\216\347\253\257\351\241\271\347\233\256\345\210\233\345\273\272(python\347\211\210)/1.\345\256\211\350\243\205anaconda/config.json" index e365d307a225752fa4659e4903fe332739ab06d1..85ba71e13d1dab69991e35838d01c7db6801c03d 100644 --- "a/data/1.Web\345\256\236\346\210\230\345\210\235\351\230\266/4.\345\220\216\347\253\257\351\241\271\347\233\256\345\210\233\345\273\272(python\347\211\210)/1.\345\256\211\350\243\205anaconda/config.json" +++ "b/data/1.Web\345\256\236\346\210\230\345\210\235\351\230\266/4.\345\220\216\347\253\257\351\241\271\347\233\256\345\210\233\345\273\272(python\347\211\210)/1.\345\256\211\350\243\205anaconda/config.json" @@ -1,6 +1,6 @@ { "node_id": "toolchains-b3950355b1cc40dfb66e37eb0c6523c8", - "keywords": [], + "keywords": ["python", "anaconda"], "children": [], "export": [], "keywords_must": [], diff --git "a/data/1.Web\345\256\236\346\210\230\345\210\235\351\230\266/4.\345\220\216\347\253\257\351\241\271\347\233\256\345\210\233\345\273\272(python\347\211\210)/2.\345\234\250\345\267\245\344\275\234\347\251\272\351\227\264\344\270\255\345\210\233\345\273\272\345\220\216\347\253\257\351\241\271\347\233\256\347\233\256\345\275\225/config.json" "b/data/1.Web\345\256\236\346\210\230\345\210\235\351\230\266/4.\345\220\216\347\253\257\351\241\271\347\233\256\345\210\233\345\273\272(python\347\211\210)/2.\345\234\250\345\267\245\344\275\234\347\251\272\351\227\264\344\270\255\345\210\233\345\273\272\345\220\216\347\253\257\351\241\271\347\233\256\347\233\256\345\275\225/config.json" index 293d8537414dd761fe196d8da64e72d38dae2b73..d783eb7aec39bdc442381ea5eecbff1d320d07cf 100644 --- "a/data/1.Web\345\256\236\346\210\230\345\210\235\351\230\266/4.\345\220\216\347\253\257\351\241\271\347\233\256\345\210\233\345\273\272(python\347\211\210)/2.\345\234\250\345\267\245\344\275\234\347\251\272\351\227\264\344\270\255\345\210\233\345\273\272\345\220\216\347\253\257\351\241\271\347\233\256\347\233\256\345\275\225/config.json" +++ "b/data/1.Web\345\256\236\346\210\230\345\210\235\351\230\266/4.\345\220\216\347\253\257\351\241\271\347\233\256\345\210\233\345\273\272(python\347\211\210)/2.\345\234\250\345\267\245\344\275\234\347\251\272\351\227\264\344\270\255\345\210\233\345\273\272\345\220\216\347\253\257\351\241\271\347\233\256\347\233\256\345\275\225/config.json" @@ -1,6 +1,6 @@ { "node_id": "toolchains-d117cf4df65c429cba528a1d9f3c3e27", - "keywords": [], + "keywords": ["python", "project"], "children": [], "export": [], "keywords_must": [], diff --git "a/data/1.Web\345\256\236\346\210\230\345\210\235\351\230\266/4.\345\220\216\347\253\257\351\241\271\347\233\256\345\210\233\345\273\272(python\347\211\210)/3.\345\210\233\345\273\272\350\231\232\346\213\237\347\216\257\345\242\203/config.json" "b/data/1.Web\345\256\236\346\210\230\345\210\235\351\230\266/4.\345\220\216\347\253\257\351\241\271\347\233\256\345\210\233\345\273\272(python\347\211\210)/3.\345\210\233\345\273\272\350\231\232\346\213\237\347\216\257\345\242\203/config.json" index c36b351c97d42cfa3dc250d418682984e84149fd..8b46a328afd7c1a30368846da9e9cbc266078c43 100644 --- "a/data/1.Web\345\256\236\346\210\230\345\210\235\351\230\266/4.\345\220\216\347\253\257\351\241\271\347\233\256\345\210\233\345\273\272(python\347\211\210)/3.\345\210\233\345\273\272\350\231\232\346\213\237\347\216\257\345\242\203/config.json" +++ "b/data/1.Web\345\256\236\346\210\230\345\210\235\351\230\266/4.\345\220\216\347\253\257\351\241\271\347\233\256\345\210\233\345\273\272(python\347\211\210)/3.\345\210\233\345\273\272\350\231\232\346\213\237\347\216\257\345\242\203/config.json" @@ -1,6 +1,6 @@ { "node_id": "toolchains-37e699a027764e44817f3432debd449c", - "keywords": [], + "keywords": ["python", "venv", "virtualenv"], "children": [], "export": [], "keywords_must": [], diff --git "a/data/1.Web\345\256\236\346\210\230\345\210\235\351\230\266/4.\345\220\216\347\253\257\351\241\271\347\233\256\345\210\233\345\273\272(python\347\211\210)/4.\351\241\271\347\233\256\345\274\200\345\217\221\345\211\215\345\207\206\345\244\207\345\267\245\344\275\234(flask\347\211\210)/config.json" "b/data/1.Web\345\256\236\346\210\230\345\210\235\351\230\266/4.\345\220\216\347\253\257\351\241\271\347\233\256\345\210\233\345\273\272(python\347\211\210)/4.\351\241\271\347\233\256\345\274\200\345\217\221\345\211\215\345\207\206\345\244\207\345\267\245\344\275\234(flask\347\211\210)/config.json" index 28efa8259ac598608494135e742f4afc27139bec..465d8286fceaa4d99883a95cb72fc023aa5b4775 100644 --- "a/data/1.Web\345\256\236\346\210\230\345\210\235\351\230\266/4.\345\220\216\347\253\257\351\241\271\347\233\256\345\210\233\345\273\272(python\347\211\210)/4.\351\241\271\347\233\256\345\274\200\345\217\221\345\211\215\345\207\206\345\244\207\345\267\245\344\275\234(flask\347\211\210)/config.json" +++ "b/data/1.Web\345\256\236\346\210\230\345\210\235\351\230\266/4.\345\220\216\347\253\257\351\241\271\347\233\256\345\210\233\345\273\272(python\347\211\210)/4.\351\241\271\347\233\256\345\274\200\345\217\221\345\211\215\345\207\206\345\244\207\345\267\245\344\275\234(flask\347\211\210)/config.json" @@ -1,6 +1,6 @@ { "node_id": "toolchains-172e7ed9e81c4042bcb3e43de8712532", - "keywords": [], + "keywords": ["python", "flask"], "children": [], "export": [], "keywords_must": [], diff --git "a/data/2.Web\345\256\236\346\210\230\344\270\255\351\230\266/1.web\345\211\215\347\253\257\351\241\271\347\233\256\345\256\236\346\210\230(vue)/1.\344\275\277\347\224\250vue\350\204\232\346\211\213\346\236\266\345\210\233\345\273\272\351\241\271\347\233\256/config.json" "b/data/2.Web\345\256\236\346\210\230\344\270\255\351\230\266/1.web\345\211\215\347\253\257\351\241\271\347\233\256\345\256\236\346\210\230(vue)/1.\344\275\277\347\224\250vue\350\204\232\346\211\213\346\236\266\345\210\233\345\273\272\351\241\271\347\233\256/config.json" index 1c7657265a232b427097d0687ddee20573d2d2b5..4d6b8158c449474b569cf8b6054500fc6bba13b9 100644 --- "a/data/2.Web\345\256\236\346\210\230\344\270\255\351\230\266/1.web\345\211\215\347\253\257\351\241\271\347\233\256\345\256\236\346\210\230(vue)/1.\344\275\277\347\224\250vue\350\204\232\346\211\213\346\236\266\345\210\233\345\273\272\351\241\271\347\233\256/config.json" +++ "b/data/2.Web\345\256\236\346\210\230\344\270\255\351\230\266/1.web\345\211\215\347\253\257\351\241\271\347\233\256\345\256\236\346\210\230(vue)/1.\344\275\277\347\224\250vue\350\204\232\346\211\213\346\236\266\345\210\233\345\273\272\351\241\271\347\233\256/config.json" @@ -1,6 +1,6 @@ { "node_id": "toolchains-627cf848cba64a56b6b5a3cd550bfec7", - "keywords": [], + "keywords": ["vue"], "children": [], "export": [], "keywords_must": [], diff --git "a/data/2.Web\345\256\236\346\210\230\344\270\255\351\230\266/1.web\345\211\215\347\253\257\351\241\271\347\233\256\345\256\236\346\210\230(vue)/10.\345\210\206\346\224\257\345\206\262\347\252\201\345\244\204\347\220\206/config.json" "b/data/2.Web\345\256\236\346\210\230\344\270\255\351\230\266/1.web\345\211\215\347\253\257\351\241\271\347\233\256\345\256\236\346\210\230(vue)/10.\345\210\206\346\224\257\345\206\262\347\252\201\345\244\204\347\220\206/config.json" index 88cf1c1cb198fa99d748231a1596b5a5bb51b7d0..f17265943ea5cde83a25a70d48df2cb2f61f666e 100644 --- "a/data/2.Web\345\256\236\346\210\230\344\270\255\351\230\266/1.web\345\211\215\347\253\257\351\241\271\347\233\256\345\256\236\346\210\230(vue)/10.\345\210\206\346\224\257\345\206\262\347\252\201\345\244\204\347\220\206/config.json" +++ "b/data/2.Web\345\256\236\346\210\230\344\270\255\351\230\266/1.web\345\211\215\347\253\257\351\241\271\347\233\256\345\256\236\346\210\230(vue)/10.\345\210\206\346\224\257\345\206\262\347\252\201\345\244\204\347\220\206/config.json" @@ -1,6 +1,6 @@ { "node_id": "toolchains-666893ee200a4d6db5435abd09d8f47a", - "keywords": [], + "keywords": ["git", "merge", "conflict", "resolve"], "children": [], "export": [], "keywords_must": [], diff --git "a/data/2.Web\345\256\236\346\210\230\344\270\255\351\230\266/1.web\345\211\215\347\253\257\351\241\271\347\233\256\345\256\236\346\210\230(vue)/11.\346\217\220\345\217\226\347\273\204\344\273\266\344\270\255\347\232\204\347\212\266\346\200\201\344\275\277\347\224\250vuex\350\277\233\350\241\214\347\212\266\346\200\201\347\256\241\347\220\206/config.json" "b/data/2.Web\345\256\236\346\210\230\344\270\255\351\230\266/1.web\345\211\215\347\253\257\351\241\271\347\233\256\345\256\236\346\210\230(vue)/11.\346\217\220\345\217\226\347\273\204\344\273\266\344\270\255\347\232\204\347\212\266\346\200\201\344\275\277\347\224\250vuex\350\277\233\350\241\214\347\212\266\346\200\201\347\256\241\347\220\206/config.json" index fdb4f57f6d89661c7f7c0794771defcd6b8ab0e5..52ee68ad8af72884bbf631ed34cf17ea2f72cb03 100644 --- "a/data/2.Web\345\256\236\346\210\230\344\270\255\351\230\266/1.web\345\211\215\347\253\257\351\241\271\347\233\256\345\256\236\346\210\230(vue)/11.\346\217\220\345\217\226\347\273\204\344\273\266\344\270\255\347\232\204\347\212\266\346\200\201\344\275\277\347\224\250vuex\350\277\233\350\241\214\347\212\266\346\200\201\347\256\241\347\220\206/config.json" +++ "b/data/2.Web\345\256\236\346\210\230\344\270\255\351\230\266/1.web\345\211\215\347\253\257\351\241\271\347\233\256\345\256\236\346\210\230(vue)/11.\346\217\220\345\217\226\347\273\204\344\273\266\344\270\255\347\232\204\347\212\266\346\200\201\344\275\277\347\224\250vuex\350\277\233\350\241\214\347\212\266\346\200\201\347\256\241\347\220\206/config.json" @@ -1,6 +1,6 @@ { "node_id": "toolchains-f24bcb8bea6b45368070c9b9f508606c", - "keywords": [], + "keywords": ["vue", "state", "vuex"], "children": [], "export": [], "keywords_must": [], diff --git "a/data/2.Web\345\256\236\346\210\230\344\270\255\351\230\266/1.web\345\211\215\347\253\257\351\241\271\347\233\256\345\256\236\346\210\230(vue)/12.\346\250\241\346\213\237ajax\350\257\267\346\261\202/config.json" "b/data/2.Web\345\256\236\346\210\230\344\270\255\351\230\266/1.web\345\211\215\347\253\257\351\241\271\347\233\256\345\256\236\346\210\230(vue)/12.\346\250\241\346\213\237ajax\350\257\267\346\261\202/config.json" index 6532b5f89563ae8120d6ad01828e86bd74ce07c3..d1b0bfbbd063dc17639b00aed657789b8e39a244 100644 --- "a/data/2.Web\345\256\236\346\210\230\344\270\255\351\230\266/1.web\345\211\215\347\253\257\351\241\271\347\233\256\345\256\236\346\210\230(vue)/12.\346\250\241\346\213\237ajax\350\257\267\346\261\202/config.json" +++ "b/data/2.Web\345\256\236\346\210\230\344\270\255\351\230\266/1.web\345\211\215\347\253\257\351\241\271\347\233\256\345\256\236\346\210\230(vue)/12.\346\250\241\346\213\237ajax\350\257\267\346\261\202/config.json" @@ -1,6 +1,6 @@ { "node_id": "toolchains-8b2b197bdbd944dea1918a4029343f0f", - "keywords": [], + "keywords": ["ajax", "http"], "children": [], "export": [], "keywords_must": [], diff --git "a/data/2.Web\345\256\236\346\210\230\344\270\255\351\230\266/1.web\345\211\215\347\253\257\351\241\271\347\233\256\345\256\236\346\210\230(vue)/2.\351\241\271\347\233\256\346\272\220\347\240\201\345\217\212\347\233\256\345\275\225\347\273\223\346\236\204\350\257\264\346\230\216/config.json" "b/data/2.Web\345\256\236\346\210\230\344\270\255\351\230\266/1.web\345\211\215\347\253\257\351\241\271\347\233\256\345\256\236\346\210\230(vue)/2.\351\241\271\347\233\256\346\272\220\347\240\201\345\217\212\347\233\256\345\275\225\347\273\223\346\236\204\350\257\264\346\230\216/config.json" index ee3243c1f09bf36a7cc2f3465dc5774e646ce3d6..572bb264e6742eacc629f21890c2f4d5b5cb6849 100644 --- "a/data/2.Web\345\256\236\346\210\230\344\270\255\351\230\266/1.web\345\211\215\347\253\257\351\241\271\347\233\256\345\256\236\346\210\230(vue)/2.\351\241\271\347\233\256\346\272\220\347\240\201\345\217\212\347\233\256\345\275\225\347\273\223\346\236\204\350\257\264\346\230\216/config.json" +++ "b/data/2.Web\345\256\236\346\210\230\344\270\255\351\230\266/1.web\345\211\215\347\253\257\351\241\271\347\233\256\345\256\236\346\210\230(vue)/2.\351\241\271\347\233\256\346\272\220\347\240\201\345\217\212\347\233\256\345\275\225\347\273\223\346\236\204\350\257\264\346\230\216/config.json" @@ -1,6 +1,6 @@ { "node_id": "toolchains-8b07ab0558ef451b9bdf111107034eba", - "keywords": [], + "keywords": ["vue", "project"], "children": [], "export": [], "keywords_must": [], diff --git "a/data/2.Web\345\256\236\346\210\230\344\270\255\351\230\266/1.web\345\211\215\347\253\257\351\241\271\347\233\256\345\256\236\346\210\230(vue)/3.\345\210\233\345\273\272\347\254\254\344\270\200\344\270\252\351\241\265\351\235\242/config.json" "b/data/2.Web\345\256\236\346\210\230\344\270\255\351\230\266/1.web\345\211\215\347\253\257\351\241\271\347\233\256\345\256\236\346\210\230(vue)/3.\345\210\233\345\273\272\347\254\254\344\270\200\344\270\252\351\241\265\351\235\242/config.json" index 3a3d846c1bec4191eaeacab88fc1d5501a06ee67..08afce8ee447f3a8b98b41810de268fb0a507062 100644 --- "a/data/2.Web\345\256\236\346\210\230\344\270\255\351\230\266/1.web\345\211\215\347\253\257\351\241\271\347\233\256\345\256\236\346\210\230(vue)/3.\345\210\233\345\273\272\347\254\254\344\270\200\344\270\252\351\241\265\351\235\242/config.json" +++ "b/data/2.Web\345\256\236\346\210\230\344\270\255\351\230\266/1.web\345\211\215\347\253\257\351\241\271\347\233\256\345\256\236\346\210\230(vue)/3.\345\210\233\345\273\272\347\254\254\344\270\200\344\270\252\351\241\265\351\235\242/config.json" @@ -1,6 +1,6 @@ { "node_id": "toolchains-5c9d4bcbe11942d3a869ab47df26c097", - "keywords": [], + "keywords": ["vue", "page"], "children": [], "export": [], "keywords_must": [], diff --git "a/data/2.Web\345\256\236\346\210\230\344\270\255\351\230\266/1.web\345\211\215\347\253\257\351\241\271\347\233\256\345\256\236\346\210\230(vue)/4.\351\205\215\347\275\256\350\267\257\347\224\261/config.json" "b/data/2.Web\345\256\236\346\210\230\344\270\255\351\230\266/1.web\345\211\215\347\253\257\351\241\271\347\233\256\345\256\236\346\210\230(vue)/4.\351\205\215\347\275\256\350\267\257\347\224\261/config.json" index bae638dc020c0ef26aa544b137e74312a441ef31..e8b50d3a22200aee67bbd1f327a65b865501cb34 100644 --- "a/data/2.Web\345\256\236\346\210\230\344\270\255\351\230\266/1.web\345\211\215\347\253\257\351\241\271\347\233\256\345\256\236\346\210\230(vue)/4.\351\205\215\347\275\256\350\267\257\347\224\261/config.json" +++ "b/data/2.Web\345\256\236\346\210\230\344\270\255\351\230\266/1.web\345\211\215\347\253\257\351\241\271\347\233\256\345\256\236\346\210\230(vue)/4.\351\205\215\347\275\256\350\267\257\347\224\261/config.json" @@ -1,6 +1,6 @@ { "node_id": "toolchains-e6cbb70c80394cda8c6b2abc0c779fc6", - "keywords": [], + "keywords": ["vue", "route"], "children": [], "export": [], "keywords_must": [], diff --git "a/data/2.Web\345\256\236\346\210\230\344\270\255\351\230\266/1.web\345\211\215\347\253\257\351\241\271\347\233\256\345\256\236\346\210\230(vue)/5.\350\277\233\350\241\214\345\211\215\347\253\257\351\241\271\347\233\256\347\254\254\344\270\200\346\254\241\347\211\210\346\234\254\346\217\220\344\272\244/config.json" "b/data/2.Web\345\256\236\346\210\230\344\270\255\351\230\266/1.web\345\211\215\347\253\257\351\241\271\347\233\256\345\256\236\346\210\230(vue)/5.\350\277\233\350\241\214\345\211\215\347\253\257\351\241\271\347\233\256\347\254\254\344\270\200\346\254\241\347\211\210\346\234\254\346\217\220\344\272\244/config.json" index 7b509c115149866eed3f54155e0a8df580e26f94..cfc9f92b892659cc8f431068dcc8fbbba25b923a 100644 --- "a/data/2.Web\345\256\236\346\210\230\344\270\255\351\230\266/1.web\345\211\215\347\253\257\351\241\271\347\233\256\345\256\236\346\210\230(vue)/5.\350\277\233\350\241\214\345\211\215\347\253\257\351\241\271\347\233\256\347\254\254\344\270\200\346\254\241\347\211\210\346\234\254\346\217\220\344\272\244/config.json" +++ "b/data/2.Web\345\256\236\346\210\230\344\270\255\351\230\266/1.web\345\211\215\347\253\257\351\241\271\347\233\256\345\256\236\346\210\230(vue)/5.\350\277\233\350\241\214\345\211\215\347\253\257\351\241\271\347\233\256\347\254\254\344\270\200\346\254\241\347\211\210\346\234\254\346\217\220\344\272\244/config.json" @@ -1,6 +1,6 @@ { "node_id": "toolchains-c7f2bf5d40ad4d0b955f7f107581223a", - "keywords": [], + "keywords": ["vue", "git", "commit"], "children": [], "export": [], "keywords_must": [], diff --git "a/data/2.Web\345\256\236\346\210\230\344\270\255\351\230\266/1.web\345\211\215\347\253\257\351\241\271\347\233\256\345\256\236\346\210\230(vue)/6.\346\226\260\345\273\272\345\210\206\346\224\257/config.json" "b/data/2.Web\345\256\236\346\210\230\344\270\255\351\230\266/1.web\345\211\215\347\253\257\351\241\271\347\233\256\345\256\236\346\210\230(vue)/6.\346\226\260\345\273\272\345\210\206\346\224\257/config.json" index 615d6464260aeb570470ad28c3a677ff4a558eac..d7e30f80207aa768bb3c1ad5b9928085474609ba 100644 --- "a/data/2.Web\345\256\236\346\210\230\344\270\255\351\230\266/1.web\345\211\215\347\253\257\351\241\271\347\233\256\345\256\236\346\210\230(vue)/6.\346\226\260\345\273\272\345\210\206\346\224\257/config.json" +++ "b/data/2.Web\345\256\236\346\210\230\344\270\255\351\230\266/1.web\345\211\215\347\253\257\351\241\271\347\233\256\345\256\236\346\210\230(vue)/6.\346\226\260\345\273\272\345\210\206\346\224\257/config.json" @@ -1,6 +1,6 @@ { "node_id": "toolchains-eb45a452a6a04511968ef5b15c657a1d", - "keywords": [], + "keywords": ["git", "branch"], "children": [], "export": [], "keywords_must": [], diff --git "a/data/2.Web\345\256\236\346\210\230\344\270\255\351\230\266/1.web\345\211\215\347\253\257\351\241\271\347\233\256\345\256\236\346\210\230(vue)/7.\346\212\275\347\246\273\347\273\204\344\273\266/config.json" "b/data/2.Web\345\256\236\346\210\230\344\270\255\351\230\266/1.web\345\211\215\347\253\257\351\241\271\347\233\256\345\256\236\346\210\230(vue)/7.\346\212\275\347\246\273\347\273\204\344\273\266/config.json" index 9140f12e864660776c83197540b937e08320661b..59e74b3e57c47c05751c71eeda66ea5e4f437e43 100644 --- "a/data/2.Web\345\256\236\346\210\230\344\270\255\351\230\266/1.web\345\211\215\347\253\257\351\241\271\347\233\256\345\256\236\346\210\230(vue)/7.\346\212\275\347\246\273\347\273\204\344\273\266/config.json" +++ "b/data/2.Web\345\256\236\346\210\230\344\270\255\351\230\266/1.web\345\211\215\347\253\257\351\241\271\347\233\256\345\256\236\346\210\230(vue)/7.\346\212\275\347\246\273\347\273\204\344\273\266/config.json" @@ -1,6 +1,6 @@ { "node_id": "toolchains-0f9e83a3974e4db0a7a4a125a2214e4e", - "keywords": [], + "keywords": ["vue", "component"], "children": [], "export": [], "keywords_must": [], diff --git "a/data/2.Web\345\256\236\346\210\230\344\270\255\351\230\266/1.web\345\211\215\347\253\257\351\241\271\347\233\256\345\256\236\346\210\230(vue)/8.\345\220\210\345\271\266\345\210\206\346\224\257/config.json" "b/data/2.Web\345\256\236\346\210\230\344\270\255\351\230\266/1.web\345\211\215\347\253\257\351\241\271\347\233\256\345\256\236\346\210\230(vue)/8.\345\220\210\345\271\266\345\210\206\346\224\257/config.json" index 5f3b0dc7007435a03b4d945b2f3358d38319e141..1d524beff6a9504b8822da57fc64ce18b7a62fc2 100644 --- "a/data/2.Web\345\256\236\346\210\230\344\270\255\351\230\266/1.web\345\211\215\347\253\257\351\241\271\347\233\256\345\256\236\346\210\230(vue)/8.\345\220\210\345\271\266\345\210\206\346\224\257/config.json" +++ "b/data/2.Web\345\256\236\346\210\230\344\270\255\351\230\266/1.web\345\211\215\347\253\257\351\241\271\347\233\256\345\256\236\346\210\230(vue)/8.\345\220\210\345\271\266\345\210\206\346\224\257/config.json" @@ -1,6 +1,6 @@ { "node_id": "toolchains-772b173292fa46b3a5ce1209a22f076f", - "keywords": [], + "keywords": ["git", "merge"], "children": [], "export": [], "keywords_must": [], diff --git "a/data/2.Web\345\256\236\346\210\230\344\270\255\351\230\266/1.web\345\211\215\347\253\257\351\241\271\347\233\256\345\256\236\346\210\230(vue)/9.\350\277\233\344\270\200\346\255\245\346\212\275\347\246\273\347\273\204\344\273\266/config.json" "b/data/2.Web\345\256\236\346\210\230\344\270\255\351\230\266/1.web\345\211\215\347\253\257\351\241\271\347\233\256\345\256\236\346\210\230(vue)/9.\350\277\233\344\270\200\346\255\245\346\212\275\347\246\273\347\273\204\344\273\266/config.json" index 59ea7280db83a2d9e4cab1c841bf56929ba9e6a8..289b21a083b006678c489d826d4ee25a5bec7bce 100644 --- "a/data/2.Web\345\256\236\346\210\230\344\270\255\351\230\266/1.web\345\211\215\347\253\257\351\241\271\347\233\256\345\256\236\346\210\230(vue)/9.\350\277\233\344\270\200\346\255\245\346\212\275\347\246\273\347\273\204\344\273\266/config.json" +++ "b/data/2.Web\345\256\236\346\210\230\344\270\255\351\230\266/1.web\345\211\215\347\253\257\351\241\271\347\233\256\345\256\236\346\210\230(vue)/9.\350\277\233\344\270\200\346\255\245\346\212\275\347\246\273\347\273\204\344\273\266/config.json" @@ -1,6 +1,6 @@ { "node_id": "toolchains-7e6fd53fe3a84f31a8aed859e4e45083", - "keywords": [], + "keywords": ["vue", "component"], "children": [], "export": [], "keywords_must": [], diff --git "a/data/2.Web\345\256\236\346\210\230\344\270\255\351\230\266/2.web\345\220\216\347\253\257\351\241\271\347\233\256\345\256\236\346\210\230(flask)/1.\345\210\233\345\273\272flask\351\241\271\347\233\256/config.json" "b/data/2.Web\345\256\236\346\210\230\344\270\255\351\230\266/2.web\345\220\216\347\253\257\351\241\271\347\233\256\345\256\236\346\210\230(flask)/1.\345\210\233\345\273\272flask\351\241\271\347\233\256/config.json" index 6ef820176eb973712f72e5f0ade651db93b5c38c..90cd495113f4490c9f81218052af24b091927d0d 100644 --- "a/data/2.Web\345\256\236\346\210\230\344\270\255\351\230\266/2.web\345\220\216\347\253\257\351\241\271\347\233\256\345\256\236\346\210\230(flask)/1.\345\210\233\345\273\272flask\351\241\271\347\233\256/config.json" +++ "b/data/2.Web\345\256\236\346\210\230\344\270\255\351\230\266/2.web\345\220\216\347\253\257\351\241\271\347\233\256\345\256\236\346\210\230(flask)/1.\345\210\233\345\273\272flask\351\241\271\347\233\256/config.json" @@ -1,6 +1,6 @@ { "node_id": "toolchains-e1e9c87df6c64d69b44946f6f8bd38f0", - "keywords": [], + "keywords": ["python", "flask"], "children": [], "export": [], "keywords_must": [], diff --git "a/data/2.Web\345\256\236\346\210\230\344\270\255\351\230\266/2.web\345\220\216\347\253\257\351\241\271\347\233\256\345\256\236\346\210\230(flask)/11.\350\256\276\347\275\256\350\256\277\351\227\256\350\267\257\347\224\261/config.json" "b/data/2.Web\345\256\236\346\210\230\344\270\255\351\230\266/2.web\345\220\216\347\253\257\351\241\271\347\233\256\345\256\236\346\210\230(flask)/10.\350\256\276\347\275\256\350\256\277\351\227\256\350\267\257\347\224\261/config.json" similarity index 76% rename from "data/2.Web\345\256\236\346\210\230\344\270\255\351\230\266/2.web\345\220\216\347\253\257\351\241\271\347\233\256\345\256\236\346\210\230(flask)/11.\350\256\276\347\275\256\350\256\277\351\227\256\350\267\257\347\224\261/config.json" rename to "data/2.Web\345\256\236\346\210\230\344\270\255\351\230\266/2.web\345\220\216\347\253\257\351\241\271\347\233\256\345\256\236\346\210\230(flask)/10.\350\256\276\347\275\256\350\256\277\351\227\256\350\267\257\347\224\261/config.json" index 77598ca3a07e7cd813d06f13e2fdf47fd80fa2bb..f112a6f40f6dda82eae0484eb116fc1e72d20ba8 100644 --- "a/data/2.Web\345\256\236\346\210\230\344\270\255\351\230\266/2.web\345\220\216\347\253\257\351\241\271\347\233\256\345\256\236\346\210\230(flask)/11.\350\256\276\347\275\256\350\256\277\351\227\256\350\267\257\347\224\261/config.json" +++ "b/data/2.Web\345\256\236\346\210\230\344\270\255\351\230\266/2.web\345\220\216\347\253\257\351\241\271\347\233\256\345\256\236\346\210\230(flask)/10.\350\256\276\347\275\256\350\256\277\351\227\256\350\267\257\347\224\261/config.json" @@ -1,6 +1,6 @@ { "node_id": "toolchains-9f6fdcbcafd3477897bf16d0dd2be262", - "keywords": [], + "keywords": ["python", "flask", "route"], "children": [], "export": [], "keywords_must": [], diff --git "a/data/2.Web\345\256\236\346\210\230\344\270\255\351\230\266/2.web\345\220\216\347\253\257\351\241\271\347\233\256\345\256\236\346\210\230(flask)/12.\345\256\214\346\210\220\347\254\254\344\270\200\344\270\252\346\216\245\345\217\243\350\277\224\345\233\236json\346\240\274\345\274\217\346\225\260\346\215\256/config.json" "b/data/2.Web\345\256\236\346\210\230\344\270\255\351\230\266/2.web\345\220\216\347\253\257\351\241\271\347\233\256\345\256\236\346\210\230(flask)/11.\345\256\214\346\210\220\347\254\254\344\270\200\344\270\252\346\216\245\345\217\243\350\277\224\345\233\236json\346\240\274\345\274\217\346\225\260\346\215\256/config.json" similarity index 76% rename from "data/2.Web\345\256\236\346\210\230\344\270\255\351\230\266/2.web\345\220\216\347\253\257\351\241\271\347\233\256\345\256\236\346\210\230(flask)/12.\345\256\214\346\210\220\347\254\254\344\270\200\344\270\252\346\216\245\345\217\243\350\277\224\345\233\236json\346\240\274\345\274\217\346\225\260\346\215\256/config.json" rename to "data/2.Web\345\256\236\346\210\230\344\270\255\351\230\266/2.web\345\220\216\347\253\257\351\241\271\347\233\256\345\256\236\346\210\230(flask)/11.\345\256\214\346\210\220\347\254\254\344\270\200\344\270\252\346\216\245\345\217\243\350\277\224\345\233\236json\346\240\274\345\274\217\346\225\260\346\215\256/config.json" index be0b0c9c0c504627407d73890afd96f1eecc02df..a533e276c6e5e9a1f8570ea76e7a52a01f772271 100644 --- "a/data/2.Web\345\256\236\346\210\230\344\270\255\351\230\266/2.web\345\220\216\347\253\257\351\241\271\347\233\256\345\256\236\346\210\230(flask)/12.\345\256\214\346\210\220\347\254\254\344\270\200\344\270\252\346\216\245\345\217\243\350\277\224\345\233\236json\346\240\274\345\274\217\346\225\260\346\215\256/config.json" +++ "b/data/2.Web\345\256\236\346\210\230\344\270\255\351\230\266/2.web\345\220\216\347\253\257\351\241\271\347\233\256\345\256\236\346\210\230(flask)/11.\345\256\214\346\210\220\347\254\254\344\270\200\344\270\252\346\216\245\345\217\243\350\277\224\345\233\236json\346\240\274\345\274\217\346\225\260\346\215\256/config.json" @@ -1,6 +1,6 @@ { "node_id": "toolchains-286ed617cbac42a29dbd757361f1f0b3", - "keywords": [], + "keywords": ["python", "flask", "json"], "children": [], "export": [], "keywords_must": [], diff --git "a/data/2.Web\345\256\236\346\210\230\344\270\255\351\230\266/2.web\345\220\216\347\253\257\351\241\271\347\233\256\345\256\236\346\210\230(flask)/13.\350\216\267\345\217\226\350\241\250\345\215\225\346\225\260\346\215\256\345\271\266\345\260\206\346\225\260\346\215\256\344\277\235\345\255\230\345\210\260\346\225\260\346\215\256\345\272\223/config.json" "b/data/2.Web\345\256\236\346\210\230\344\270\255\351\230\266/2.web\345\220\216\347\253\257\351\241\271\347\233\256\345\256\236\346\210\230(flask)/12.\350\216\267\345\217\226\350\241\250\345\215\225\346\225\260\346\215\256\345\271\266\345\260\206\346\225\260\346\215\256\344\277\235\345\255\230\345\210\260\346\225\260\346\215\256\345\272\223/config.json" similarity index 69% rename from "data/2.Web\345\256\236\346\210\230\344\270\255\351\230\266/2.web\345\220\216\347\253\257\351\241\271\347\233\256\345\256\236\346\210\230(flask)/13.\350\216\267\345\217\226\350\241\250\345\215\225\346\225\260\346\215\256\345\271\266\345\260\206\346\225\260\346\215\256\344\277\235\345\255\230\345\210\260\346\225\260\346\215\256\345\272\223/config.json" rename to "data/2.Web\345\256\236\346\210\230\344\270\255\351\230\266/2.web\345\220\216\347\253\257\351\241\271\347\233\256\345\256\236\346\210\230(flask)/12.\350\216\267\345\217\226\350\241\250\345\215\225\346\225\260\346\215\256\345\271\266\345\260\206\346\225\260\346\215\256\344\277\235\345\255\230\345\210\260\346\225\260\346\215\256\345\272\223/config.json" index 3d98eda76e9acc633c5acf00e71fdfeb1cf0784c..ae29915f30c742e34ebd03fa43662320332969ca 100644 --- "a/data/2.Web\345\256\236\346\210\230\344\270\255\351\230\266/2.web\345\220\216\347\253\257\351\241\271\347\233\256\345\256\236\346\210\230(flask)/13.\350\216\267\345\217\226\350\241\250\345\215\225\346\225\260\346\215\256\345\271\266\345\260\206\346\225\260\346\215\256\344\277\235\345\255\230\345\210\260\346\225\260\346\215\256\345\272\223/config.json" +++ "b/data/2.Web\345\256\236\346\210\230\344\270\255\351\230\266/2.web\345\220\216\347\253\257\351\241\271\347\233\256\345\256\236\346\210\230(flask)/12.\350\216\267\345\217\226\350\241\250\345\215\225\346\225\260\346\215\256\345\271\266\345\260\206\346\225\260\346\215\256\344\277\235\345\255\230\345\210\260\346\225\260\346\215\256\345\272\223/config.json" @@ -1,6 +1,6 @@ { "node_id": "toolchains-93040f93301f41d080b62385eeb59d70", - "keywords": [], + "keywords": ["python", "flask", "form", "post", "database"], "children": [], "export": [], "keywords_must": [], diff --git "a/data/2.Web\345\256\236\346\210\230\344\270\255\351\230\266/2.web\345\220\216\347\253\257\351\241\271\347\233\256\345\256\236\346\210\230(flask)/14.\344\275\277\347\224\250\350\243\205\351\245\260\345\231\250\350\256\276\347\275\256\344\270\255\351\227\264\344\273\266\346\213\246\346\210\252\350\257\267\346\261\202/config.json" "b/data/2.Web\345\256\236\346\210\230\344\270\255\351\230\266/2.web\345\220\216\347\253\257\351\241\271\347\233\256\345\256\236\346\210\230(flask)/13.\344\275\277\347\224\250\350\243\205\351\245\260\345\231\250\350\256\276\347\275\256\344\270\255\351\227\264\344\273\266\346\213\246\346\210\252\350\257\267\346\261\202/config.json" similarity index 74% rename from "data/2.Web\345\256\236\346\210\230\344\270\255\351\230\266/2.web\345\220\216\347\253\257\351\241\271\347\233\256\345\256\236\346\210\230(flask)/14.\344\275\277\347\224\250\350\243\205\351\245\260\345\231\250\350\256\276\347\275\256\344\270\255\351\227\264\344\273\266\346\213\246\346\210\252\350\257\267\346\261\202/config.json" rename to "data/2.Web\345\256\236\346\210\230\344\270\255\351\230\266/2.web\345\220\216\347\253\257\351\241\271\347\233\256\345\256\236\346\210\230(flask)/13.\344\275\277\347\224\250\350\243\205\351\245\260\345\231\250\350\256\276\347\275\256\344\270\255\351\227\264\344\273\266\346\213\246\346\210\252\350\257\267\346\261\202/config.json" index 92639e45bfdba4af289378930ca6ca6bc50ad4a4..a98c7382dd96cf9249596d750256cf0452f7ae2e 100644 --- "a/data/2.Web\345\256\236\346\210\230\344\270\255\351\230\266/2.web\345\220\216\347\253\257\351\241\271\347\233\256\345\256\236\346\210\230(flask)/14.\344\275\277\347\224\250\350\243\205\351\245\260\345\231\250\350\256\276\347\275\256\344\270\255\351\227\264\344\273\266\346\213\246\346\210\252\350\257\267\346\261\202/config.json" +++ "b/data/2.Web\345\256\236\346\210\230\344\270\255\351\230\266/2.web\345\220\216\347\253\257\351\241\271\347\233\256\345\256\236\346\210\230(flask)/13.\344\275\277\347\224\250\350\243\205\351\245\260\345\231\250\350\256\276\347\275\256\344\270\255\351\227\264\344\273\266\346\213\246\346\210\252\350\257\267\346\261\202/config.json" @@ -1,6 +1,6 @@ { "node_id": "toolchains-3a33244e3ab6490e9819a30d8cae5612", - "keywords": [], + "keywords": ["python", "flask", "decorator"], "children": [], "export": [], "keywords_must": [], diff --git "a/data/2.Web\345\256\236\346\210\230\344\270\255\351\230\266/2.web\345\220\216\347\253\257\351\241\271\347\233\256\345\256\236\346\210\230(flask)/15.\350\277\236\346\216\245redis/config.json" "b/data/2.Web\345\256\236\346\210\230\344\270\255\351\230\266/2.web\345\220\216\347\253\257\351\241\271\347\233\256\345\256\236\346\210\230(flask)/14.\350\277\236\346\216\245redis/config.json" similarity index 76% rename from "data/2.Web\345\256\236\346\210\230\344\270\255\351\230\266/2.web\345\220\216\347\253\257\351\241\271\347\233\256\345\256\236\346\210\230(flask)/15.\350\277\236\346\216\245redis/config.json" rename to "data/2.Web\345\256\236\346\210\230\344\270\255\351\230\266/2.web\345\220\216\347\253\257\351\241\271\347\233\256\345\256\236\346\210\230(flask)/14.\350\277\236\346\216\245redis/config.json" index dcb56bbc45b6bdf87d067c3fb645f901096ad823..0a0ef1a468d899dab0b9d3baef147bd420cbf552 100644 --- "a/data/2.Web\345\256\236\346\210\230\344\270\255\351\230\266/2.web\345\220\216\347\253\257\351\241\271\347\233\256\345\256\236\346\210\230(flask)/15.\350\277\236\346\216\245redis/config.json" +++ "b/data/2.Web\345\256\236\346\210\230\344\270\255\351\230\266/2.web\345\220\216\347\253\257\351\241\271\347\233\256\345\256\236\346\210\230(flask)/14.\350\277\236\346\216\245redis/config.json" @@ -1,6 +1,6 @@ { "node_id": "toolchains-2f9cd0de2cc14dcb9ba4a1e76547b72b", - "keywords": [], + "keywords": ["python", "flask", "redis"], "children": [], "export": [], "keywords_must": [], diff --git "a/data/2.Web\345\256\236\346\210\230\344\270\255\351\230\266/2.web\345\220\216\347\253\257\351\241\271\347\233\256\345\256\236\346\210\230(flask)/16.\344\275\277\347\224\250\344\273\244\347\211\214\351\252\214\350\257\201\345\256\242\346\210\267\347\253\257\350\272\253\344\273\275/config.json" "b/data/2.Web\345\256\236\346\210\230\344\270\255\351\230\266/2.web\345\220\216\347\253\257\351\241\271\347\233\256\345\256\236\346\210\230(flask)/15.\344\275\277\347\224\250\344\273\244\347\211\214\351\252\214\350\257\201\345\256\242\346\210\267\347\253\257\350\272\253\344\273\275/config.json" similarity index 72% rename from "data/2.Web\345\256\236\346\210\230\344\270\255\351\230\266/2.web\345\220\216\347\253\257\351\241\271\347\233\256\345\256\236\346\210\230(flask)/16.\344\275\277\347\224\250\344\273\244\347\211\214\351\252\214\350\257\201\345\256\242\346\210\267\347\253\257\350\272\253\344\273\275/config.json" rename to "data/2.Web\345\256\236\346\210\230\344\270\255\351\230\266/2.web\345\220\216\347\253\257\351\241\271\347\233\256\345\256\236\346\210\230(flask)/15.\344\275\277\347\224\250\344\273\244\347\211\214\351\252\214\350\257\201\345\256\242\346\210\267\347\253\257\350\272\253\344\273\275/config.json" index 5d3d9d53297d94120737f67459366c8944522657..829cc57c6f8608ada2992fbb66b300c91f5b0fd8 100644 --- "a/data/2.Web\345\256\236\346\210\230\344\270\255\351\230\266/2.web\345\220\216\347\253\257\351\241\271\347\233\256\345\256\236\346\210\230(flask)/16.\344\275\277\347\224\250\344\273\244\347\211\214\351\252\214\350\257\201\345\256\242\346\210\267\347\253\257\350\272\253\344\273\275/config.json" +++ "b/data/2.Web\345\256\236\346\210\230\344\270\255\351\230\266/2.web\345\220\216\347\253\257\351\241\271\347\233\256\345\256\236\346\210\230(flask)/15.\344\275\277\347\224\250\344\273\244\347\211\214\351\252\214\350\257\201\345\256\242\346\210\267\347\253\257\350\272\253\344\273\275/config.json" @@ -1,6 +1,6 @@ { "node_id": "toolchains-d1a69b26dab3472ca23bab5cf4dfd40a", - "keywords": [], + "keywords": ["python", "flask", "auth", "token"], "children": [], "export": [], "keywords_must": [], diff --git "a/data/2.Web\345\256\236\346\210\230\344\270\255\351\230\266/2.web\345\220\216\347\253\257\351\241\271\347\233\256\345\256\236\346\210\230(flask)/2.\351\205\215\347\275\256\345\271\266\344\275\277\347\224\250IDE(pycharm)/config.json" "b/data/2.Web\345\256\236\346\210\230\344\270\255\351\230\266/2.web\345\220\216\347\253\257\351\241\271\347\233\256\345\256\236\346\210\230(flask)/2.\351\205\215\347\275\256\345\271\266\344\275\277\347\224\250IDE(pycharm)/config.json" index 51eb4d5c5fe7c8b62e93fa4ddba9d5ce6d59db53..5c40d5c90b60c9a8d56ee099ff2be10ff207c847 100644 --- "a/data/2.Web\345\256\236\346\210\230\344\270\255\351\230\266/2.web\345\220\216\347\253\257\351\241\271\347\233\256\345\256\236\346\210\230(flask)/2.\351\205\215\347\275\256\345\271\266\344\275\277\347\224\250IDE(pycharm)/config.json" +++ "b/data/2.Web\345\256\236\346\210\230\344\270\255\351\230\266/2.web\345\220\216\347\253\257\351\241\271\347\233\256\345\256\236\346\210\230(flask)/2.\351\205\215\347\275\256\345\271\266\344\275\277\347\224\250IDE(pycharm)/config.json" @@ -1,6 +1,6 @@ { "node_id": "toolchains-807a4d7ac2c543df8668d6be52dbdae3", - "keywords": [], + "keywords": ["python", "pycharm"], "children": [], "export": [], "keywords_must": [], diff --git "a/data/2.Web\345\256\236\346\210\230\344\270\255\351\230\266/2.web\345\220\216\347\253\257\351\241\271\347\233\256\345\256\236\346\210\230(flask)/3.\345\210\233\345\273\272\351\241\271\347\233\256\351\205\215\347\275\256\346\226\207\344\273\266/config.json" "b/data/2.Web\345\256\236\346\210\230\344\270\255\351\230\266/2.web\345\220\216\347\253\257\351\241\271\347\233\256\345\256\236\346\210\230(flask)/3.\345\210\233\345\273\272\351\241\271\347\233\256\351\205\215\347\275\256\346\226\207\344\273\266/config.json" index 9fdf31124c53a1e1b3679da23848d8a020c9ce50..5619d55e183dbba27b9f6bdf69a84227c5c94b63 100644 --- "a/data/2.Web\345\256\236\346\210\230\344\270\255\351\230\266/2.web\345\220\216\347\253\257\351\241\271\347\233\256\345\256\236\346\210\230(flask)/3.\345\210\233\345\273\272\351\241\271\347\233\256\351\205\215\347\275\256\346\226\207\344\273\266/config.json" +++ "b/data/2.Web\345\256\236\346\210\230\344\270\255\351\230\266/2.web\345\220\216\347\253\257\351\241\271\347\233\256\345\256\236\346\210\230(flask)/3.\345\210\233\345\273\272\351\241\271\347\233\256\351\205\215\347\275\256\346\226\207\344\273\266/config.json" @@ -1,6 +1,6 @@ { "node_id": "toolchains-d2f1500609564ae8b7d9f33f1c03edf4", - "keywords": [], + "keywords": ["flask", "config", "settings"], "children": [], "export": [], "keywords_must": [], diff --git "a/data/2.Web\345\256\236\346\210\230\344\270\255\351\230\266/2.web\345\220\216\347\253\257\351\241\271\347\233\256\345\256\236\346\210\230(flask)/4.\350\277\233\350\241\214\345\210\235\346\254\241\345\220\216\347\253\257\347\211\210\346\234\254\346\217\220\344\272\244/config.json" "b/data/2.Web\345\256\236\346\210\230\344\270\255\351\230\266/2.web\345\220\216\347\253\257\351\241\271\347\233\256\345\256\236\346\210\230(flask)/4.\350\277\233\350\241\214\345\210\235\346\254\241\345\220\216\347\253\257\347\211\210\346\234\254\346\217\220\344\272\244/config.json" index 8827bf5470e24ea3ef851646a3e872faf8b22536..09a0680f983f294d5289dcb2f75f3a77ea49df3a 100644 --- "a/data/2.Web\345\256\236\346\210\230\344\270\255\351\230\266/2.web\345\220\216\347\253\257\351\241\271\347\233\256\345\256\236\346\210\230(flask)/4.\350\277\233\350\241\214\345\210\235\346\254\241\345\220\216\347\253\257\347\211\210\346\234\254\346\217\220\344\272\244/config.json" +++ "b/data/2.Web\345\256\236\346\210\230\344\270\255\351\230\266/2.web\345\220\216\347\253\257\351\241\271\347\233\256\345\256\236\346\210\230(flask)/4.\350\277\233\350\241\214\345\210\235\346\254\241\345\220\216\347\253\257\347\211\210\346\234\254\346\217\220\344\272\244/config.json" @@ -1,6 +1,6 @@ { "node_id": "toolchains-d34786cfe2d34f1ebbcc381f7234feeb", - "keywords": [], + "keywords": ["git", "commit"], "children": [], "export": [], "keywords_must": [], diff --git "a/data/2.Web\345\256\236\346\210\230\344\270\255\351\230\266/2.web\345\220\216\347\253\257\351\241\271\347\233\256\345\256\236\346\210\230(flask)/5.\350\256\276\347\275\256\346\225\260\346\215\256\345\272\223\350\277\236\346\216\245(mysql)/config.json" "b/data/2.Web\345\256\236\346\210\230\344\270\255\351\230\266/2.web\345\220\216\347\253\257\351\241\271\347\233\256\345\256\236\346\210\230(flask)/5.\350\256\276\347\275\256\346\225\260\346\215\256\345\272\223\350\277\236\346\216\245(mysql)/config.json" index df0e3be18f3322e36dbc890a1d135078fa821ef4..255db1bea7660df66ca6367f9e97f40d54011d60 100644 --- "a/data/2.Web\345\256\236\346\210\230\344\270\255\351\230\266/2.web\345\220\216\347\253\257\351\241\271\347\233\256\345\256\236\346\210\230(flask)/5.\350\256\276\347\275\256\346\225\260\346\215\256\345\272\223\350\277\236\346\216\245(mysql)/config.json" +++ "b/data/2.Web\345\256\236\346\210\230\344\270\255\351\230\266/2.web\345\220\216\347\253\257\351\241\271\347\233\256\345\256\236\346\210\230(flask)/5.\350\256\276\347\275\256\346\225\260\346\215\256\345\272\223\350\277\236\346\216\245(mysql)/config.json" @@ -1,6 +1,6 @@ { "node_id": "toolchains-238848692f9e479c928f1a003acb8ffe", - "keywords": [], + "keywords": ["python", "mysql", "dbapi"], "children": [], "export": [], "keywords_must": [], diff --git "a/data/2.Web\345\256\236\346\210\230\344\270\255\351\230\266/2.web\345\220\216\347\253\257\351\241\271\347\233\256\345\256\236\346\210\230(flask)/6.\344\275\277\347\224\250sqlalchemy/config.json" "b/data/2.Web\345\256\236\346\210\230\344\270\255\351\230\266/2.web\345\220\216\347\253\257\351\241\271\347\233\256\345\256\236\346\210\230(flask)/6.\344\275\277\347\224\250sqlalchemy/config.json" index da64500d7863c84f6ee004fd3a7608121ac06811..5a547467e8d50e4fbabe0cdfbd36efce9563201e 100644 --- "a/data/2.Web\345\256\236\346\210\230\344\270\255\351\230\266/2.web\345\220\216\347\253\257\351\241\271\347\233\256\345\256\236\346\210\230(flask)/6.\344\275\277\347\224\250sqlalchemy/config.json" +++ "b/data/2.Web\345\256\236\346\210\230\344\270\255\351\230\266/2.web\345\220\216\347\253\257\351\241\271\347\233\256\345\256\236\346\210\230(flask)/6.\344\275\277\347\224\250sqlalchemy/config.json" @@ -1,6 +1,6 @@ { "node_id": "toolchains-f3a77b9ee7cd4687b8fdfa1a7e9ee70d", - "keywords": [], + "keywords": ["python", "sqlalchemy"], "children": [], "export": [], "keywords_must": [], diff --git "a/data/2.Web\345\256\236\346\210\230\344\270\255\351\230\266/2.web\345\220\216\347\253\257\351\241\271\347\233\256\345\256\236\346\210\230(flask)/7.\351\205\215\347\275\256\346\225\260\346\215\256\346\250\241\345\236\213/config.json" "b/data/2.Web\345\256\236\346\210\230\344\270\255\351\230\266/2.web\345\220\216\347\253\257\351\241\271\347\233\256\345\256\236\346\210\230(flask)/7.\351\205\215\347\275\256\346\225\260\346\215\256\346\250\241\345\236\213/config.json" index b00bc797eba164f2b331d3c26e2f6d8ff6dceaef..837aee59072c2e8a01f84581154db3e564ed6980 100644 --- "a/data/2.Web\345\256\236\346\210\230\344\270\255\351\230\266/2.web\345\220\216\347\253\257\351\241\271\347\233\256\345\256\236\346\210\230(flask)/7.\351\205\215\347\275\256\346\225\260\346\215\256\346\250\241\345\236\213/config.json" +++ "b/data/2.Web\345\256\236\346\210\230\344\270\255\351\230\266/2.web\345\220\216\347\253\257\351\241\271\347\233\256\345\256\236\346\210\230(flask)/7.\351\205\215\347\275\256\346\225\260\346\215\256\346\250\241\345\236\213/config.json" @@ -1,6 +1,6 @@ { "node_id": "toolchains-c17747cb6fb34e0782cd63103c26059f", - "keywords": [], + "keywords": ["flask", "python", "sqlalchemy", "model"], "children": [], "export": [], "keywords_must": [], diff --git "a/data/2.Web\345\256\236\346\210\230\344\270\255\351\230\266/2.web\345\220\216\347\253\257\351\241\271\347\233\256\345\256\236\346\210\230(flask)/9.\344\275\277\347\224\250\346\225\260\346\215\256\350\277\201\347\247\273\345\210\235\345\247\213\345\214\226\346\225\260\346\215\256\345\272\223/config.json" "b/data/2.Web\345\256\236\346\210\230\344\270\255\351\230\266/2.web\345\220\216\347\253\257\351\241\271\347\233\256\345\256\236\346\210\230(flask)/8.\344\275\277\347\224\250\346\225\260\346\215\256\350\277\201\347\247\273\345\210\235\345\247\213\345\214\226\346\225\260\346\215\256\345\272\223/config.json" similarity index 69% rename from "data/2.Web\345\256\236\346\210\230\344\270\255\351\230\266/2.web\345\220\216\347\253\257\351\241\271\347\233\256\345\256\236\346\210\230(flask)/9.\344\275\277\347\224\250\346\225\260\346\215\256\350\277\201\347\247\273\345\210\235\345\247\213\345\214\226\346\225\260\346\215\256\345\272\223/config.json" rename to "data/2.Web\345\256\236\346\210\230\344\270\255\351\230\266/2.web\345\220\216\347\253\257\351\241\271\347\233\256\345\256\236\346\210\230(flask)/8.\344\275\277\347\224\250\346\225\260\346\215\256\350\277\201\347\247\273\345\210\235\345\247\213\345\214\226\346\225\260\346\215\256\345\272\223/config.json" index 33f70c1f4c0d0911ae52f1dc1e552d53b61bc77e..49479a05282ec0e5917f0dae4ec5dfcd244e5923 100644 --- "a/data/2.Web\345\256\236\346\210\230\344\270\255\351\230\266/2.web\345\220\216\347\253\257\351\241\271\347\233\256\345\256\236\346\210\230(flask)/9.\344\275\277\347\224\250\346\225\260\346\215\256\350\277\201\347\247\273\345\210\235\345\247\213\345\214\226\346\225\260\346\215\256\345\272\223/config.json" +++ "b/data/2.Web\345\256\236\346\210\230\344\270\255\351\230\266/2.web\345\220\216\347\253\257\351\241\271\347\233\256\345\256\236\346\210\230(flask)/8.\344\275\277\347\224\250\346\225\260\346\215\256\350\277\201\347\247\273\345\210\235\345\247\213\345\214\226\346\225\260\346\215\256\345\272\223/config.json" @@ -1,6 +1,6 @@ { "node_id": "toolchains-64e0f059275740a6abc4808a35f3e2d2", - "keywords": [], + "keywords": ["python", "flask", "sqlalchemy", "migration"], "children": [], "export": [], "keywords_must": [], diff --git "a/data/2.Web\345\256\236\346\210\230\344\270\255\351\230\266/2.web\345\220\216\347\253\257\351\241\271\347\233\256\345\256\236\346\210\230(flask)/8.\351\205\215\347\275\256\346\225\260\346\215\256\346\250\241\345\236\213/config.json" "b/data/2.Web\345\256\236\346\210\230\344\270\255\351\230\266/2.web\345\220\216\347\253\257\351\241\271\347\233\256\345\256\236\346\210\230(flask)/8.\351\205\215\347\275\256\346\225\260\346\215\256\346\250\241\345\236\213/config.json" deleted file mode 100644 index 6857817d65da00c9b6e539bcb0db5404cfdd459e..0000000000000000000000000000000000000000 --- "a/data/2.Web\345\256\236\346\210\230\344\270\255\351\230\266/2.web\345\220\216\347\253\257\351\241\271\347\233\256\345\256\236\346\210\230(flask)/8.\351\205\215\347\275\256\346\225\260\346\215\256\346\250\241\345\236\213/config.json" +++ /dev/null @@ -1,8 +0,0 @@ -{ - "node_id": "toolchains-d96ecd596dba40ffbbca6d364a9bae6d", - "keywords": [], - "children": [], - "export": [], - "keywords_must": [], - "keywords_forbid": [] -} \ No newline at end of file diff --git "a/data/2.Web\345\256\236\346\210\230\344\270\255\351\230\266/2.web\345\220\216\347\253\257\351\241\271\347\233\256\345\256\236\346\210\230(flask)/10.\351\205\215\347\275\256\346\225\260\346\215\256\346\250\241\345\236\213\345\272\217\345\210\227\345\214\226\345\267\245\345\205\267/config.json" "b/data/2.Web\345\256\236\346\210\230\344\270\255\351\230\266/2.web\345\220\216\347\253\257\351\241\271\347\233\256\345\256\236\346\210\230(flask)/9.\351\205\215\347\275\256\346\225\260\346\215\256\346\250\241\345\236\213\345\272\217\345\210\227\345\214\226\345\267\245\345\205\267/config.json" similarity index 68% rename from "data/2.Web\345\256\236\346\210\230\344\270\255\351\230\266/2.web\345\220\216\347\253\257\351\241\271\347\233\256\345\256\236\346\210\230(flask)/10.\351\205\215\347\275\256\346\225\260\346\215\256\346\250\241\345\236\213\345\272\217\345\210\227\345\214\226\345\267\245\345\205\267/config.json" rename to "data/2.Web\345\256\236\346\210\230\344\270\255\351\230\266/2.web\345\220\216\347\253\257\351\241\271\347\233\256\345\256\236\346\210\230(flask)/9.\351\205\215\347\275\256\346\225\260\346\215\256\346\250\241\345\236\213\345\272\217\345\210\227\345\214\226\345\267\245\345\205\267/config.json" index 8a365bd1a7715daaffce9c382ceec8cac54ff4fc..9adc89c6a9eb48a1445fb7937a8540e870e79229 100644 --- "a/data/2.Web\345\256\236\346\210\230\344\270\255\351\230\266/2.web\345\220\216\347\253\257\351\241\271\347\233\256\345\256\236\346\210\230(flask)/10.\351\205\215\347\275\256\346\225\260\346\215\256\346\250\241\345\236\213\345\272\217\345\210\227\345\214\226\345\267\245\345\205\267/config.json" +++ "b/data/2.Web\345\256\236\346\210\230\344\270\255\351\230\266/2.web\345\220\216\347\253\257\351\241\271\347\233\256\345\256\236\346\210\230(flask)/9.\351\205\215\347\275\256\346\225\260\346\215\256\346\250\241\345\236\213\345\272\217\345\210\227\345\214\226\345\267\245\345\205\267/config.json" @@ -1,6 +1,6 @@ { "node_id": "toolchains-179bf9f789a24f83beccaecd621474e1", - "keywords": [], + "keywords": ["python", "flask", "sqlalchemy", "serialization"], "children": [], "export": [], "keywords_must": [], diff --git a/data/tree.json b/data/tree.json index cb3e7353e7effd472ae9adc1d4cd0be82ba973b8..706298ecfe1caeac453f6f44d506aae2abc48d73 100644 --- a/data/tree.json +++ b/data/tree.json @@ -16,7 +16,10 @@ { "创建项目工作空间根目录": { "node_id": "toolchains-0c52dc8621ed42f6b587b99705ca744d", - "keywords": [], + "keywords": [ + "web", + "工作空间" + ], "children": [], "keywords_must": [], "keywords_forbid": [] @@ -25,7 +28,9 @@ { "初始化git仓库": { "node_id": "toolchains-e5762965dec14f8a873428e4c04409d6", - "keywords": [], + "keywords": [ + "git" + ], "children": [], "keywords_must": [], "keywords_forbid": [] @@ -34,7 +39,10 @@ { "创建gitignore文件": { "node_id": "toolchains-02d8f669d1c745d599a2b321c6d15ca1", - "keywords": [], + "keywords": [ + "git", + "gitignore" + ], "children": [], "keywords_must": [], "keywords_forbid": [] @@ -43,7 +51,9 @@ { "添加项目README.md文档": { "node_id": "toolchains-b10e540d16da4c6b9ce71128fe712750", - "keywords": [], + "keywords": [ + "readme" + ], "children": [], "keywords_must": [], "keywords_forbid": [] @@ -52,7 +62,10 @@ { "完成第一次本地仓库提交": { "node_id": "toolchains-9c268abdef7e4712828235a4696329c5", - "keywords": [], + "keywords": [ + "git", + "commit" + ], "children": [], "keywords_must": [], "keywords_forbid": [] @@ -71,7 +84,10 @@ { "注册codechina账户": { "node_id": "toolchains-1bfc87efcfe04179bba64f6874688ca5", - "keywords": [], + "keywords": [ + "codechina", + "gitcode" + ], "children": [], "keywords_must": [], "keywords_forbid": [] @@ -80,7 +96,9 @@ { "创建项目组织": { "node_id": "toolchains-4a090ef0913f41b9a25348b2a4c5498f", - "keywords": [], + "keywords": [ + "项目组织" + ], "children": [], "keywords_must": [], "keywords_forbid": [] @@ -89,7 +107,10 @@ { "创建远程仓库": { "node_id": "toolchains-d97f24c1f51e47e69e220e37975e49da", - "keywords": [], + "keywords": [ + "git", + "remote" + ], "children": [], "keywords_must": [], "keywords_forbid": [] @@ -98,7 +119,11 @@ { "配置密钥": { "node_id": "toolchains-a7f5610f9a3242fa9ed3c9445b40d5a3", - "keywords": [], + "keywords": [ + "git", + "key", + "ssh" + ], "children": [], "keywords_must": [], "keywords_forbid": [] @@ -107,7 +132,10 @@ { "管理仓库权限": { "node_id": "toolchains-d110b9f5b6db482683cf117265eac2e0", - "keywords": [], + "keywords": [ + "git", + "权限" + ], "children": [], "keywords_must": [], "keywords_forbid": [] @@ -116,7 +144,11 @@ { "将本地仓库关联并推送到远程仓库": { "node_id": "toolchains-ffc3c659453a48d19673ac82965d05e8", - "keywords": [], + "keywords": [ + "git", + "remote", + "push" + ], "children": [], "keywords_must": [], "keywords_forbid": [] @@ -125,7 +157,10 @@ { "项目成员和权限管理": { "node_id": "toolchains-3a1f4be17fcb4fc38907585dd297d48e", - "keywords": [], + "keywords": [ + "user", + "permission" + ], "children": [], "keywords_must": [], "keywords_forbid": [] @@ -144,7 +179,10 @@ { "安装nodejs环境": { "node_id": "toolchains-adb4004580bc476a85d513d0be3a5033", - "keywords": [], + "keywords": [ + "nodejs", + "install" + ], "children": [], "keywords_must": [], "keywords_forbid": [] @@ -153,7 +191,9 @@ { "解决国外npm源下载速度与访问限制问题": { "node_id": "toolchains-9493364f64ac4e0abe44b544b90546a3", - "keywords": [], + "keywords": [ + "npm" + ], "children": [], "keywords_must": [], "keywords_forbid": [] @@ -162,7 +202,10 @@ { "在项目工作空间中创建前端项目目录": { "node_id": "toolchains-720ff92db7e94d0db637f7f3329ed92a", - "keywords": [], + "keywords": [ + "npm", + "project" + ], "children": [], "keywords_must": [], "keywords_forbid": [] @@ -171,7 +214,9 @@ { "开发前准备工作(VUE版)": { "node_id": "toolchains-e997d39c64ea47e381d0f7097866abdf", - "keywords": [], + "keywords": [ + "vue" + ], "children": [], "keywords_must": [], "keywords_forbid": [] @@ -190,7 +235,10 @@ { "安装anaconda": { "node_id": "toolchains-b3950355b1cc40dfb66e37eb0c6523c8", - "keywords": [], + "keywords": [ + "python", + "anaconda" + ], "children": [], "keywords_must": [], "keywords_forbid": [] @@ -199,7 +247,10 @@ { "在工作空间中创建后端项目目录": { "node_id": "toolchains-d117cf4df65c429cba528a1d9f3c3e27", - "keywords": [], + "keywords": [ + "python", + "project" + ], "children": [], "keywords_must": [], "keywords_forbid": [] @@ -208,7 +259,11 @@ { "创建虚拟环境": { "node_id": "toolchains-37e699a027764e44817f3432debd449c", - "keywords": [], + "keywords": [ + "python", + "venv", + "virtualenv" + ], "children": [], "keywords_must": [], "keywords_forbid": [] @@ -217,7 +272,10 @@ { "项目开发前准备工作(flask版)": { "node_id": "toolchains-172e7ed9e81c4042bcb3e43de8712532", - "keywords": [], + "keywords": [ + "python", + "flask" + ], "children": [], "keywords_must": [], "keywords_forbid": [] @@ -246,7 +304,9 @@ { "使用vue脚手架创建项目": { "node_id": "toolchains-627cf848cba64a56b6b5a3cd550bfec7", - "keywords": [], + "keywords": [ + "vue" + ], "children": [], "keywords_must": [], "keywords_forbid": [] @@ -255,7 +315,10 @@ { "项目源码及目录结构说明": { "node_id": "toolchains-8b07ab0558ef451b9bdf111107034eba", - "keywords": [], + "keywords": [ + "vue", + "project" + ], "children": [], "keywords_must": [], "keywords_forbid": [] @@ -264,7 +327,10 @@ { "创建第一个页面": { "node_id": "toolchains-5c9d4bcbe11942d3a869ab47df26c097", - "keywords": [], + "keywords": [ + "vue", + "page" + ], "children": [], "keywords_must": [], "keywords_forbid": [] @@ -273,7 +339,10 @@ { "配置路由": { "node_id": "toolchains-e6cbb70c80394cda8c6b2abc0c779fc6", - "keywords": [], + "keywords": [ + "vue", + "route" + ], "children": [], "keywords_must": [], "keywords_forbid": [] @@ -282,7 +351,11 @@ { "进行前端项目第一次版本提交": { "node_id": "toolchains-c7f2bf5d40ad4d0b955f7f107581223a", - "keywords": [], + "keywords": [ + "vue", + "git", + "commit" + ], "children": [], "keywords_must": [], "keywords_forbid": [] @@ -291,7 +364,10 @@ { "新建分支": { "node_id": "toolchains-eb45a452a6a04511968ef5b15c657a1d", - "keywords": [], + "keywords": [ + "git", + "branch" + ], "children": [], "keywords_must": [], "keywords_forbid": [] @@ -300,7 +376,10 @@ { "抽离组件": { "node_id": "toolchains-0f9e83a3974e4db0a7a4a125a2214e4e", - "keywords": [], + "keywords": [ + "vue", + "component" + ], "children": [], "keywords_must": [], "keywords_forbid": [] @@ -309,7 +388,10 @@ { "合并分支": { "node_id": "toolchains-772b173292fa46b3a5ce1209a22f076f", - "keywords": [], + "keywords": [ + "git", + "merge" + ], "children": [], "keywords_must": [], "keywords_forbid": [] @@ -318,7 +400,10 @@ { "进一步抽离组件": { "node_id": "toolchains-7e6fd53fe3a84f31a8aed859e4e45083", - "keywords": [], + "keywords": [ + "vue", + "component" + ], "children": [], "keywords_must": [], "keywords_forbid": [] @@ -327,7 +412,12 @@ { "分支冲突处理": { "node_id": "toolchains-666893ee200a4d6db5435abd09d8f47a", - "keywords": [], + "keywords": [ + "git", + "merge", + "conflict", + "resolve" + ], "children": [], "keywords_must": [], "keywords_forbid": [] @@ -336,7 +426,11 @@ { "提取组件中的状态使用vuex进行状态管理": { "node_id": "toolchains-f24bcb8bea6b45368070c9b9f508606c", - "keywords": [], + "keywords": [ + "vue", + "state", + "vuex" + ], "children": [], "keywords_must": [], "keywords_forbid": [] @@ -345,7 +439,10 @@ { "模拟ajax请求": { "node_id": "toolchains-8b2b197bdbd944dea1918a4029343f0f", - "keywords": [], + "keywords": [ + "ajax", + "http" + ], "children": [], "keywords_must": [], "keywords_forbid": [] @@ -364,7 +461,10 @@ { "创建flask项目": { "node_id": "toolchains-e1e9c87df6c64d69b44946f6f8bd38f0", - "keywords": [], + "keywords": [ + "python", + "flask" + ], "children": [], "keywords_must": [], "keywords_forbid": [] @@ -373,7 +473,10 @@ { "配置并使用IDE(pycharm)": { "node_id": "toolchains-807a4d7ac2c543df8668d6be52dbdae3", - "keywords": [], + "keywords": [ + "python", + "pycharm" + ], "children": [], "keywords_must": [], "keywords_forbid": [] @@ -382,7 +485,11 @@ { "创建项目配置文件": { "node_id": "toolchains-d2f1500609564ae8b7d9f33f1c03edf4", - "keywords": [], + "keywords": [ + "flask", + "config", + "settings" + ], "children": [], "keywords_must": [], "keywords_forbid": [] @@ -391,7 +498,10 @@ { "进行初次后端版本提交": { "node_id": "toolchains-d34786cfe2d34f1ebbcc381f7234feeb", - "keywords": [], + "keywords": [ + "git", + "commit" + ], "children": [], "keywords_must": [], "keywords_forbid": [] @@ -400,7 +510,11 @@ { "设置数据库连接(mysql)": { "node_id": "toolchains-238848692f9e479c928f1a003acb8ffe", - "keywords": [], + "keywords": [ + "python", + "mysql", + "dbapi" + ], "children": [], "keywords_must": [], "keywords_forbid": [] @@ -409,7 +523,10 @@ { "使用sqlalchemy": { "node_id": "toolchains-f3a77b9ee7cd4687b8fdfa1a7e9ee70d", - "keywords": [], + "keywords": [ + "python", + "sqlalchemy" + ], "children": [], "keywords_must": [], "keywords_forbid": [] @@ -418,16 +535,12 @@ { "配置数据模型": { "node_id": "toolchains-c17747cb6fb34e0782cd63103c26059f", - "keywords": [], - "children": [], - "keywords_must": [], - "keywords_forbid": [] - } - }, - { - "配置数据模型": { - "node_id": "toolchains-d96ecd596dba40ffbbca6d364a9bae6d", - "keywords": [], + "keywords": [ + "flask", + "python", + "sqlalchemy", + "model" + ], "children": [], "keywords_must": [], "keywords_forbid": [] @@ -436,7 +549,12 @@ { "使用数据迁移初始化数据库": { "node_id": "toolchains-64e0f059275740a6abc4808a35f3e2d2", - "keywords": [], + "keywords": [ + "python", + "flask", + "sqlalchemy", + "migration" + ], "children": [], "keywords_must": [], "keywords_forbid": [] @@ -445,7 +563,12 @@ { "配置数据模型序列化工具": { "node_id": "toolchains-179bf9f789a24f83beccaecd621474e1", - "keywords": [], + "keywords": [ + "python", + "flask", + "sqlalchemy", + "serialization" + ], "children": [], "keywords_must": [], "keywords_forbid": [] @@ -454,7 +577,11 @@ { "设置访问路由": { "node_id": "toolchains-9f6fdcbcafd3477897bf16d0dd2be262", - "keywords": [], + "keywords": [ + "python", + "flask", + "route" + ], "children": [], "keywords_must": [], "keywords_forbid": [] @@ -463,7 +590,11 @@ { "完成第一个接口返回json格式数据": { "node_id": "toolchains-286ed617cbac42a29dbd757361f1f0b3", - "keywords": [], + "keywords": [ + "python", + "flask", + "json" + ], "children": [], "keywords_must": [], "keywords_forbid": [] @@ -472,7 +603,13 @@ { "获取表单数据并将数据保存到数据库": { "node_id": "toolchains-93040f93301f41d080b62385eeb59d70", - "keywords": [], + "keywords": [ + "python", + "flask", + "form", + "post", + "database" + ], "children": [], "keywords_must": [], "keywords_forbid": [] @@ -481,7 +618,11 @@ { "使用装饰器设置中间件拦截请求": { "node_id": "toolchains-3a33244e3ab6490e9819a30d8cae5612", - "keywords": [], + "keywords": [ + "python", + "flask", + "decorator" + ], "children": [], "keywords_must": [], "keywords_forbid": [] @@ -490,7 +631,11 @@ { "连接redis": { "node_id": "toolchains-2f9cd0de2cc14dcb9ba4a1e76547b72b", - "keywords": [], + "keywords": [ + "python", + "flask", + "redis" + ], "children": [], "keywords_must": [], "keywords_forbid": [] @@ -499,7 +644,12 @@ { "使用令牌验证客户端身份": { "node_id": "toolchains-d1a69b26dab3472ca23bab5cf4dfd40a", - "keywords": [], + "keywords": [ + "python", + "flask", + "auth", + "token" + ], "children": [], "keywords_must": [], "keywords_forbid": [] diff --git a/main.py b/main.py index 101f6cb6216da63192d5f853448dabea6277610f..a763a57156f574c79aca35d6653618597ecceea2 100644 --- a/main.py +++ b/main.py @@ -1,4 +1,4 @@ -from src.tree import TreeWalker +from skill_tree.tree import TreeWalker if __name__ == '__main__': walker = TreeWalker("data", "toolchains", "toolchains") diff --git a/requirements.txt b/requirements.txt index e69de29bb2d1d6434b8b29ae775ad8c2e48c5391..930557801e86f8323d6f219034f2ea894985e211 100644 --- a/requirements.txt +++ b/requirements.txt @@ -0,0 +1 @@ +skill-tree-parser~=0.0.5 \ No newline at end of file diff --git a/src/tree.py b/src/tree.py deleted file mode 100644 index 0c58d32b0da0e7099c2d2804fc97cdc35b240e28..0000000000000000000000000000000000000000 --- a/src/tree.py +++ /dev/null @@ -1,425 +0,0 @@ -import json -import logging -import os -import re -import subprocess -import sys -import uuid -import re - -id_set = set() -logger = logging.getLogger(__name__) -logger.setLevel(logging.INFO) -handler = logging.StreamHandler(sys.stdout) -formatter = logging.Formatter('%(asctime)s - %(levelname)s - %(message)s') -handler.setFormatter(formatter) -logger.addHandler(handler) - - -def search_author(author_dict, username): - for key in author_dict: - names = author_dict[key] - if username in names: - return key - return username - - -def user_name(md_file, author_dict): - ret = subprocess.Popen([ - "git", "log", md_file - ], stdout=subprocess.PIPE) - lines = list(map(lambda l: l.decode(), ret.stdout.readlines())) - author_lines = [] - for line in lines: - if line.startswith('Author'): - author_lines.append(line.split(' ')[1]) - author_nick_name = author_lines[-1] - return search_author(author_dict, author_nick_name) - - -def load_json(p): - with open(p, 'r', encoding="utf-8") as f: - return json.loads(f.read()) - - -def dump_json(p, j, exist_ok=False, override=False): - if os.path.exists(p): - if exist_ok: - if not override: - return - else: - logger.error(f"{p} already exist") - sys.exit(0) - - with open(p, 'w+', encoding="utf8") as f: - f.write(json.dumps(j, indent=2, ensure_ascii=False)) - - -def ensure_config(path): - config_path = os.path.join(path, "config.json") - if not os.path.exists(config_path): - node = {"keywords": []} - dump_json(config_path, node, exist_ok=True, override=False) - return node - else: - return load_json(config_path) - - -def parse_no_name(d): - p = r'(\d+)\.(.*)' - m = re.search(p, d) - - try: - no = int(m.group(1)) - dir_name = m.group(2) - except: - sys.exit(0) - - return no, dir_name - - -def check_export(base, cfg): - flag = False - exports = [] - for export in cfg.get('export', []): - ecfg_path = os.path.join(base, export) - if os.path.exists(ecfg_path): - exports.append(export) - else: - flag = True - if flag: - cfg["export"] = exports - return flag - - -class TreeWalker: - def __init__( - self, root, - tree_name, - title=None, - log=None, - authors=None, - enable_notebook=None, - ignore_keywords=False - ): - self.ignore_keywords = ignore_keywords - self.authors = authors if authors else {} - self.enable_notebook = enable_notebook - self.name = tree_name - self.root = root - self.title = tree_name if title is None else title - self.tree = {} - self.logger = logger if log is None else log - - def walk(self): - root = self.load_root() - root_node = { - "node_id": root["node_id"], - "keywords": root["keywords"], - "children": [], - "keywords_must": root["keywords_must"], - "keywords_forbid": root["keywords_forbid"] - } - self.tree[root["tree_name"]] = root_node - self.load_levels(root_node) - self.load_chapters(self.root, root_node) - for index, level in enumerate(root_node["children"]): - level_title = list(level.keys())[0] - level_node = list(level.values())[0] - level_path = os.path.join(self.root, f"{index + 1}.{level_title}") - self.load_chapters(level_path, level_node) - for index, chapter in enumerate(level_node["children"]): - chapter_title = list(chapter.keys())[0] - chapter_node = list(chapter.values())[0] - chapter_path = os.path.join( - level_path, f"{index + 1}.{chapter_title}") - self.load_sections(chapter_path, chapter_node) - for index, section_node in enumerate(chapter_node["children"]): - section_title = list(section_node.keys())[0] - full_path = os.path.join( - chapter_path, f"{index + 1}.{section_title}") - if os.path.isdir(full_path): - self.check_section_keywords(full_path) - self.ensure_exercises(full_path) - - tree_path = os.path.join(self.root, "tree.json") - dump_json(tree_path, self.tree, exist_ok=True, override=True) - return self.tree - - def sort_dir_list(self, dirs): - result = [self.extract_node_env(dir) for dir in dirs] - result.sort(key=lambda item: item[0]) - return result - - def load_levels(self, root_node): - levels = [] - for level in os.listdir(self.root): - if not os.path.isdir(level): - continue - level_path = os.path.join(self.root, level) - num, config = self.load_level_node(level_path) - levels.append((num, config)) - - levels = self.resort_children(self.root, levels) - root_node["children"] = [item[1] for item in levels] - return root_node - - def load_level_node(self, level_path): - config = self.ensure_level_config(level_path) - num, name = self.extract_node_env(level_path) - - result = { - name: { - "node_id": config["node_id"], - "keywords": config["keywords"], - "children": [], - "keywords_must": config["keywords_must"], - "keywords_forbid": config["keywords_forbid"] - } - } - - return num, result - - def load_chapters(self, base, level_node): - chapters = [] - for name in os.listdir(base): - full_name = os.path.join(base, name) - if os.path.isdir(full_name): - num, chapter = self.load_chapter_node(full_name) - chapters.append((num, chapter)) - - chapters = self.resort_children(base, chapters) - level_node["children"] = [item[1] for item in chapters] - return level_node - - def load_sections(self, base, chapter_node): - sections = [] - for name in os.listdir(base): - full_name = os.path.join(base, name) - if os.path.isdir(full_name): - num, section = self.load_section_node(full_name) - sections.append((num, section)) - - sections = self.resort_children(base, sections) - chapter_node["children"] = [item[1] for item in sections] - return chapter_node - - def resort_children(self, base, children): - children.sort(key=lambda item: item[0]) - for index, [number, element] in enumerate(children): - title = list(element.keys())[0] - origin = os.path.join(base, f"{number}.{title}") - posted = os.path.join(base, f"{index + 1}.{title}") - if origin != posted: - self.logger.info(f"rename [{origin}] to [{posted}]") - os.rename(origin, posted) - return children - - def ensure_chapters(self): - for subdir in os.listdir(self.root): - self.ensure_level_config(subdir) - - def load_root(self): - config_path = os.path.join(self.root, "config.json") - if not os.path.exists(config_path): - config = { - "tree_name": self.name, - "keywords": [], - "node_id": self.gen_node_id(), - "keywords_must": [], - "keywords_forbid": [] - } - dump_json(config_path, config, exist_ok=True, override=True) - else: - config = load_json(config_path) - flag, result = self.ensure_node_id(config) - if flag: - dump_json(config_path, result, exist_ok=True, override=True) - - return config - - def ensure_level_config(self, path): - config_path = os.path.join(path, "config.json") - if not os.path.exists(config_path): - config = { - "node_id": self.gen_node_id() - } - dump_json(config_path, config, exist_ok=True, override=True) - else: - config = load_json(config_path) - flag, result = self.ensure_node_id(config) - if flag: - dump_json(config_path, config, exist_ok=True, override=True) - return config - - def ensure_chapter_config(self, path): - config_path = os.path.join(path, "config.json") - if not os.path.exists(config_path): - config = { - "node_id": self.gen_node_id(), - "keywords": [], - "keywords_must": [], - "keywords_forbid": [] - } - dump_json(config_path, config, exist_ok=True, override=True) - else: - config = load_json(config_path) - flag, result = self.ensure_node_id(config) - if flag: - dump_json(config_path, config, exist_ok=True, override=True) - return config - - def ensure_section_config(self, path): - config_path = os.path.join(path, "config.json") - if not os.path.exists(config_path): - config = { - "node_id": self.gen_node_id(), - "keywords": [], - "children": [], - "export": [] - } - dump_json(config_path, config, exist_ok=True, override=True) - else: - config = load_json(config_path) - flag, result = self.ensure_node_id(config) - if flag: - dump_json(config_path, result, exist_ok=True, override=True) - return config - - def ensure_node_id(self, config): - flag = False - if "node_id" not in config or \ - not config["node_id"].startswith(f"{self.name}-") or \ - config["node_id"] in id_set: - new_id = self.gen_node_id() - id_set.add(new_id) - config["node_id"] = new_id - flag = True - - for child in config.get("children", []): - child_node = list(child.values())[0] - f, _ = self.ensure_node_id(child_node) - flag = flag or f - - return flag, config - - def gen_node_id(self): - return f"{self.name}-{uuid.uuid4().hex}" - - def extract_node_env(self, path): - try: - _, dir = os.path.split(path) - self.logger.info(path) - number, title = dir.split(".", 1) - return int(number), title - except Exception as error: - self.logger.error(f"目录 [{path}] 解析失败,结构不合法,可能是缺少序号") - # sys.exit(1) - raise error - - def load_chapter_node(self, full_name): - config = self.ensure_chapter_config(full_name) - num, name = self.extract_node_env(full_name) - result = { - name: { - "node_id": config["node_id"], - "keywords": config["keywords"], - "children": [], - "keywords_must": config["keywords_must"], - "keywords_forbid": config["keywords_forbid"] - } - } - return num, result - - def load_section_node(self, full_name): - config = self.ensure_section_config(full_name) - num, name = self.extract_node_env(full_name) - result = { - name: { - "node_id": config["node_id"], - "keywords": config["keywords"], - "children": config.get("children", []), - "keywords_must": config["keywords_must"], - "keywords_forbid": config["keywords_forbid"] - } - } - # if "children" in config: - # result["children"] = config["children"] - return num, result - - def ensure_exercises(self, section_path): - config = self.ensure_section_config(section_path) - flag = False - for e in os.listdir(section_path): - base, ext = os.path.splitext(e) - _, source = os.path.split(e) - if ext != ".md": - continue - mfile = base + ".json" - meta_path = os.path.join(section_path, mfile) - md_file = os.path.join(section_path, e) - self.ensure_exercises_meta(meta_path, source, md_file) - export = config.get("export", []) - if mfile not in export and self.name != "algorithm": - export.append(mfile) - flag = True - config["export"] = export - - if flag: - dump_json(os.path.join(section_path, "config.json"), - config, True, True) - - for e in config.get("export", []): - full_name = os.path.join(section_path, e) - exercise = load_json(full_name) - if "exercise_id" not in exercise or exercise.get("exercise_id") in id_set: - eid = uuid.uuid4().hex - exercise["exercise_id"] = eid - dump_json(full_name, exercise, True, True) - else: - id_set.add(exercise["exercise_id"]) - - def ensure_exercises_meta(self, meta_path, source, md_file): - _, mfile = os.path.split(meta_path) - meta = None - if os.path.exists(meta_path): - with open(meta_path) as f: - content = f.read() - if content: - meta = json.loads(content) - if "exercise_id" not in meta: - meta["exercise_id"] = uuid.uuid4().hex - if "notebook_enable" not in meta: - meta["notebook_enable"] = self.default_notebook() - if "source" not in meta: - meta["source"] = source - if "author" not in meta: - meta["author"] = user_name(md_file, self.authors) - if "type" not in meta: - meta["type"] = "code_options" - - if meta is None: - meta = { - "type": "code_options", - "author": user_name(md_file, self.authors), - "source": source, - "notebook_enable": self.default_notebook(), - "exercise_id": uuid.uuid4().hex - } - dump_json(meta_path, meta, True, True) - - def default_notebook(self): - if self.enable_notebook is not None: - return self.enable_notebook - if self.name in ["python", "java", "c"]: - return True - else: - return False - - def check_section_keywords(self, full_path): - if self.ignore_keywords: - return - config = self.ensure_section_config(full_path) - if not config.get("keywords", []): - self.logger.error(f"节点 [{full_path}] 的关键字为空,请修改配置文件写入关键字") - sys.exit(1)