From e36e486a33ae7466ce63c10cadf854a8fdbba3b4 Mon Sep 17 00:00:00 2001 From: feilong Date: Thu, 14 Oct 2021 19:02:23 +0800 Subject: [PATCH] init skill_tree_web dir, add readme --- .gitignore | 6 + README.md | 147 +- .../config.json" | 51 + .../2.\347\275\221\347\273\234/config.json" | 31 + .../config.json" | 69 + .../config.json" | 44 + .../5.ECMA-TC39/config.json" | 19 + .../config.json" | 4 + .../config.json" | 25 + .../config.json" | 83 + .../config.json" | 19 + .../config.json" | 19 + .../config.json" | 4 + .../1.\345\205\203\347\264\240/config.json" | 149 + .../2.\345\261\236\346\200\247/config.json" | 26 + .../3.\344\272\213\344\273\266/config.json" | 37 + .../4.\347\274\226\347\240\201/config.json" | 25 + .../3.HTML/config.json" | 4 + .../1.\350\257\255\346\263\225/config.json" | 61 + .../config.json" | 67 + .../3.\345\256\232\344\275\215/config.json" | 25 + .../4.\345\270\203\345\261\200/config.json" | 31 + .../5.\346\240\267\345\274\217/config.json" | 31 + .../6.\345\212\250\347\224\273/config.json" | 19 + .../7.\345\272\224\347\224\250/config.json" | 33 + .../4.CSS/config.json" | 4 + .../1.\350\257\255\346\263\225/config.json" | 100 + .../config.json" | 79 + .../3.\345\257\271\350\261\241/config.json" | 79 + .../4.\345\207\275\346\225\260/config.json" | 79 + .../5.\345\216\237\345\236\213/config.json" | 25 + .../5.JavaScript/6.\347\261\273/config.json" | 49 + .../config.json" | 44 + .../config.json" | 19 + .../config.json" | 25 + .../5.JavaScript/config.json" | 4 + .../1.DOM/config.json" | 74 + .../config.json" | 51 + .../3.\347\275\221\347\273\234/config.json" | 31 + .../4.\346\235\203\351\231\220/config.json" | 37 + .../config.json" | 43 + .../config.json" | 37 + .../config.json" | 61 + .../config.json" | 4 + .../config.json" | 19 + .../config.json" | 56 + .../config.json" | 44 + .../config.json" | 37 + .../config.json" | 85 + .../config.json" | 82 + .../config.json" | 149 + .../config.json" | 118 + .../config.json" | 88 + .../config.json" | 51 + .../config.json" | 131 + .../config.json" | 118 + .../config.json" | 237 + .../config.json" | 99 + .../config.json" | 56 + .../config.json" | 105 + .../config.json" | 295 + .../config.json" | 104 + .../7.jquery/config.json" | 4 + .../1.json/config.json" | 6 + .../2.ajax/config.json" | 6 + .../3.axios/config.json" | 6 + .../4.mock/config.json" | 6 + .../5.proxy/config.json" | 6 + .../config.json" | 4 + .../config.json" | 129 + .../config.json" | 25 + .../config.json" | 129 + .../12.Sencha Touch/config.json" | 6 + .../config.json" | 193 + .../config.json" | 95 + .../config.json" | 37 + .../config.json" | 31 + .../6.Web Worker/config.json" | 31 + .../config.json" | 25 + .../config.json" | 37 + .../config.json" | 19 + .../config.json" | 4 + .../config.json" | 4 + .../1.bootstrap/config.json" | 948 + .../2.layui.js/config.json" | 219 + .../3.iView/config.json" | 141 + .../4.element-ui/config.json" | 271 + .../config.json" | 4 + .../config.json" | 37 + .../config.json" | 31 + .../config.json" | 31 + .../config.json" | 111 + .../config.json" | 125 + .../config.json" | 31 + .../config.json" | 4 + .../1.es6/config.json" | 232 + .../2.JS\347\274\226\350\257\221/config.json" | 25 + .../config.json" | 25 + .../4.TypeScript/config.json" | 1776 ++ .../3.js\346\213\223\345\261\225/config.json" | 4 + .../config.json" | 94 + .../config.json" | 187 + .../3.\345\274\202\346\255\245IO/config.json" | 119 + .../config.json" | 89 + .../config.json" | 144 + .../config.json" | 88 + .../config.json" | 138 + .../config.json" | 168 + .../4.node.js/config.json" | 4 + .../1.npm/config.json" | 6 + .../2.yarn/config.json" | 6 + .../3.nvm/config.json" | 6 + .../config.json" | 4 + .../config.json" | 19 + .../config.json" | 69 + .../config.json" | 4 + .../1.Sass/config.json" | 49 + .../2.Less/config.json" | 69 + .../3.Stylus/config.json" | 163 + .../4.PostCSS/config.json" | 117 + .../config.json" | 4 + .../1.https/config.json" | 6 + .../2.CORS/config.json" | 6 + .../config.json" | 25 + .../config.json" | 4 + .../1.\346\214\207\346\240\207/config.json" | 57 + .../config.json" | 31 + .../config.json" | 180 + .../config.json" | 4 + .../config.json" | 4 + .../1.MVC/config.json" | 6 + .../2.MVP/config.json" | 6 + .../3.MVVM/config.json" | 6 + .../config.json" | 4 + .../config.json" | 57 + .../config.json" | 32 + .../11.\347\273\204\344\273\266/config.json" | 106 + .../config.json" | 218 + .../config.json" | 130 + .../config.json" | 112 + .../2.vue.js/15.vue-cli/config.json" | 94 + .../config.json" | 57 + .../config.json" | 56 + .../2.vue.js/18.Vue.js 2.0/config.json" | 100 + .../config.json" | 142 + .../config.json" | 38 + .../config.json" | 56 + .../config.json" | 32 + .../config.json" | 43 + .../config.json" | 43 + .../config.json" | 50 + .../3.\346\214\207\344\273\244/config.json" | 123 + .../config.json" | 38 + .../config.json" | 94 + .../config.json" | 82 + .../config.json" | 51 + .../8.\350\277\207\346\270\241/config.json" | 56 + .../2.vue.js/9.Method97/config.json" | 88 + .../2.vue.js/config.json" | 4 + .../config.json" | 32 + .../config.json" | 44 + .../config.json" | 31 + .../config.json" | 81 + .../config.json" | 25 + .../3.angular.js/14.Promise/config.json" | 50 + .../3.angular.js/15.AngularUI/config.json" | 68 + .../config.json" | 50 + .../config.json" | 25 + .../3.AngularJS\344\270\216MVC/config.json" | 50 + .../config.json" | 32 + .../config.json" | 94 + .../config.json" | 81 + .../config.json" | 25 + .../config.json" | 68 + .../config.json" | 31 + .../3.angular.js/config.json" | 4 + .../config.json" | 86 + .../config.json" | 49 + .../config.json" | 49 + .../4.react.js/2.React JSX/config.json" | 73 + .../config.json" | 61 + .../config.json" | 67 + .../config.json" | 61 + .../config.json" | 49 + .../config.json" | 55 + .../config.json" | 73 + .../config.json" | 43 + .../4.react.js/config.json" | 4 + .../config.json" | 178 + .../config.json" | 756 + .../config.json" | 4 + .../config.json" | 1423 ++ .../config.json" | 1487 ++ .../config.json" | 31 + .../config.json" | 4 + .../config.json" | 6 + .../config.json" | 6 + .../config.json" | 304 + .../config.json" | 4 + .../config.json" | 4 + data/config.json | 5 + data/tree.json | 18159 ++++++++++++++++ main.py | 4 + src/tree.py | 122 + 204 files changed, 36311 insertions(+), 1 deletion(-) create mode 100644 .gitignore create mode 100644 "data/1.web\345\210\235\351\230\266/1.\345\211\215\347\253\257\345\237\272\347\241\200/1.\345\256\242\346\210\267\347\253\257/config.json" create mode 100644 "data/1.web\345\210\235\351\230\266/1.\345\211\215\347\253\257\345\237\272\347\241\200/2.\347\275\221\347\273\234/config.json" create mode 100644 "data/1.web\345\210\235\351\230\266/1.\345\211\215\347\253\257\345\237\272\347\241\200/3.\346\234\215\345\212\241\347\253\257/config.json" create mode 100644 "data/1.web\345\210\235\351\230\266/1.\345\211\215\347\253\257\345\237\272\347\241\200/4.\350\241\214\344\270\232\346\240\207\345\207\206/config.json" create mode 100644 "data/1.web\345\210\235\351\230\266/1.\345\211\215\347\253\257\345\237\272\347\241\200/5.ECMA-TC39/config.json" create mode 100644 "data/1.web\345\210\235\351\230\266/1.\345\211\215\347\253\257\345\237\272\347\241\200/config.json" create mode 100644 "data/1.web\345\210\235\351\230\266/2.\347\240\224\345\217\221\345\267\245\345\205\267/1.\347\274\226\350\276\221\345\231\250/config.json" create mode 100644 "data/1.web\345\210\235\351\230\266/2.\347\240\224\345\217\221\345\267\245\345\205\267/2.\350\260\203\350\257\225\351\242\204\350\247\210/config.json" create mode 100644 "data/1.web\345\210\235\351\230\266/2.\347\240\224\345\217\221\345\267\245\345\205\267/3.\345\233\276\347\211\207\347\274\226\350\276\221\345\231\250/config.json" create mode 100644 "data/1.web\345\210\235\351\230\266/2.\347\240\224\345\217\221\345\267\245\345\205\267/4.\347\211\210\346\234\254\347\256\241\347\220\206/config.json" create mode 100644 "data/1.web\345\210\235\351\230\266/2.\347\240\224\345\217\221\345\267\245\345\205\267/config.json" create mode 100644 "data/1.web\345\210\235\351\230\266/3.HTML/1.\345\205\203\347\264\240/config.json" create mode 100644 "data/1.web\345\210\235\351\230\266/3.HTML/2.\345\261\236\346\200\247/config.json" create mode 100644 "data/1.web\345\210\235\351\230\266/3.HTML/3.\344\272\213\344\273\266/config.json" create mode 100644 "data/1.web\345\210\235\351\230\266/3.HTML/4.\347\274\226\347\240\201/config.json" create mode 100644 "data/1.web\345\210\235\351\230\266/3.HTML/config.json" create mode 100644 "data/1.web\345\210\235\351\230\266/4.CSS/1.\350\257\255\346\263\225/config.json" create mode 100644 "data/1.web\345\210\235\351\230\266/4.CSS/2.\351\200\211\346\213\251\345\231\250/config.json" create mode 100644 "data/1.web\345\210\235\351\230\266/4.CSS/3.\345\256\232\344\275\215/config.json" create mode 100644 "data/1.web\345\210\235\351\230\266/4.CSS/4.\345\270\203\345\261\200/config.json" create mode 100644 "data/1.web\345\210\235\351\230\266/4.CSS/5.\346\240\267\345\274\217/config.json" create mode 100644 "data/1.web\345\210\235\351\230\266/4.CSS/6.\345\212\250\347\224\273/config.json" create mode 100644 "data/1.web\345\210\235\351\230\266/4.CSS/7.\345\272\224\347\224\250/config.json" create mode 100644 "data/1.web\345\210\235\351\230\266/4.CSS/config.json" create mode 100644 "data/1.web\345\210\235\351\230\266/5.JavaScript/1.\350\257\255\346\263\225/config.json" create mode 100644 "data/1.web\345\210\235\351\230\266/5.JavaScript/2.\346\225\260\346\215\256\347\261\273\345\236\213\346\267\261\345\205\245/config.json" create mode 100644 "data/1.web\345\210\235\351\230\266/5.JavaScript/3.\345\257\271\350\261\241/config.json" create mode 100644 "data/1.web\345\210\235\351\230\266/5.JavaScript/4.\345\207\275\346\225\260/config.json" create mode 100644 "data/1.web\345\210\235\351\230\266/5.JavaScript/5.\345\216\237\345\236\213/config.json" create mode 100644 "data/1.web\345\210\235\351\230\266/5.JavaScript/6.\347\261\273/config.json" create mode 100644 "data/1.web\345\210\235\351\230\266/5.JavaScript/7.\345\274\202\346\255\245\346\265\201\347\250\213\346\216\247\345\210\266/config.json" create mode 100644 "data/1.web\345\210\235\351\230\266/5.JavaScript/8.\346\250\241\345\235\227\345\214\226/config.json" create mode 100644 "data/1.web\345\210\235\351\230\266/5.JavaScript/9.\345\274\202\345\270\270\346\215\225\350\216\267/config.json" create mode 100644 "data/1.web\345\210\235\351\230\266/5.JavaScript/config.json" create mode 100644 "data/1.web\345\210\235\351\230\266/6.\346\265\217\350\247\210\345\231\250/1.DOM/config.json" create mode 100644 "data/1.web\345\210\235\351\230\266/6.\346\265\217\350\247\210\345\231\250/2.\346\265\217\350\247\210\345\231\250API/config.json" create mode 100644 "data/1.web\345\210\235\351\230\266/6.\346\265\217\350\247\210\345\231\250/3.\347\275\221\347\273\234/config.json" create mode 100644 "data/1.web\345\210\235\351\230\266/6.\346\265\217\350\247\210\345\231\250/4.\346\235\203\351\231\220/config.json" create mode 100644 "data/1.web\345\210\235\351\230\266/6.\346\265\217\350\247\210\345\231\250/5.\345\256\211\345\205\250\344\270\216\351\232\220\347\247\201/config.json" create mode 100644 "data/1.web\345\210\235\351\230\266/6.\346\265\217\350\247\210\345\231\250/6.\345\205\274\345\256\271\346\200\247/config.json" create mode 100644 "data/1.web\345\210\235\351\230\266/6.\346\265\217\350\247\210\345\231\250/7.\345\274\200\345\217\221\350\200\205\345\267\245\345\205\267/config.json" create mode 100644 "data/1.web\345\210\235\351\230\266/6.\346\265\217\350\247\210\345\231\250/config.json" create mode 100644 "data/1.web\345\210\235\351\230\266/7.jquery/1.jQuery\345\237\272\347\241\200/config.json" create mode 100644 "data/1.web\345\210\235\351\230\266/7.jquery/10.jQueryUI\345\237\272\347\241\200/config.json" create mode 100644 "data/1.web\345\210\235\351\230\266/7.jquery/11.jQueryUI\344\272\244\344\272\222\345\274\200\345\217\221/config.json" create mode 100644 "data/1.web\345\210\235\351\230\266/7.jquery/12.jQueryUI\345\260\217\351\203\250\344\273\266/config.json" create mode 100644 "data/1.web\345\210\235\351\230\266/7.jquery/13.jQueryUI\347\211\271\346\225\210/config.json" create mode 100644 "data/1.web\345\210\235\351\230\266/7.jquery/14.\346\265\217\350\247\210\345\231\250\345\222\214\345\257\274\350\210\252\345\274\200\345\217\221/config.json" create mode 100644 "data/1.web\345\210\235\351\230\266/7.jquery/15.\350\241\250\346\240\274\345\274\200\345\217\221/config.json" create mode 100644 "data/1.web\345\210\235\351\230\266/7.jquery/16.\350\241\250\345\215\225\345\274\200\345\217\221/config.json" create mode 100644 "data/1.web\345\210\235\351\230\266/7.jquery/17.jQueryMobile\345\237\272\347\241\200/config.json" create mode 100644 "data/1.web\345\210\235\351\230\266/7.jquery/18.\350\256\276\350\256\241\347\247\273\345\212\250\351\241\265\351\235\242\345\222\214\345\257\271\350\257\235\346\241\206/config.json" create mode 100644 "data/1.web\345\210\235\351\230\266/7.jquery/2.\344\275\277\347\224\250\351\200\211\346\213\251\345\231\250/config.json" create mode 100644 "data/1.web\345\210\235\351\230\266/7.jquery/3.\344\275\277\347\224\250\350\277\207\346\273\244\345\231\250/config.json" create mode 100644 "data/1.web\345\210\235\351\230\266/7.jquery/4.\346\223\215\344\275\234DOM/config.json" create mode 100644 "data/1.web\345\210\235\351\230\266/7.jquery/5.\344\272\213\344\273\266\345\244\204\347\220\206/config.json" create mode 100644 "data/1.web\345\210\235\351\230\266/7.jquery/6.\344\275\277\347\224\250Ajax/config.json" create mode 100644 "data/1.web\345\210\235\351\230\266/7.jquery/7.\350\256\276\350\256\241\345\212\250\347\224\273/config.json" create mode 100644 "data/1.web\345\210\235\351\230\266/7.jquery/8.\344\275\277\347\224\250\350\276\205\345\212\251\345\267\245\345\205\267/config.json" create mode 100644 "data/1.web\345\210\235\351\230\266/7.jquery/9.\350\207\252\345\256\232\344\271\211\346\217\222\344\273\266/config.json" create mode 100644 "data/1.web\345\210\235\351\230\266/7.jquery/config.json" create mode 100644 "data/1.web\345\210\235\351\230\266/8.\347\275\221\347\273\234\350\257\267\346\261\202/1.json/config.json" create mode 100644 "data/1.web\345\210\235\351\230\266/8.\347\275\221\347\273\234\350\257\267\346\261\202/2.ajax/config.json" create mode 100644 "data/1.web\345\210\235\351\230\266/8.\347\275\221\347\273\234\350\257\267\346\261\202/3.axios/config.json" create mode 100644 "data/1.web\345\210\235\351\230\266/8.\347\275\221\347\273\234\350\257\267\346\261\202/4.mock/config.json" create mode 100644 "data/1.web\345\210\235\351\230\266/8.\347\275\221\347\273\234\350\257\267\346\261\202/5.proxy/config.json" create mode 100644 "data/1.web\345\210\235\351\230\266/8.\347\275\221\347\273\234\350\257\267\346\261\202/config.json" create mode 100644 "data/1.web\345\210\235\351\230\266/9.\347\247\273\345\212\250web\345\274\200\345\217\221/1.HTML 5\347\247\273\345\212\250Web\345\274\200\345\217\221\345\256\236\346\210\230/config.json" create mode 100644 "data/1.web\345\210\235\351\230\266/9.\347\247\273\345\212\250web\345\274\200\345\217\221/10.history\344\270\216\345\257\274\350\210\252/config.json" create mode 100644 "data/1.web\345\210\235\351\230\266/9.\347\247\273\345\212\250web\345\274\200\345\217\221/11.\347\253\231\345\234\250\345\267\250\344\272\272\344\273\254\347\232\204\350\202\251\344\270\212--jQuery Mobile/config.json" create mode 100644 "data/1.web\345\210\235\351\230\266/9.\347\247\273\345\212\250web\345\274\200\345\217\221/12.Sencha Touch/config.json" create mode 100644 "data/1.web\345\210\235\351\230\266/9.\347\247\273\345\212\250web\345\274\200\345\217\221/2.\345\210\235\346\216\242CSS 3/config.json" create mode 100644 "data/1.web\345\210\235\351\230\266/9.\347\247\273\345\212\250web\345\274\200\345\217\221/3.\344\273\216\347\275\221\351\241\265\357\274\210Web page\357\274\211\345\210\260\345\272\224\347\224\250\357\274\210Application\357\274\211/config.json" create mode 100644 "data/1.web\345\210\235\351\230\266/9.\347\247\273\345\212\250web\345\274\200\345\217\221/4.\346\214\207\345\260\226\344\270\213\347\232\204\346\265\217\350\247\210\345\231\250/config.json" create mode 100644 "data/1.web\345\210\235\351\230\266/9.\347\247\273\345\212\250web\345\274\200\345\217\221/5.\345\234\260\347\220\206\345\256\232\344\275\215\357\274\210Geolocation API\357\274\211/config.json" create mode 100644 "data/1.web\345\210\235\351\230\266/9.\347\247\273\345\212\250web\345\274\200\345\217\221/6.Web Worker/config.json" create mode 100644 "data/1.web\345\210\235\351\230\266/9.\347\247\273\345\212\250web\345\274\200\345\217\221/7.\351\200\232\344\277\241\345\237\272\347\241\200/config.json" create mode 100644 "data/1.web\345\210\235\351\230\266/9.\347\247\273\345\212\250web\345\274\200\345\217\221/8.\345\256\236\346\227\266Web\346\212\200\346\234\257/config.json" create mode 100644 "data/1.web\345\210\235\351\230\266/9.\347\247\273\345\212\250web\345\274\200\345\217\221/9.\346\204\237\345\256\230\344\270\226\347\225\214/config.json" create mode 100644 "data/1.web\345\210\235\351\230\266/9.\347\247\273\345\212\250web\345\274\200\345\217\221/config.json" create mode 100644 "data/1.web\345\210\235\351\230\266/config.json" create mode 100644 "data/2.web\344\270\255\351\230\266/1.\345\211\215\347\253\257UI\345\272\223/1.bootstrap/config.json" create mode 100644 "data/2.web\344\270\255\351\230\266/1.\345\211\215\347\253\257UI\345\272\223/2.layui.js/config.json" create mode 100644 "data/2.web\344\270\255\351\230\266/1.\345\211\215\347\253\257UI\345\272\223/3.iView/config.json" create mode 100644 "data/2.web\344\270\255\351\230\266/1.\345\211\215\347\253\257UI\345\272\223/4.element-ui/config.json" create mode 100644 "data/2.web\344\270\255\351\230\266/1.\345\211\215\347\253\257UI\345\272\223/config.json" create mode 100644 "data/2.web\344\270\255\351\230\266/2.\346\225\260\346\215\256\345\217\257\350\247\206\345\214\226/1.\346\212\200\346\234\257\346\240\207\345\207\206/config.json" create mode 100644 "data/2.web\344\270\255\351\230\266/2.\346\225\260\346\215\256\345\217\257\350\247\206\345\214\226/2.\346\225\260\347\220\206\347\273\237\350\256\241/config.json" create mode 100644 "data/2.web\344\270\255\351\230\266/2.\346\225\260\346\215\256\345\217\257\350\247\206\345\214\226/3.\345\233\276\345\275\242\347\276\216\345\255\246/config.json" create mode 100644 "data/2.web\344\270\255\351\230\266/2.\346\225\260\346\215\256\345\217\257\350\247\206\345\214\226/4.\345\217\257\350\247\206\345\214\226\345\237\272\347\241\200\346\246\202\345\277\265/config.json" create mode 100644 "data/2.web\344\270\255\351\230\266/2.\346\225\260\346\215\256\345\217\257\350\247\206\345\214\226/5.\345\233\276\350\241\250\347\261\273\345\272\223&\345\217\257\350\247\206\345\214\226\346\241\206\346\236\266/config.json" create mode 100644 "data/2.web\344\270\255\351\230\266/2.\346\225\260\346\215\256\345\217\257\350\247\206\345\214\226/6.\351\242\206\345\237\237\346\226\271\346\241\210/config.json" create mode 100644 "data/2.web\344\270\255\351\230\266/2.\346\225\260\346\215\256\345\217\257\350\247\206\345\214\226/config.json" create mode 100644 "data/2.web\344\270\255\351\230\266/3.js\346\213\223\345\261\225/1.es6/config.json" create mode 100644 "data/2.web\344\270\255\351\230\266/3.js\346\213\223\345\261\225/2.JS\347\274\226\350\257\221/config.json" create mode 100644 "data/2.web\344\270\255\351\230\266/3.js\346\213\223\345\261\225/3.JavaScirpt\345\274\225\346\223\216/config.json" create mode 100644 "data/2.web\344\270\255\351\230\266/3.js\346\213\223\345\261\225/4.TypeScript/config.json" create mode 100644 "data/2.web\344\270\255\351\230\266/3.js\346\213\223\345\261\225/config.json" create mode 100644 "data/2.web\344\270\255\351\230\266/4.node.js/1.Node\347\256\200\344\273\213/config.json" create mode 100644 "data/2.web\344\270\255\351\230\266/4.node.js/2.\346\250\241\345\235\227\346\234\272\345\210\266/config.json" create mode 100644 "data/2.web\344\270\255\351\230\266/4.node.js/3.\345\274\202\346\255\245IO/config.json" create mode 100644 "data/2.web\344\270\255\351\230\266/4.node.js/4.\345\274\202\346\255\245\347\274\226\347\250\213/config.json" create mode 100644 "data/2.web\344\270\255\351\230\266/4.node.js/5.\345\206\205\345\255\230\346\216\247\345\210\266/config.json" create mode 100644 "data/2.web\344\270\255\351\230\266/4.node.js/6.\347\220\206\350\247\243Buffer/config.json" create mode 100644 "data/2.web\344\270\255\351\230\266/4.node.js/7.\347\275\221\347\273\234\347\274\226\347\250\213/config.json" create mode 100644 "data/2.web\344\270\255\351\230\266/4.node.js/8.\346\236\204\345\273\272Web\345\272\224\347\224\250/config.json" create mode 100644 "data/2.web\344\270\255\351\230\266/4.node.js/config.json" create mode 100644 "data/2.web\344\270\255\351\230\266/5.\345\214\205\347\256\241\347\220\206\345\231\250/1.npm/config.json" create mode 100644 "data/2.web\344\270\255\351\230\266/5.\345\214\205\347\256\241\347\220\206\345\231\250/2.yarn/config.json" create mode 100644 "data/2.web\344\270\255\351\230\266/5.\345\214\205\347\256\241\347\220\206\345\231\250/3.nvm/config.json" create mode 100644 "data/2.web\344\270\255\351\230\266/5.\345\214\205\347\256\241\347\220\206\345\231\250/config.json" create mode 100644 "data/2.web\344\270\255\351\230\266/6.\346\236\204\345\273\272\345\267\245\345\205\267/1.\344\273\273\345\212\241\350\277\220\350\241\214\345\274\217/config.json" create mode 100644 "data/2.web\344\270\255\351\230\266/6.\346\236\204\345\273\272\345\267\245\345\205\267/2.\346\250\241\345\235\227\346\215\206\346\211\216\345\274\217/config.json" create mode 100644 "data/2.web\344\270\255\351\230\266/6.\346\236\204\345\273\272\345\267\245\345\205\267/config.json" create mode 100644 "data/2.web\344\270\255\351\230\266/7.CSS \347\274\226\350\257\221/1.Sass/config.json" create mode 100644 "data/2.web\344\270\255\351\230\266/7.CSS \347\274\226\350\257\221/2.Less/config.json" create mode 100644 "data/2.web\344\270\255\351\230\266/7.CSS \347\274\226\350\257\221/3.Stylus/config.json" create mode 100644 "data/2.web\344\270\255\351\230\266/7.CSS \347\274\226\350\257\221/4.PostCSS/config.json" create mode 100644 "data/2.web\344\270\255\351\230\266/7.CSS \347\274\226\350\257\221/config.json" create mode 100644 "data/2.web\344\270\255\351\230\266/8.web\345\256\211\345\205\250/1.https/config.json" create mode 100644 "data/2.web\344\270\255\351\230\266/8.web\345\256\211\345\205\250/2.CORS/config.json" create mode 100644 "data/2.web\344\270\255\351\230\266/8.web\345\256\211\345\205\250/3.\345\270\270\350\247\201web\346\224\273\345\207\273\346\212\200\346\234\257/config.json" create mode 100644 "data/2.web\344\270\255\351\230\266/8.web\345\256\211\345\205\250/config.json" create mode 100644 "data/2.web\344\270\255\351\230\266/9.\346\200\247\350\203\275\344\274\230\345\214\226/1.\346\214\207\346\240\207/config.json" create mode 100644 "data/2.web\344\270\255\351\230\266/9.\346\200\247\350\203\275\344\274\230\345\214\226/2.\350\257\204\344\274\260\345\267\245\345\205\267/config.json" create mode 100644 "data/2.web\344\270\255\351\230\266/9.\346\200\247\350\203\275\344\274\230\345\214\226/3.\344\274\230\345\214\226\346\226\271\346\241\210/config.json" create mode 100644 "data/2.web\344\270\255\351\230\266/9.\346\200\247\350\203\275\344\274\230\345\214\226/config.json" create mode 100644 "data/2.web\344\270\255\351\230\266/config.json" create mode 100644 "data/3.web\351\253\230\351\230\266/1.\345\211\215\347\253\257\346\236\266\346\236\204\346\250\241\345\274\217/1.MVC/config.json" create mode 100644 "data/3.web\351\253\230\351\230\266/1.\345\211\215\347\253\257\346\236\266\346\236\204\346\250\241\345\274\217/2.MVP/config.json" create mode 100644 "data/3.web\351\253\230\351\230\266/1.\345\211\215\347\253\257\346\236\266\346\236\204\346\250\241\345\274\217/3.MVVM/config.json" create mode 100644 "data/3.web\351\253\230\351\230\266/1.\345\211\215\347\253\257\346\236\266\346\236\204\346\250\241\345\274\217/config.json" create mode 100644 "data/3.web\351\253\230\351\230\266/2.vue.js/1.\351\201\207\350\247\201Vue.js/config.json" create mode 100644 "data/3.web\351\253\230\351\230\266/2.vue.js/10.Vue\345\256\236\344\276\213\346\226\271\346\263\225/config.json" create mode 100644 "data/3.web\351\253\230\351\230\266/2.vue.js/11.\347\273\204\344\273\266/config.json" create mode 100644 "data/3.web\351\253\230\351\230\266/2.vue.js/12.\350\241\250\345\215\225\346\240\241\351\252\214/config.json" create mode 100644 "data/3.web\351\253\230\351\230\266/2.vue.js/13.\344\270\216\346\234\215\345\212\241\347\253\257\351\200\232\344\277\241/config.json" create mode 100644 "data/3.web\351\253\230\351\230\266/2.vue.js/14.\350\267\257\347\224\261\344\270\216\350\247\206\345\233\276/config.json" create mode 100644 "data/3.web\351\253\230\351\230\266/2.vue.js/15.vue-cli/config.json" create mode 100644 "data/3.web\351\253\230\351\230\266/2.vue.js/16.\346\265\213\350\257\225\345\274\200\345\217\221\344\270\216\350\260\203\350\257\225/config.json" create mode 100644 "data/3.web\351\253\230\351\230\266/2.vue.js/17.Scrat Vue.js\347\232\204\345\214\226\345\255\246\345\217\215\345\272\224/config.json" create mode 100644 "data/3.web\351\253\230\351\230\266/2.vue.js/18.Vue.js 2.0/config.json" create mode 100644 "data/3.web\351\253\230\351\230\266/2.vue.js/19.\346\272\220\347\240\201\347\257\207\342\200\224\342\200\224util/config.json" create mode 100644 "data/3.web\351\253\230\351\230\266/2.vue.js/2.\346\225\260\346\215\256\347\273\221\345\256\232/config.json" create mode 100644 "data/3.web\351\253\230\351\230\266/2.vue.js/20.\346\272\220\347\240\201\347\257\207\342\200\224\342\200\224\346\267\261\345\205\245\345\223\215\345\272\224\345\274\217\345\216\237\347\220\206/config.json" create mode 100644 "data/3.web\351\253\230\351\230\266/2.vue.js/21.\346\272\220\347\240\201\347\257\207\342\200\224\342\200\224\347\210\266\345\255\220\347\261\273\345\220\210\345\271\266\347\255\226\347\225\245/config.json" create mode 100644 "data/3.web\351\253\230\351\230\266/2.vue.js/22.\346\272\220\347\240\201\347\257\207\342\200\224\342\200\224\347\274\223\345\255\230/config.json" create mode 100644 "data/3.web\351\253\230\351\230\266/2.vue.js/23.\346\272\220\347\240\201\347\257\207\342\200\224\342\200\224\345\261\236\346\200\247props/config.json" create mode 100644 "data/3.web\351\253\230\351\230\266/2.vue.js/24.\346\272\220\347\240\201\347\257\207\342\200\224\342\200\224events/config.json" create mode 100644 "data/3.web\351\253\230\351\230\266/2.vue.js/3.\346\214\207\344\273\244/config.json" create mode 100644 "data/3.web\351\253\230\351\230\266/2.vue.js/4.\350\256\241\347\256\227\345\261\236\346\200\247/config.json" create mode 100644 "data/3.web\351\253\230\351\230\266/2.vue.js/5.\350\241\250\345\215\225\346\216\247\344\273\266\347\273\221\345\256\232/config.json" create mode 100644 "data/3.web\351\253\230\351\230\266/2.vue.js/6.\350\277\207\346\273\244\345\231\250/config.json" create mode 100644 "data/3.web\351\253\230\351\230\266/2.vue.js/7.Class\344\270\216Style\347\273\221\345\256\232/config.json" create mode 100644 "data/3.web\351\253\230\351\230\266/2.vue.js/8.\350\277\207\346\270\241/config.json" create mode 100644 "data/3.web\351\253\230\351\230\266/2.vue.js/9.Method97/config.json" create mode 100644 "data/3.web\351\253\230\351\230\266/2.vue.js/config.json" create mode 100644 "data/3.web\351\253\230\351\230\266/3.angular.js/1.AngularJS\347\256\200\344\273\213/config.json" create mode 100644 "data/3.web\351\253\230\351\230\266/3.angular.js/10.AngularJS\350\277\207\346\273\244\345\231\250/config.json" create mode 100644 "data/3.web\351\253\230\351\230\266/3.angular.js/11.AngularJS\344\270\255\347\232\204\344\276\235\350\265\226\346\263\250\345\205\245/config.json" create mode 100644 "data/3.web\351\253\230\351\230\266/3.angular.js/12.AngularJS\344\270\216\345\212\250\347\224\273/config.json" create mode 100644 "data/3.web\351\253\230\351\230\266/3.angular.js/13.Cookie\350\257\273\345\206\231/config.json" create mode 100644 "data/3.web\351\253\230\351\230\266/3.angular.js/14.Promise/config.json" create mode 100644 "data/3.web\351\253\230\351\230\266/3.angular.js/15.AngularUI/config.json" create mode 100644 "data/3.web\351\253\230\351\230\266/3.angular.js/16.AngularJS\347\262\276\345\215\216\346\211\251\345\261\225/config.json" create mode 100644 "data/3.web\351\253\230\351\230\266/3.angular.js/2.\345\217\214\345\220\221\346\225\260\346\215\256\347\273\221\345\256\232/config.json" create mode 100644 "data/3.web\351\253\230\351\230\266/3.angular.js/3.AngularJS\344\270\216MVC/config.json" create mode 100644 "data/3.web\351\253\230\351\230\266/3.angular.js/4.\345\272\224\347\224\250\346\250\241\345\235\227\345\214\226/config.json" create mode 100644 "data/3.web\351\253\230\351\230\266/3.angular.js/5.\344\275\234\347\224\250\345\237\237\344\270\216\344\272\213\344\273\266/config.json" create mode 100644 "data/3.web\351\253\230\351\230\266/3.angular.js/6.\350\267\257\347\224\261\344\270\216\345\244\232\350\247\206\345\233\276/config.json" create mode 100644 "data/3.web\351\253\230\351\230\266/3.angular.js/7.AngularJS\350\241\250\345\215\225\346\240\241\351\252\214/config.json" create mode 100644 "data/3.web\351\253\230\351\230\266/3.angular.js/8.AngularJS\346\214\207\344\273\244/config.json" create mode 100644 "data/3.web\351\253\230\351\230\266/3.angular.js/9.Service\343\200\201Factory\344\270\216Provider/config.json" create mode 100644 "data/3.web\351\253\230\351\230\266/3.angular.js/config.json" create mode 100644 "data/3.web\351\253\230\351\230\266/4.react.js/1.React\347\256\200\344\273\213/config.json" create mode 100644 "data/3.web\351\253\230\351\230\266/4.react.js/10.\347\212\266\346\200\201\346\217\220\345\215\207/config.json" create mode 100644 "data/3.web\351\253\230\351\230\266/4.react.js/11.React\346\211\251\345\261\225/config.json" create mode 100644 "data/3.web\351\253\230\351\230\266/4.react.js/2.React JSX/config.json" create mode 100644 "data/3.web\351\253\230\351\230\266/4.react.js/3.React\347\273\204\344\273\266\344\270\216Props/config.json" create mode 100644 "data/3.web\351\253\230\351\230\266/4.react.js/4.React State\344\270\216\347\224\237\345\221\275\345\221\250\346\234\237/config.json" create mode 100644 "data/3.web\351\253\230\351\230\266/4.react.js/5.React\344\272\213\344\273\266\345\244\204\347\220\206/config.json" create mode 100644 "data/3.web\351\253\230\351\230\266/4.react.js/6.React\346\235\241\344\273\266\346\270\262\346\237\223/config.json" create mode 100644 "data/3.web\351\253\230\351\230\266/4.react.js/7.React\345\210\227\350\241\250\344\270\216Key/config.json" create mode 100644 "data/3.web\351\253\230\351\230\266/4.react.js/8.React\350\241\250\345\215\225/config.json" create mode 100644 "data/3.web\351\253\230\351\230\266/4.react.js/9.\347\273\204\345\220\210\344\270\216\347\273\247\346\211\277/config.json" create mode 100644 "data/3.web\351\253\230\351\230\266/4.react.js/config.json" create mode 100644 "data/3.web\351\253\230\351\230\266/5.\345\260\217\347\250\213\345\272\217\345\274\200\345\217\221/1.\345\276\256\344\277\241\345\260\217\347\250\213\345\272\217/config.json" create mode 100644 "data/3.web\351\253\230\351\230\266/5.\345\260\217\347\250\213\345\272\217\345\274\200\345\217\221/2.\346\224\257\344\273\230\345\256\235\345\260\217\347\250\213\345\272\217/config.json" create mode 100644 "data/3.web\351\253\230\351\230\266/5.\345\260\217\347\250\213\345\272\217\345\274\200\345\217\221/config.json" create mode 100644 "data/3.web\351\253\230\351\230\266/6.\347\247\273\345\212\250App\345\274\200\345\217\221/1.Android App\345\274\200\345\217\221/config.json" create mode 100644 "data/3.web\351\253\230\351\230\266/6.\347\247\273\345\212\250App\345\274\200\345\217\221/2.IOS App\345\274\200\345\217\221/config.json" create mode 100644 "data/3.web\351\253\230\351\230\266/6.\347\247\273\345\212\250App\345\274\200\345\217\221/3.\350\267\250\345\271\263\345\217\260\345\274\200\345\217\221/config.json" create mode 100644 "data/3.web\351\253\230\351\230\266/6.\347\247\273\345\212\250App\345\274\200\345\217\221/config.json" create mode 100644 "data/3.web\351\253\230\351\230\266/7.\346\241\214\351\235\242\345\272\224\347\224\250\345\274\200\345\217\221(GUI)/1.Java\346\241\214\351\235\242\345\272\224\347\224\250\345\274\200\345\217\221/config.json" create mode 100644 "data/3.web\351\253\230\351\230\266/7.\346\241\214\351\235\242\345\272\224\347\224\250\345\274\200\345\217\221(GUI)/2..net\346\241\214\351\235\242\345\272\224\347\224\250\347\250\213\345\272\217\345\274\200\345\217\221/config.json" create mode 100644 "data/3.web\351\253\230\351\230\266/7.\346\241\214\351\235\242\345\272\224\347\224\250\345\274\200\345\217\221(GUI)/3.\350\267\250\345\271\263\345\217\260\346\241\214\351\235\242\345\272\224\347\224\250\347\250\213\345\272\217\345\274\200\345\217\221/config.json" create mode 100644 "data/3.web\351\253\230\351\230\266/7.\346\241\214\351\235\242\345\272\224\347\224\250\345\274\200\345\217\221(GUI)/config.json" create mode 100644 "data/3.web\351\253\230\351\230\266/config.json" create mode 100644 data/config.json create mode 100644 data/tree.json create mode 100644 main.py create mode 100644 src/tree.py diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..de7246c --- /dev/null +++ b/.gitignore @@ -0,0 +1,6 @@ +.vscode +.idea +.DS_Store +__pycache__ +*.pyc +*.zip \ No newline at end of file diff --git a/README.md b/README.md index 15ec745..e73dbf4 100644 --- a/README.md +++ b/README.md @@ -1,3 +1,148 @@ # skill_tree_web -Web 技能树 \ No newline at end of file +## 初始化 + +``` +pip install -r requirement.txt +``` + + +## 目录结构说明 + +* 技能树`骨架文件`: + * 位置:`data/tree.json` + * 说明:该文件是执行 `python main.py` 生成的,请勿人工编辑 +* 技能树`根节点`配置文件: + * 位置:`data/config.json` + * 说明:可编辑配置关键词等字段,其中 `node_id` 字段是生成的,请勿编辑 +* 技能树`难度节点`: + * 位置:`data/xxx`,例如: `data/1.web初阶` + * 说明: + * 每个技能树有 3 个等级,目录前的序号是必要的,用来保持文件夹目录的顺序 + * 每个目录下有一个 `config.json` 可配置关键词信息,其中 `node_id` 字段是生成的,请勿编辑 +* 技能树`章节点`: + * 位置:`data/xxx/xxx`,例如:`data/1.web初阶/1.前端基础` + * 说明: + * 每个技能树的每个难度等级有 n 个章节,目录前的序号是必要的,用来保持文件夹目录的顺序 + * 每个目录下有一个 `config.json` 可配置关键词信息,其中 `node_id` 字段是生成的,请勿编辑 +* 技能树`知识节点`: + * 位置:`data/xxx/xxx/xxx`,例如:`data/1.web初阶/1.前端基础/1.客户端` + * 说明: + * 每个技能树的每章有 `n` 个知识节点,目录前的序号是必要的,用来保持文件夹目录的顺序 + * 每个目录下有一个 `config.json` + * 其中 `node_id` 字段是生成的,请勿编辑 + * 其中 `keywords` 可配置关键字字段 + * 其中 `children` 可配置该`知识节点`下的子树结构信息,参考后面描述 + * 其中 `export` 可配置该`知识节点`下的导出习题信息,参考后面描述 + + +## `知识节点` 子树信息结构 + +例如 `data/1.web初阶/1.前端基础/1.客户端/config.json` 里配置对该知识节点子树信息结构: +```json +{ + // ... + + "children": [ + // TODO ... + ], +} +``` + + + +## `知识节点` 的导出习题编辑 + +例如 `data/1.web初阶/1.前端基础/1.客户端/config.json` 里配置对该知识节点导出的习题 + +```json +{ + // ... + "export": [ + // TODO ... + ] +} +``` + +格式说明: +* `file`: 指定该目录下的习题源文件 +* `variants`: 指定习题同名的json选项配置文件,参考下一节 +* `depends`: 如果习题依赖同目录下的其他习题源代码,则在此字段里配置依赖的其他习题源文件名 + +## `知识节点` 的导出习题选项配置编辑 + +首先,在知识节点下增加一个习题代码,例如在 `data/1.web初阶/1.前端基础/1.客户端` 下增加一个`HelloWorld.web`代码: + +```web +// TODO +``` + +其次,增加一个同名的选项配置文件`HelloWorld.json`,目前有两种配置规则 + +**单行替换规则**: + +* 配置由`one_line`字段指定的单行替换字典 +* 格式是:`"<源字符串>"`: [`"<替换字符串A>"`, `<替换字符串B>`,...], + * 其中每个 `"<源字符串>"` `/` `"<替换字符串A>"` 被生成为是一个替换选项 + * 指定的配置应该能至少生成 `3+` 个替换选项 + +```json +{ + // TODO +} +``` + +上面的替换规则会将代码替换成 3 个变种的代码: + +```html +// 变种代码1 +// TODO +``` + +```html +// 变种代码2 +// TODO +``` + +```html +// 变种代码3 +// TODO +``` + +这些变种代码将会作为技能树该知识点该代码选择题的选项。 + +**多行替换规则**: + +* 配置由`multiline`字段指定的多行替换数组 +* 数组的每个元素是一组替换规则,会整组被替换 + +例如: + +```json +{ + // TODO +} +``` + +同样,该配置将支持将源代码生成3个变种代码 + +```html +// 变种代码1 +// TODO +``` + +```html +// 变种代码2, 注意第2组替换规则,包含了两行替换 +// TODO +``` + +```html +// 变种代码3 +// TODO +``` + +## 技能树合成 + +在根目录下执行 `python main.py` 会合成技能树文件,合成的技能树文件: `data/tree.json` +* 合成过程中,会自动检查每个目录下 `config.json` 里的 `node_id` 是否存在,不存在则生成 +* 合成过程中,会自动检查每个知识点目录下 `config.json` 里的 `export` 里导出的习题配置,检查是否存在`exercise_id` 字段,如果不存在则生成 diff --git "a/data/1.web\345\210\235\351\230\266/1.\345\211\215\347\253\257\345\237\272\347\241\200/1.\345\256\242\346\210\267\347\253\257/config.json" "b/data/1.web\345\210\235\351\230\266/1.\345\211\215\347\253\257\345\237\272\347\241\200/1.\345\256\242\346\210\267\347\253\257/config.json" new file mode 100644 index 0000000..549cd8e --- /dev/null +++ "b/data/1.web\345\210\235\351\230\266/1.\345\211\215\347\253\257\345\237\272\347\241\200/1.\345\256\242\346\210\267\347\253\257/config.json" @@ -0,0 +1,51 @@ +{ + "node_id": "569d5e11c4fc5de7844053d9a733c5e8", + "keywords": [], + "children": [ + { + "浏览器": { + "keywords": [], + "children": [ + { + "Chrome": { + "keywords": [], + "children": [] + } + }, + { + "Safari": { + "keywords": [], + "children": [] + } + }, + { + "Firefox": { + "keywords": [], + "children": [] + } + } + ] + } + }, + { + "APP": { + "keywords": [], + "children": [ + { + "小程序": { + "keywords": [], + "children": [] + } + }, + { + "WebView": { + "keywords": [], + "children": [] + } + } + ] + } + } + ], + "export": [] +} \ No newline at end of file diff --git "a/data/1.web\345\210\235\351\230\266/1.\345\211\215\347\253\257\345\237\272\347\241\200/2.\347\275\221\347\273\234/config.json" "b/data/1.web\345\210\235\351\230\266/1.\345\211\215\347\253\257\345\237\272\347\241\200/2.\347\275\221\347\273\234/config.json" new file mode 100644 index 0000000..9d70dfe --- /dev/null +++ "b/data/1.web\345\210\235\351\230\266/1.\345\211\215\347\253\257\345\237\272\347\241\200/2.\347\275\221\347\273\234/config.json" @@ -0,0 +1,31 @@ +{ + "node_id": "569d5e11c4fc5de7844053d9a733c5e8", + "keywords": [], + "children": [ + { + "Domain": { + "keywords": [], + "children": [] + } + }, + { + "TCP/IP": { + "keywords": [], + "children": [] + } + }, + { + "DNS": { + "keywords": [], + "children": [] + } + }, + { + "HTTP": { + "keywords": [], + "children": [] + } + } + ], + "export": [] +} \ No newline at end of file diff --git "a/data/1.web\345\210\235\351\230\266/1.\345\211\215\347\253\257\345\237\272\347\241\200/3.\346\234\215\345\212\241\347\253\257/config.json" "b/data/1.web\345\210\235\351\230\266/1.\345\211\215\347\253\257\345\237\272\347\241\200/3.\346\234\215\345\212\241\347\253\257/config.json" new file mode 100644 index 0000000..82e651b --- /dev/null +++ "b/data/1.web\345\210\235\351\230\266/1.\345\211\215\347\253\257\345\237\272\347\241\200/3.\346\234\215\345\212\241\347\253\257/config.json" @@ -0,0 +1,69 @@ +{ + "node_id": "569d5e11c4fc5de7844053d9a733c5e8", + "keywords": [], + "children": [ + { + "WebServer": { + "keywords": [], + "children": [ + { + "Nginx": { + "keywords": [], + "children": [] + } + }, + { + "Apache HTTP Server": { + "keywords": [], + "children": [] + } + }, + { + "CDN": { + "keywords": [], + "children": [] + } + } + ] + } + }, + { + "服务端语言": { + "keywords": [], + "children": [ + { + "PHP": { + "keywords": [], + "children": [] + } + }, + { + "Java": { + "keywords": [], + "children": [] + } + }, + { + "Golang": { + "keywords": [], + "children": [] + } + } + ] + } + }, + { + "数据库": { + "keywords": [], + "children": [] + } + }, + { + "操作系统": { + "keywords": [], + "children": [] + } + } + ], + "export": [] +} \ No newline at end of file diff --git "a/data/1.web\345\210\235\351\230\266/1.\345\211\215\347\253\257\345\237\272\347\241\200/4.\350\241\214\344\270\232\346\240\207\345\207\206/config.json" "b/data/1.web\345\210\235\351\230\266/1.\345\211\215\347\253\257\345\237\272\347\241\200/4.\350\241\214\344\270\232\346\240\207\345\207\206/config.json" new file mode 100644 index 0000000..8bce452 --- /dev/null +++ "b/data/1.web\345\210\235\351\230\266/1.\345\211\215\347\253\257\345\237\272\347\241\200/4.\350\241\214\344\270\232\346\240\207\345\207\206/config.json" @@ -0,0 +1,44 @@ +{ + "node_id": "569d5e11c4fc5de7844053d9a733c5e8", + "keywords": [], + "children": [ + { + "W3C/WHATWG": { + "keywords": [], + "children": [ + { + "CSS标准": { + "keywords": [], + "children": [] + } + }, + { + "HTML、XHTML、XML、HTML5标准": { + "keywords": [], + "children": [] + } + }, + { + "DOM标准": { + "keywords": [], + "children": [] + } + }, + { + "SVG标准": { + "keywords": [], + "children": [] + } + }, + { + "小程序标准": { + "keywords": [], + "children": [] + } + } + ] + } + } + ], + "export": [] +} \ No newline at end of file diff --git "a/data/1.web\345\210\235\351\230\266/1.\345\211\215\347\253\257\345\237\272\347\241\200/5.ECMA-TC39/config.json" "b/data/1.web\345\210\235\351\230\266/1.\345\211\215\347\253\257\345\237\272\347\241\200/5.ECMA-TC39/config.json" new file mode 100644 index 0000000..2333e69 --- /dev/null +++ "b/data/1.web\345\210\235\351\230\266/1.\345\211\215\347\253\257\345\237\272\347\241\200/5.ECMA-TC39/config.json" @@ -0,0 +1,19 @@ +{ + "node_id": "569d5e11c4fc5de7844053d9a733c5e8", + "keywords": [], + "children": [ + { + "EcmaScript标准": { + "keywords": [], + "children": [] + } + }, + { + "JavaScript标准": { + "keywords": [], + "children": [] + } + } + ], + "export": [] +} \ No newline at end of file diff --git "a/data/1.web\345\210\235\351\230\266/1.\345\211\215\347\253\257\345\237\272\347\241\200/config.json" "b/data/1.web\345\210\235\351\230\266/1.\345\211\215\347\253\257\345\237\272\347\241\200/config.json" new file mode 100644 index 0000000..3407cf9 --- /dev/null +++ "b/data/1.web\345\210\235\351\230\266/1.\345\211\215\347\253\257\345\237\272\347\241\200/config.json" @@ -0,0 +1,4 @@ +{ + "node_id": "569d5e11c4fc5de7844053d9a733c5e8", + "keywords": [] +} \ No newline at end of file diff --git "a/data/1.web\345\210\235\351\230\266/2.\347\240\224\345\217\221\345\267\245\345\205\267/1.\347\274\226\350\276\221\345\231\250/config.json" "b/data/1.web\345\210\235\351\230\266/2.\347\240\224\345\217\221\345\267\245\345\205\267/1.\347\274\226\350\276\221\345\231\250/config.json" new file mode 100644 index 0000000..9f3715a --- /dev/null +++ "b/data/1.web\345\210\235\351\230\266/2.\347\240\224\345\217\221\345\267\245\345\205\267/1.\347\274\226\350\276\221\345\231\250/config.json" @@ -0,0 +1,25 @@ +{ + "node_id": "569d5e11c4fc5de7844053d9a733c5e8", + "keywords": [], + "children": [ + { + "Sublime Text": { + "keywords": [], + "children": [] + } + }, + { + "Visual Studio Code": { + "keywords": [], + "children": [] + } + }, + { + "WebStorm": { + "keywords": [], + "children": [] + } + } + ], + "export": [] +} \ No newline at end of file diff --git "a/data/1.web\345\210\235\351\230\266/2.\347\240\224\345\217\221\345\267\245\345\205\267/2.\350\260\203\350\257\225\351\242\204\350\247\210/config.json" "b/data/1.web\345\210\235\351\230\266/2.\347\240\224\345\217\221\345\267\245\345\205\267/2.\350\260\203\350\257\225\351\242\204\350\247\210/config.json" new file mode 100644 index 0000000..66d05e6 --- /dev/null +++ "b/data/1.web\345\210\235\351\230\266/2.\347\240\224\345\217\221\345\267\245\345\205\267/2.\350\260\203\350\257\225\351\242\204\350\247\210/config.json" @@ -0,0 +1,83 @@ +{ + "node_id": "569d5e11c4fc5de7844053d9a733c5e8", + "keywords": [], + "children": [ + { + "浏览器调试工具": { + "keywords": [], + "children": [ + { + "FireBug": { + "keywords": [], + "children": [] + } + }, + { + "Chrome DevTools": { + "keywords": [], + "children": [] + } + } + ] + } + }, + { + "本地服务": { + "keywords": [], + "children": [ + { + "file://": { + "keywords": [], + "children": [] + } + }, + { + "http://、SimpleHTTPServer": { + "keywords": [], + "children": [] + } + } + ] + } + }, + { + "在线服务": { + "keywords": [], + "children": [ + { + "CodePen": { + "keywords": [], + "children": [] + } + }, + { + "JSFiddle": { + "keywords": [], + "children": [] + } + } + ] + } + }, + { + "网络调试": { + "keywords": [], + "children": [ + { + "hosts、Switchhosts": { + "keywords": [], + "children": [] + } + }, + { + "Debugging Proxy、Charles、wireshark": { + "keywords": [], + "children": [] + } + } + ] + } + } + ], + "export": [] +} \ No newline at end of file diff --git "a/data/1.web\345\210\235\351\230\266/2.\347\240\224\345\217\221\345\267\245\345\205\267/3.\345\233\276\347\211\207\347\274\226\350\276\221\345\231\250/config.json" "b/data/1.web\345\210\235\351\230\266/2.\347\240\224\345\217\221\345\267\245\345\205\267/3.\345\233\276\347\211\207\347\274\226\350\276\221\345\231\250/config.json" new file mode 100644 index 0000000..a481e20 --- /dev/null +++ "b/data/1.web\345\210\235\351\230\266/2.\347\240\224\345\217\221\345\267\245\345\205\267/3.\345\233\276\347\211\207\347\274\226\350\276\221\345\231\250/config.json" @@ -0,0 +1,19 @@ +{ + "node_id": "569d5e11c4fc5de7844053d9a733c5e8", + "keywords": [], + "children": [ + { + "Photoshop": { + "keywords": [], + "children": [] + } + }, + { + "Sketch": { + "keywords": [], + "children": [] + } + } + ], + "export": [] +} \ No newline at end of file diff --git "a/data/1.web\345\210\235\351\230\266/2.\347\240\224\345\217\221\345\267\245\345\205\267/4.\347\211\210\346\234\254\347\256\241\347\220\206/config.json" "b/data/1.web\345\210\235\351\230\266/2.\347\240\224\345\217\221\345\267\245\345\205\267/4.\347\211\210\346\234\254\347\256\241\347\220\206/config.json" new file mode 100644 index 0000000..c2270dd --- /dev/null +++ "b/data/1.web\345\210\235\351\230\266/2.\347\240\224\345\217\221\345\267\245\345\205\267/4.\347\211\210\346\234\254\347\256\241\347\220\206/config.json" @@ -0,0 +1,19 @@ +{ + "node_id": "569d5e11c4fc5de7844053d9a733c5e8", + "keywords": [], + "children": [ + { + "Git": { + "keywords": [], + "children": [] + } + }, + { + "SVN": { + "keywords": [], + "children": [] + } + } + ], + "export": [] +} \ No newline at end of file diff --git "a/data/1.web\345\210\235\351\230\266/2.\347\240\224\345\217\221\345\267\245\345\205\267/config.json" "b/data/1.web\345\210\235\351\230\266/2.\347\240\224\345\217\221\345\267\245\345\205\267/config.json" new file mode 100644 index 0000000..3407cf9 --- /dev/null +++ "b/data/1.web\345\210\235\351\230\266/2.\347\240\224\345\217\221\345\267\245\345\205\267/config.json" @@ -0,0 +1,4 @@ +{ + "node_id": "569d5e11c4fc5de7844053d9a733c5e8", + "keywords": [] +} \ No newline at end of file diff --git "a/data/1.web\345\210\235\351\230\266/3.HTML/1.\345\205\203\347\264\240/config.json" "b/data/1.web\345\210\235\351\230\266/3.HTML/1.\345\205\203\347\264\240/config.json" new file mode 100644 index 0000000..3800e7b --- /dev/null +++ "b/data/1.web\345\210\235\351\230\266/3.HTML/1.\345\205\203\347\264\240/config.json" @@ -0,0 +1,149 @@ +{ + "node_id": "569d5e11c4fc5de7844053d9a733c5e8", + "keywords": [], + "children": [ + { + "根元素": { + "keywords": [], + "children": [ + { + "主根元素 html": { + "keywords": [], + "children": [] + } + }, + { + "分区根元素 body": { + "keywords": [], + "children": [] + } + } + ] + } + }, + { + "元数据": { + "keywords": [], + "children": [ + { + "base、head": { + "keywords": [], + "children": [] + } + } + ] + } + }, + { + "内容分区": { + "keywords": [], + "children": [ + { + "header、footer": { + "keywords": [], + "children": [] + } + } + ] + } + }, + { + "内容": { + "keywords": [], + "children": [ + { + "块级内容 div、dir": { + "keywords": [], + "children": [] + } + }, + { + "文字内容 a、b、strong": { + "keywords": [], + "children": [] + } + } + ] + } + }, + { + "图片和多媒体": { + "keywords": [], + "children": [ + { + "audio、img": { + "keywords": [], + "children": [] + } + } + ] + } + }, + { + "内嵌内容": { + "keywords": [], + "children": [ + { + "iframe、object": { + "keywords": [], + "children": [] + } + } + ] + } + }, + { + "脚本": { + "keywords": [], + "children": [ + { + "canvas、script": { + "keywords": [], + "children": [] + } + } + ] + } + }, + { + "表格": { + "keywords": [], + "children": [ + { + "table、tbody": { + "keywords": [], + "children": [] + } + } + ] + } + }, + { + "表单": { + "keywords": [], + "children": [ + { + "button、input": { + "keywords": [], + "children": [] + } + } + ] + } + }, + { + "可交互元素": { + "keywords": [], + "children": [ + { + "menu、menuitem": { + "keywords": [], + "children": [] + } + } + ] + } + } + ], + "export": [] +} \ No newline at end of file diff --git "a/data/1.web\345\210\235\351\230\266/3.HTML/2.\345\261\236\346\200\247/config.json" "b/data/1.web\345\210\235\351\230\266/3.HTML/2.\345\261\236\346\200\247/config.json" new file mode 100644 index 0000000..99090e2 --- /dev/null +++ "b/data/1.web\345\210\235\351\230\266/3.HTML/2.\345\261\236\346\200\247/config.json" @@ -0,0 +1,26 @@ +{ + "node_id": "569d5e11c4fc5de7844053d9a733c5e8", + "keywords": [], + "children": [ + { + "常用属性": { + "keywords": [], + "children": [ + { + "class、id、style、title": { + "keywords": [], + "children": [] + } + } + ] + } + }, + { + "全局属性": { + "keywords": [], + "children": [] + } + } + ], + "export": [] +} \ No newline at end of file diff --git "a/data/1.web\345\210\235\351\230\266/3.HTML/3.\344\272\213\344\273\266/config.json" "b/data/1.web\345\210\235\351\230\266/3.HTML/3.\344\272\213\344\273\266/config.json" new file mode 100644 index 0000000..0d56f5c --- /dev/null +++ "b/data/1.web\345\210\235\351\230\266/3.HTML/3.\344\272\213\344\273\266/config.json" @@ -0,0 +1,37 @@ +{ + "node_id": "569d5e11c4fc5de7844053d9a733c5e8", + "keywords": [], + "children": [ + { + "窗口事件": { + "keywords": [], + "children": [] + } + }, + { + "表单事件": { + "keywords": [], + "children": [] + } + }, + { + "键盘事件": { + "keywords": [], + "children": [] + } + }, + { + "鼠标事件": { + "keywords": [], + "children": [] + } + }, + { + "多媒体事件": { + "keywords": [], + "children": [] + } + } + ], + "export": [] +} \ No newline at end of file diff --git "a/data/1.web\345\210\235\351\230\266/3.HTML/4.\347\274\226\347\240\201/config.json" "b/data/1.web\345\210\235\351\230\266/3.HTML/4.\347\274\226\347\240\201/config.json" new file mode 100644 index 0000000..ebbb276 --- /dev/null +++ "b/data/1.web\345\210\235\351\230\266/3.HTML/4.\347\274\226\347\240\201/config.json" @@ -0,0 +1,25 @@ +{ + "node_id": "569d5e11c4fc5de7844053d9a733c5e8", + "keywords": [], + "children": [ + { + "URL编码": { + "keywords": [], + "children": [] + } + }, + { + "语言代码": { + "keywords": [], + "children": [] + } + }, + { + "字符集": { + "keywords": [], + "children": [] + } + } + ], + "export": [] +} \ No newline at end of file diff --git "a/data/1.web\345\210\235\351\230\266/3.HTML/config.json" "b/data/1.web\345\210\235\351\230\266/3.HTML/config.json" new file mode 100644 index 0000000..3407cf9 --- /dev/null +++ "b/data/1.web\345\210\235\351\230\266/3.HTML/config.json" @@ -0,0 +1,4 @@ +{ + "node_id": "569d5e11c4fc5de7844053d9a733c5e8", + "keywords": [] +} \ No newline at end of file diff --git "a/data/1.web\345\210\235\351\230\266/4.CSS/1.\350\257\255\346\263\225/config.json" "b/data/1.web\345\210\235\351\230\266/4.CSS/1.\350\257\255\346\263\225/config.json" new file mode 100644 index 0000000..b038888 --- /dev/null +++ "b/data/1.web\345\210\235\351\230\266/4.CSS/1.\350\257\255\346\263\225/config.json" @@ -0,0 +1,61 @@ +{ + "node_id": "569d5e11c4fc5de7844053d9a733c5e8", + "keywords": [], + "children": [ + { + "@规则": { + "keywords": [], + "children": [] + } + }, + { + "层叠": { + "keywords": [], + "children": [] + } + }, + { + "注释": { + "keywords": [], + "children": [] + } + }, + { + "解释器": { + "keywords": [], + "children": [] + } + }, + { + "继承": { + "keywords": [], + "children": [] + } + }, + { + "简写": { + "keywords": [], + "children": [] + } + }, + { + "优先级": { + "keywords": [], + "children": [] + } + }, + { + "值定义": { + "keywords": [], + "children": [] + } + }, + { + "单位与取值类型": { + "keywords": [], + "children": [] + } + } + ], + "export": [] +} \ No newline at end of file diff --git "a/data/1.web\345\210\235\351\230\266/4.CSS/2.\351\200\211\346\213\251\345\231\250/config.json" "b/data/1.web\345\210\235\351\230\266/4.CSS/2.\351\200\211\346\213\251\345\231\250/config.json" new file mode 100644 index 0000000..ed9e980 --- /dev/null +++ "b/data/1.web\345\210\235\351\230\266/4.CSS/2.\351\200\211\346\213\251\345\231\250/config.json" @@ -0,0 +1,67 @@ +{ + "node_id": "569d5e11c4fc5de7844053d9a733c5e8", + "keywords": [], + "children": [ + { + "元素选择器": { + "keywords": [], + "children": [] + } + }, + { + "选择器分组": { + "keywords": [], + "children": [] + } + }, + { + "类选择器": { + "keywords": [], + "children": [] + } + }, + { + "ID 选择器": { + "keywords": [], + "children": [] + } + }, + { + "属性选择器": { + "keywords": [], + "children": [] + } + }, + { + "后代选择器": { + "keywords": [], + "children": [] + } + }, + { + "子元素选择器": { + "keywords": [], + "children": [] + } + }, + { + "相邻选择器": { + "keywords": [], + "children": [] + } + }, + { + "伪类": { + "keywords": [], + "children": [] + } + }, + { + "伪元素": { + "keywords": [], + "children": [] + } + } + ], + "export": [] +} \ No newline at end of file diff --git "a/data/1.web\345\210\235\351\230\266/4.CSS/3.\345\256\232\344\275\215/config.json" "b/data/1.web\345\210\235\351\230\266/4.CSS/3.\345\256\232\344\275\215/config.json" new file mode 100644 index 0000000..7ab939e --- /dev/null +++ "b/data/1.web\345\210\235\351\230\266/4.CSS/3.\345\256\232\344\275\215/config.json" @@ -0,0 +1,25 @@ +{ + "node_id": "569d5e11c4fc5de7844053d9a733c5e8", + "keywords": [], + "children": [ + { + "position": { + "keywords": [], + "children": [] + } + }, + { + "top、left、bottom、right": { + "keywords": [], + "children": [] + } + }, + { + "z-index": { + "keywords": [], + "children": [] + } + } + ], + "export": [] +} \ No newline at end of file diff --git "a/data/1.web\345\210\235\351\230\266/4.CSS/4.\345\270\203\345\261\200/config.json" "b/data/1.web\345\210\235\351\230\266/4.CSS/4.\345\270\203\345\261\200/config.json" new file mode 100644 index 0000000..bb56898 --- /dev/null +++ "b/data/1.web\345\210\235\351\230\266/4.CSS/4.\345\270\203\345\261\200/config.json" @@ -0,0 +1,31 @@ +{ + "node_id": "569d5e11c4fc5de7844053d9a733c5e8", + "keywords": [], + "children": [ + { + "Box Model": { + "keywords": [], + "children": [] + } + }, + { + "FlexBox": { + "keywords": [], + "children": [] + } + }, + { + "Grid": { + "keywords": [], + "children": [] + } + }, + { + "Column": { + "keywords": [], + "children": [] + } + } + ], + "export": [] +} \ No newline at end of file diff --git "a/data/1.web\345\210\235\351\230\266/4.CSS/5.\346\240\267\345\274\217/config.json" "b/data/1.web\345\210\235\351\230\266/4.CSS/5.\346\240\267\345\274\217/config.json" new file mode 100644 index 0000000..8f89525 --- /dev/null +++ "b/data/1.web\345\210\235\351\230\266/4.CSS/5.\346\240\267\345\274\217/config.json" @@ -0,0 +1,31 @@ +{ + "node_id": "569d5e11c4fc5de7844053d9a733c5e8", + "keywords": [], + "children": [ + { + "背景": { + "keywords": [], + "children": [] + } + }, + { + "文本": { + "keywords": [], + "children": [] + } + }, + { + "轮廓": { + "keywords": [], + "children": [] + } + }, + { + "列表": { + "keywords": [], + "children": [] + } + } + ], + "export": [] +} \ No newline at end of file diff --git "a/data/1.web\345\210\235\351\230\266/4.CSS/6.\345\212\250\347\224\273/config.json" "b/data/1.web\345\210\235\351\230\266/4.CSS/6.\345\212\250\347\224\273/config.json" new file mode 100644 index 0000000..34933b4 --- /dev/null +++ "b/data/1.web\345\210\235\351\230\266/4.CSS/6.\345\212\250\347\224\273/config.json" @@ -0,0 +1,19 @@ +{ + "node_id": "569d5e11c4fc5de7844053d9a733c5e8", + "keywords": [], + "children": [ + { + "Animation": { + "keywords": [], + "children": [] + } + }, + { + "transition": { + "keywords": [], + "children": [] + } + } + ], + "export": [] +} \ No newline at end of file diff --git "a/data/1.web\345\210\235\351\230\266/4.CSS/7.\345\272\224\347\224\250/config.json" "b/data/1.web\345\210\235\351\230\266/4.CSS/7.\345\272\224\347\224\250/config.json" new file mode 100644 index 0000000..66635ba --- /dev/null +++ "b/data/1.web\345\210\235\351\230\266/4.CSS/7.\345\272\224\347\224\250/config.json" @@ -0,0 +1,33 @@ +{ + "node_id": "569d5e11c4fc5de7844053d9a733c5e8", + "keywords": [], + "children": [ + { + "响应式": { + "keywords": [], + "children": [ + { + "em、vh/vw、%": { + "keywords": [], + "children": [] + } + } + ] + } + }, + { + "自适应": { + "keywords": [], + "children": [ + { + "@media、rem": { + "keywords": [], + "children": [] + } + } + ] + } + } + ], + "export": [] +} \ No newline at end of file diff --git "a/data/1.web\345\210\235\351\230\266/4.CSS/config.json" "b/data/1.web\345\210\235\351\230\266/4.CSS/config.json" new file mode 100644 index 0000000..3407cf9 --- /dev/null +++ "b/data/1.web\345\210\235\351\230\266/4.CSS/config.json" @@ -0,0 +1,4 @@ +{ + "node_id": "569d5e11c4fc5de7844053d9a733c5e8", + "keywords": [] +} \ No newline at end of file diff --git "a/data/1.web\345\210\235\351\230\266/5.JavaScript/1.\350\257\255\346\263\225/config.json" "b/data/1.web\345\210\235\351\230\266/5.JavaScript/1.\350\257\255\346\263\225/config.json" new file mode 100644 index 0000000..f34b873 --- /dev/null +++ "b/data/1.web\345\210\235\351\230\266/5.JavaScript/1.\350\257\255\346\263\225/config.json" @@ -0,0 +1,100 @@ +{ + "node_id": "569d5e11c4fc5de7844053d9a733c5e8", + "keywords": [], + "children": [ + { + "值、变量": { + "keywords": [], + "children": [] + } + }, + { + "数据类型": { + "keywords": [], + "children": [ + { + "基本类型": { + "keywords": [], + "children": [] + } + }, + { + "类型判断": { + "keywords": [], + "children": [] + } + }, + { + "类型转换": { + "keywords": [], + "children": [] + } + } + ] + } + }, + { + "流程控制": { + "keywords": [], + "children": [] + } + }, + { + "运算(表达式、运算符)": { + "keywords": [], + "children": [ + { + "数学": { + "keywords": [], + "children": [] + } + }, + { + "比较": { + "keywords": [], + "children": [] + } + }, + { + "逻辑": { + "keywords": [], + "children": [] + } + } + ] + } + }, + { + "函数": { + "keywords": [], + "children": [ + { + "函数声明": { + "keywords": [], + "children": [] + } + }, + { + "函数表达式": { + "keywords": [], + "children": [] + } + }, + { + "回调函数": { + "keywords": [], + "children": [] + } + }, + { + "箭头函数": { + "keywords": [], + "children": [] + } + } + ] + } + } + ], + "export": [] +} \ No newline at end of file diff --git "a/data/1.web\345\210\235\351\230\266/5.JavaScript/2.\346\225\260\346\215\256\347\261\273\345\236\213\346\267\261\345\205\245/config.json" "b/data/1.web\345\210\235\351\230\266/5.JavaScript/2.\346\225\260\346\215\256\347\261\273\345\236\213\346\267\261\345\205\245/config.json" new file mode 100644 index 0000000..83c3378 --- /dev/null +++ "b/data/1.web\345\210\235\351\230\266/5.JavaScript/2.\346\225\260\346\215\256\347\261\273\345\236\213\346\267\261\345\205\245/config.json" @@ -0,0 +1,79 @@ +{ + "node_id": "569d5e11c4fc5de7844053d9a733c5e8", + "keywords": [], + "children": [ + { + "原始类型的方法": { + "keywords": [], + "children": [] + } + }, + { + "数字类型": { + "keywords": [], + "children": [] + } + }, + { + "字符串": { + "keywords": [], + "children": [] + } + }, + { + "数组": { + "keywords": [], + "children": [] + } + }, + { + "数组方法": { + "keywords": [], + "children": [] + } + }, + { + "Iterable object(可迭代对象)": { + "keywords": [], + "children": [] + } + }, + { + "Map and Set(映射和集合)": { + "keywords": [], + "children": [] + } + }, + { + "WeakMap and WeakSet(弱映射和弱集合)": { + "keywords": [], + "children": [] + } + }, + { + "Object.keys、values、entries": { + "keywords": [], + "children": [] + } + }, + { + "解构赋值": { + "keywords": [], + "children": [] + } + }, + { + "日期和时间": { + "keywords": [], + "children": [] + } + }, + { + "JSON序列化、反序列化": { + "keywords": [], + "children": [] + } + } + ], + "export": [] +} \ No newline at end of file diff --git "a/data/1.web\345\210\235\351\230\266/5.JavaScript/3.\345\257\271\350\261\241/config.json" "b/data/1.web\345\210\235\351\230\266/5.JavaScript/3.\345\257\271\350\261\241/config.json" new file mode 100644 index 0000000..d674aeb --- /dev/null +++ "b/data/1.web\345\210\235\351\230\266/5.JavaScript/3.\345\257\271\350\261\241/config.json" @@ -0,0 +1,79 @@ +{ + "node_id": "569d5e11c4fc5de7844053d9a733c5e8", + "keywords": [], + "children": [ + { + "属性/字面量": { + "keywords": [], + "children": [] + } + }, + { + "in 、for…in": { + "keywords": [], + "children": [] + } + }, + { + "对象引用": { + "keywords": [], + "children": [] + } + }, + { + "深拷贝、浅拷贝": { + "keywords": [], + "children": [] + } + }, + { + "Symbol": { + "keywords": [], + "children": [] + } + }, + { + "垃圾收集机制": { + "keywords": [], + "children": [] + } + }, + { + "this": { + "keywords": [], + "children": [] + } + }, + { + "new": { + "keywords": [], + "children": [] + } + }, + { + "Optional chaining ‘?.’": { + "keywords": [], + "children": [] + } + }, + { + "类型转换Symbol.toPrimitive": { + "keywords": [], + "children": [] + } + }, + { + "Property flags、descriptors": { + "keywords": [], + "children": [] + } + }, + { + "getters、setters": { + "keywords": [], + "children": [] + } + } + ], + "export": [] +} \ No newline at end of file diff --git "a/data/1.web\345\210\235\351\230\266/5.JavaScript/4.\345\207\275\346\225\260/config.json" "b/data/1.web\345\210\235\351\230\266/5.JavaScript/4.\345\207\275\346\225\260/config.json" new file mode 100644 index 0000000..4f91ea2 --- /dev/null +++ "b/data/1.web\345\210\235\351\230\266/5.JavaScript/4.\345\207\275\346\225\260/config.json" @@ -0,0 +1,79 @@ +{ + "node_id": "569d5e11c4fc5de7844053d9a733c5e8", + "keywords": [], + "children": [ + { + "调用栈": { + "keywords": [], + "children": [] + } + }, + { + "递归、尾递归": { + "keywords": [], + "children": [] + } + }, + { + "arguments、params spread": { + "keywords": [], + "children": [] + } + }, + { + "作用域、闭包": { + "keywords": [], + "children": [] + } + }, + { + "var、变量提升": { + "keywords": [], + "children": [] + } + }, + { + "IIFE、匿名自执行函数": { + "keywords": [], + "children": [] + } + }, + { + "NFE、函数命名表达式": { + "keywords": [], + "children": [] + } + }, + { + "箭头函数": { + "keywords": [], + "children": [] + } + }, + { + "new Function": { + "keywords": [], + "children": [] + } + }, + { + "setTimeout、setInterval": { + "keywords": [], + "children": [] + } + }, + { + "call、apply、bind": { + "keywords": [], + "children": [] + } + }, + { + "部分施用、柯里化": { + "keywords": [], + "children": [] + } + } + ], + "export": [] +} \ No newline at end of file diff --git "a/data/1.web\345\210\235\351\230\266/5.JavaScript/5.\345\216\237\345\236\213/config.json" "b/data/1.web\345\210\235\351\230\266/5.JavaScript/5.\345\216\237\345\236\213/config.json" new file mode 100644 index 0000000..6b2ccba --- /dev/null +++ "b/data/1.web\345\210\235\351\230\266/5.JavaScript/5.\345\216\237\345\236\213/config.json" @@ -0,0 +1,25 @@ +{ + "node_id": "569d5e11c4fc5de7844053d9a733c5e8", + "keywords": [], + "children": [ + { + "原型链、继承": { + "keywords": [], + "children": [] + } + }, + { + "F.prototype": { + "keywords": [], + "children": [] + } + }, + { + "Object.prototype": { + "keywords": [], + "children": [] + } + } + ], + "export": [] +} \ No newline at end of file diff --git "a/data/1.web\345\210\235\351\230\266/5.JavaScript/6.\347\261\273/config.json" "b/data/1.web\345\210\235\351\230\266/5.JavaScript/6.\347\261\273/config.json" new file mode 100644 index 0000000..b64bb52 --- /dev/null +++ "b/data/1.web\345\210\235\351\230\266/5.JavaScript/6.\347\261\273/config.json" @@ -0,0 +1,49 @@ +{ + "node_id": "569d5e11c4fc5de7844053d9a733c5e8", + "keywords": [], + "children": [ + { + "extend 继承": { + "keywords": [], + "children": [] + } + }, + { + "方法重载": { + "keywords": [], + "children": [] + } + }, + { + "构造函数": { + "keywords": [], + "children": [] + } + }, + { + "Super、[[HomeObject]]": { + "keywords": [], + "children": [] + } + }, + { + "静态属性、静态函数": { + "keywords": [], + "children": [] + } + }, + { + "私有属性、私有函数": { + "keywords": [], + "children": [] + } + }, + { + "混合、Mixins": { + "keywords": [], + "children": [] + } + } + ], + "export": [] +} \ No newline at end of file diff --git "a/data/1.web\345\210\235\351\230\266/5.JavaScript/7.\345\274\202\346\255\245\346\265\201\347\250\213\346\216\247\345\210\266/config.json" "b/data/1.web\345\210\235\351\230\266/5.JavaScript/7.\345\274\202\346\255\245\346\265\201\347\250\213\346\216\247\345\210\266/config.json" new file mode 100644 index 0000000..537787e --- /dev/null +++ "b/data/1.web\345\210\235\351\230\266/5.JavaScript/7.\345\274\202\346\255\245\346\265\201\347\250\213\346\216\247\345\210\266/config.json" @@ -0,0 +1,44 @@ +{ + "node_id": "569d5e11c4fc5de7844053d9a733c5e8", + "keywords": [], + "children": [ + { + "Callback": { + "keywords": [], + "children": [] + } + }, + { + "Promise": { + "keywords": [], + "children": [ + { + "Promises/A+、Promisification、Thenable": { + "keywords": [], + "children": [] + } + } + ] + } + }, + { + "async/await": { + "keywords": [], + "children": [] + } + }, + { + "generator": { + "keywords": [], + "children": [] + } + }, + { + "iterable": { + "keywords": [], + "children": [] + } + } + ], + "export": [] +} \ No newline at end of file diff --git "a/data/1.web\345\210\235\351\230\266/5.JavaScript/8.\346\250\241\345\235\227\345\214\226/config.json" "b/data/1.web\345\210\235\351\230\266/5.JavaScript/8.\346\250\241\345\235\227\345\214\226/config.json" new file mode 100644 index 0000000..b3d8959 --- /dev/null +++ "b/data/1.web\345\210\235\351\230\266/5.JavaScript/8.\346\250\241\345\235\227\345\214\226/config.json" @@ -0,0 +1,19 @@ +{ + "node_id": "569d5e11c4fc5de7844053d9a733c5e8", + "keywords": [], + "children": [ + { + "commonJS": { + "keywords": [], + "children": [] + } + }, + { + "amd、cmd、umd、es-module": { + "keywords": [], + "children": [] + } + } + ], + "export": [] +} \ No newline at end of file diff --git "a/data/1.web\345\210\235\351\230\266/5.JavaScript/9.\345\274\202\345\270\270\346\215\225\350\216\267/config.json" "b/data/1.web\345\210\235\351\230\266/5.JavaScript/9.\345\274\202\345\270\270\346\215\225\350\216\267/config.json" new file mode 100644 index 0000000..3f5a55c --- /dev/null +++ "b/data/1.web\345\210\235\351\230\266/5.JavaScript/9.\345\274\202\345\270\270\346\215\225\350\216\267/config.json" @@ -0,0 +1,25 @@ +{ + "node_id": "569d5e11c4fc5de7844053d9a733c5e8", + "keywords": [], + "children": [ + { + "try…catch…finally": { + "keywords": [], + "children": [] + } + }, + { + "throw": { + "keywords": [], + "children": [] + } + }, + { + "Error": { + "keywords": [], + "children": [] + } + } + ], + "export": [] +} \ No newline at end of file diff --git "a/data/1.web\345\210\235\351\230\266/5.JavaScript/config.json" "b/data/1.web\345\210\235\351\230\266/5.JavaScript/config.json" new file mode 100644 index 0000000..3407cf9 --- /dev/null +++ "b/data/1.web\345\210\235\351\230\266/5.JavaScript/config.json" @@ -0,0 +1,4 @@ +{ + "node_id": "569d5e11c4fc5de7844053d9a733c5e8", + "keywords": [] +} \ No newline at end of file diff --git "a/data/1.web\345\210\235\351\230\266/6.\346\265\217\350\247\210\345\231\250/1.DOM/config.json" "b/data/1.web\345\210\235\351\230\266/6.\346\265\217\350\247\210\345\231\250/1.DOM/config.json" new file mode 100644 index 0000000..27b6713 --- /dev/null +++ "b/data/1.web\345\210\235\351\230\266/6.\346\265\217\350\247\210\345\231\250/1.DOM/config.json" @@ -0,0 +1,74 @@ +{ + "node_id": "569d5e11c4fc5de7844053d9a733c5e8", + "keywords": [], + "children": [ + { + "DOM Tree": { + "keywords": [], + "children": [] + } + }, + { + "DOM Node": { + "keywords": [], + "children": [] + } + }, + { + "DOM Query": { + "keywords": [], + "children": [] + } + }, + { + "DOM Properties": { + "keywords": [], + "children": [] + } + }, + { + "DOM Modify": { + "keywords": [], + "children": [] + } + }, + { + "Styles": { + "keywords": [], + "children": [] + } + }, + { + "Coordinates、Element Scrolling": { + "keywords": [], + "children": [] + } + }, + { + "DOM Events": { + "keywords": [], + "children": [ + { + "UI Event": { + "keywords": [], + "children": [] + } + }, + { + "Bubbling and Capturing": { + "keywords": [], + "children": [] + } + }, + { + "Event Delegate": { + "keywords": [], + "children": [] + } + } + ] + } + } + ], + "export": [] +} \ No newline at end of file diff --git "a/data/1.web\345\210\235\351\230\266/6.\346\265\217\350\247\210\345\231\250/2.\346\265\217\350\247\210\345\231\250API/config.json" "b/data/1.web\345\210\235\351\230\266/6.\346\265\217\350\247\210\345\231\250/2.\346\265\217\350\247\210\345\231\250API/config.json" new file mode 100644 index 0000000..f555127 --- /dev/null +++ "b/data/1.web\345\210\235\351\230\266/6.\346\265\217\350\247\210\345\231\250/2.\346\265\217\350\247\210\345\231\250API/config.json" @@ -0,0 +1,51 @@ +{ + "node_id": "569d5e11c4fc5de7844053d9a733c5e8", + "keywords": [], + "children": [ + { + "location": { + "keywords": [], + "children": [] + } + }, + { + "history": { + "keywords": [], + "children": [] + } + }, + { + "navigator": { + "keywords": [], + "children": [] + } + }, + { + "Default Actions": { + "keywords": [], + "children": [ + { + "event.preventDefault()": { + "keywords": [], + "children": [] + } + } + ] + } + }, + { + "Form": { + "keywords": [], + "children": [ + { + "change、focus、blur、submit": { + "keywords": [], + "children": [] + } + } + ] + } + } + ], + "export": [] +} \ No newline at end of file diff --git "a/data/1.web\345\210\235\351\230\266/6.\346\265\217\350\247\210\345\231\250/3.\347\275\221\347\273\234/config.json" "b/data/1.web\345\210\235\351\230\266/6.\346\265\217\350\247\210\345\231\250/3.\347\275\221\347\273\234/config.json" new file mode 100644 index 0000000..4a2fa56 --- /dev/null +++ "b/data/1.web\345\210\235\351\230\266/6.\346\265\217\350\247\210\345\231\250/3.\347\275\221\347\273\234/config.json" @@ -0,0 +1,31 @@ +{ + "node_id": "569d5e11c4fc5de7844053d9a733c5e8", + "keywords": [], + "children": [ + { + "XHR": { + "keywords": [], + "children": [] + } + }, + { + "Fetch": { + "keywords": [], + "children": [] + } + }, + { + "JSONP": { + "keywords": [], + "children": [] + } + }, + { + "WebSocket": { + "keywords": [], + "children": [] + } + } + ], + "export": [] +} \ No newline at end of file diff --git "a/data/1.web\345\210\235\351\230\266/6.\346\265\217\350\247\210\345\231\250/4.\346\235\203\351\231\220/config.json" "b/data/1.web\345\210\235\351\230\266/6.\346\265\217\350\247\210\345\231\250/4.\346\235\203\351\231\220/config.json" new file mode 100644 index 0000000..fe964e6 --- /dev/null +++ "b/data/1.web\345\210\235\351\230\266/6.\346\265\217\350\247\210\345\231\250/4.\346\235\203\351\231\220/config.json" @@ -0,0 +1,37 @@ +{ + "node_id": "569d5e11c4fc5de7844053d9a733c5e8", + "keywords": [], + "children": [ + { + "Cookie": { + "keywords": [], + "children": [] + } + }, + { + "Session": { + "keywords": [], + "children": [] + } + }, + { + "OAuth": { + "keywords": [], + "children": [] + } + }, + { + "SSO": { + "keywords": [], + "children": [] + } + }, + { + "JWT": { + "keywords": [], + "children": [] + } + } + ], + "export": [] +} \ No newline at end of file diff --git "a/data/1.web\345\210\235\351\230\266/6.\346\265\217\350\247\210\345\231\250/5.\345\256\211\345\205\250\344\270\216\351\232\220\347\247\201/config.json" "b/data/1.web\345\210\235\351\230\266/6.\346\265\217\350\247\210\345\231\250/5.\345\256\211\345\205\250\344\270\216\351\232\220\347\247\201/config.json" new file mode 100644 index 0000000..b6e7ea2 --- /dev/null +++ "b/data/1.web\345\210\235\351\230\266/6.\346\265\217\350\247\210\345\231\250/5.\345\256\211\345\205\250\344\270\216\351\232\220\347\247\201/config.json" @@ -0,0 +1,43 @@ +{ + "node_id": "569d5e11c4fc5de7844053d9a733c5e8", + "keywords": [], + "children": [ + { + "Content Security Policy (CSP)": { + "keywords": [], + "children": [] + } + }, + { + "CORS": { + "keywords": [], + "children": [] + } + }, + { + "XSS": { + "keywords": [], + "children": [] + } + }, + { + "CSRF": { + "keywords": [], + "children": [] + } + }, + { + "MITM": { + "keywords": [], + "children": [] + } + }, + { + "Samesite": { + "keywords": [], + "children": [] + } + } + ], + "export": [] +} \ No newline at end of file diff --git "a/data/1.web\345\210\235\351\230\266/6.\346\265\217\350\247\210\345\231\250/6.\345\205\274\345\256\271\346\200\247/config.json" "b/data/1.web\345\210\235\351\230\266/6.\346\265\217\350\247\210\345\231\250/6.\345\205\274\345\256\271\346\200\247/config.json" new file mode 100644 index 0000000..a0316ed --- /dev/null +++ "b/data/1.web\345\210\235\351\230\266/6.\346\265\217\350\247\210\345\231\250/6.\345\205\274\345\256\271\346\200\247/config.json" @@ -0,0 +1,37 @@ +{ + "node_id": "569d5e11c4fc5de7844053d9a733c5e8", + "keywords": [], + "children": [ + { + "Can I Use": { + "keywords": [], + "children": [] + } + }, + { + "polyfill": { + "keywords": [], + "children": [] + } + }, + { + "shim": { + "keywords": [], + "children": [] + } + }, + { + "browserslist": { + "keywords": [], + "children": [] + } + }, + { + "Autoprefixer": { + "keywords": [], + "children": [] + } + } + ], + "export": [] +} \ No newline at end of file diff --git "a/data/1.web\345\210\235\351\230\266/6.\346\265\217\350\247\210\345\231\250/7.\345\274\200\345\217\221\350\200\205\345\267\245\345\205\267/config.json" "b/data/1.web\345\210\235\351\230\266/6.\346\265\217\350\247\210\345\231\250/7.\345\274\200\345\217\221\350\200\205\345\267\245\345\205\267/config.json" new file mode 100644 index 0000000..4bc169a --- /dev/null +++ "b/data/1.web\345\210\235\351\230\266/6.\346\265\217\350\247\210\345\231\250/7.\345\274\200\345\217\221\350\200\205\345\267\245\345\205\267/config.json" @@ -0,0 +1,61 @@ +{ + "node_id": "569d5e11c4fc5de7844053d9a733c5e8", + "keywords": [], + "children": [ + { + "设备模式": { + "keywords": [], + "children": [] + } + }, + { + "元素面板": { + "keywords": [], + "children": [] + } + }, + { + "控制台面板": { + "keywords": [], + "children": [] + } + }, + { + "源代码面板": { + "keywords": [], + "children": [] + } + }, + { + "网络面板": { + "keywords": [], + "children": [] + } + }, + { + "性能面板": { + "keywords": [], + "children": [] + } + }, + { + "内存面板": { + "keywords": [], + "children": [] + } + }, + { + "应用面板": { + "keywords": [], + "children": [] + } + }, + { + "安全面板": { + "keywords": [], + "children": [] + } + } + ], + "export": [] +} \ No newline at end of file diff --git "a/data/1.web\345\210\235\351\230\266/6.\346\265\217\350\247\210\345\231\250/config.json" "b/data/1.web\345\210\235\351\230\266/6.\346\265\217\350\247\210\345\231\250/config.json" new file mode 100644 index 0000000..3407cf9 --- /dev/null +++ "b/data/1.web\345\210\235\351\230\266/6.\346\265\217\350\247\210\345\231\250/config.json" @@ -0,0 +1,4 @@ +{ + "node_id": "569d5e11c4fc5de7844053d9a733c5e8", + "keywords": [] +} \ No newline at end of file diff --git "a/data/1.web\345\210\235\351\230\266/7.jquery/1.jQuery\345\237\272\347\241\200/config.json" "b/data/1.web\345\210\235\351\230\266/7.jquery/1.jQuery\345\237\272\347\241\200/config.json" new file mode 100644 index 0000000..55887fc --- /dev/null +++ "b/data/1.web\345\210\235\351\230\266/7.jquery/1.jQuery\345\237\272\347\241\200/config.json" @@ -0,0 +1,19 @@ +{ + "node_id": "569d5e11c4fc5de7844053d9a733c5e8", + "keywords": [], + "children": [ + { + "认识jQuery": { + "keywords": [], + "children": [] + } + }, + { + "使用jQuery": { + "keywords": [], + "children": [] + } + } + ], + "export": [] +} \ No newline at end of file diff --git "a/data/1.web\345\210\235\351\230\266/7.jquery/10.jQueryUI\345\237\272\347\241\200/config.json" "b/data/1.web\345\210\235\351\230\266/7.jquery/10.jQueryUI\345\237\272\347\241\200/config.json" new file mode 100644 index 0000000..871929a --- /dev/null +++ "b/data/1.web\345\210\235\351\230\266/7.jquery/10.jQueryUI\345\237\272\347\241\200/config.json" @@ -0,0 +1,56 @@ +{ + "node_id": "569d5e11c4fc5de7844053d9a733c5e8", + "keywords": [], + "children": [ + { + "使用jQueryUI库": { + "keywords": [], + "children": [ + { + "认识jQueryUI": { + "keywords": [], + "children": [] + } + }, + { + "jQueryUI库结构": { + "keywords": [], + "children": [] + } + }, + { + "组件分类": { + "keywords": [], + "children": [] + } + }, + { + "浏览器支持": { + "keywords": [], + "children": [] + } + }, + { + "使用主题定制器": { + "keywords": [], + "children": [] + } + }, + { + "使用jQueryUI组件": { + "keywords": [], + "children": [] + } + } + ] + } + }, + { + "案例实战:使用第三方插件": { + "keywords": [], + "children": [] + } + } + ], + "export": [] +} \ No newline at end of file diff --git "a/data/1.web\345\210\235\351\230\266/7.jquery/11.jQueryUI\344\272\244\344\272\222\345\274\200\345\217\221/config.json" "b/data/1.web\345\210\235\351\230\266/7.jquery/11.jQueryUI\344\272\244\344\272\222\345\274\200\345\217\221/config.json" new file mode 100644 index 0000000..d237a45 --- /dev/null +++ "b/data/1.web\345\210\235\351\230\266/7.jquery/11.jQueryUI\344\272\244\344\272\222\345\274\200\345\217\221/config.json" @@ -0,0 +1,44 @@ +{ + "node_id": "569d5e11c4fc5de7844053d9a733c5e8", + "keywords": [], + "children": [ + { + "拖放": { + "keywords": [], + "children": [ + { + "拖动对象": { + "keywords": [], + "children": [] + } + }, + { + "投放对象": { + "keywords": [], + "children": [] + } + } + ] + } + }, + { + "缩放": { + "keywords": [], + "children": [] + } + }, + { + "选择": { + "keywords": [], + "children": [] + } + }, + { + "排序": { + "keywords": [], + "children": [] + } + } + ], + "export": [] +} \ No newline at end of file diff --git "a/data/1.web\345\210\235\351\230\266/7.jquery/12.jQueryUI\345\260\217\351\203\250\344\273\266/config.json" "b/data/1.web\345\210\235\351\230\266/7.jquery/12.jQueryUI\345\260\217\351\203\250\344\273\266/config.json" new file mode 100644 index 0000000..24bfae3 --- /dev/null +++ "b/data/1.web\345\210\235\351\230\266/7.jquery/12.jQueryUI\345\260\217\351\203\250\344\273\266/config.json" @@ -0,0 +1,37 @@ +{ + "node_id": "569d5e11c4fc5de7844053d9a733c5e8", + "keywords": [], + "children": [ + { + "选项卡": { + "keywords": [], + "children": [] + } + }, + { + "手风琴": { + "keywords": [], + "children": [] + } + }, + { + "对话框": { + "keywords": [], + "children": [] + } + }, + { + "滑动条": { + "keywords": [], + "children": [] + } + }, + { + "日期选择器": { + "keywords": [], + "children": [] + } + } + ], + "export": [] +} \ No newline at end of file diff --git "a/data/1.web\345\210\235\351\230\266/7.jquery/13.jQueryUI\347\211\271\346\225\210/config.json" "b/data/1.web\345\210\235\351\230\266/7.jquery/13.jQueryUI\347\211\271\346\225\210/config.json" new file mode 100644 index 0000000..4b87d46 --- /dev/null +++ "b/data/1.web\345\210\235\351\230\266/7.jquery/13.jQueryUI\347\211\271\346\225\210/config.json" @@ -0,0 +1,85 @@ +{ + "node_id": "569d5e11c4fc5de7844053d9a733c5e8", + "keywords": [], + "children": [ + { + "特效核心": { + "keywords": [], + "children": [] + } + }, + { + "高亮": { + "keywords": [], + "children": [] + } + }, + { + "弹跳": { + "keywords": [], + "children": [] + } + }, + { + "摇晃": { + "keywords": [], + "children": [] + } + }, + { + "转换": { + "keywords": [], + "children": [] + } + }, + { + "缩放": { + "keywords": [], + "children": [] + } + }, + { + "爆炸": { + "keywords": [], + "children": [] + } + }, + { + "抖动": { + "keywords": [], + "children": [] + } + }, + { + "落体": { + "keywords": [], + "children": [] + } + }, + { + "滑动": { + "keywords": [], + "children": [] + } + }, + { + "剪辑": { + "keywords": [], + "children": [] + } + }, + { + "百叶窗": { + "keywords": [], + "children": [] + } + }, + { + "折叠": { + "keywords": [], + "children": [] + } + } + ], + "export": [] +} \ No newline at end of file diff --git "a/data/1.web\345\210\235\351\230\266/7.jquery/14.\346\265\217\350\247\210\345\231\250\345\222\214\345\257\274\350\210\252\345\274\200\345\217\221/config.json" "b/data/1.web\345\210\235\351\230\266/7.jquery/14.\346\265\217\350\247\210\345\231\250\345\222\214\345\257\274\350\210\252\345\274\200\345\217\221/config.json" new file mode 100644 index 0000000..eb4fb56 --- /dev/null +++ "b/data/1.web\345\210\235\351\230\266/7.jquery/14.\346\265\217\350\247\210\345\231\250\345\222\214\345\257\274\350\210\252\345\274\200\345\217\221/config.json" @@ -0,0 +1,82 @@ +{ + "node_id": "569d5e11c4fc5de7844053d9a733c5e8", + "keywords": [], + "children": [ + { + "浏览器开发": { + "keywords": [], + "children": [ + { + "浏览器智能检测": { + "keywords": [], + "children": [] + } + }, + { + "强制渲染": { + "keywords": [], + "children": [] + } + }, + { + "浏览器插件检测": { + "keywords": [], + "children": [] + } + } + ] + } + }, + { + "菜单开发": { + "keywords": [], + "children": [ + { + "使用jMenu菜单": { + "keywords": [], + "children": [] + } + }, + { + "uiSelect下拉菜单": { + "keywords": [], + "children": [] + } + }, + { + "Apycom弹出菜单": { + "keywords": [], + "children": [] + } + }, + { + "Smartango内容菜单": { + "keywords": [], + "children": [] + } + } + ] + } + }, + { + "导航开发": { + "keywords": [], + "children": [ + { + "jqDock码头导航": { + "keywords": [], + "children": [] + } + }, + { + "AnythingSlider预览导航": { + "keywords": [], + "children": [] + } + } + ] + } + } + ], + "export": [] +} \ No newline at end of file diff --git "a/data/1.web\345\210\235\351\230\266/7.jquery/15.\350\241\250\346\240\274\345\274\200\345\217\221/config.json" "b/data/1.web\345\210\235\351\230\266/7.jquery/15.\350\241\250\346\240\274\345\274\200\345\217\221/config.json" new file mode 100644 index 0000000..1396f31 --- /dev/null +++ "b/data/1.web\345\210\235\351\230\266/7.jquery/15.\350\241\250\346\240\274\345\274\200\345\217\221/config.json" @@ -0,0 +1,149 @@ +{ + "node_id": "569d5e11c4fc5de7844053d9a733c5e8", + "keywords": [], + "children": [ + { + "表格排序": { + "keywords": [], + "children": [ + { + "设计适合排序的表格结构": { + "keywords": [], + "children": [] + } + }, + { + "实现基本排序功能": { + "keywords": [], + "children": [] + } + }, + { + "优化排序性能": { + "keywords": [], + "children": [] + } + }, + { + "优化类型排序": { + "keywords": [], + "children": [] + } + }, + { + "完善视觉交互效果": { + "keywords": [], + "children": [] + } + }, + { + "使用tablesorter插件": { + "keywords": [], + "children": [] + } + } + ] + } + }, + { + "表格分页": { + "keywords": [], + "children": [ + { + "使用服务器分页": { + "keywords": [], + "children": [] + } + }, + { + "使用JavaScript实现分页": { + "keywords": [], + "children": [] + } + }, + { + "使用Pagination插件分页": { + "keywords": [], + "children": [] + } + } + ] + } + }, + { + "表格过滤": { + "keywords": [], + "children": [ + { + "快速过滤": { + "keywords": [], + "children": [] + } + }, + { + "多关键字匹配": { + "keywords": [], + "children": [] + } + }, + { + "列过滤": { + "keywords": [], + "children": [] + } + }, + { + "自定义表格过滤插件": { + "keywords": [], + "children": [] + } + }, + { + "使用uiTableFilter插件": { + "keywords": [], + "children": [] + } + } + ] + } + }, + { + "表格编辑": { + "keywords": [], + "children": [ + { + "实现表格编辑功能": { + "keywords": [], + "children": [] + } + }, + { + "自定义表格编辑插件": { + "keywords": [], + "children": [] + } + }, + { + "使用tableRowCheckboxToggle": { + "keywords": [], + "children": [] + } + }, + { + "使用TableDnD插件": { + "keywords": [], + "children": [] + } + }, + { + "使用uiTableEdit插件": { + "keywords": [], + "children": [] + } + } + ] + } + } + ], + "export": [] +} \ No newline at end of file diff --git "a/data/1.web\345\210\235\351\230\266/7.jquery/16.\350\241\250\345\215\225\345\274\200\345\217\221/config.json" "b/data/1.web\345\210\235\351\230\266/7.jquery/16.\350\241\250\345\215\225\345\274\200\345\217\221/config.json" new file mode 100644 index 0000000..6d677b0 --- /dev/null +++ "b/data/1.web\345\210\235\351\230\266/7.jquery/16.\350\241\250\345\215\225\345\274\200\345\217\221/config.json" @@ -0,0 +1,118 @@ +{ + "node_id": "569d5e11c4fc5de7844053d9a733c5e8", + "keywords": [], + "children": [ + { + "设计表单": { + "keywords": [], + "children": [ + { + "设计表单结构": { + "keywords": [], + "children": [] + } + }, + { + "设计分组标题": { + "keywords": [], + "children": [] + } + }, + { + "设计提示信息": { + "keywords": [], + "children": [] + } + }, + { + "设计条件字段": { + "keywords": [], + "children": [] + } + }, + { + "使用checkbox插件": { + "keywords": [], + "children": [] + } + }, + { + "使用jqTransform插件": { + "keywords": [], + "children": [] + } + } + ] + } + }, + { + "表单验证": { + "keywords": [], + "children": [ + { + "表单验证基础": { + "keywords": [], + "children": [] + } + }, + { + "使用jQueryValidation插件": { + "keywords": [], + "children": [] + } + }, + { + "使用validationEngine插件": { + "keywords": [], + "children": [] + } + } + ] + } + }, + { + "增强表单": { + "keywords": [], + "children": [ + { + "使用Elastic插件": { + "keywords": [], + "children": [] + } + }, + { + "使用Autotab插件": { + "keywords": [], + "children": [] + } + }, + { + "使用maskedInput插件": { + "keywords": [], + "children": [] + } + }, + { + "使用passwordStrength插件": { + "keywords": [], + "children": [] + } + }, + { + "使用formToWizard插件": { + "keywords": [], + "children": [] + } + }, + { + "使用datePicker插件": { + "keywords": [], + "children": [] + } + } + ] + } + } + ], + "export": [] +} \ No newline at end of file diff --git "a/data/1.web\345\210\235\351\230\266/7.jquery/17.jQueryMobile\345\237\272\347\241\200/config.json" "b/data/1.web\345\210\235\351\230\266/7.jquery/17.jQueryMobile\345\237\272\347\241\200/config.json" new file mode 100644 index 0000000..28776e3 --- /dev/null +++ "b/data/1.web\345\210\235\351\230\266/7.jquery/17.jQueryMobile\345\237\272\347\241\200/config.json" @@ -0,0 +1,88 @@ +{ + "node_id": "569d5e11c4fc5de7844053d9a733c5e8", + "keywords": [], + "children": [ + { + "移动开发概述": { + "keywords": [], + "children": [ + { + "移动设备统计分析": { + "keywords": [], + "children": [] + } + }, + { + "手机浏览器兼容性测试结果概要": { + "keywords": [], + "children": [] + } + }, + { + "开发中可能遇到的问题": { + "keywords": [], + "children": [] + } + } + ] + } + }, + { + "jQueryMobile概述": { + "keywords": [], + "children": [ + { + "为什么要选择jQueryMobile": { + "keywords": [], + "children": [] + } + }, + { + "jQueryMobile移动平台的兼容性": { + "keywords": [], + "children": [] + } + }, + { + "jQueryMobile的功能": { + "keywords": [], + "children": [] + } + }, + { + "jQueryMobile的特性": { + "keywords": [], + "children": [] + } + } + ] + } + }, + { + "安装jQueryMobile": { + "keywords": [], + "children": [ + { + "下载插件文件": { + "keywords": [], + "children": [] + } + }, + { + "初始化配置": { + "keywords": [], + "children": [] + } + } + ] + } + }, + { + "案例:设计第一个移动页面": { + "keywords": [], + "children": [] + } + } + ], + "export": [] +} \ No newline at end of file diff --git "a/data/1.web\345\210\235\351\230\266/7.jquery/18.\350\256\276\350\256\241\347\247\273\345\212\250\351\241\265\351\235\242\345\222\214\345\257\271\350\257\235\346\241\206/config.json" "b/data/1.web\345\210\235\351\230\266/7.jquery/18.\350\256\276\350\256\241\347\247\273\345\212\250\351\241\265\351\235\242\345\222\214\345\257\271\350\257\235\346\241\206/config.json" new file mode 100644 index 0000000..d2c741b --- /dev/null +++ "b/data/1.web\345\210\235\351\230\266/7.jquery/18.\350\256\276\350\256\241\347\247\273\345\212\250\351\241\265\351\235\242\345\222\214\345\257\271\350\257\235\346\241\206/config.json" @@ -0,0 +1,51 @@ +{ + "node_id": "569d5e11c4fc5de7844053d9a733c5e8", + "keywords": [], + "children": [ + { + "设计页面": { + "keywords": [], + "children": [ + { + "定义单页": { + "keywords": [], + "children": [] + } + }, + { + "定义多页": { + "keywords": [], + "children": [] + } + }, + { + "定义外部页": { + "keywords": [], + "children": [] + } + } + ] + } + }, + { + "设计对话框": { + "keywords": [], + "children": [ + { + "定义对话框": { + "keywords": [], + "children": [] + } + }, + { + "定义关闭对话框": { + "keywords": [], + "children": [] + } + } + ] + } + } + ], + "export": [] +} \ No newline at end of file diff --git "a/data/1.web\345\210\235\351\230\266/7.jquery/2.\344\275\277\347\224\250\351\200\211\346\213\251\345\231\250/config.json" "b/data/1.web\345\210\235\351\230\266/7.jquery/2.\344\275\277\347\224\250\351\200\211\346\213\251\345\231\250/config.json" new file mode 100644 index 0000000..e711221 --- /dev/null +++ "b/data/1.web\345\210\235\351\230\266/7.jquery/2.\344\275\277\347\224\250\351\200\211\346\213\251\345\231\250/config.json" @@ -0,0 +1,131 @@ +{ + "node_id": "569d5e11c4fc5de7844053d9a733c5e8", + "keywords": [], + "children": [ + { + "jQuery选择器基础": { + "keywords": [], + "children": [] + } + }, + { + "基本选择器": { + "keywords": [], + "children": [ + { + "ID选择器": { + "keywords": [], + "children": [] + } + }, + { + "类型选择器": { + "keywords": [], + "children": [] + } + }, + { + "类选择器": { + "keywords": [], + "children": [] + } + }, + { + "通配选择器": { + "keywords": [], + "children": [] + } + }, + { + "分组选择器": { + "keywords": [], + "children": [] + } + } + ] + } + }, + { + "结构选择器": { + "keywords": [], + "children": [ + { + "层级选择器": { + "keywords": [], + "children": [] + } + }, + { + "子元素选择器": { + "keywords": [], + "children": [] + } + } + ] + } + }, + { + "过滤选择器": { + "keywords": [], + "children": [ + { + "定位过滤器": { + "keywords": [], + "children": [] + } + }, + { + "内容过滤器": { + "keywords": [], + "children": [] + } + }, + { + "可见过滤器": { + "keywords": [], + "children": [] + } + } + ] + } + }, + { + "属性选择器": { + "keywords": [], + "children": [] + } + }, + { + "表单选择器": { + "keywords": [], + "children": [ + { + "基本选择器": { + "keywords": [], + "children": [] + } + }, + { + "高级表单选择器": { + "keywords": [], + "children": [] + } + } + ] + } + }, + { + "jQuery选择器优化": { + "keywords": [], + "children": [] + } + }, + { + "使用原生选择器": { + "keywords": [], + "children": [] + } + } + ], + "export": [] +} \ No newline at end of file diff --git "a/data/1.web\345\210\235\351\230\266/7.jquery/3.\344\275\277\347\224\250\350\277\207\346\273\244\345\231\250/config.json" "b/data/1.web\345\210\235\351\230\266/7.jquery/3.\344\275\277\347\224\250\350\277\207\346\273\244\345\231\250/config.json" new file mode 100644 index 0000000..d7e7949 --- /dev/null +++ "b/data/1.web\345\210\235\351\230\266/7.jquery/3.\344\275\277\347\224\250\350\277\207\346\273\244\345\231\250/config.json" @@ -0,0 +1,118 @@ +{ + "node_id": "569d5e11c4fc5de7844053d9a733c5e8", + "keywords": [], + "children": [ + { + "过滤": { + "keywords": [], + "children": [ + { + "类过滤": { + "keywords": [], + "children": [] + } + }, + { + "下标过滤": { + "keywords": [], + "children": [] + } + }, + { + "表达式过滤": { + "keywords": [], + "children": [] + } + }, + { + "判断": { + "keywords": [], + "children": [] + } + }, + { + "映射": { + "keywords": [], + "children": [] + } + }, + { + "清除": { + "keywords": [], + "children": [] + } + }, + { + "截取": { + "keywords": [], + "children": [] + } + } + ] + } + }, + { + "查找": { + "keywords": [], + "children": [ + { + "向下查找.": { + "keywords": [], + "children": [] + } + }, + { + "向上查找.": { + "keywords": [], + "children": [] + } + }, + { + "向前查找.": { + "keywords": [], + "children": [] + } + }, + { + "向后查找.": { + "keywords": [], + "children": [] + } + }, + { + "查找同辈元素": { + "keywords": [], + "children": [] + } + }, + { + "添加查找.": { + "keywords": [], + "children": [] + } + } + ] + } + }, + { + "串联": { + "keywords": [], + "children": [ + { + "合并jQuery对象": { + "keywords": [], + "children": [] + } + }, + { + "返回jQuery对象": { + "keywords": [], + "children": [] + } + } + ] + } + } + ], + "export": [] +} \ No newline at end of file diff --git "a/data/1.web\345\210\235\351\230\266/7.jquery/4.\346\223\215\344\275\234DOM/config.json" "b/data/1.web\345\210\235\351\230\266/7.jquery/4.\346\223\215\344\275\234DOM/config.json" new file mode 100644 index 0000000..4f32793 --- /dev/null +++ "b/data/1.web\345\210\235\351\230\266/7.jquery/4.\346\223\215\344\275\234DOM/config.json" @@ -0,0 +1,237 @@ +{ + "node_id": "569d5e11c4fc5de7844053d9a733c5e8", + "keywords": [], + "children": [ + { + "创建节点": { + "keywords": [], + "children": [ + { + "创建元素.": { + "keywords": [], + "children": [] + } + }, + { + "创建文本.": { + "keywords": [], + "children": [] + } + }, + { + "创建属性.": { + "keywords": [], + "children": [] + } + } + ] + } + }, + { + "插入节点": { + "keywords": [], + "children": [ + { + "内部插入.": { + "keywords": [], + "children": [] + } + }, + { + "外部插入.": { + "keywords": [], + "children": [] + } + } + ] + } + }, + { + "删除节点": { + "keywords": [], + "children": [ + { + "移出": { + "keywords": [], + "children": [] + } + }, + { + "清空": { + "keywords": [], + "children": [] + } + }, + { + "分离": { + "keywords": [], + "children": [] + } + } + ] + } + }, + { + "复制节点": { + "keywords": [], + "children": [] + } + }, + { + "替换节点": { + "keywords": [], + "children": [] + } + }, + { + "包裹元素": { + "keywords": [], + "children": [ + { + "外包": { + "keywords": [], + "children": [] + } + }, + { + "内包": { + "keywords": [], + "children": [] + } + }, + { + "总包": { + "keywords": [], + "children": [] + } + }, + { + "卸包": { + "keywords": [], + "children": [] + } + } + ] + } + }, + { + "操作属性": { + "keywords": [], + "children": [ + { + "设置属性.": { + "keywords": [], + "children": [] + } + }, + { + "访问属性": { + "keywords": [], + "children": [] + } + }, + { + "删除属性": { + "keywords": [], + "children": [] + } + } + ] + } + }, + { + "操作类": { + "keywords": [], + "children": [ + { + "添加类样式": { + "keywords": [], + "children": [] + } + }, + { + "删除类样式": { + "keywords": [], + "children": [] + } + }, + { + "切换类样式": { + "keywords": [], + "children": [] + } + }, + { + "判断类样式": { + "keywords": [], + "children": [] + } + } + ] + } + }, + { + "操作内容": { + "keywords": [], + "children": [ + { + "读写HTML字符串": { + "keywords": [], + "children": [] + } + }, + { + "读写文本": { + "keywords": [], + "children": [] + } + }, + { + "读写值": { + "keywords": [], + "children": [] + } + } + ] + } + }, + { + "操作样式表": { + "keywords": [], + "children": [ + { + "读写CSS样式": { + "keywords": [], + "children": [] + } + }, + { + "绝对定位": { + "keywords": [], + "children": [] + } + }, + { + "相对定位": { + "keywords": [], + "children": [] + } + }, + { + "控制大小": { + "keywords": [], + "children": [] + } + } + ] + } + }, + { + "遍历文档": { + "keywords": [], + "children": [] + } + } + ], + "export": [] +} \ No newline at end of file diff --git "a/data/1.web\345\210\235\351\230\266/7.jquery/5.\344\272\213\344\273\266\345\244\204\347\220\206/config.json" "b/data/1.web\345\210\235\351\230\266/7.jquery/5.\344\272\213\344\273\266\345\244\204\347\220\206/config.json" new file mode 100644 index 0000000..18b09b8 --- /dev/null +++ "b/data/1.web\345\210\235\351\230\266/7.jquery/5.\344\272\213\344\273\266\345\244\204\347\220\206/config.json" @@ -0,0 +1,99 @@ +{ + "node_id": "569d5e11c4fc5de7844053d9a733c5e8", + "keywords": [], + "children": [ + { + "jQuery事件基础": { + "keywords": [], + "children": [ + { + "绑定事件": { + "keywords": [], + "children": [] + } + }, + { + "事件方法": { + "keywords": [], + "children": [] + } + }, + { + "绑定一次性事件": { + "keywords": [], + "children": [] + } + }, + { + "注销事件": { + "keywords": [], + "children": [] + } + }, + { + "使用事件对象": { + "keywords": [], + "children": [] + } + }, + { + "触发事件": { + "keywords": [], + "children": [] + } + } + ] + } + }, + { + "案例实战": { + "keywords": [], + "children": [ + { + "切换事件": { + "keywords": [], + "children": [] + } + }, + { + "使用悬停事件": { + "keywords": [], + "children": [] + } + }, + { + "事件命名空间": { + "keywords": [], + "children": [] + } + }, + { + "绑定多个事件": { + "keywords": [], + "children": [] + } + }, + { + "自定义事件": { + "keywords": [], + "children": [] + } + }, + { + "页面初始化": { + "keywords": [], + "children": [] + } + }, + { + "使用ready事件": { + "keywords": [], + "children": [] + } + } + ] + } + } + ], + "export": [] +} \ No newline at end of file diff --git "a/data/1.web\345\210\235\351\230\266/7.jquery/6.\344\275\277\347\224\250Ajax/config.json" "b/data/1.web\345\210\235\351\230\266/7.jquery/6.\344\275\277\347\224\250Ajax/config.json" new file mode 100644 index 0000000..1e9ebac --- /dev/null +++ "b/data/1.web\345\210\235\351\230\266/7.jquery/6.\344\275\277\347\224\250Ajax/config.json" @@ -0,0 +1,56 @@ +{ + "node_id": "569d5e11c4fc5de7844053d9a733c5e8", + "keywords": [], + "children": [ + { + "jQueryAjax基础": { + "keywords": [], + "children": [ + { + "认识Ajax": { + "keywords": [], + "children": [] + } + }, + { + "安装虚拟服务器": { + "keywords": [], + "children": [] + } + }, + { + "配置IIS组件": { + "keywords": [], + "children": [] + } + }, + { + "定义虚拟目录": { + "keywords": [], + "children": [] + } + }, + { + "定义本地站点": { + "keywords": [], + "children": [] + } + }, + { + "定义动态站点": { + "keywords": [], + "children": [] + } + }, + { + "测试本地站点": { + "keywords": [], + "children": [] + } + } + ] + } + } + ], + "export": [] +} \ No newline at end of file diff --git "a/data/1.web\345\210\235\351\230\266/7.jquery/7.\350\256\276\350\256\241\345\212\250\347\224\273/config.json" "b/data/1.web\345\210\235\351\230\266/7.jquery/7.\350\256\276\350\256\241\345\212\250\347\224\273/config.json" new file mode 100644 index 0000000..cb1674f --- /dev/null +++ "b/data/1.web\345\210\235\351\230\266/7.jquery/7.\350\256\276\350\256\241\345\212\250\347\224\273/config.json" @@ -0,0 +1,105 @@ +{ + "node_id": "569d5e11c4fc5de7844053d9a733c5e8", + "keywords": [], + "children": [ + { + "jQuery动画基础": { + "keywords": [], + "children": [ + { + "显隐效果.": { + "keywords": [], + "children": [] + } + }, + { + "显隐切换.": { + "keywords": [], + "children": [] + } + }, + { + "滑动效果.": { + "keywords": [], + "children": [] + } + }, + { + "滑动切换.": { + "keywords": [], + "children": [] + } + }, + { + "淡入淡出.": { + "keywords": [], + "children": [] + } + }, + { + "控制淡入淡出度": { + "keywords": [], + "children": [] + } + }, + { + "渐变切换.": { + "keywords": [], + "children": [] + } + } + ] + } + }, + { + "设计复杂动画": { + "keywords": [], + "children": [ + { + "模拟show()方法.": { + "keywords": [], + "children": [] + } + }, + { + "自定义动画": { + "keywords": [], + "children": [] + } + }, + { + "滑动定位.": { + "keywords": [], + "children": [] + } + }, + { + "停止动画.": { + "keywords": [], + "children": [] + } + }, + { + "关闭动画.": { + "keywords": [], + "children": [] + } + }, + { + "设置动画频率": { + "keywords": [], + "children": [] + } + }, + { + "延迟动画.": { + "keywords": [], + "children": [] + } + } + ] + } + } + ], + "export": [] +} \ No newline at end of file diff --git "a/data/1.web\345\210\235\351\230\266/7.jquery/8.\344\275\277\347\224\250\350\276\205\345\212\251\345\267\245\345\205\267/config.json" "b/data/1.web\345\210\235\351\230\266/7.jquery/8.\344\275\277\347\224\250\350\276\205\345\212\251\345\267\245\345\205\267/config.json" new file mode 100644 index 0000000..4d7e649 --- /dev/null +++ "b/data/1.web\345\210\235\351\230\266/7.jquery/8.\344\275\277\347\224\250\350\276\205\345\212\251\345\267\245\345\205\267/config.json" @@ -0,0 +1,295 @@ +{ + "node_id": "569d5e11c4fc5de7844053d9a733c5e8", + "keywords": [], + "children": [ + { + "检测浏览器": { + "keywords": [], + "children": [ + { + "检测类型.": { + "keywords": [], + "children": [] + } + }, + { + "检测版本号": { + "keywords": [], + "children": [] + } + }, + { + "检测渲染方式": { + "keywords": [], + "children": [] + } + }, + { + "综合测试.": { + "keywords": [], + "children": [] + } + } + ] + } + }, + { + "管理jQuery库1": { + "keywords": [], + "children": [ + { + "兼容其他库": { + "keywords": [], + "children": [] + } + }, + { + "混用多个库": { + "keywords": [], + "children": [] + } + } + ] + } + }, + { + "扩展JavaScript方法": { + "keywords": [], + "children": [ + { + "修剪字符串": { + "keywords": [], + "children": [] + } + }, + { + "序列化字符串": { + "keywords": [], + "children": [] + } + }, + { + "检测数组": { + "keywords": [], + "children": [] + } + }, + { + "遍历对象": { + "keywords": [], + "children": [] + } + }, + { + "转换数组": { + "keywords": [], + "children": [] + } + }, + { + "过滤数组": { + "keywords": [], + "children": [] + } + }, + { + "映射数组": { + "keywords": [], + "children": [] + } + }, + { + "合并数组": { + "keywords": [], + "children": [] + } + }, + { + "删除重复项": { + "keywords": [], + "children": [] + } + }, + { + "遍历jQuery对象": { + "keywords": [], + "children": [] + } + }, + { + "获取jQuery对象长度": { + "keywords": [], + "children": [] + } + }, + { + "获取选择器和选择范围": { + "keywords": [], + "children": [] + } + }, + { + "获取jQuery对象成员": { + "keywords": [], + "children": [] + } + } + ] + } + }, + { + "使用缓存和队列": { + "keywords": [], + "children": [ + { + "认识缓存": { + "keywords": [], + "children": [] + } + }, + { + "定义缓存": { + "keywords": [], + "children": [] + } + }, + { + "获取缓存": { + "keywords": [], + "children": [] + } + }, + { + "删除缓存": { + "keywords": [], + "children": [] + } + }, + { + "jQuery缓存规范": { + "keywords": [], + "children": [] + } + }, + { + "认识队列": { + "keywords": [], + "children": [] + } + }, + { + "添加队列": { + "keywords": [], + "children": [] + } + }, + { + "显示队列": { + "keywords": [], + "children": [] + } + }, + { + "更新队列": { + "keywords": [], + "children": [] + } + }, + { + "删除队列": { + "keywords": [], + "children": [] + } + } + ] + } + }, + { + "使用延迟对象": { + "keywords": [], + "children": [ + { + "认识deferred对象": { + "keywords": [], + "children": [] + } + }, + { + "Ajax链式写法": { + "keywords": [], + "children": [] + } + }, + { + "定义同一操作的多个回调函数": { + "keywords": [], + "children": [] + } + }, + { + "为多个操作定义回调函数": { + "keywords": [], + "children": [] + } + }, + { + "普通操作的回调函数接口": { + "keywords": [], + "children": [] + } + } + ] + } + }, + { + "使用回调函数对象": { + "keywords": [], + "children": [ + { + "添加回调函数": { + "keywords": [], + "children": [] + } + }, + { + "删除回调函数": { + "keywords": [], + "children": [] + } + }, + { + "判断回调函数": { + "keywords": [], + "children": [] + } + }, + { + "清空回调函数": { + "keywords": [], + "children": [] + } + }, + { + "禁用回调函数": { + "keywords": [], + "children": [] + } + }, + { + "触发回调函数": { + "keywords": [], + "children": [] + } + }, + { + "锁定回调函数": { + "keywords": [], + "children": [] + } + } + ] + } + } + ], + "export": [] +} \ No newline at end of file diff --git "a/data/1.web\345\210\235\351\230\266/7.jquery/9.\350\207\252\345\256\232\344\271\211\346\217\222\344\273\266/config.json" "b/data/1.web\345\210\235\351\230\266/7.jquery/9.\350\207\252\345\256\232\344\271\211\346\217\222\344\273\266/config.json" new file mode 100644 index 0000000..6412ec0 --- /dev/null +++ "b/data/1.web\345\210\235\351\230\266/7.jquery/9.\350\207\252\345\256\232\344\271\211\346\217\222\344\273\266/config.json" @@ -0,0 +1,104 @@ +{ + "node_id": "569d5e11c4fc5de7844053d9a733c5e8", + "keywords": [], + "children": [ + { + "jQuery插件开发基础": { + "keywords": [], + "children": [ + { + "jQuery插件开发规范": { + "keywords": [], + "children": [] + } + }, + { + "jQuery插件设计原理": { + "keywords": [], + "children": [] + } + }, + { + "定义工具函数": { + "keywords": [], + "children": [] + } + }, + { + "定义jQuery方法": { + "keywords": [], + "children": [] + } + }, + { + "匹配元素对象": { + "keywords": [], + "children": [] + } + }, + { + "使用extend()": { + "keywords": [], + "children": [] + } + }, + { + "定义jQuery选择器": { + "keywords": [], + "children": [] + } + }, + { + "优化默认选择器": { + "keywords": [], + "children": [] + } + }, + { + "封装插件.": { + "keywords": [], + "children": [] + } + }, + { + "开放参数": { + "keywords": [], + "children": [] + } + }, + { + "开放功能": { + "keywords": [], + "children": [] + } + }, + { + "保留隐私": { + "keywords": [], + "children": [] + } + }, + { + "非破坏性实现": { + "keywords": [], + "children": [] + } + }, + { + "添加事件日志": { + "keywords": [], + "children": [] + } + }, + { + "简化式插件设计": { + "keywords": [], + "children": [] + } + } + ] + } + } + ], + "export": [] +} \ No newline at end of file diff --git "a/data/1.web\345\210\235\351\230\266/7.jquery/config.json" "b/data/1.web\345\210\235\351\230\266/7.jquery/config.json" new file mode 100644 index 0000000..3407cf9 --- /dev/null +++ "b/data/1.web\345\210\235\351\230\266/7.jquery/config.json" @@ -0,0 +1,4 @@ +{ + "node_id": "569d5e11c4fc5de7844053d9a733c5e8", + "keywords": [] +} \ No newline at end of file diff --git "a/data/1.web\345\210\235\351\230\266/8.\347\275\221\347\273\234\350\257\267\346\261\202/1.json/config.json" "b/data/1.web\345\210\235\351\230\266/8.\347\275\221\347\273\234\350\257\267\346\261\202/1.json/config.json" new file mode 100644 index 0000000..f6416a1 --- /dev/null +++ "b/data/1.web\345\210\235\351\230\266/8.\347\275\221\347\273\234\350\257\267\346\261\202/1.json/config.json" @@ -0,0 +1,6 @@ +{ + "node_id": "569d5e11c4fc5de7844053d9a733c5e8", + "keywords": [], + "children": [], + "export": [] +} \ No newline at end of file diff --git "a/data/1.web\345\210\235\351\230\266/8.\347\275\221\347\273\234\350\257\267\346\261\202/2.ajax/config.json" "b/data/1.web\345\210\235\351\230\266/8.\347\275\221\347\273\234\350\257\267\346\261\202/2.ajax/config.json" new file mode 100644 index 0000000..f6416a1 --- /dev/null +++ "b/data/1.web\345\210\235\351\230\266/8.\347\275\221\347\273\234\350\257\267\346\261\202/2.ajax/config.json" @@ -0,0 +1,6 @@ +{ + "node_id": "569d5e11c4fc5de7844053d9a733c5e8", + "keywords": [], + "children": [], + "export": [] +} \ No newline at end of file diff --git "a/data/1.web\345\210\235\351\230\266/8.\347\275\221\347\273\234\350\257\267\346\261\202/3.axios/config.json" "b/data/1.web\345\210\235\351\230\266/8.\347\275\221\347\273\234\350\257\267\346\261\202/3.axios/config.json" new file mode 100644 index 0000000..f6416a1 --- /dev/null +++ "b/data/1.web\345\210\235\351\230\266/8.\347\275\221\347\273\234\350\257\267\346\261\202/3.axios/config.json" @@ -0,0 +1,6 @@ +{ + "node_id": "569d5e11c4fc5de7844053d9a733c5e8", + "keywords": [], + "children": [], + "export": [] +} \ No newline at end of file diff --git "a/data/1.web\345\210\235\351\230\266/8.\347\275\221\347\273\234\350\257\267\346\261\202/4.mock/config.json" "b/data/1.web\345\210\235\351\230\266/8.\347\275\221\347\273\234\350\257\267\346\261\202/4.mock/config.json" new file mode 100644 index 0000000..f6416a1 --- /dev/null +++ "b/data/1.web\345\210\235\351\230\266/8.\347\275\221\347\273\234\350\257\267\346\261\202/4.mock/config.json" @@ -0,0 +1,6 @@ +{ + "node_id": "569d5e11c4fc5de7844053d9a733c5e8", + "keywords": [], + "children": [], + "export": [] +} \ No newline at end of file diff --git "a/data/1.web\345\210\235\351\230\266/8.\347\275\221\347\273\234\350\257\267\346\261\202/5.proxy/config.json" "b/data/1.web\345\210\235\351\230\266/8.\347\275\221\347\273\234\350\257\267\346\261\202/5.proxy/config.json" new file mode 100644 index 0000000..f6416a1 --- /dev/null +++ "b/data/1.web\345\210\235\351\230\266/8.\347\275\221\347\273\234\350\257\267\346\261\202/5.proxy/config.json" @@ -0,0 +1,6 @@ +{ + "node_id": "569d5e11c4fc5de7844053d9a733c5e8", + "keywords": [], + "children": [], + "export": [] +} \ No newline at end of file diff --git "a/data/1.web\345\210\235\351\230\266/8.\347\275\221\347\273\234\350\257\267\346\261\202/config.json" "b/data/1.web\345\210\235\351\230\266/8.\347\275\221\347\273\234\350\257\267\346\261\202/config.json" new file mode 100644 index 0000000..3407cf9 --- /dev/null +++ "b/data/1.web\345\210\235\351\230\266/8.\347\275\221\347\273\234\350\257\267\346\261\202/config.json" @@ -0,0 +1,4 @@ +{ + "node_id": "569d5e11c4fc5de7844053d9a733c5e8", + "keywords": [] +} \ No newline at end of file diff --git "a/data/1.web\345\210\235\351\230\266/9.\347\247\273\345\212\250web\345\274\200\345\217\221/1.HTML 5\347\247\273\345\212\250Web\345\274\200\345\217\221\345\256\236\346\210\230/config.json" "b/data/1.web\345\210\235\351\230\266/9.\347\247\273\345\212\250web\345\274\200\345\217\221/1.HTML 5\347\247\273\345\212\250Web\345\274\200\345\217\221\345\256\236\346\210\230/config.json" new file mode 100644 index 0000000..7c34575 --- /dev/null +++ "b/data/1.web\345\210\235\351\230\266/9.\347\247\273\345\212\250web\345\274\200\345\217\221/1.HTML 5\347\247\273\345\212\250Web\345\274\200\345\217\221\345\256\236\346\210\230/config.json" @@ -0,0 +1,129 @@ +{ + "node_id": "569d5e11c4fc5de7844053d9a733c5e8", + "keywords": [], + "children": [ + { + "重温HTML": { + "keywords": [], + "children": [ + { + "HTML能干什么": { + "keywords": [], + "children": [] + } + }, + { + "HTML的核心要素": { + "keywords": [], + "children": [] + } + } + ] + } + }, + { + "HTML的语义来源": { + "keywords": [], + "children": [] + } + }, + { + "HTML 5的元素和属性": { + "keywords": [], + "children": [ + { + "全局属性": { + "keywords": [], + "children": [] + } + }, + { + "HTML 5与它的全局属性": { + "keywords": [], + "children": [] + } + }, + { + "内容模型(content models)": { + "keywords": [], + "children": [] + } + }, + { + "文档元数据(Document metadata)": { + "keywords": [], + "children": [] + } + }, + { + "区块(sections)": { + "keywords": [], + "children": [] + } + }, + { + "分组内容(grouping content)": { + "keywords": [], + "children": [] + } + }, + { + "文本级语义(text-level semantics)": { + "keywords": [], + "children": [] + } + }, + { + "修改记录(edits)": { + "keywords": [], + "children": [] + } + }, + { + "嵌入内容(embedded content)": { + "keywords": [], + "children": [] + } + }, + { + "表格数据(tabular data)": { + "keywords": [], + "children": [] + } + }, + { + "HTML 5表单": { + "keywords": [], + "children": [] + } + }, + { + "input元素和其属性": { + "keywords": [], + "children": [] + } + }, + { + "表单操作": { + "keywords": [], + "children": [] + } + }, + { + "HTML 5表单兼容性": { + "keywords": [], + "children": [] + } + }, + { + "交互式元素(Interactive elements)": { + "keywords": [], + "children": [] + } + } + ] + } + } + ], + "export": [] +} \ No newline at end of file diff --git "a/data/1.web\345\210\235\351\230\266/9.\347\247\273\345\212\250web\345\274\200\345\217\221/10.history\344\270\216\345\257\274\350\210\252/config.json" "b/data/1.web\345\210\235\351\230\266/9.\347\247\273\345\212\250web\345\274\200\345\217\221/10.history\344\270\216\345\257\274\350\210\252/config.json" new file mode 100644 index 0000000..112a2c4 --- /dev/null +++ "b/data/1.web\345\210\235\351\230\266/9.\347\247\273\345\212\250web\345\274\200\345\217\221/10.history\344\270\216\345\257\274\350\210\252/config.json" @@ -0,0 +1,25 @@ +{ + "node_id": "569d5e11c4fc5de7844053d9a733c5e8", + "keywords": [], + "children": [ + { + "基于hashchange事件管理导航": { + "keywords": [], + "children": [] + } + }, + { + "HTML 5 history API": { + "keywords": [], + "children": [] + } + }, + { + "history.js": { + "keywords": [], + "children": [] + } + } + ], + "export": [] +} \ No newline at end of file diff --git "a/data/1.web\345\210\235\351\230\266/9.\347\247\273\345\212\250web\345\274\200\345\217\221/11.\347\253\231\345\234\250\345\267\250\344\272\272\344\273\254\347\232\204\350\202\251\344\270\212--jQuery Mobile/config.json" "b/data/1.web\345\210\235\351\230\266/9.\347\247\273\345\212\250web\345\274\200\345\217\221/11.\347\253\231\345\234\250\345\267\250\344\272\272\344\273\254\347\232\204\350\202\251\344\270\212--jQuery Mobile/config.json" new file mode 100644 index 0000000..662aca1 --- /dev/null +++ "b/data/1.web\345\210\235\351\230\266/9.\347\247\273\345\212\250web\345\274\200\345\217\221/11.\347\253\231\345\234\250\345\267\250\344\272\272\344\273\254\347\232\204\350\202\251\344\270\212--jQuery Mobile/config.json" @@ -0,0 +1,129 @@ +{ + "node_id": "569d5e11c4fc5de7844053d9a733c5e8", + "keywords": [], + "children": [ + { + "移动Web框架概览": { + "keywords": [], + "children": [ + { + "HTML 5移动应用技术大观": { + "keywords": [], + "children": [] + } + }, + { + "因地制宜、量体裁衣": { + "keywords": [], + "children": [] + } + } + ] + } + }, + { + "jQuery Mobile": { + "keywords": [], + "children": [ + { + "综述": { + "keywords": [], + "children": [] + } + }, + { + "Hello,jQuery Mobile!": { + "keywords": [], + "children": [] + } + }, + { + "页面(Pages)": { + "keywords": [], + "children": [] + } + }, + { + "Ajax导航模型和转场动画(transitions)": { + "keywords": [], + "children": [] + } + }, + { + "UI组件--一切皆响应": { + "keywords": [], + "children": [] + } + }, + { + "UI组件--表单元素": { + "keywords": [], + "children": [] + } + }, + { + "UI组件--Header & Footer": { + "keywords": [], + "children": [] + } + }, + { + "UI组件--ListView": { + "keywords": [], + "children": [] + } + }, + { + "UI组件--Collapsibles和Accordions": { + "keywords": [], + "children": [] + } + }, + { + "UI组件--popup": { + "keywords": [], + "children": [] + } + }, + { + "UI组件--dialog": { + "keywords": [], + "children": [] + } + }, + { + "响应式组件--responsive grids": { + "keywords": [], + "children": [] + } + }, + { + "响应式组件--reflow tables": { + "keywords": [], + "children": [] + } + }, + { + "响应式组件--Column Toggle tables": { + "keywords": [], + "children": [] + } + }, + { + "响应式组件--sliding panels": { + "keywords": [], + "children": [] + } + }, + { + "主题化和themeroller": { + "keywords": [], + "children": [] + } + } + ] + } + } + ], + "export": [] +} \ No newline at end of file diff --git "a/data/1.web\345\210\235\351\230\266/9.\347\247\273\345\212\250web\345\274\200\345\217\221/12.Sencha Touch/config.json" "b/data/1.web\345\210\235\351\230\266/9.\347\247\273\345\212\250web\345\274\200\345\217\221/12.Sencha Touch/config.json" new file mode 100644 index 0000000..f6416a1 --- /dev/null +++ "b/data/1.web\345\210\235\351\230\266/9.\347\247\273\345\212\250web\345\274\200\345\217\221/12.Sencha Touch/config.json" @@ -0,0 +1,6 @@ +{ + "node_id": "569d5e11c4fc5de7844053d9a733c5e8", + "keywords": [], + "children": [], + "export": [] +} \ No newline at end of file diff --git "a/data/1.web\345\210\235\351\230\266/9.\347\247\273\345\212\250web\345\274\200\345\217\221/2.\345\210\235\346\216\242CSS 3/config.json" "b/data/1.web\345\210\235\351\230\266/9.\347\247\273\345\212\250web\345\274\200\345\217\221/2.\345\210\235\346\216\242CSS 3/config.json" new file mode 100644 index 0000000..5dee8e2 --- /dev/null +++ "b/data/1.web\345\210\235\351\230\266/9.\347\247\273\345\212\250web\345\274\200\345\217\221/2.\345\210\235\346\216\242CSS 3/config.json" @@ -0,0 +1,193 @@ +{ + "node_id": "569d5e11c4fc5de7844053d9a733c5e8", + "keywords": [], + "children": [ + { + "关于CSS的那件小事": { + "keywords": [], + "children": [] + } + }, + { + "CSS的核心概念": { + "keywords": [], + "children": [ + { + "语法、层叠和特殊性(specificity)": { + "keywords": [], + "children": [] + } + }, + { + "框模型(Box Model)": { + "keywords": [], + "children": [] + } + }, + { + "可视化格式模型(visual formatting model)": { + "keywords": [], + "children": [] + } + }, + { + "表格": { + "keywords": [], + "children": [] + } + } + ] + } + }, + { + "CSS 3选择器增强": { + "keywords": [], + "children": [ + { + "属性选择器的妙用": { + "keywords": [], + "children": [] + } + }, + { + "强大的结构性伪类(Structural pseudo-classes)": { + "keywords": [], + "children": [] + } + }, + { + "其他选择器": { + "keywords": [], + "children": [] + } + }, + { + "CSS 4中的选择器": { + "keywords": [], + "children": [] + } + } + ] + } + }, + { + "和图片说再见": { + "keywords": [], + "children": [ + { + "背景和边框": { + "keywords": [], + "children": [] + } + }, + { + "渐变和阴影": { + "keywords": [], + "children": [] + } + }, + { + "自定义字体": { + "keywords": [], + "children": [] + } + } + ] + } + }, + { + "CSS 3布局之道": { + "keywords": [], + "children": [ + { + "炒冷饭--负边距与浮动": { + "keywords": [], + "children": [] + } + }, + { + "栅格系统与多列布局": { + "keywords": [], + "children": [] + } + }, + { + "弹性盒布局(Flexible Box)": { + "keywords": [], + "children": [] + } + } + ] + } + }, + { + "动起来": { + "keywords": [], + "children": [ + { + "CSS变形(CSS transform)": { + "keywords": [], + "children": [] + } + }, + { + "CSS过渡(CSS Transitions)": { + "keywords": [], + "children": [] + } + }, + { + "CSS动画(CSS Animations)": { + "keywords": [], + "children": [] + } + } + ] + } + }, + { + "响应式设计基础": { + "keywords": [], + "children": [ + { + "从两栏布局开始说起": { + "keywords": [], + "children": [] + } + }, + { + "从media到media queries": { + "keywords": [], + "children": [] + } + }, + { + "响应式栅格系统": { + "keywords": [], + "children": [] + } + }, + { + "移动优先(mobile first)理念": { + "keywords": [], + "children": [] + } + }, + { + "另一种思路:后端模板输出的优化": { + "keywords": [], + "children": [] + } + }, + { + "其他细节": { + "keywords": [], + "children": [] + } + } + ] + } + } + ], + "export": [] +} \ No newline at end of file diff --git "a/data/1.web\345\210\235\351\230\266/9.\347\247\273\345\212\250web\345\274\200\345\217\221/3.\344\273\216\347\275\221\351\241\265\357\274\210Web page\357\274\211\345\210\260\345\272\224\347\224\250\357\274\210Application\357\274\211/config.json" "b/data/1.web\345\210\235\351\230\266/9.\347\247\273\345\212\250web\345\274\200\345\217\221/3.\344\273\216\347\275\221\351\241\265\357\274\210Web page\357\274\211\345\210\260\345\272\224\347\224\250\357\274\210Application\357\274\211/config.json" new file mode 100644 index 0000000..47b5963 --- /dev/null +++ "b/data/1.web\345\210\235\351\230\266/9.\347\247\273\345\212\250web\345\274\200\345\217\221/3.\344\273\216\347\275\221\351\241\265\357\274\210Web page\357\274\211\345\210\260\345\272\224\347\224\250\357\274\210Application\357\274\211/config.json" @@ -0,0 +1,95 @@ +{ + "node_id": "569d5e11c4fc5de7844053d9a733c5e8", + "keywords": [], + "children": [ + { + "Web不能承受之重": { + "keywords": [], + "children": [] + } + }, + { + "本地存储升级": { + "keywords": [], + "children": [ + { + "cookie和cookie的局限": { + "keywords": [], + "children": [] + } + }, + { + "来自HTML 5的Web Storage": { + "keywords": [], + "children": [] + } + }, + { + "IE的userData": { + "keywords": [], + "children": [] + } + } + ] + } + }, + { + "离线应用": { + "keywords": [], + "children": [ + { + "缓存和应用缓存": { + "keywords": [], + "children": [] + } + }, + { + "应用缓存的基本使用": { + "keywords": [], + "children": [] + } + } + ] + } + }, + { + "拖放": { + "keywords": [], + "children": [ + { + "模拟拖放": { + "keywords": [], + "children": [] + } + }, + { + "原生拖放": { + "keywords": [], + "children": [] + } + } + ] + } + }, + { + "文件操作": { + "keywords": [], + "children": [ + { + "选择文件": { + "keywords": [], + "children": [] + } + }, + { + "操作文件": { + "keywords": [], + "children": [] + } + } + ] + } + } + ], + "export": [] +} \ No newline at end of file diff --git "a/data/1.web\345\210\235\351\230\266/9.\347\247\273\345\212\250web\345\274\200\345\217\221/4.\346\214\207\345\260\226\344\270\213\347\232\204\346\265\217\350\247\210\345\231\250/config.json" "b/data/1.web\345\210\235\351\230\266/9.\347\247\273\345\212\250web\345\274\200\345\217\221/4.\346\214\207\345\260\226\344\270\213\347\232\204\346\265\217\350\247\210\345\231\250/config.json" new file mode 100644 index 0000000..7ac3078 --- /dev/null +++ "b/data/1.web\345\210\235\351\230\266/9.\347\247\273\345\212\250web\345\274\200\345\217\221/4.\346\214\207\345\260\226\344\270\213\347\232\204\346\265\217\350\247\210\345\231\250/config.json" @@ -0,0 +1,37 @@ +{ + "node_id": "569d5e11c4fc5de7844053d9a733c5e8", + "keywords": [], + "children": [ + { + "基本touch事件": { + "keywords": [], + "children": [] + } + }, + { + "模拟手势事件": { + "keywords": [], + "children": [] + } + }, + { + "hammer.js": { + "keywords": [], + "children": [] + } + }, + { + "实例:精仿iOS的相册": { + "keywords": [], + "children": [] + } + }, + { + "工具": { + "keywords": [], + "children": [] + } + } + ], + "export": [] +} \ No newline at end of file diff --git "a/data/1.web\345\210\235\351\230\266/9.\347\247\273\345\212\250web\345\274\200\345\217\221/5.\345\234\260\347\220\206\345\256\232\344\275\215\357\274\210Geolocation API\357\274\211/config.json" "b/data/1.web\345\210\235\351\230\266/9.\347\247\273\345\212\250web\345\274\200\345\217\221/5.\345\234\260\347\220\206\345\256\232\344\275\215\357\274\210Geolocation API\357\274\211/config.json" new file mode 100644 index 0000000..63f97c8 --- /dev/null +++ "b/data/1.web\345\210\235\351\230\266/9.\347\247\273\345\212\250web\345\274\200\345\217\221/5.\345\234\260\347\220\206\345\256\232\344\275\215\357\274\210Geolocation API\357\274\211/config.json" @@ -0,0 +1,31 @@ +{ + "node_id": "569d5e11c4fc5de7844053d9a733c5e8", + "keywords": [], + "children": [ + { + "获取当前位置": { + "keywords": [], + "children": [] + } + }, + { + "监视位置变化": { + "keywords": [], + "children": [] + } + }, + { + "来半斤Google maps尝尝": { + "keywords": [], + "children": [] + } + }, + { + "开发者工具": { + "keywords": [], + "children": [] + } + } + ], + "export": [] +} \ No newline at end of file diff --git "a/data/1.web\345\210\235\351\230\266/9.\347\247\273\345\212\250web\345\274\200\345\217\221/6.Web Worker/config.json" "b/data/1.web\345\210\235\351\230\266/9.\347\247\273\345\212\250web\345\274\200\345\217\221/6.Web Worker/config.json" new file mode 100644 index 0000000..2b13c9c --- /dev/null +++ "b/data/1.web\345\210\235\351\230\266/9.\347\247\273\345\212\250web\345\274\200\345\217\221/6.Web Worker/config.json" @@ -0,0 +1,31 @@ +{ + "node_id": "569d5e11c4fc5de7844053d9a733c5e8", + "keywords": [], + "children": [ + { + "单线程语言之殇": { + "keywords": [], + "children": [] + } + }, + { + "为JavaScript引入线程技术": { + "keywords": [], + "children": [] + } + }, + { + "嵌入式Worker代码": { + "keywords": [], + "children": [] + } + }, + { + "共享Worker": { + "keywords": [], + "children": [] + } + } + ], + "export": [] +} \ No newline at end of file diff --git "a/data/1.web\345\210\235\351\230\266/9.\347\247\273\345\212\250web\345\274\200\345\217\221/7.\351\200\232\344\277\241\345\237\272\347\241\200/config.json" "b/data/1.web\345\210\235\351\230\266/9.\347\247\273\345\212\250web\345\274\200\345\217\221/7.\351\200\232\344\277\241\345\237\272\347\241\200/config.json" new file mode 100644 index 0000000..e91aa8a --- /dev/null +++ "b/data/1.web\345\210\235\351\230\266/9.\347\247\273\345\212\250web\345\274\200\345\217\221/7.\351\200\232\344\277\241\345\237\272\347\241\200/config.json" @@ -0,0 +1,25 @@ +{ + "node_id": "569d5e11c4fc5de7844053d9a733c5e8", + "keywords": [], + "children": [ + { + "XHR 2": { + "keywords": [], + "children": [] + } + }, + { + "跨文档通信(Cross-document messaging)": { + "keywords": [], + "children": [] + } + }, + { + "通道通信(channel messaging)": { + "keywords": [], + "children": [] + } + } + ], + "export": [] +} \ No newline at end of file diff --git "a/data/1.web\345\210\235\351\230\266/9.\347\247\273\345\212\250web\345\274\200\345\217\221/8.\345\256\236\346\227\266Web\346\212\200\346\234\257/config.json" "b/data/1.web\345\210\235\351\230\266/9.\347\247\273\345\212\250web\345\274\200\345\217\221/8.\345\256\236\346\227\266Web\346\212\200\346\234\257/config.json" new file mode 100644 index 0000000..1a6f065 --- /dev/null +++ "b/data/1.web\345\210\235\351\230\266/9.\347\247\273\345\212\250web\345\274\200\345\217\221/8.\345\256\236\346\227\266Web\346\212\200\346\234\257/config.json" @@ -0,0 +1,37 @@ +{ + "node_id": "569d5e11c4fc5de7844053d9a733c5e8", + "keywords": [], + "children": [ + { + "轮询和长轮询(comet)": { + "keywords": [], + "children": [] + } + }, + { + "服务器事件(server-sent events)": { + "keywords": [], + "children": [] + } + }, + { + "Web Sockets": { + "keywords": [], + "children": [] + } + }, + { + "利器:Socket.IO": { + "keywords": [], + "children": [] + } + }, + { + "基于Socket.IO的聊天室": { + "keywords": [], + "children": [] + } + } + ], + "export": [] +} \ No newline at end of file diff --git "a/data/1.web\345\210\235\351\230\266/9.\347\247\273\345\212\250web\345\274\200\345\217\221/9.\346\204\237\345\256\230\344\270\226\347\225\214/config.json" "b/data/1.web\345\210\235\351\230\266/9.\347\247\273\345\212\250web\345\274\200\345\217\221/9.\346\204\237\345\256\230\344\270\226\347\225\214/config.json" new file mode 100644 index 0000000..baca927 --- /dev/null +++ "b/data/1.web\345\210\235\351\230\266/9.\347\247\273\345\212\250web\345\274\200\345\217\221/9.\346\204\237\345\256\230\344\270\226\347\225\214/config.json" @@ -0,0 +1,19 @@ +{ + "node_id": "569d5e11c4fc5de7844053d9a733c5e8", + "keywords": [], + "children": [ + { + "感知方向(orientation)和动作(motion)": { + "keywords": [], + "children": [] + } + }, + { + "音视频捕获": { + "keywords": [], + "children": [] + } + } + ], + "export": [] +} \ No newline at end of file diff --git "a/data/1.web\345\210\235\351\230\266/9.\347\247\273\345\212\250web\345\274\200\345\217\221/config.json" "b/data/1.web\345\210\235\351\230\266/9.\347\247\273\345\212\250web\345\274\200\345\217\221/config.json" new file mode 100644 index 0000000..3407cf9 --- /dev/null +++ "b/data/1.web\345\210\235\351\230\266/9.\347\247\273\345\212\250web\345\274\200\345\217\221/config.json" @@ -0,0 +1,4 @@ +{ + "node_id": "569d5e11c4fc5de7844053d9a733c5e8", + "keywords": [] +} \ No newline at end of file diff --git "a/data/1.web\345\210\235\351\230\266/config.json" "b/data/1.web\345\210\235\351\230\266/config.json" new file mode 100644 index 0000000..3407cf9 --- /dev/null +++ "b/data/1.web\345\210\235\351\230\266/config.json" @@ -0,0 +1,4 @@ +{ + "node_id": "569d5e11c4fc5de7844053d9a733c5e8", + "keywords": [] +} \ No newline at end of file diff --git "a/data/2.web\344\270\255\351\230\266/1.\345\211\215\347\253\257UI\345\272\223/1.bootstrap/config.json" "b/data/2.web\344\270\255\351\230\266/1.\345\211\215\347\253\257UI\345\272\223/1.bootstrap/config.json" new file mode 100644 index 0000000..67b9b4f --- /dev/null +++ "b/data/2.web\344\270\255\351\230\266/1.\345\211\215\347\253\257UI\345\272\223/1.bootstrap/config.json" @@ -0,0 +1,948 @@ +{ + "node_id": "569d5e11c4fc5de7844053d9a733c5e8", + "keywords": [], + "children": [ + { + "下载安装Bootstrap": { + "keywords": [], + "children": [] + } + }, + { + "网格及其用法": { + "keywords": [], + "children": [ + { + "设计中的网格": { + "keywords": [], + "children": [] + } + }, + { + "Bootstrap网格系统": { + "keywords": [], + "children": [] + } + }, + { + "如何在Bootstrap中创建网格": { + "keywords": [], + "children": [ + { + "创建基本网格": { + "keywords": [], + "children": [] + } + }, + { + "响应式列重置": { + "keywords": [], + "children": [] + } + }, + { + "列的偏移、排序和嵌套": { + "keywords": [], + "children": [] + } + } + ] + } + }, + { + "Bootstrap中的响应式Web": { + "keywords": [], + "children": [] + } + } + ] + } + }, + { + "标签、徽章、面板、Well和超大屏幕": { + "keywords": [], + "children": [ + { + "标签和徽章": { + "keywords": [], + "children": [ + { + "标签": { + "keywords": [], + "children": [] + } + }, + { + "徽章": { + "keywords": [], + "children": [] + } + } + ] + } + }, + { + "Well和面板": { + "keywords": [], + "children": [ + { + "Well": { + "keywords": [], + "children": [] + } + }, + { + "面板": { + "keywords": [], + "children": [] + } + } + ] + } + }, + { + "超大屏幕": { + "keywords": [], + "children": [] + } + } + ] + } + }, + { + "Bootstrap排版": { + "keywords": [], + "children": [ + { + "Bootstrap中的基本排版": { + "keywords": [], + "children": [] + } + }, + { + "标题": { + "keywords": [], + "children": [ + { + "标题": { + "keywords": [], + "children": [] + } + }, + { + "页眉": { + "keywords": [], + "children": [] + } + } + ] + } + }, + { + "正文": { + "keywords": [], + "children": [ + { + "内联文本": { + "keywords": [], + "children": [] + } + }, + { + "元素对齐": { + "keywords": [], + "children": [] + } + }, + { + "文本元素转换": { + "keywords": [], + "children": [] + } + } + ] + } + }, + { + "其他文本块": { + "keywords": [], + "children": [ + { + "代码": { + "keywords": [], + "children": [] + } + }, + { + "引用语": { + "keywords": [], + "children": [] + } + }, + { + "列表": { + "keywords": [], + "children": [] + } + }, + { + "缩略语": { + "keywords": [], + "children": [] + } + }, + { + "地址": { + "keywords": [], + "children": [] + } + } + ] + } + } + ] + } + }, + { + "设置表格样式": { + "keywords": [], + "children": [ + { + "基本表格": { + "keywords": [], + "children": [] + } + }, + { + "Bootstrap表格类": { + "keywords": [], + "children": [] + } + }, + { + "包含表格的面板": { + "keywords": [], + "children": [] + } + }, + { + "响应式表格": { + "keywords": [], + "children": [] + } + } + ] + } + }, + { + "设置表单样式": { + "keywords": [], + "children": [ + { + "基本表单": { + "keywords": [], + "children": [ + { + "水平表单": { + "keywords": [], + "children": [] + } + }, + { + "内联表单": { + "keywords": [], + "children": [] + } + } + ] + } + }, + { + "Bootstrap支持的表单控件": { + "keywords": [], + "children": [ + { + "基本输入标记": { + "keywords": [], + "children": [] + } + }, + { + "复选框和单选按钮": { + "keywords": [], + "children": [] + } + }, + { + "下拉菜单": { + "keywords": [], + "children": [] + } + }, + { + "设置表单控件的大小": { + "keywords": [], + "children": [] + } + }, + { + "帮助块": { + "keywords": [], + "children": [] + } + } + ] + } + }, + { + "输入组": { + "keywords": [], + "children": [ + { + "基本输入组": { + "keywords": [], + "children": [] + } + }, + { + "设置输入组的大小": { + "keywords": [], + "children": [] + } + }, + { + "奇妙的附加控件": { + "keywords": [], + "children": [] + } + } + ] + } + }, + { + "Bootstrap表单的交互性": { + "keywords": [], + "children": [ + { + "焦点状态": { + "keywords": [], + "children": [] + } + }, + { + "禁用和只读状态": { + "keywords": [], + "children": [] + } + }, + { + "验证状态": { + "keywords": [], + "children": [] + } + } + ] + } + } + ] + } + }, + { + "图像、媒体对象和图像": { + "keywords": [], + "children": [ + { + "响应式图像": { + "keywords": [], + "children": [] + } + }, + { + "图像形状": { + "keywords": [], + "children": [] + } + }, + { + "媒体对象": { + "keywords": [], + "children": [] + } + }, + { + "缩略图": { + "keywords": [], + "children": [] + } + }, + { + "Glyphicon": { + "keywords": [], + "children": [] + } + } + ] + } + }, + { + "按钮和按钮组样式设置及基本按钮": { + "keywords": [], + "children": [ + { + "按钮标记": { + "keywords": [], + "children": [] + } + }, + { + "按钮类和大小": { + "keywords": [], + "children": [] + } + }, + { + "按钮状态": { + "keywords": [], + "children": [] + } + }, + { + "按钮组": { + "keywords": [], + "children": [ + { + "水平按钮组": { + "keywords": [], + "children": [] + } + }, + { + "垂直按钮组": { + "keywords": [], + "children": [] + } + }, + { + "按钮工具栏": { + "keywords": [], + "children": [] + } + } + ] + } + }, + { + "按钮JavaScript": { + "keywords": [], + "children": [] + } + } + ] + } + }, + { + "用Bootstrap创建导航系统": { + "keywords": [], + "children": [ + { + "标准导航元素": { + "keywords": [], + "children": [] + } + }, + { + "下拉菜单": { + "keywords": [], + "children": [ + { + "拆分下拉菜单": { + "keywords": [], + "children": [] + } + }, + { + "上拉式变种": { + "keywords": [], + "children": [] + } + } + ] + } + }, + { + "导航栏": { + "keywords": [], + "children": [ + { + "导航栏标题和品牌": { + "keywords": [], + "children": [] + } + }, + { + "切换导航开关": { + "keywords": [], + "children": [] + } + }, + { + "导航栏中的链接、文本、按钮": { + "keywords": [], + "children": [] + } + }, + { + "改变导航栏的颜色和对齐": { + "keywords": [], + "children": [] + } + } + ] + } + }, + { + "面包屑导航和分页": { + "keywords": [], + "children": [] + } + }, + { + "列表组": { + "keywords": [], + "children": [] + } + } + ] + } + }, + { + "Bootstrap实用工具": { + "keywords": [], + "children": [ + { + "助手类": { + "keywords": [], + "children": [ + { + "更改颜色": { + "keywords": [], + "children": [] + } + }, + { + "图标": { + "keywords": [], + "children": [] + } + }, + { + "布局类": { + "keywords": [], + "children": [] + } + }, + { + "显示和隐藏内容": { + "keywords": [], + "children": [] + } + } + ] + } + }, + { + "响应式实用工具": { + "keywords": [], + "children": [] + } + }, + { + "打印类": { + "keywords": [], + "children": [] + } + }, + { + "响应式嵌入": { + "keywords": [], + "children": [] + } + }, + { + "Bootstrap中的可访问性": { + "keywords": [], + "children": [] + } + } + ] + } + }, + { + "模态窗口": { + "keywords": [], + "children": [ + { + "什么是模态窗口": { + "keywords": [], + "children": [] + } + }, + { + "如何构建模态窗口": { + "keywords": [], + "children": [ + { + "触发模态窗口": { + "keywords": [], + "children": [] + } + }, + { + "模态窗口编码": { + "keywords": [], + "children": [] + } + } + ] + } + }, + { + "修改模态窗口": { + "keywords": [], + "children": [ + { + "更改模态窗口的打开": { + "keywords": [], + "children": [] + } + }, + { + "更改模态窗口的大小": { + "keywords": [], + "children": [] + } + }, + { + "更改布局": { + "keywords": [], + "children": [] + } + }, + { + "动态更改模态内容": { + "keywords": [], + "children": [] + } + } + ] + } + } + ] + } + }, + { + "附加导航、选项卡和滚动": { + "keywords": [], + "children": [ + { + "附加导航": { + "keywords": [], + "children": [] + } + }, + { + "选项卡": { + "keywords": [], + "children": [] + } + }, + { + "滚动监听": { + "keywords": [], + "children": [] + } + }, + { + "结合使用这些插件": { + "keywords": [], + "children": [] + } + } + ] + } + }, + { + "弹出框和工具提示": { + "keywords": [], + "children": [ + { + "工具提示": { + "keywords": [], + "children": [ + { + "工具提示选项": { + "keywords": [], + "children": [] + } + }, + { + "工具提示方法": { + "keywords": [], + "children": [] + } + }, + { + "工具提示事件": { + "keywords": [], + "children": [] + } + } + ] + } + }, + { + "弹出框": { + "keywords": [], + "children": [ + { + "弹出框选项": { + "keywords": [], + "children": [] + } + }, + { + "弹出框方法": { + "keywords": [], + "children": [] + } + }, + { + "弹出框事件": { + "keywords": [], + "children": [] + } + } + ] + } + } + ] + } + }, + { + "过渡、按钮、警告框和过渡": { + "keywords": [], + "children": [ + { + "按钮": { + "keywords": [], + "children": [ + { + "按钮状态": { + "keywords": [], + "children": [] + } + }, + { + "切换按钮": { + "keywords": [], + "children": [] + } + }, + { + "复选框和单选按钮": { + "keywords": [], + "children": [] + } + }, + { + "按钮方法": { + "keywords": [], + "children": [] + } + } + ] + } + }, + { + "警告框": { + "keywords": [], + "children": [ + { + "警告框方法": { + "keywords": [], + "children": [] + } + }, + { + "警告框事件": { + "keywords": [], + "children": [] + } + } + ] + } + }, + { + "进度条": { + "keywords": [], + "children": [ + { + "创建进度条": { + "keywords": [], + "children": [] + } + }, + { + "设置进度条样式": { + "keywords": [], + "children": [] + } + } + ] + } + } + ] + } + }, + { + "折叠插件和折叠面板": { + "keywords": [], + "children": [ + { + "折叠插件": { + "keywords": [], + "children": [ + { + "创建一个可折叠部分": { + "keywords": [], + "children": [] + } + }, + { + "水平折叠元素": { + "keywords": [], + "children": [] + } + }, + { + "折叠选项": { + "keywords": [], + "children": [] + } + }, + { + "折叠方法": { + "keywords": [], + "children": [] + } + }, + { + "折叠事件": { + "keywords": [], + "children": [] + } + } + ] + } + }, + { + "折叠面板": { + "keywords": [], + "children": [ + { + "创建折叠面板": { + "keywords": [], + "children": [] + } + }, + { + "使用折叠面板导航": { + "keywords": [], + "children": [] + } + } + ] + } + } + ] + } + }, + { + "轮播": { + "keywords": [], + "children": [ + { + "创建轮播": { + "keywords": [], + "children": [ + { + "基本轮播": { + "keywords": [], + "children": [] + } + }, + { + "更精致的轮播": { + "keywords": [], + "children": [] + } + } + ] + } + }, + { + "使用轮播插件": { + "keywords": [], + "children": [ + { + "添加多个轮播": { + "keywords": [], + "children": [] + } + }, + { + "轮播选项": { + "keywords": [], + "children": [] + } + }, + { + "轮播方法": { + "keywords": [], + "children": [] + } + }, + { + "轮播事件": { + "keywords": [], + "children": [] + } + } + ] + } + }, + { + "Web上的轮播": { + "keywords": [], + "children": [ + { + "轮播最佳实践": { + "keywords": [], + "children": [] + } + }, + { + "轮播的问题和解决方案": { + "keywords": [], + "children": [] + } + } + ] + } + } + ] + } + } + ], + "export": [] +} \ No newline at end of file diff --git "a/data/2.web\344\270\255\351\230\266/1.\345\211\215\347\253\257UI\345\272\223/2.layui.js/config.json" "b/data/2.web\344\270\255\351\230\266/1.\345\211\215\347\253\257UI\345\272\223/2.layui.js/config.json" new file mode 100644 index 0000000..a3dc365 --- /dev/null +++ "b/data/2.web\344\270\255\351\230\266/1.\345\211\215\347\253\257UI\345\272\223/2.layui.js/config.json" @@ -0,0 +1,219 @@ +{ + "node_id": "569d5e11c4fc5de7844053d9a733c5e8", + "keywords": [], + "children": [ + { + "页面布局": { + "keywords": [], + "children": [ + { + "布局": { + "keywords": [], + "children": [] + } + }, + { + "颜色": { + "keywords": [], + "children": [] + } + }, + { + "图标": { + "keywords": [], + "children": [] + } + }, + { + "动画": { + "keywords": [], + "children": [] + } + }, + { + "按钮": { + "keywords": [], + "children": [] + } + }, + { + "表单": { + "keywords": [], + "children": [] + } + }, + { + "导航": { + "keywords": [], + "children": [] + } + }, + { + "菜单": { + "keywords": [], + "children": [] + } + }, + { + "选项卡": { + "keywords": [], + "children": [] + } + }, + { + "进度条": { + "keywords": [], + "children": [] + } + }, + { + "面板": { + "keywords": [], + "children": [] + } + }, + { + "表格": { + "keywords": [], + "children": [] + } + }, + { + "徽章": { + "keywords": [], + "children": [] + } + }, + { + "时间线": { + "keywords": [], + "children": [] + } + }, + { + "辅助": { + "keywords": [], + "children": [] + } + } + ] + } + }, + { + "内置模块": { + "keywords": [], + "children": [ + { + "弹出层": { + "keywords": [], + "children": [] + } + }, + { + "日期与时间选择": { + "keywords": [], + "children": [] + } + }, + { + "分页": { + "keywords": [], + "children": [] + } + }, + { + "模板引擎": { + "keywords": [], + "children": [] + } + }, + { + "数据表格": { + "keywords": [], + "children": [] + } + }, + { + "表单": { + "keywords": [], + "children": [] + } + }, + { + "文件上传": { + "keywords": [], + "children": [] + } + }, + { + "下拉菜单": { + "keywords": [], + "children": [] + } + }, + { + "穿梭框": { + "keywords": [], + "children": [] + } + }, + { + "树形组件": { + "keywords": [], + "children": [] + } + }, + { + "颜色选择器": { + "keywords": [], + "children": [] + } + }, + { + "常用元素操作": { + "keywords": [], + "children": [] + } + }, + { + "滑块": { + "keywords": [], + "children": [] + } + }, + { + "评分": { + "keywords": [], + "children": [] + } + }, + { + "轮播": { + "keywords": [], + "children": [] + } + }, + { + "流加载": { + "keywords": [], + "children": [] + } + }, + { + "工具组件": { + "keywords": [], + "children": [] + } + }, + { + "代码高亮显示": { + "keywords": [], + "children": [] + } + } + ] + } + } + ], + "export": [] +} \ No newline at end of file diff --git "a/data/2.web\344\270\255\351\230\266/1.\345\211\215\347\253\257UI\345\272\223/3.iView/config.json" "b/data/2.web\344\270\255\351\230\266/1.\345\211\215\347\253\257UI\345\272\223/3.iView/config.json" new file mode 100644 index 0000000..f0a1d1e --- /dev/null +++ "b/data/2.web\344\270\255\351\230\266/1.\345\211\215\347\253\257UI\345\272\223/3.iView/config.json" @@ -0,0 +1,141 @@ +{ + "node_id": "569d5e11c4fc5de7844053d9a733c5e8", + "keywords": [], + "children": [ + { + "组件基础": { + "keywords": [], + "children": [ + { + "olor色彩": { + "keywords": [], + "children": [] + } + }, + { + "Font字体": { + "keywords": [], + "children": [] + } + }, + { + "Button按钮": { + "keywords": [], + "children": [] + } + }, + { + "Icon图标": { + "keywords": [], + "children": [] + } + } + ] + } + }, + { + "组件布局": { + "keywords": [], + "children": [ + { + "Grid栅格": { + "keywords": [], + "children": [] + } + }, + { + "Layout布局": { + "keywords": [], + "children": [] + } + }, + { + "Card卡片": { + "keywords": [], + "children": [] + } + }, + { + "Collapse折叠面板": { + "keywords": [], + "children": [] + } + }, + { + "Split面板分割": { + "keywords": [], + "children": [] + } + }, + { + "Divider分割线": { + "keywords": [], + "children": [] + } + }, + { + "Cell单元格": { + "keywords": [], + "children": [] + } + }, + { + "Menu导航菜单": { + "keywords": [], + "children": [] + } + }, + { + "Tabs标签页": { + "keywords": [], + "children": [] + } + }, + { + "Dropdown下拉菜单": { + "keywords": [], + "children": [] + } + }, + { + "Page分页": { + "keywords": [], + "children": [] + } + }, + { + "Breadcrumb面包屑": { + "keywords": [], + "children": [] + } + }, + { + "Badge徽标数": { + "keywords": [], + "children": [] + } + }, + { + "Anchor锚点": { + "keywords": [], + "children": [] + } + }, + { + "Steps步骤条": { + "keywords": [], + "children": [] + } + }, + { + "LoadingBar加载进度条": { + "keywords": [], + "children": [] + } + } + ] + } + } + ], + "export": [] +} \ No newline at end of file diff --git "a/data/2.web\344\270\255\351\230\266/1.\345\211\215\347\253\257UI\345\272\223/4.element-ui/config.json" "b/data/2.web\344\270\255\351\230\266/1.\345\211\215\347\253\257UI\345\272\223/4.element-ui/config.json" new file mode 100644 index 0000000..7e1ff0c --- /dev/null +++ "b/data/2.web\344\270\255\351\230\266/1.\345\211\215\347\253\257UI\345\272\223/4.element-ui/config.json" @@ -0,0 +1,271 @@ +{ + "node_id": "569d5e11c4fc5de7844053d9a733c5e8", + "keywords": [], + "children": [ + { + "Layout 布局": { + "keywords": [], + "children": [] + } + }, + { + "Container 布局容器": { + "keywords": [], + "children": [] + } + }, + { + "Color 色彩": { + "keywords": [], + "children": [] + } + }, + { + "Typography 字体": { + "keywords": [], + "children": [] + } + }, + { + "Icon 图标": { + "keywords": [], + "children": [] + } + }, + { + "Button 按钮": { + "keywords": [], + "children": [] + } + }, + { + "Radio 单选框": { + "keywords": [], + "children": [] + } + }, + { + "Checkbox 多选框": { + "keywords": [], + "children": [] + } + }, + { + "Input 输入框": { + "keywords": [], + "children": [] + } + }, + { + "InputNumber 计数器": { + "keywords": [], + "children": [] + } + }, + { + "Select 选择器": { + "keywords": [], + "children": [] + } + }, + { + "Cascader 级联选择器": { + "keywords": [], + "children": [] + } + }, + { + "Switch 开关": { + "keywords": [], + "children": [] + } + }, + { + "Slider 滑块": { + "keywords": [], + "children": [] + } + }, + { + "TimePicker 时间选择器": { + "keywords": [], + "children": [] + } + }, + { + "DatePicker 日期选择器": { + "keywords": [], + "children": [] + } + }, + { + "DateTimePicker 日期时间选择器": { + "keywords": [], + "children": [] + } + }, + { + "Upload 上传": { + "keywords": [], + "children": [] + } + }, + { + "Rate 评分": { + "keywords": [], + "children": [] + } + }, + { + "ColorPicker 颜色选择器": { + "keywords": [], + "children": [] + } + }, + { + "Transfer 穿梭框": { + "keywords": [], + "children": [] + } + }, + { + "Form 表单": { + "keywords": [], + "children": [] + } + }, + { + "Table 表格": { + "keywords": [], + "children": [] + } + }, + { + "Tag 标签": { + "keywords": [], + "children": [] + } + }, + { + "Progress 进度条": { + "keywords": [], + "children": [] + } + }, + { + "Tree 树形控件": { + "keywords": [], + "children": [] + } + }, + { + "Pagination 分页": { + "keywords": [], + "children": [] + } + }, + { + "Badge 标记": { + "keywords": [], + "children": [] + } + }, + { + "Alert 警告": { + "keywords": [], + "children": [] + } + }, + { + "Loading 加载": { + "keywords": [], + "children": [] + } + }, + { + "Message 消息提示": { + "keywords": [], + "children": [] + } + }, + { + "MessageBox 弹框": { + "keywords": [], + "children": [] + } + }, + { + "Notification 通知": { + "keywords": [], + "children": [] + } + }, + { + "NavMenu 导航菜单": { + "keywords": [], + "children": [] + } + }, + { + "Tabs 标签页": { + "keywords": [], + "children": [] + } + }, + { + "Breadcrumb 面包屑": { + "keywords": [], + "children": [] + } + }, + { + "Dropdown 下拉菜单": { + "keywords": [], + "children": [] + } + }, + { + "Steps 步骤条": { + "keywords": [], + "children": [] + } + }, + { + "Dialog 对话框": { + "keywords": [], + "children": [] + } + }, + { + "Tooltip 文字提示": { + "keywords": [], + "children": [] + } + }, + { + "Popover 弹出框": { + "keywords": [], + "children": [] + } + }, + { + "Card 卡片": { + "keywords": [], + "children": [] + } + }, + { + "Carousel 走马灯": { + "keywords": [], + "children": [] + } + }, + { + "Collapse 折叠面板": { + "keywords": [], + "children": [] + } + } + ], + "export": [] +} \ No newline at end of file diff --git "a/data/2.web\344\270\255\351\230\266/1.\345\211\215\347\253\257UI\345\272\223/config.json" "b/data/2.web\344\270\255\351\230\266/1.\345\211\215\347\253\257UI\345\272\223/config.json" new file mode 100644 index 0000000..3407cf9 --- /dev/null +++ "b/data/2.web\344\270\255\351\230\266/1.\345\211\215\347\253\257UI\345\272\223/config.json" @@ -0,0 +1,4 @@ +{ + "node_id": "569d5e11c4fc5de7844053d9a733c5e8", + "keywords": [] +} \ No newline at end of file diff --git "a/data/2.web\344\270\255\351\230\266/2.\346\225\260\346\215\256\345\217\257\350\247\206\345\214\226/1.\346\212\200\346\234\257\346\240\207\345\207\206/config.json" "b/data/2.web\344\270\255\351\230\266/2.\346\225\260\346\215\256\345\217\257\350\247\206\345\214\226/1.\346\212\200\346\234\257\346\240\207\345\207\206/config.json" new file mode 100644 index 0000000..01d1bff --- /dev/null +++ "b/data/2.web\344\270\255\351\230\266/2.\346\225\260\346\215\256\345\217\257\350\247\206\345\214\226/1.\346\212\200\346\234\257\346\240\207\345\207\206/config.json" @@ -0,0 +1,37 @@ +{ + "node_id": "569d5e11c4fc5de7844053d9a733c5e8", + "keywords": [], + "children": [ + { + "Canvas": { + "keywords": [], + "children": [] + } + }, + { + "SVG": { + "keywords": [], + "children": [] + } + }, + { + "WebGL/2": { + "keywords": [], + "children": [] + } + }, + { + "WebGPU": { + "keywords": [], + "children": [] + } + }, + { + "OpenGL": { + "keywords": [], + "children": [] + } + } + ], + "export": [] +} \ No newline at end of file diff --git "a/data/2.web\344\270\255\351\230\266/2.\346\225\260\346\215\256\345\217\257\350\247\206\345\214\226/2.\346\225\260\347\220\206\347\273\237\350\256\241/config.json" "b/data/2.web\344\270\255\351\230\266/2.\346\225\260\346\215\256\345\217\257\350\247\206\345\214\226/2.\346\225\260\347\220\206\347\273\237\350\256\241/config.json" new file mode 100644 index 0000000..831fd40 --- /dev/null +++ "b/data/2.web\344\270\255\351\230\266/2.\346\225\260\346\215\256\345\217\257\350\247\206\345\214\226/2.\346\225\260\347\220\206\347\273\237\350\256\241/config.json" @@ -0,0 +1,31 @@ +{ + "node_id": "569d5e11c4fc5de7844053d9a733c5e8", + "keywords": [], + "children": [ + { + "统计学": { + "keywords": [], + "children": [] + } + }, + { + "平面几何": { + "keywords": [], + "children": [] + } + }, + { + "线性代数": { + "keywords": [], + "children": [] + } + }, + { + "离散数学": { + "keywords": [], + "children": [] + } + } + ], + "export": [] +} \ No newline at end of file diff --git "a/data/2.web\344\270\255\351\230\266/2.\346\225\260\346\215\256\345\217\257\350\247\206\345\214\226/3.\345\233\276\345\275\242\347\276\216\345\255\246/config.json" "b/data/2.web\344\270\255\351\230\266/2.\346\225\260\346\215\256\345\217\257\350\247\206\345\214\226/3.\345\233\276\345\275\242\347\276\216\345\255\246/config.json" new file mode 100644 index 0000000..386e31b --- /dev/null +++ "b/data/2.web\344\270\255\351\230\266/2.\346\225\260\346\215\256\345\217\257\350\247\206\345\214\226/3.\345\233\276\345\275\242\347\276\216\345\255\246/config.json" @@ -0,0 +1,31 @@ +{ + "node_id": "569d5e11c4fc5de7844053d9a733c5e8", + "keywords": [], + "children": [ + { + "色彩": { + "keywords": [], + "children": [] + } + }, + { + "图形": { + "keywords": [], + "children": [] + } + }, + { + "动画": { + "keywords": [], + "children": [] + } + }, + { + "格式塔理论": { + "keywords": [], + "children": [] + } + } + ], + "export": [] +} \ No newline at end of file diff --git "a/data/2.web\344\270\255\351\230\266/2.\346\225\260\346\215\256\345\217\257\350\247\206\345\214\226/4.\345\217\257\350\247\206\345\214\226\345\237\272\347\241\200\346\246\202\345\277\265/config.json" "b/data/2.web\344\270\255\351\230\266/2.\346\225\260\346\215\256\345\217\257\350\247\206\345\214\226/4.\345\217\257\350\247\206\345\214\226\345\237\272\347\241\200\346\246\202\345\277\265/config.json" new file mode 100644 index 0000000..7be4a51 --- /dev/null +++ "b/data/2.web\344\270\255\351\230\266/2.\346\225\260\346\215\256\345\217\257\350\247\206\345\214\226/4.\345\217\257\350\247\206\345\214\226\345\237\272\347\241\200\346\246\202\345\277\265/config.json" @@ -0,0 +1,111 @@ +{ + "node_id": "569d5e11c4fc5de7844053d9a733c5e8", + "keywords": [], + "children": [ + { + "数据类型": { + "keywords": [], + "children": [] + } + }, + { + "视觉通道与映射": { + "keywords": [], + "children": [] + } + }, + { + "信息密度": { + "keywords": [], + "children": [] + } + }, + { + "可视化隐喻": { + "keywords": [], + "children": [] + } + }, + { + "图形符号学与图形语法": { + "keywords": [], + "children": [] + } + }, + { + "基础图表类型": { + "keywords": [], + "children": [ + { + "折线图": { + "keywords": [], + "children": [] + } + }, + { + "柱形图(条形图)": { + "keywords": [], + "children": [] + } + }, + { + "饼状图(环型图)": { + "keywords": [], + "children": [] + } + }, + { + "散点图(气泡图)": { + "keywords": [], + "children": [] + } + }, + { + "雷达图": { + "keywords": [], + "children": [] + } + }, + { + "地图": { + "keywords": [], + "children": [] + } + }, + { + "多维表格": { + "keywords": [], + "children": [] + } + }, + { + "其他": { + "keywords": [], + "children": [] + } + } + ] + } + }, + { + "绘图引擎": { + "keywords": [], + "children": [ + { + "2D": { + "keywords": [], + "children": [] + } + }, + { + "3D": { + "keywords": [], + "children": [] + } + } + ] + } + } + ], + "export": [] +} \ No newline at end of file diff --git "a/data/2.web\344\270\255\351\230\266/2.\346\225\260\346\215\256\345\217\257\350\247\206\345\214\226/5.\345\233\276\350\241\250\347\261\273\345\272\223&\345\217\257\350\247\206\345\214\226\346\241\206\346\236\266/config.json" "b/data/2.web\344\270\255\351\230\266/2.\346\225\260\346\215\256\345\217\257\350\247\206\345\214\226/5.\345\233\276\350\241\250\347\261\273\345\272\223&\345\217\257\350\247\206\345\214\226\346\241\206\346\236\266/config.json" new file mode 100644 index 0000000..7056672 --- /dev/null +++ "b/data/2.web\344\270\255\351\230\266/2.\346\225\260\346\215\256\345\217\257\350\247\206\345\214\226/5.\345\233\276\350\241\250\347\261\273\345\272\223&\345\217\257\350\247\206\345\214\226\346\241\206\346\236\266/config.json" @@ -0,0 +1,125 @@ +{ + "node_id": "569d5e11c4fc5de7844053d9a733c5e8", + "keywords": [], + "children": [ + { + "基础可视化框架": { + "keywords": [], + "children": [ + { + "D3": { + "keywords": [], + "children": [] + } + }, + { + "G2": { + "keywords": [], + "children": [] + } + }, + { + "Vega": { + "keywords": [], + "children": [] + } + } + ] + } + }, + { + "常用统计图表": { + "keywords": [], + "children": [ + { + "Chartjs": { + "keywords": [], + "children": [] + } + }, + { + "ECharts": { + "keywords": [], + "children": [] + } + }, + { + "Highcharts": { + "keywords": [], + "children": [] + } + } + ] + } + }, + { + "图分析与编排": { + "keywords": [], + "children": [ + { + "Cytoscape": { + "keywords": [], + "children": [] + } + }, + { + "G6": { + "keywords": [], + "children": [] + } + }, + { + "mxGraph": { + "keywords": [], + "children": [] + } + }, + { + "Sigma.js": { + "keywords": [], + "children": [] + } + }, + { + "X6": { + "keywords": [], + "children": [] + } + } + ] + } + }, + { + "地理空间可视化": { + "keywords": [], + "children": [ + { + "Leaflet": { + "keywords": [], + "children": [] + } + }, + { + "L7": { + "keywords": [], + "children": [] + } + }, + { + "Mapbox": { + "keywords": [], + "children": [] + } + }, + { + "PolyMaps": { + "keywords": [], + "children": [] + } + } + ] + } + } + ], + "export": [] +} \ No newline at end of file diff --git "a/data/2.web\344\270\255\351\230\266/2.\346\225\260\346\215\256\345\217\257\350\247\206\345\214\226/6.\351\242\206\345\237\237\346\226\271\346\241\210/config.json" "b/data/2.web\344\270\255\351\230\266/2.\346\225\260\346\215\256\345\217\257\350\247\206\345\214\226/6.\351\242\206\345\237\237\346\226\271\346\241\210/config.json" new file mode 100644 index 0000000..25c5f3a --- /dev/null +++ "b/data/2.web\344\270\255\351\230\266/2.\346\225\260\346\215\256\345\217\257\350\247\206\345\214\226/6.\351\242\206\345\237\237\346\226\271\346\241\210/config.json" @@ -0,0 +1,31 @@ +{ + "node_id": "569d5e11c4fc5de7844053d9a733c5e8", + "keywords": [], + "children": [ + { + "监控可视化": { + "keywords": [], + "children": [] + } + }, + { + "关系可视分析": { + "keywords": [], + "children": [] + } + }, + { + "金融数据可视化": { + "keywords": [], + "children": [] + } + }, + { + "商业智能可视化": { + "keywords": [], + "children": [] + } + } + ], + "export": [] +} \ No newline at end of file diff --git "a/data/2.web\344\270\255\351\230\266/2.\346\225\260\346\215\256\345\217\257\350\247\206\345\214\226/config.json" "b/data/2.web\344\270\255\351\230\266/2.\346\225\260\346\215\256\345\217\257\350\247\206\345\214\226/config.json" new file mode 100644 index 0000000..3407cf9 --- /dev/null +++ "b/data/2.web\344\270\255\351\230\266/2.\346\225\260\346\215\256\345\217\257\350\247\206\345\214\226/config.json" @@ -0,0 +1,4 @@ +{ + "node_id": "569d5e11c4fc5de7844053d9a733c5e8", + "keywords": [] +} \ No newline at end of file diff --git "a/data/2.web\344\270\255\351\230\266/3.js\346\213\223\345\261\225/1.es6/config.json" "b/data/2.web\344\270\255\351\230\266/3.js\346\213\223\345\261\225/1.es6/config.json" new file mode 100644 index 0000000..5a186b0 --- /dev/null +++ "b/data/2.web\344\270\255\351\230\266/3.js\346\213\223\345\261\225/1.es6/config.json" @@ -0,0 +1,232 @@ +{ + "node_id": "569d5e11c4fc5de7844053d9a733c5e8", + "keywords": [], + "children": [ + { + "EcmaScript标准 6简介": { + "keywords": [], + "children": [ + { + "ES背景": { + "keywords": [], + "children": [] + } + }, + { + "ES历史": { + "keywords": [], + "children": [] + } + }, + { + "目标与愿景": { + "keywords": [], + "children": [] + } + }, + { + "环境搭建": { + "keywords": [], + "children": [] + } + } + ] + } + }, + { + "声明与表达式": { + "keywords": [], + "children": [ + { + "let与const": { + "keywords": [], + "children": [] + } + }, + { + "解析赋值": { + "keywords": [], + "children": [] + } + }, + { + "Symbol": { + "keywords": [], + "children": [] + } + } + ] + } + }, + { + "内置对象": { + "keywords": [], + "children": [ + { + "Map与Set": { + "keywords": [], + "children": [] + } + }, + { + "Proxy与Reflect": { + "keywords": [], + "children": [] + } + }, + { + "字符串": { + "keywords": [], + "children": [] + } + }, + { + "数值": { + "keywords": [], + "children": [] + } + }, + { + "对象": { + "keywords": [], + "children": [] + } + }, + { + "数组": { + "keywords": [], + "children": [] + } + } + ] + } + }, + { + "运算符与语句": { + "keywords": [], + "children": [ + { + "函数": { + "keywords": [], + "children": [ + { + "函数的扩展": { + "keywords": [], + "children": [] + } + }, + { + "箭头函数": { + "keywords": [], + "children": [] + } + } + ] + } + }, + { + "迭代器": { + "keywords": [], + "children": [ + { + "Iterator": { + "keywords": [], + "children": [] + } + }, + { + "for...of循环": { + "keywords": [], + "children": [] + } + } + ] + } + }, + { + "class类": { + "keywords": [], + "children": [ + { + "概述": { + "keywords": [], + "children": [] + } + }, + { + "基本用法": { + "keywords": [], + "children": [] + } + }, + { + "decorator": { + "keywords": [], + "children": [] + } + }, + { + "继承与封装": { + "keywords": [], + "children": [] + } + } + ] + } + }, + { + "模块": { + "keywords": [], + "children": [ + { + "特点": { + "keywords": [], + "children": [] + } + }, + { + "export与import": { + "keywords": [], + "children": [] + } + }, + { + "复合使用": { + "keywords": [], + "children": [] + } + } + ] + } + }, + { + "异步编程": { + "keywords": [], + "children": [ + { + "Promise对象": { + "keywords": [], + "children": [] + } + }, + { + "Generator函数": { + "keywords": [], + "children": [] + } + }, + { + "async函数": { + "keywords": [], + "children": [] + } + } + ] + } + } + ] + } + } + ], + "export": [] +} \ No newline at end of file diff --git "a/data/2.web\344\270\255\351\230\266/3.js\346\213\223\345\261\225/2.JS\347\274\226\350\257\221/config.json" "b/data/2.web\344\270\255\351\230\266/3.js\346\213\223\345\261\225/2.JS\347\274\226\350\257\221/config.json" new file mode 100644 index 0000000..e80e2e1 --- /dev/null +++ "b/data/2.web\344\270\255\351\230\266/3.js\346\213\223\345\261\225/2.JS\347\274\226\350\257\221/config.json" @@ -0,0 +1,25 @@ +{ + "node_id": "569d5e11c4fc5de7844053d9a733c5e8", + "keywords": [], + "children": [ + { + "babel": { + "keywords": [], + "children": [] + } + }, + { + "tsc": { + "keywords": [], + "children": [] + } + }, + { + "esbuild": { + "keywords": [], + "children": [] + } + } + ], + "export": [] +} \ No newline at end of file diff --git "a/data/2.web\344\270\255\351\230\266/3.js\346\213\223\345\261\225/3.JavaScirpt\345\274\225\346\223\216/config.json" "b/data/2.web\344\270\255\351\230\266/3.js\346\213\223\345\261\225/3.JavaScirpt\345\274\225\346\223\216/config.json" new file mode 100644 index 0000000..105483a --- /dev/null +++ "b/data/2.web\344\270\255\351\230\266/3.js\346\213\223\345\261\225/3.JavaScirpt\345\274\225\346\223\216/config.json" @@ -0,0 +1,25 @@ +{ + "node_id": "569d5e11c4fc5de7844053d9a733c5e8", + "keywords": [], + "children": [ + { + "V8": { + "keywords": [], + "children": [] + } + }, + { + "SpiderMonkey": { + "keywords": [], + "children": [] + } + }, + { + "JavaScriptCore": { + "keywords": [], + "children": [] + } + } + ], + "export": [] +} \ No newline at end of file diff --git "a/data/2.web\344\270\255\351\230\266/3.js\346\213\223\345\261\225/4.TypeScript/config.json" "b/data/2.web\344\270\255\351\230\266/3.js\346\213\223\345\261\225/4.TypeScript/config.json" new file mode 100644 index 0000000..4ca9f03 --- /dev/null +++ "b/data/2.web\344\270\255\351\230\266/3.js\346\213\223\345\261\225/4.TypeScript/config.json" @@ -0,0 +1,1776 @@ +{ + "node_id": "569d5e11c4fc5de7844053d9a733c5e8", + "keywords": [], + "children": [ + { + "TypeScript简介": { + "keywords": [], + "children": [] + } + }, + { + "TypeScript语言基础": { + "keywords": [], + "children": [ + { + "变量": { + "keywords": [], + "children": [ + { + "变量名": { + "keywords": [], + "children": [] + } + }, + { + "变量声明": { + "keywords": [], + "children": [] + } + } + ] + } + }, + { + "注释": { + "keywords": [], + "children": [ + { + "单行注释与多行注释": { + "keywords": [], + "children": [] + } + }, + { + "区域注释": { + "keywords": [], + "children": [] + } + } + ] + } + }, + { + "数据类型": { + "keywords": [], + "children": [ + { + "Undefined": { + "keywords": [], + "children": [] + } + }, + { + "Null": { + "keywords": [], + "children": [] + } + }, + { + "Boolean": { + "keywords": [], + "children": [] + } + }, + { + "String": { + "keywords": [], + "children": [] + } + }, + { + "Number": { + "keywords": [], + "children": [] + } + }, + { + "Symbol": { + "keywords": [], + "children": [] + } + }, + { + "Object": { + "keywords": [], + "children": [] + } + } + ] + } + }, + { + "字面量": { + "keywords": [], + "children": [ + { + "Null字面量": { + "keywords": [], + "children": [] + } + }, + { + "Boolean字面量": { + "keywords": [], + "children": [] + } + }, + { + "Number字面量": { + "keywords": [], + "children": [] + } + }, + { + "字符串字面量": { + "keywords": [], + "children": [] + } + }, + { + "模板字面量": { + "keywords": [], + "children": [] + } + } + ] + } + }, + { + "对象": { + "keywords": [], + "children": [ + { + "对象字面量": { + "keywords": [], + "children": [] + } + }, + { + "原型对象": { + "keywords": [], + "children": [] + } + } + ] + } + }, + { + "数组": { + "keywords": [], + "children": [ + { + "数组字面量": { + "keywords": [], + "children": [] + } + }, + { + "数组中的元素": { + "keywords": [], + "children": [] + } + } + ] + } + }, + { + "函数": { + "keywords": [], + "children": [ + { + "函数声明": { + "keywords": [], + "children": [] + } + }, + { + "函数表达式": { + "keywords": [], + "children": [] + } + }, + { + "箭头函数": { + "keywords": [], + "children": [] + } + } + ] + } + } + ] + } + }, + { + "TypeScript语言进阶": { + "keywords": [], + "children": [ + { + "BigInt": { + "keywords": [], + "children": [ + { + "创建BigInt": { + "keywords": [], + "children": [] + } + }, + { + "BigInt与Number": { + "keywords": [], + "children": [] + } + } + ] + } + }, + { + "展开运算符": { + "keywords": [], + "children": [ + { + "展开数组字面量": { + "keywords": [], + "children": [] + } + }, + { + "展开对象字面量": { + "keywords": [], + "children": [] + } + }, + { + "展开函数参数": { + "keywords": [], + "children": [] + } + } + ] + } + }, + { + "解构": { + "keywords": [], + "children": [ + { + "数组解构": { + "keywords": [], + "children": [] + } + }, + { + "对象解构": { + "keywords": [], + "children": [] + } + } + ] + } + }, + { + "可选链运算符": { + "keywords": [], + "children": [ + { + "基础语法": { + "keywords": [], + "children": [] + } + }, + { + "短路求值": { + "keywords": [], + "children": [] + } + } + ] + } + }, + { + "空值合并运算符": { + "keywords": [], + "children": [] + } + } + ] + } + }, + { + "TypeScript类型基础": { + "keywords": [], + "children": [ + { + "类型注解": { + "keywords": [], + "children": [] + } + }, + { + "类型检查": { + "keywords": [], + "children": [ + { + "非严格类型检查": { + "keywords": [], + "children": [] + } + }, + { + "严格类型检查": { + "keywords": [], + "children": [] + } + } + ] + } + }, + { + "原始类型": { + "keywords": [], + "children": [ + { + "boolean": { + "keywords": [], + "children": [] + } + }, + { + "string": { + "keywords": [], + "children": [] + } + }, + { + "number": { + "keywords": [], + "children": [] + } + }, + { + "bigint": { + "keywords": [], + "children": [] + } + }, + { + "symbol与unique symbol": { + "keywords": [], + "children": [] + } + }, + { + "Nullable": { + "keywords": [], + "children": [] + } + }, + { + "void": { + "keywords": [], + "children": [] + } + } + ] + } + }, + { + "枚举类型": { + "keywords": [], + "children": [ + { + "数值型枚举": { + "keywords": [], + "children": [] + } + }, + { + "字符串枚举": { + "keywords": [], + "children": [] + } + }, + { + "异构型枚举": { + "keywords": [], + "children": [] + } + }, + { + "枚举成员映射": { + "keywords": [], + "children": [] + } + }, + { + "常量枚举成员与计算枚举成员": { + "keywords": [], + "children": [] + } + }, + { + "联合枚举类型": { + "keywords": [], + "children": [] + } + }, + { + "const枚举类型": { + "keywords": [], + "children": [] + } + } + ] + } + }, + { + "字面量类型": { + "keywords": [], + "children": [ + { + "boolean字面量类型": { + "keywords": [], + "children": [] + } + }, + { + "string字面量类型": { + "keywords": [], + "children": [] + } + }, + { + "数字字面量类型": { + "keywords": [], + "children": [] + } + }, + { + "枚举成员字面量类型": { + "keywords": [], + "children": [] + } + } + ] + } + }, + { + "单元类型": { + "keywords": [], + "children": [] + } + }, + { + "&端类型": { + "keywords": [], + "children": [ + { + "any": { + "keywords": [], + "children": [] + } + }, + { + "unknown": { + "keywords": [], + "children": [] + } + }, + { + "小结": { + "keywords": [], + "children": [] + } + } + ] + } + }, + { + "尾端类型": { + "keywords": [], + "children": [ + { + "never": { + "keywords": [], + "children": [] + } + }, + { + "应用场景": { + "keywords": [], + "children": [] + } + } + ] + } + }, + { + "数组类型": { + "keywords": [], + "children": [ + { + "数组类型定义": { + "keywords": [], + "children": [] + } + }, + { + "数组元素类型": { + "keywords": [], + "children": [] + } + }, + { + "只读数组": { + "keywords": [], + "children": [] + } + } + ] + } + }, + { + "元组类型": { + "keywords": [], + "children": [ + { + "元组的定义": { + "keywords": [], + "children": [] + } + }, + { + "只读元组": { + "keywords": [], + "children": [] + } + }, + { + "访问元组中的元素": { + "keywords": [], + "children": [] + } + }, + { + "元组类型中的可选元素": { + "keywords": [], + "children": [] + } + }, + { + "元组类型中的剩余元素": { + "keywords": [], + "children": [] + } + }, + { + "元组的长度": { + "keywords": [], + "children": [] + } + }, + { + "元组类型与数组类型的兼容性": { + "keywords": [], + "children": [] + } + } + ] + } + }, + { + "对象类型": { + "keywords": [], + "children": [ + { + "Object": { + "keywords": [], + "children": [] + } + }, + { + "object": { + "keywords": [], + "children": [] + } + }, + { + "对象类型字面量": { + "keywords": [], + "children": [] + } + }, + { + "弱类型": { + "keywords": [], + "children": [] + } + }, + { + "多余属性": { + "keywords": [], + "children": [] + } + } + ] + } + }, + { + "函数类型": { + "keywords": [], + "children": [ + { + "常规参数类型": { + "keywords": [], + "children": [] + } + }, + { + "可选参数类型": { + "keywords": [], + "children": [] + } + }, + { + "默认参数类型": { + "keywords": [], + "children": [] + } + }, + { + "剩余参数类型": { + "keywords": [], + "children": [] + } + }, + { + "解构参数类型": { + "keywords": [], + "children": [] + } + }, + { + "返回值类型": { + "keywords": [], + "children": [] + } + }, + { + "函数类型字面量": { + "keywords": [], + "children": [] + } + }, + { + "调用签名": { + "keywords": [], + "children": [] + } + }, + { + "构造函数类型字面量": { + "keywords": [], + "children": [] + } + }, + { + "构造签名": { + "keywords": [], + "children": [] + } + }, + { + "调用签名与构造签名": { + "keywords": [], + "children": [] + } + }, + { + "重载函数": { + "keywords": [], + "children": [] + } + }, + { + "函数中this值的类型": { + "keywords": [], + "children": [] + } + } + ] + } + }, + { + "接口": { + "keywords": [], + "children": [ + { + "接口声明": { + "keywords": [], + "children": [] + } + }, + { + "属性签名": { + "keywords": [], + "children": [] + } + }, + { + "调用签名": { + "keywords": [], + "children": [] + } + }, + { + "构造签名": { + "keywords": [], + "children": [] + } + }, + { + "方法签名": { + "keywords": [], + "children": [] + } + }, + { + "索引签名": { + "keywords": [], + "children": [] + } + }, + { + "可选属性与方法": { + "keywords": [], + "children": [] + } + }, + { + "只读属性与方法": { + "keywords": [], + "children": [] + } + }, + { + "接口的继承": { + "keywords": [], + "children": [] + } + } + ] + } + }, + { + "类型别名": { + "keywords": [], + "children": [ + { + "类型别名声明": { + "keywords": [], + "children": [] + } + }, + { + "递归的类型别名": { + "keywords": [], + "children": [] + } + }, + { + "类型别名与接口": { + "keywords": [], + "children": [] + } + } + ] + } + }, + { + "类": { + "keywords": [], + "children": [ + { + "类的定义": { + "keywords": [], + "children": [] + } + }, + { + "成员变量": { + "keywords": [], + "children": [] + } + }, + { + "成员函数": { + "keywords": [], + "children": [] + } + }, + { + "成员存取器": { + "keywords": [], + "children": [] + } + }, + { + "索引成员": { + "keywords": [], + "children": [] + } + }, + { + "成员可访问性": { + "keywords": [], + "children": [] + } + }, + { + "构造函数": { + "keywords": [], + "children": [] + } + }, + { + "参数成员": { + "keywords": [], + "children": [] + } + }, + { + "继承": { + "keywords": [], + "children": [] + } + }, + { + "实现接口": { + "keywords": [], + "children": [] + } + }, + { + "静态成员": { + "keywords": [], + "children": [] + } + }, + { + "抽象类和抽象成员": { + "keywords": [], + "children": [] + } + }, + { + "this类型": { + "keywords": [], + "children": [] + } + }, + { + "类类型": { + "keywords": [], + "children": [] + } + } + ] + } + } + ] + } + }, + { + "TypeScript类型进阶": { + "keywords": [], + "children": [ + { + "泛型": { + "keywords": [], + "children": [ + { + "泛型简介": { + "keywords": [], + "children": [] + } + }, + { + "形式类型参数": { + "keywords": [], + "children": [] + } + }, + { + "实际类型参数": { + "keywords": [], + "children": [] + } + }, + { + "泛型约束": { + "keywords": [], + "children": [] + } + }, + { + "泛型函数": { + "keywords": [], + "children": [] + } + }, + { + "泛型接口": { + "keywords": [], + "children": [] + } + }, + { + "泛型类型别名": { + "keywords": [], + "children": [] + } + }, + { + "泛型类": { + "keywords": [], + "children": [] + } + } + ] + } + }, + { + "局部类型": { + "keywords": [], + "children": [] + } + }, + { + "联合类型": { + "keywords": [], + "children": [ + { + "联合类型字面量": { + "keywords": [], + "children": [] + } + }, + { + "联合类型的类型成员": { + "keywords": [], + "children": [] + } + } + ] + } + }, + { + "交叉类型": { + "keywords": [], + "children": [ + { + "交叉类型字面量": { + "keywords": [], + "children": [] + } + }, + { + "交叉类型的类型成员": { + "keywords": [], + "children": [] + } + }, + { + "交叉类型与联合类型": { + "keywords": [], + "children": [] + } + } + ] + } + }, + { + "索引类型": { + "keywords": [], + "children": [ + { + "索引类型查询": { + "keywords": [], + "children": [] + } + }, + { + "索引访问类型": { + "keywords": [], + "children": [] + } + }, + { + "索引类型的应用": { + "keywords": [], + "children": [] + } + } + ] + } + }, + { + "映射对象类型": { + "keywords": [], + "children": [ + { + "映射对象类型声明": { + "keywords": [], + "children": [] + } + }, + { + "映射对象类型解析": { + "keywords": [], + "children": [] + } + }, + { + "映射对象类型应用": { + "keywords": [], + "children": [] + } + }, + { + "同态映射对象类型": { + "keywords": [], + "children": [] + } + } + ] + } + }, + { + "条件类型": { + "keywords": [], + "children": [ + { + "条件类型的定义": { + "keywords": [], + "children": [] + } + }, + { + "分布式条件类型": { + "keywords": [], + "children": [] + } + }, + { + "infer关键字": { + "keywords": [], + "children": [] + } + } + ] + } + }, + { + "内置工具类型": { + "keywords": [], + "children": [ + { + "Partial": { + "keywords": [], + "children": [] + } + }, + { + "Required": { + "keywords": [], + "children": [] + } + }, + { + "Readonly": { + "keywords": [], + "children": [] + } + }, + { + "Record": { + "keywords": [], + "children": [] + } + }, + { + "Pick": { + "keywords": [], + "children": [] + } + }, + { + "Omit": { + "keywords": [], + "children": [] + } + }, + { + "Exclude": { + "keywords": [], + "children": [] + } + }, + { + "Extract": { + "keywords": [], + "children": [] + } + }, + { + "NonNullable": { + "keywords": [], + "children": [] + } + }, + { + "Parameters": { + "keywords": [], + "children": [] + } + }, + { + "ConstructorParameters": { + "keywords": [], + "children": [] + } + }, + { + "ReturnType": { + "keywords": [], + "children": [] + } + }, + { + "InstanceType": { + "keywords": [], + "children": [] + } + }, + { + "ThisParameterType": { + "keywords": [], + "children": [] + } + }, + { + "OmitThisParameter": { + "keywords": [], + "children": [] + } + }, + { + "ThisType": { + "keywords": [], + "children": [] + } + } + ] + } + }, + { + "类型查询": { + "keywords": [], + "children": [] + } + }, + { + "类型断言": { + "keywords": [], + "children": [ + { + "类型断言": { + "keywords": [], + "children": [] + } + }, + { + "as T类型断言": { + "keywords": [], + "children": [] + } + }, + { + "类型断言的约束": { + "keywords": [], + "children": [] + } + }, + { + "const类型断言": { + "keywords": [], + "children": [] + } + }, + { + "!类型断言": { + "keywords": [], + "children": [] + } + } + ] + } + }, + { + "类型细化": { + "keywords": [], + "children": [ + { + "类型守卫": { + "keywords": [], + "children": [] + } + }, + { + "可辨识联合类型": { + "keywords": [], + "children": [] + } + }, + { + "赋值语句分析": { + "keywords": [], + "children": [] + } + }, + { + "基于控制流的类型分析": { + "keywords": [], + "children": [] + } + }, + { + "断言函数": { + "keywords": [], + "children": [] + } + } + ] + } + } + ] + } + }, + { + "TypeScript类型深入": { + "keywords": [], + "children": [ + { + "子类型兼容性": { + "keywords": [], + "children": [ + { + "类型系统可靠性": { + "keywords": [], + "children": [] + } + }, + { + "子类型的基本性质": { + "keywords": [], + "children": [] + } + }, + { + "&端类型与尾端类型": { + "keywords": [], + "children": [] + } + }, + { + "原始类型": { + "keywords": [], + "children": [] + } + }, + { + "函数类型": { + "keywords": [], + "children": [] + } + }, + { + "对象类型": { + "keywords": [], + "children": [] + } + }, + { + "泛型": { + "keywords": [], + "children": [] + } + }, + { + "联合类型": { + "keywords": [], + "children": [] + } + }, + { + "交叉类型": { + "keywords": [], + "children": [] + } + } + ] + } + }, + { + "赋值兼容性": { + "keywords": [], + "children": [] + } + }, + { + "类型推断": { + "keywords": [], + "children": [ + { + "常规类型推断": { + "keywords": [], + "children": [] + } + }, + { + "按上下文归类": { + "keywords": [], + "children": [] + } + } + ] + } + }, + { + "类型放宽": { + "keywords": [], + "children": [ + { + "常规类型放宽": { + "keywords": [], + "children": [] + } + }, + { + "字面量类型放宽": { + "keywords": [], + "children": [] + } + } + ] + } + }, + { + "命名空间": { + "keywords": [], + "children": [ + { + "命名空间声明": { + "keywords": [], + "children": [] + } + }, + { + "导出命名空间内的声明": { + "keywords": [], + "children": [] + } + }, + { + "别名导入声明": { + "keywords": [], + "children": [] + } + }, + { + "在多文件中使用命名空间": { + "keywords": [], + "children": [] + } + }, + { + "小结": { + "keywords": [], + "children": [] + } + } + ] + } + }, + { + "模块": { + "keywords": [], + "children": [ + { + "模块简史": { + "keywords": [], + "children": [] + } + }, + { + "ECMAScript模块": { + "keywords": [], + "children": [] + } + }, + { + "模块导出": { + "keywords": [], + "children": [] + } + }, + { + "模块导入": { + "keywords": [], + "children": [] + } + }, + { + "重命名模块导入和导出": { + "keywords": [], + "children": [] + } + }, + { + "针对类型的模块导入与导出 280": { + "keywords": [], + "children": [] + } + }, + { + "动态模块导入": { + "keywords": [], + "children": [] + } + }, + { + "--module": { + "keywords": [], + "children": [] + } + } + ] + } + }, + { + "外部声明": { + "keywords": [], + "children": [ + { + "外部类型声明": { + "keywords": [], + "children": [] + } + }, + { + "外部模块声明": { + "keywords": [], + "children": [] + } + } + ] + } + }, + { + "使用声明文件": { + "keywords": [], + "children": [ + { + "语言内置的声明文件": { + "keywords": [], + "children": [] + } + }, + { + "第三方声明文件": { + "keywords": [], + "children": [] + } + }, + { + "自定义声明文件": { + "keywords": [], + "children": [] + } + } + ] + } + }, + { + "模块解析": { + "keywords": [], + "children": [ + { + "相对模块导入": { + "keywords": [], + "children": [] + } + }, + { + "非相对模块导入": { + "keywords": [], + "children": [] + } + }, + { + "模块解析策略": { + "keywords": [], + "children": [] + } + }, + { + "模块解析策略之Classic": { + "keywords": [], + "children": [] + } + }, + { + "模块解析策略之Node": { + "keywords": [], + "children": [] + } + }, + { + "--baseUrl": { + "keywords": [], + "children": [] + } + }, + { + "paths": { + "keywords": [], + "children": [] + } + }, + { + "rootDirs": { + "keywords": [], + "children": [] + } + }, + { + "导入外部模块声明": { + "keywords": [], + "children": [] + } + }, + { + "--traceResolution": { + "keywords": [], + "children": [] + } + } + ] + } + }, + { + "声明合并": { + "keywords": [], + "children": [ + { + "接口声明合并": { + "keywords": [], + "children": [] + } + }, + { + "枚举声明合并": { + "keywords": [], + "children": [] + } + }, + { + "类声明合并": { + "keywords": [], + "children": [] + } + }, + { + "命名空间声明合并": { + "keywords": [], + "children": [] + } + }, + { + "扩充模块声明": { + "keywords": [], + "children": [] + } + }, + { + "扩充全局声明": { + "keywords": [], + "children": [] + } + } + ] + } + } + ] + } + }, + { + "TypeScript配置管理": { + "keywords": [], + "children": [ + { + "编译器": { + "keywords": [], + "children": [ + { + "安装编译器": { + "keywords": [], + "children": [] + } + }, + { + "编译程序": { + "keywords": [], + "children": [] + } + } + ] + } + }, + { + "编译选项": { + "keywords": [], + "children": [ + { + "编译选项风格": { + "keywords": [], + "children": [] + } + }, + { + "使用编译选项": { + "keywords": [], + "children": [] + } + }, + { + "严格类型检查": { + "keywords": [], + "children": [] + } + }, + { + "编译选项列表": { + "keywords": [], + "children": [] + } + } + ] + } + }, + { + "tsconfig.json": { + "keywords": [], + "children": [ + { + "使用配置文件": { + "keywords": [], + "children": [] + } + }, + { + "编译选项列表": { + "keywords": [], + "children": [] + } + }, + { + "编译文件列表": { + "keywords": [], + "children": [] + } + }, + { + "声明文件列表": { + "keywords": [], + "children": [] + } + }, + { + "继承配置文件": { + "keywords": [], + "children": [] + } + } + ] + } + }, + { + "工程引用": { + "keywords": [], + "children": [ + { + "使用工程引用": { + "keywords": [], + "children": [] + } + }, + { + "工程引用示例": { + "keywords": [], + "children": [] + } + }, + { + "--build": { + "keywords": [], + "children": [] + } + }, + { + "solution模式": { + "keywords": [], + "children": [] + } + } + ] + } + }, + { + "类型检查": { + "keywords": [], + "children": [ + { + "编译": { + "keywords": [], + "children": [] + } + }, + { + "类型检查": { + "keywords": [], + "children": [] + } + }, + { + "JSDoc与类型": { + "keywords": [], + "children": [] + } + } + ] + } + }, + { + "三斜线指令": { + "keywords": [], + "children": [] + } + } + ] + } + } + ], + "export": [] +} \ No newline at end of file diff --git "a/data/2.web\344\270\255\351\230\266/3.js\346\213\223\345\261\225/config.json" "b/data/2.web\344\270\255\351\230\266/3.js\346\213\223\345\261\225/config.json" new file mode 100644 index 0000000..3407cf9 --- /dev/null +++ "b/data/2.web\344\270\255\351\230\266/3.js\346\213\223\345\261\225/config.json" @@ -0,0 +1,4 @@ +{ + "node_id": "569d5e11c4fc5de7844053d9a733c5e8", + "keywords": [] +} \ No newline at end of file diff --git "a/data/2.web\344\270\255\351\230\266/4.node.js/1.Node\347\256\200\344\273\213/config.json" "b/data/2.web\344\270\255\351\230\266/4.node.js/1.Node\347\256\200\344\273\213/config.json" new file mode 100644 index 0000000..9f802e6 --- /dev/null +++ "b/data/2.web\344\270\255\351\230\266/4.node.js/1.Node\347\256\200\344\273\213/config.json" @@ -0,0 +1,94 @@ +{ + "node_id": "569d5e11c4fc5de7844053d9a733c5e8", + "keywords": [], + "children": [ + { + "Node的诞生历程": { + "keywords": [], + "children": [] + } + }, + { + "Node的命名与起源": { + "keywords": [], + "children": [ + { + "为什么是JavaScript": { + "keywords": [], + "children": [] + } + }, + { + "为什么叫Node": { + "keywords": [], + "children": [] + } + } + ] + } + }, + { + "Node的特点": { + "keywords": [], + "children": [ + { + "异步IO": { + "keywords": [], + "children": [] + } + }, + { + "事件与回调函数": { + "keywords": [], + "children": [] + } + }, + { + "单线程": { + "keywords": [], + "children": [] + } + }, + { + "跨平台": { + "keywords": [], + "children": [] + } + } + ] + } + }, + { + "Node的应用场景": { + "keywords": [], + "children": [ + { + "IO密集型": { + "keywords": [], + "children": [] + } + }, + { + "是否不擅长CPU密集型业务": { + "keywords": [], + "children": [] + } + }, + { + "与遗留系统和平共处": { + "keywords": [], + "children": [] + } + }, + { + "分布式应用": { + "keywords": [], + "children": [] + } + } + ] + } + } + ], + "export": [] +} \ No newline at end of file diff --git "a/data/2.web\344\270\255\351\230\266/4.node.js/2.\346\250\241\345\235\227\346\234\272\345\210\266/config.json" "b/data/2.web\344\270\255\351\230\266/4.node.js/2.\346\250\241\345\235\227\346\234\272\345\210\266/config.json" new file mode 100644 index 0000000..da979ee --- /dev/null +++ "b/data/2.web\344\270\255\351\230\266/4.node.js/2.\346\250\241\345\235\227\346\234\272\345\210\266/config.json" @@ -0,0 +1,187 @@ +{ + "node_id": "569d5e11c4fc5de7844053d9a733c5e8", + "keywords": [], + "children": [ + { + "CommonJS规范": { + "keywords": [], + "children": [ + { + "CommonJS的出发点": { + "keywords": [], + "children": [] + } + }, + { + "CommonJS的模块规范": { + "keywords": [], + "children": [] + } + } + ] + } + }, + { + "Node的模块实现": { + "keywords": [], + "children": [ + { + "优先从缓存加载": { + "keywords": [], + "children": [] + } + }, + { + "路径分析和文件定位": { + "keywords": [], + "children": [] + } + }, + { + "模块编译": { + "keywords": [], + "children": [] + } + } + ] + } + }, + { + "核心模块": { + "keywords": [], + "children": [ + { + "JavaScript核心模块的编译过程": { + "keywords": [], + "children": [] + } + }, + { + "C&C++核心模块的编译过程": { + "keywords": [], + "children": [] + } + }, + { + "核心模块的引入流程": { + "keywords": [], + "children": [] + } + }, + { + "编写核心模块": { + "keywords": [], + "children": [] + } + } + ] + } + }, + { + "C&C++扩展模块": { + "keywords": [], + "children": [ + { + "前提条件": { + "keywords": [], + "children": [] + } + }, + { + "C&C++扩展模块的编写": { + "keywords": [], + "children": [] + } + }, + { + "C&C++扩展模块的编译": { + "keywords": [], + "children": [] + } + }, + { + "C&C++扩展模块的加载": { + "keywords": [], + "children": [] + } + } + ] + } + }, + { + "模块调用栈": { + "keywords": [], + "children": [] + } + }, + { + "包与NPM": { + "keywords": [], + "children": [ + { + "包结构": { + "keywords": [], + "children": [] + } + }, + { + "包描述文件与NPM": { + "keywords": [], + "children": [] + } + }, + { + "NPM常用功能": { + "keywords": [], + "children": [] + } + }, + { + "局域NPM": { + "keywords": [], + "children": [] + } + }, + { + "NPM潜在问题": { + "keywords": [], + "children": [] + } + } + ] + } + }, + { + "前后端共用模块": { + "keywords": [], + "children": [ + { + "模块的侧重点": { + "keywords": [], + "children": [] + } + }, + { + "AMD规范": { + "keywords": [], + "children": [] + } + }, + { + "CMD规范": { + "keywords": [], + "children": [] + } + }, + { + "兼容多种模块规范": { + "keywords": [], + "children": [] + } + } + ] + } + } + ], + "export": [] +} \ No newline at end of file diff --git "a/data/2.web\344\270\255\351\230\266/4.node.js/3.\345\274\202\346\255\245IO/config.json" "b/data/2.web\344\270\255\351\230\266/4.node.js/3.\345\274\202\346\255\245IO/config.json" new file mode 100644 index 0000000..8cf5a6f --- /dev/null +++ "b/data/2.web\344\270\255\351\230\266/4.node.js/3.\345\274\202\346\255\245IO/config.json" @@ -0,0 +1,119 @@ +{ + "node_id": "569d5e11c4fc5de7844053d9a733c5e8", + "keywords": [], + "children": [ + { + "为什么要异步IO": { + "keywords": [], + "children": [ + { + "用户体验": { + "keywords": [], + "children": [] + } + }, + { + "资源分配": { + "keywords": [], + "children": [] + } + } + ] + } + }, + { + "异步IO实现现状": { + "keywords": [], + "children": [ + { + "异步IO与非阻塞IO": { + "keywords": [], + "children": [] + } + }, + { + "理想的非阻塞异步IO": { + "keywords": [], + "children": [] + } + }, + { + "现实的异步IO": { + "keywords": [], + "children": [] + } + } + ] + } + }, + { + "Node的异步IO": { + "keywords": [], + "children": [ + { + "事件循环": { + "keywords": [], + "children": [] + } + }, + { + "观察者": { + "keywords": [], + "children": [] + } + }, + { + "请求对象": { + "keywords": [], + "children": [] + } + }, + { + "执行回调": { + "keywords": [], + "children": [] + } + }, + { + "小结": { + "keywords": [], + "children": [] + } + } + ] + } + }, + { + "非IO的异步API": { + "keywords": [], + "children": [ + { + "定时器": { + "keywords": [], + "children": [] + } + }, + { + "process.nextTick()": { + "keywords": [], + "children": [] + } + }, + { + "setImmediate()": { + "keywords": [], + "children": [] + } + } + ] + } + }, + { + "事件驱动与高性能服务器": { + "keywords": [], + "children": [] + } + } + ], + "export": [] +} \ No newline at end of file diff --git "a/data/2.web\344\270\255\351\230\266/4.node.js/4.\345\274\202\346\255\245\347\274\226\347\250\213/config.json" "b/data/2.web\344\270\255\351\230\266/4.node.js/4.\345\274\202\346\255\245\347\274\226\347\250\213/config.json" new file mode 100644 index 0000000..09577fb --- /dev/null +++ "b/data/2.web\344\270\255\351\230\266/4.node.js/4.\345\274\202\346\255\245\347\274\226\347\250\213/config.json" @@ -0,0 +1,89 @@ +{ + "node_id": "569d5e11c4fc5de7844053d9a733c5e8", + "keywords": [], + "children": [ + { + "函数式编程": { + "keywords": [], + "children": [ + { + "高阶函数": { + "keywords": [], + "children": [] + } + }, + { + "偏函数用法": { + "keywords": [], + "children": [] + } + } + ] + } + }, + { + "异步编程的优势与难点": { + "keywords": [], + "children": [ + { + "优势": { + "keywords": [], + "children": [] + } + }, + { + "难点": { + "keywords": [], + "children": [] + } + } + ] + } + }, + { + "异步编程解决方案": { + "keywords": [], + "children": [ + { + "事件发布 & 订阅模式": { + "keywords": [], + "children": [] + } + }, + { + "Promise & Deferred模式": { + "keywords": [], + "children": [] + } + }, + { + "流程控制库": { + "keywords": [], + "children": [] + } + } + ] + } + }, + { + "异步并发控制": { + "keywords": [], + "children": [ + { + "bagpipe的解决方案": { + "keywords": [], + "children": [] + } + }, + { + "async的解决方案": { + "keywords": [], + "children": [] + } + } + ] + } + } + ], + "export": [] +} \ No newline at end of file diff --git "a/data/2.web\344\270\255\351\230\266/4.node.js/5.\345\206\205\345\255\230\346\216\247\345\210\266/config.json" "b/data/2.web\344\270\255\351\230\266/4.node.js/5.\345\206\205\345\255\230\346\216\247\345\210\266/config.json" new file mode 100644 index 0000000..75d503c --- /dev/null +++ "b/data/2.web\344\270\255\351\230\266/4.node.js/5.\345\206\205\345\255\230\346\216\247\345\210\266/config.json" @@ -0,0 +1,144 @@ +{ + "node_id": "569d5e11c4fc5de7844053d9a733c5e8", + "keywords": [], + "children": [ + { + "V8的垃圾回收机制与内存限制": { + "keywords": [], + "children": [ + { + "Node与V8": { + "keywords": [], + "children": [] + } + }, + { + "V8的内存限制": { + "keywords": [], + "children": [] + } + }, + { + "V8的对象分配": { + "keywords": [], + "children": [] + } + }, + { + "V8的垃圾回收机制": { + "keywords": [], + "children": [] + } + }, + { + "查看垃圾回收日志": { + "keywords": [], + "children": [] + } + } + ] + } + }, + { + "高效使用内存": { + "keywords": [], + "children": [ + { + "作用域": { + "keywords": [], + "children": [] + } + }, + { + "闭包": { + "keywords": [], + "children": [] + } + }, + { + "小结": { + "keywords": [], + "children": [] + } + } + ] + } + }, + { + "内存指标": { + "keywords": [], + "children": [ + { + "查看内存使用情况": { + "keywords": [], + "children": [] + } + }, + { + "堆外内存": { + "keywords": [], + "children": [] + } + }, + { + "小结": { + "keywords": [], + "children": [] + } + } + ] + } + }, + { + "内存泄漏": { + "keywords": [], + "children": [ + { + "慎将内存当做缓存": { + "keywords": [], + "children": [] + } + }, + { + "关注队列状态": { + "keywords": [], + "children": [] + } + } + ] + } + }, + { + "内存泄漏排查": { + "keywords": [], + "children": [ + { + "node-heapdump": { + "keywords": [], + "children": [] + } + }, + { + "node-memwatch": { + "keywords": [], + "children": [] + } + }, + { + "小结": { + "keywords": [], + "children": [] + } + } + ] + } + }, + { + "大内存应用": { + "keywords": [], + "children": [] + } + } + ], + "export": [] +} \ No newline at end of file diff --git "a/data/2.web\344\270\255\351\230\266/4.node.js/6.\347\220\206\350\247\243Buffer/config.json" "b/data/2.web\344\270\255\351\230\266/4.node.js/6.\347\220\206\350\247\243Buffer/config.json" new file mode 100644 index 0000000..29cec15 --- /dev/null +++ "b/data/2.web\344\270\255\351\230\266/4.node.js/6.\347\220\206\350\247\243Buffer/config.json" @@ -0,0 +1,88 @@ +{ + "node_id": "569d5e11c4fc5de7844053d9a733c5e8", + "keywords": [], + "children": [ + { + "Buffer结构": { + "keywords": [], + "children": [ + { + "模块结构": { + "keywords": [], + "children": [] + } + }, + { + "Buffer对象": { + "keywords": [], + "children": [] + } + }, + { + "Buffer内存分配": { + "keywords": [], + "children": [] + } + } + ] + } + }, + { + "Buffer的转换": { + "keywords": [], + "children": [ + { + "字符串转Buffer": { + "keywords": [], + "children": [] + } + }, + { + "Buffer转字符串": { + "keywords": [], + "children": [] + } + }, + { + "Buffer不支持的编码类型": { + "keywords": [], + "children": [] + } + } + ] + } + }, + { + "Buffer的拼接": { + "keywords": [], + "children": [ + { + "乱码是如何产生的": { + "keywords": [], + "children": [] + } + }, + { + "setEncoding()与string_decoder()": { + "keywords": [], + "children": [] + } + }, + { + "正确拼接Buffer": { + "keywords": [], + "children": [] + } + } + ] + } + }, + { + "Buffer与性能": { + "keywords": [], + "children": [] + } + } + ], + "export": [] +} \ No newline at end of file diff --git "a/data/2.web\344\270\255\351\230\266/4.node.js/7.\347\275\221\347\273\234\347\274\226\347\250\213/config.json" "b/data/2.web\344\270\255\351\230\266/4.node.js/7.\347\275\221\347\273\234\347\274\226\347\250\213/config.json" new file mode 100644 index 0000000..6a846bf --- /dev/null +++ "b/data/2.web\344\270\255\351\230\266/4.node.js/7.\347\275\221\347\273\234\347\274\226\347\250\213/config.json" @@ -0,0 +1,138 @@ +{ + "node_id": "569d5e11c4fc5de7844053d9a733c5e8", + "keywords": [], + "children": [ + { + "构建TCP服务": { + "keywords": [], + "children": [ + { + "TCP": { + "keywords": [], + "children": [] + } + }, + { + "创建TCP服务器端": { + "keywords": [], + "children": [] + } + }, + { + "TCP服务的事件": { + "keywords": [], + "children": [] + } + } + ] + } + }, + { + "构建UDP服务": { + "keywords": [], + "children": [ + { + "创建UDP套接字": { + "keywords": [], + "children": [] + } + }, + { + "创建UDP服务器端": { + "keywords": [], + "children": [] + } + }, + { + "创建UDP客户端": { + "keywords": [], + "children": [] + } + }, + { + "UDP套接字事件": { + "keywords": [], + "children": [] + } + } + ] + } + }, + { + "构建HTTP服务": { + "keywords": [], + "children": [ + { + "HTTP": { + "keywords": [], + "children": [] + } + }, + { + "http模块": { + "keywords": [], + "children": [] + } + }, + { + "HTTP客户端": { + "keywords": [], + "children": [] + } + } + ] + } + }, + { + "构建WebSocket服务": { + "keywords": [], + "children": [ + { + "WebSocket握手": { + "keywords": [], + "children": [] + } + }, + { + "WebSocket数据传输": { + "keywords": [], + "children": [] + } + }, + { + "小结": { + "keywords": [], + "children": [] + } + } + ] + } + }, + { + "网络服务与安全": { + "keywords": [], + "children": [ + { + "TLS & SSL": { + "keywords": [], + "children": [] + } + }, + { + "TLS服务": { + "keywords": [], + "children": [] + } + }, + { + "HTTPS服务": { + "keywords": [], + "children": [] + } + } + ] + } + } + ], + "export": [] +} \ No newline at end of file diff --git "a/data/2.web\344\270\255\351\230\266/4.node.js/8.\346\236\204\345\273\272Web\345\272\224\347\224\250/config.json" "b/data/2.web\344\270\255\351\230\266/4.node.js/8.\346\236\204\345\273\272Web\345\272\224\347\224\250/config.json" new file mode 100644 index 0000000..11e89bc --- /dev/null +++ "b/data/2.web\344\270\255\351\230\266/4.node.js/8.\346\236\204\345\273\272Web\345\272\224\347\224\250/config.json" @@ -0,0 +1,168 @@ +{ + "node_id": "569d5e11c4fc5de7844053d9a733c5e8", + "keywords": [], + "children": [ + { + "基础功能": { + "keywords": [], + "children": [ + { + "请求方法": { + "keywords": [], + "children": [] + } + }, + { + "路径解析": { + "keywords": [], + "children": [] + } + }, + { + "查询字符串": { + "keywords": [], + "children": [] + } + }, + { + "Cookie": { + "keywords": [], + "children": [] + } + }, + { + "Session": { + "keywords": [], + "children": [] + } + }, + { + "缓存": { + "keywords": [], + "children": [] + } + }, + { + "Basic认证": { + "keywords": [], + "children": [] + } + } + ] + } + }, + { + "数据上传": { + "keywords": [], + "children": [ + { + "表单数据": { + "keywords": [], + "children": [] + } + }, + { + "其他格式": { + "keywords": [], + "children": [] + } + }, + { + "附件上传": { + "keywords": [], + "children": [] + } + }, + { + "数据上传与安全": { + "keywords": [], + "children": [] + } + } + ] + } + }, + { + "路由解析": { + "keywords": [], + "children": [ + { + "文件路径型": { + "keywords": [], + "children": [] + } + }, + { + "MVC": { + "keywords": [], + "children": [] + } + }, + { + "RESTful": { + "keywords": [], + "children": [] + } + } + ] + } + }, + { + "中间件": { + "keywords": [], + "children": [ + { + "异常处理": { + "keywords": [], + "children": [] + } + }, + { + "中间件与性能": { + "keywords": [], + "children": [] + } + }, + { + "小结": { + "keywords": [], + "children": [] + } + } + ] + } + }, + { + "页面渲染": { + "keywords": [], + "children": [ + { + "内容响应": { + "keywords": [], + "children": [] + } + }, + { + "视图渲染": { + "keywords": [], + "children": [] + } + }, + { + "模板": { + "keywords": [], + "children": [] + } + }, + { + "Bigpipe": { + "keywords": [], + "children": [] + } + } + ] + } + } + ], + "export": [] +} \ No newline at end of file diff --git "a/data/2.web\344\270\255\351\230\266/4.node.js/config.json" "b/data/2.web\344\270\255\351\230\266/4.node.js/config.json" new file mode 100644 index 0000000..3407cf9 --- /dev/null +++ "b/data/2.web\344\270\255\351\230\266/4.node.js/config.json" @@ -0,0 +1,4 @@ +{ + "node_id": "569d5e11c4fc5de7844053d9a733c5e8", + "keywords": [] +} \ No newline at end of file diff --git "a/data/2.web\344\270\255\351\230\266/5.\345\214\205\347\256\241\347\220\206\345\231\250/1.npm/config.json" "b/data/2.web\344\270\255\351\230\266/5.\345\214\205\347\256\241\347\220\206\345\231\250/1.npm/config.json" new file mode 100644 index 0000000..f6416a1 --- /dev/null +++ "b/data/2.web\344\270\255\351\230\266/5.\345\214\205\347\256\241\347\220\206\345\231\250/1.npm/config.json" @@ -0,0 +1,6 @@ +{ + "node_id": "569d5e11c4fc5de7844053d9a733c5e8", + "keywords": [], + "children": [], + "export": [] +} \ No newline at end of file diff --git "a/data/2.web\344\270\255\351\230\266/5.\345\214\205\347\256\241\347\220\206\345\231\250/2.yarn/config.json" "b/data/2.web\344\270\255\351\230\266/5.\345\214\205\347\256\241\347\220\206\345\231\250/2.yarn/config.json" new file mode 100644 index 0000000..f6416a1 --- /dev/null +++ "b/data/2.web\344\270\255\351\230\266/5.\345\214\205\347\256\241\347\220\206\345\231\250/2.yarn/config.json" @@ -0,0 +1,6 @@ +{ + "node_id": "569d5e11c4fc5de7844053d9a733c5e8", + "keywords": [], + "children": [], + "export": [] +} \ No newline at end of file diff --git "a/data/2.web\344\270\255\351\230\266/5.\345\214\205\347\256\241\347\220\206\345\231\250/3.nvm/config.json" "b/data/2.web\344\270\255\351\230\266/5.\345\214\205\347\256\241\347\220\206\345\231\250/3.nvm/config.json" new file mode 100644 index 0000000..f6416a1 --- /dev/null +++ "b/data/2.web\344\270\255\351\230\266/5.\345\214\205\347\256\241\347\220\206\345\231\250/3.nvm/config.json" @@ -0,0 +1,6 @@ +{ + "node_id": "569d5e11c4fc5de7844053d9a733c5e8", + "keywords": [], + "children": [], + "export": [] +} \ No newline at end of file diff --git "a/data/2.web\344\270\255\351\230\266/5.\345\214\205\347\256\241\347\220\206\345\231\250/config.json" "b/data/2.web\344\270\255\351\230\266/5.\345\214\205\347\256\241\347\220\206\345\231\250/config.json" new file mode 100644 index 0000000..3407cf9 --- /dev/null +++ "b/data/2.web\344\270\255\351\230\266/5.\345\214\205\347\256\241\347\220\206\345\231\250/config.json" @@ -0,0 +1,4 @@ +{ + "node_id": "569d5e11c4fc5de7844053d9a733c5e8", + "keywords": [] +} \ No newline at end of file diff --git "a/data/2.web\344\270\255\351\230\266/6.\346\236\204\345\273\272\345\267\245\345\205\267/1.\344\273\273\345\212\241\350\277\220\350\241\214\345\274\217/config.json" "b/data/2.web\344\270\255\351\230\266/6.\346\236\204\345\273\272\345\267\245\345\205\267/1.\344\273\273\345\212\241\350\277\220\350\241\214\345\274\217/config.json" new file mode 100644 index 0000000..2829efc --- /dev/null +++ "b/data/2.web\344\270\255\351\230\266/6.\346\236\204\345\273\272\345\267\245\345\205\267/1.\344\273\273\345\212\241\350\277\220\350\241\214\345\274\217/config.json" @@ -0,0 +1,19 @@ +{ + "node_id": "569d5e11c4fc5de7844053d9a733c5e8", + "keywords": [], + "children": [ + { + "gulp": { + "keywords": [], + "children": [] + } + }, + { + "npm脚本": { + "keywords": [], + "children": [] + } + } + ], + "export": [] +} \ No newline at end of file diff --git "a/data/2.web\344\270\255\351\230\266/6.\346\236\204\345\273\272\345\267\245\345\205\267/2.\346\250\241\345\235\227\346\215\206\346\211\216\345\274\217/config.json" "b/data/2.web\344\270\255\351\230\266/6.\346\236\204\345\273\272\345\267\245\345\205\267/2.\346\250\241\345\235\227\346\215\206\346\211\216\345\274\217/config.json" new file mode 100644 index 0000000..cad9468 --- /dev/null +++ "b/data/2.web\344\270\255\351\230\266/6.\346\236\204\345\273\272\345\267\245\345\205\267/2.\346\250\241\345\235\227\346\215\206\346\211\216\345\274\217/config.json" @@ -0,0 +1,69 @@ +{ + "node_id": "569d5e11c4fc5de7844053d9a733c5e8", + "keywords": [], + "children": [ + { + "Webpack": { + "keywords": [], + "children": [ + { + "安装": { + "keywords": [], + "children": [] + } + }, + { + "基本使用": { + "keywords": [], + "children": [] + } + }, + { + "命令行": { + "keywords": [], + "children": [] + } + }, + { + "配置文件": { + "keywords": [], + "children": [ + { + "context": { + "keywords": [], + "children": [] + } + }, + { + "entry": { + "keywords": [], + "children": [] + } + }, + { + "output": { + "keywords": [], + "children": [] + } + } + ] + } + } + ] + } + }, + { + "rollup": { + "keywords": [], + "children": [] + } + }, + { + "parel": { + "keywords": [], + "children": [] + } + } + ], + "export": [] +} \ No newline at end of file diff --git "a/data/2.web\344\270\255\351\230\266/6.\346\236\204\345\273\272\345\267\245\345\205\267/config.json" "b/data/2.web\344\270\255\351\230\266/6.\346\236\204\345\273\272\345\267\245\345\205\267/config.json" new file mode 100644 index 0000000..3407cf9 --- /dev/null +++ "b/data/2.web\344\270\255\351\230\266/6.\346\236\204\345\273\272\345\267\245\345\205\267/config.json" @@ -0,0 +1,4 @@ +{ + "node_id": "569d5e11c4fc5de7844053d9a733c5e8", + "keywords": [] +} \ No newline at end of file diff --git "a/data/2.web\344\270\255\351\230\266/7.CSS \347\274\226\350\257\221/1.Sass/config.json" "b/data/2.web\344\270\255\351\230\266/7.CSS \347\274\226\350\257\221/1.Sass/config.json" new file mode 100644 index 0000000..e330ae3 --- /dev/null +++ "b/data/2.web\344\270\255\351\230\266/7.CSS \347\274\226\350\257\221/1.Sass/config.json" @@ -0,0 +1,49 @@ +{ + "node_id": "569d5e11c4fc5de7844053d9a733c5e8", + "keywords": [], + "children": [ + { + "安装": { + "keywords": [], + "children": [] + } + }, + { + "变量": { + "keywords": [], + "children": [] + } + }, + { + "嵌套规则与属性": { + "keywords": [], + "children": [] + } + }, + { + "@import与Partials": { + "keywords": [], + "children": [] + } + }, + { + "@minxin与@include": { + "keywords": [], + "children": [] + } + }, + { + "@extend与继承": { + "keywords": [], + "children": [] + } + }, + { + "函数": { + "keywords": [], + "children": [] + } + } + ], + "export": [] +} \ No newline at end of file diff --git "a/data/2.web\344\270\255\351\230\266/7.CSS \347\274\226\350\257\221/2.Less/config.json" "b/data/2.web\344\270\255\351\230\266/7.CSS \347\274\226\350\257\221/2.Less/config.json" new file mode 100644 index 0000000..9c35dfc --- /dev/null +++ "b/data/2.web\344\270\255\351\230\266/7.CSS \347\274\226\350\257\221/2.Less/config.json" @@ -0,0 +1,69 @@ +{ + "node_id": "569d5e11c4fc5de7844053d9a733c5e8", + "keywords": [], + "children": [ + { + "使用Less": { + "keywords": [], + "children": [ + { + "安装": { + "keywords": [], + "children": [] + } + }, + { + "命令行用法": { + "keywords": [], + "children": [] + } + }, + { + "配置": { + "keywords": [], + "children": [] + } + }, + { + "第三方工具": { + "keywords": [], + "children": [] + } + } + ] + } + }, + { + "Rhino命令行": { + "keywords": [], + "children": [] + } + }, + { + "客户端用法": { + "keywords": [], + "children": [] + } + }, + { + "获取Less.js": { + "keywords": [], + "children": [ + { + "浏览器下载": { + "keywords": [], + "children": [] + } + }, + { + "Less CDN": { + "keywords": [], + "children": [] + } + } + ] + } + } + ], + "export": [] +} \ No newline at end of file diff --git "a/data/2.web\344\270\255\351\230\266/7.CSS \347\274\226\350\257\221/3.Stylus/config.json" "b/data/2.web\344\270\255\351\230\266/7.CSS \347\274\226\350\257\221/3.Stylus/config.json" new file mode 100644 index 0000000..59dc48e --- /dev/null +++ "b/data/2.web\344\270\255\351\230\266/7.CSS \347\274\226\350\257\221/3.Stylus/config.json" @@ -0,0 +1,163 @@ +{ + "node_id": "569d5e11c4fc5de7844053d9a733c5e8", + "keywords": [], + "children": [ + { + "安装": { + "keywords": [], + "children": [] + } + }, + { + "特征": { + "keywords": [], + "children": [] + } + }, + { + "选择器": { + "keywords": [], + "children": [] + } + }, + { + "变量": { + "keywords": [], + "children": [] + } + }, + { + "插值": { + "keywords": [], + "children": [] + } + }, + { + "运算符": { + "keywords": [], + "children": [] + } + }, + { + "混合书写": { + "keywords": [], + "children": [] + } + }, + { + "函数": { + "keywords": [], + "children": [] + } + }, + { + "关键字参数": { + "keywords": [], + "children": [] + } + }, + { + "内置方法": { + "keywords": [], + "children": [] + } + }, + { + "其他参数": { + "keywords": [], + "children": [] + } + }, + { + "注释": { + "keywords": [], + "children": [] + } + }, + { + "迭代": { + "keywords": [], + "children": [] + } + }, + { + "@import": { + "keywords": [], + "children": [] + } + }, + { + "@media": { + "keywords": [], + "children": [] + } + }, + { + "@font-face": { + "keywords": [], + "children": [] + } + }, + { + "@keyframes": { + "keywords": [], + "children": [] + } + }, + { + "@extend": { + "keywords": [], + "children": [] + } + }, + { + "url": { + "keywords": [], + "children": [] + } + }, + { + "CSS字面量": { + "keywords": [], + "children": [] + } + }, + { + "CSS样式解析": { + "keywords": [], + "children": [] + } + }, + { + "字符转码": { + "keywords": [], + "children": [] + } + }, + { + "可执行性": { + "keywords": [], + "children": [] + } + }, + { + "错误报告": { + "keywords": [], + "children": [] + } + }, + { + "连接中间件": { + "keywords": [], + "children": [] + } + }, + { + "自检API": { + "keywords": [], + "children": [] + } + } + ], + "export": [] +} \ No newline at end of file diff --git "a/data/2.web\344\270\255\351\230\266/7.CSS \347\274\226\350\257\221/4.PostCSS/config.json" "b/data/2.web\344\270\255\351\230\266/7.CSS \347\274\226\350\257\221/4.PostCSS/config.json" new file mode 100644 index 0000000..37fbee5 --- /dev/null +++ "b/data/2.web\344\270\255\351\230\266/7.CSS \347\274\226\350\257\221/4.PostCSS/config.json" @@ -0,0 +1,117 @@ +{ + "node_id": "569d5e11c4fc5de7844053d9a733c5e8", + "keywords": [], + "children": [ + { + "PostCSS runner": { + "keywords": [], + "children": [] + } + }, + { + "编写自定义语法": { + "keywords": [], + "children": [ + { + "语法": { + "keywords": [], + "children": [] + } + }, + { + "解析器": { + "keywords": [], + "children": [] + } + }, + { + "字符串生成器": { + "keywords": [], + "children": [] + } + } + ] + } + }, + { + "PostCSS插件": { + "keywords": [], + "children": [ + { + "控制": { + "keywords": [], + "children": [] + } + }, + { + "打包": { + "keywords": [], + "children": [] + } + }, + { + "面向未来的CSS语法": { + "keywords": [], + "children": [] + } + }, + { + "向下兼容": { + "keywords": [], + "children": [] + } + }, + { + "语言扩展": { + "keywords": [], + "children": [] + } + }, + { + "颜色": { + "keywords": [], + "children": [] + } + }, + { + "图片与字体": { + "keywords": [], + "children": [] + } + }, + { + "网格": { + "keywords": [], + "children": [] + } + }, + { + "优化": { + "keywords": [], + "children": [] + } + }, + { + "快捷工具": { + "keywords": [], + "children": [] + } + }, + { + "其他": { + "keywords": [], + "children": [] + } + }, + { + "分析": { + "keywords": [], + "children": [] + } + } + ] + } + } + ], + "export": [] +} \ No newline at end of file diff --git "a/data/2.web\344\270\255\351\230\266/7.CSS \347\274\226\350\257\221/config.json" "b/data/2.web\344\270\255\351\230\266/7.CSS \347\274\226\350\257\221/config.json" new file mode 100644 index 0000000..3407cf9 --- /dev/null +++ "b/data/2.web\344\270\255\351\230\266/7.CSS \347\274\226\350\257\221/config.json" @@ -0,0 +1,4 @@ +{ + "node_id": "569d5e11c4fc5de7844053d9a733c5e8", + "keywords": [] +} \ No newline at end of file diff --git "a/data/2.web\344\270\255\351\230\266/8.web\345\256\211\345\205\250/1.https/config.json" "b/data/2.web\344\270\255\351\230\266/8.web\345\256\211\345\205\250/1.https/config.json" new file mode 100644 index 0000000..f6416a1 --- /dev/null +++ "b/data/2.web\344\270\255\351\230\266/8.web\345\256\211\345\205\250/1.https/config.json" @@ -0,0 +1,6 @@ +{ + "node_id": "569d5e11c4fc5de7844053d9a733c5e8", + "keywords": [], + "children": [], + "export": [] +} \ No newline at end of file diff --git "a/data/2.web\344\270\255\351\230\266/8.web\345\256\211\345\205\250/2.CORS/config.json" "b/data/2.web\344\270\255\351\230\266/8.web\345\256\211\345\205\250/2.CORS/config.json" new file mode 100644 index 0000000..f6416a1 --- /dev/null +++ "b/data/2.web\344\270\255\351\230\266/8.web\345\256\211\345\205\250/2.CORS/config.json" @@ -0,0 +1,6 @@ +{ + "node_id": "569d5e11c4fc5de7844053d9a733c5e8", + "keywords": [], + "children": [], + "export": [] +} \ No newline at end of file diff --git "a/data/2.web\344\270\255\351\230\266/8.web\345\256\211\345\205\250/3.\345\270\270\350\247\201web\346\224\273\345\207\273\346\212\200\346\234\257/config.json" "b/data/2.web\344\270\255\351\230\266/8.web\345\256\211\345\205\250/3.\345\270\270\350\247\201web\346\224\273\345\207\273\346\212\200\346\234\257/config.json" new file mode 100644 index 0000000..ead3ea0 --- /dev/null +++ "b/data/2.web\344\270\255\351\230\266/8.web\345\256\211\345\205\250/3.\345\270\270\350\247\201web\346\224\273\345\207\273\346\212\200\346\234\257/config.json" @@ -0,0 +1,25 @@ +{ + "node_id": "569d5e11c4fc5de7844053d9a733c5e8", + "keywords": [], + "children": [ + { + "XSS(Cross-Site Scripting,跨站脚本攻击)": { + "keywords": [], + "children": [] + } + }, + { + "SQL注入攻击": { + "keywords": [], + "children": [] + } + }, + { + "CSRFCross-Site Request Forgeries,跨站点请求伪造)": { + "keywords": [], + "children": [] + } + } + ], + "export": [] +} \ No newline at end of file diff --git "a/data/2.web\344\270\255\351\230\266/8.web\345\256\211\345\205\250/config.json" "b/data/2.web\344\270\255\351\230\266/8.web\345\256\211\345\205\250/config.json" new file mode 100644 index 0000000..3407cf9 --- /dev/null +++ "b/data/2.web\344\270\255\351\230\266/8.web\345\256\211\345\205\250/config.json" @@ -0,0 +1,4 @@ +{ + "node_id": "569d5e11c4fc5de7844053d9a733c5e8", + "keywords": [] +} \ No newline at end of file diff --git "a/data/2.web\344\270\255\351\230\266/9.\346\200\247\350\203\275\344\274\230\345\214\226/1.\346\214\207\346\240\207/config.json" "b/data/2.web\344\270\255\351\230\266/9.\346\200\247\350\203\275\344\274\230\345\214\226/1.\346\214\207\346\240\207/config.json" new file mode 100644 index 0000000..0b8062e --- /dev/null +++ "b/data/2.web\344\270\255\351\230\266/9.\346\200\247\350\203\275\344\274\230\345\214\226/1.\346\214\207\346\240\207/config.json" @@ -0,0 +1,57 @@ +{ + "node_id": "569d5e11c4fc5de7844053d9a733c5e8", + "keywords": [], + "children": [ + { + "真实指标": { + "keywords": [], + "children": [ + { + "First Contentful Paint (FCP)": { + "keywords": [], + "children": [] + } + }, + { + "Largest Contentful Paint (LCP)": { + "keywords": [], + "children": [] + } + }, + { + "First Input Delay (FID)": { + "keywords": [], + "children": [] + } + }, + { + "Cumulative Layout Shift (CLS)": { + "keywords": [], + "children": [] + } + } + ] + } + }, + { + "实验室指标": { + "keywords": [], + "children": [ + { + "Total Blocking Time (TBT)": { + "keywords": [], + "children": [] + } + }, + { + "Time to Interactive (TTI)": { + "keywords": [], + "children": [] + } + } + ] + } + } + ], + "export": [] +} \ No newline at end of file diff --git "a/data/2.web\344\270\255\351\230\266/9.\346\200\247\350\203\275\344\274\230\345\214\226/2.\350\257\204\344\274\260\345\267\245\345\205\267/config.json" "b/data/2.web\344\270\255\351\230\266/9.\346\200\247\350\203\275\344\274\230\345\214\226/2.\350\257\204\344\274\260\345\267\245\345\205\267/config.json" new file mode 100644 index 0000000..0099873 --- /dev/null +++ "b/data/2.web\344\270\255\351\230\266/9.\346\200\247\350\203\275\344\274\230\345\214\226/2.\350\257\204\344\274\260\345\267\245\345\205\267/config.json" @@ -0,0 +1,31 @@ +{ + "node_id": "569d5e11c4fc5de7844053d9a733c5e8", + "keywords": [], + "children": [ + { + "Chrome DevTools": { + "keywords": [], + "children": [] + } + }, + { + "LightHouse": { + "keywords": [], + "children": [] + } + }, + { + "PageSpeed Insights": { + "keywords": [], + "children": [] + } + }, + { + "WebPageTest": { + "keywords": [], + "children": [] + } + } + ], + "export": [] +} \ No newline at end of file diff --git "a/data/2.web\344\270\255\351\230\266/9.\346\200\247\350\203\275\344\274\230\345\214\226/3.\344\274\230\345\214\226\346\226\271\346\241\210/config.json" "b/data/2.web\344\270\255\351\230\266/9.\346\200\247\350\203\275\344\274\230\345\214\226/3.\344\274\230\345\214\226\346\226\271\346\241\210/config.json" new file mode 100644 index 0000000..be1b362 --- /dev/null +++ "b/data/2.web\344\270\255\351\230\266/9.\346\200\247\350\203\275\344\274\230\345\214\226/3.\344\274\230\345\214\226\346\226\271\346\241\210/config.json" @@ -0,0 +1,180 @@ +{ + "node_id": "569d5e11c4fc5de7844053d9a733c5e8", + "keywords": [], + "children": [ + { + "压缩": { + "keywords": [], + "children": [ + { + "代码压缩": { + "keywords": [], + "children": [] + } + }, + { + "文本压缩(gzip、Brotli、Zopfli等)": { + "keywords": [], + "children": [] + } + }, + { + "Tree-shaking": { + "keywords": [], + "children": [] + } + }, + { + "Code-splitting": { + "keywords": [], + "children": [] + } + } + ] + } + }, + { + "图片优化": { + "keywords": [], + "children": [ + { + "小图优化(css sprite、iconfont、dataURI、svg)": { + "keywords": [], + "children": [] + } + }, + { + "图片格式选择": { + "keywords": [], + "children": [] + } + }, + { + "压缩(如tinypng)": { + "keywords": [], + "children": [] + } + }, + { + "响应式": { + "keywords": [], + "children": [] + } + } + ] + } + }, + { + "加载策略": { + "keywords": [], + "children": [ + { + "懒加载": { + "keywords": [], + "children": [] + } + }, + { + "DNS预解析、预加载、预渲染": { + "keywords": [], + "children": [] + } + }, + { + "离线化(ServiceWorker、AppCache、离线包等)": { + "keywords": [], + "children": [] + } + }, + { + "HTTP缓存": { + "keywords": [], + "children": [] + } + }, + { + "数据缓存(localStorage、sessionStorage)": { + "keywords": [], + "children": [] + } + }, + { + "资源加载(顺序、位置、异步等)": { + "keywords": [], + "children": [] + } + }, + { + "请求合并": { + "keywords": [], + "children": [] + } + }, + { + "HTTP2": { + "keywords": [], + "children": [] + } + }, + { + "CDN": { + "keywords": [], + "children": [] + } + }, + { + "服务端渲染": { + "keywords": [], + "children": [] + } + } + ] + } + }, + { + "执行渲染": { + "keywords": [], + "children": [ + { + "CSS代码优化(选择器、启用GPU、避免表达式等)": { + "keywords": [], + "children": [] + } + }, + { + "JS代码优化及评估": { + "keywords": [], + "children": [] + } + } + ] + } + }, + { + "感官体验优化": { + "keywords": [], + "children": [ + { + "骨架屏": { + "keywords": [], + "children": [] + } + }, + { + "Snapshot": { + "keywords": [], + "children": [] + } + }, + { + "Loading": { + "keywords": [], + "children": [] + } + } + ] + } + } + ], + "export": [] +} \ No newline at end of file diff --git "a/data/2.web\344\270\255\351\230\266/9.\346\200\247\350\203\275\344\274\230\345\214\226/config.json" "b/data/2.web\344\270\255\351\230\266/9.\346\200\247\350\203\275\344\274\230\345\214\226/config.json" new file mode 100644 index 0000000..3407cf9 --- /dev/null +++ "b/data/2.web\344\270\255\351\230\266/9.\346\200\247\350\203\275\344\274\230\345\214\226/config.json" @@ -0,0 +1,4 @@ +{ + "node_id": "569d5e11c4fc5de7844053d9a733c5e8", + "keywords": [] +} \ No newline at end of file diff --git "a/data/2.web\344\270\255\351\230\266/config.json" "b/data/2.web\344\270\255\351\230\266/config.json" new file mode 100644 index 0000000..3407cf9 --- /dev/null +++ "b/data/2.web\344\270\255\351\230\266/config.json" @@ -0,0 +1,4 @@ +{ + "node_id": "569d5e11c4fc5de7844053d9a733c5e8", + "keywords": [] +} \ No newline at end of file diff --git "a/data/3.web\351\253\230\351\230\266/1.\345\211\215\347\253\257\346\236\266\346\236\204\346\250\241\345\274\217/1.MVC/config.json" "b/data/3.web\351\253\230\351\230\266/1.\345\211\215\347\253\257\346\236\266\346\236\204\346\250\241\345\274\217/1.MVC/config.json" new file mode 100644 index 0000000..f6416a1 --- /dev/null +++ "b/data/3.web\351\253\230\351\230\266/1.\345\211\215\347\253\257\346\236\266\346\236\204\346\250\241\345\274\217/1.MVC/config.json" @@ -0,0 +1,6 @@ +{ + "node_id": "569d5e11c4fc5de7844053d9a733c5e8", + "keywords": [], + "children": [], + "export": [] +} \ No newline at end of file diff --git "a/data/3.web\351\253\230\351\230\266/1.\345\211\215\347\253\257\346\236\266\346\236\204\346\250\241\345\274\217/2.MVP/config.json" "b/data/3.web\351\253\230\351\230\266/1.\345\211\215\347\253\257\346\236\266\346\236\204\346\250\241\345\274\217/2.MVP/config.json" new file mode 100644 index 0000000..f6416a1 --- /dev/null +++ "b/data/3.web\351\253\230\351\230\266/1.\345\211\215\347\253\257\346\236\266\346\236\204\346\250\241\345\274\217/2.MVP/config.json" @@ -0,0 +1,6 @@ +{ + "node_id": "569d5e11c4fc5de7844053d9a733c5e8", + "keywords": [], + "children": [], + "export": [] +} \ No newline at end of file diff --git "a/data/3.web\351\253\230\351\230\266/1.\345\211\215\347\253\257\346\236\266\346\236\204\346\250\241\345\274\217/3.MVVM/config.json" "b/data/3.web\351\253\230\351\230\266/1.\345\211\215\347\253\257\346\236\266\346\236\204\346\250\241\345\274\217/3.MVVM/config.json" new file mode 100644 index 0000000..f6416a1 --- /dev/null +++ "b/data/3.web\351\253\230\351\230\266/1.\345\211\215\347\253\257\346\236\266\346\236\204\346\250\241\345\274\217/3.MVVM/config.json" @@ -0,0 +1,6 @@ +{ + "node_id": "569d5e11c4fc5de7844053d9a733c5e8", + "keywords": [], + "children": [], + "export": [] +} \ No newline at end of file diff --git "a/data/3.web\351\253\230\351\230\266/1.\345\211\215\347\253\257\346\236\266\346\236\204\346\250\241\345\274\217/config.json" "b/data/3.web\351\253\230\351\230\266/1.\345\211\215\347\253\257\346\236\266\346\236\204\346\250\241\345\274\217/config.json" new file mode 100644 index 0000000..3407cf9 --- /dev/null +++ "b/data/3.web\351\253\230\351\230\266/1.\345\211\215\347\253\257\346\236\266\346\236\204\346\250\241\345\274\217/config.json" @@ -0,0 +1,4 @@ +{ + "node_id": "569d5e11c4fc5de7844053d9a733c5e8", + "keywords": [] +} \ No newline at end of file diff --git "a/data/3.web\351\253\230\351\230\266/2.vue.js/1.\351\201\207\350\247\201Vue.js/config.json" "b/data/3.web\351\253\230\351\230\266/2.vue.js/1.\351\201\207\350\247\201Vue.js/config.json" new file mode 100644 index 0000000..31ca9c1 --- /dev/null +++ "b/data/3.web\351\253\230\351\230\266/2.vue.js/1.\351\201\207\350\247\201Vue.js/config.json" @@ -0,0 +1,57 @@ +{ + "node_id": "569d5e11c4fc5de7844053d9a733c5e8", + "keywords": [], + "children": [ + { + "MVX模式是什么": { + "keywords": [], + "children": [ + { + "MVC": { + "keywords": [], + "children": [] + } + }, + { + "MVP": { + "keywords": [], + "children": [] + } + }, + { + "MVVM": { + "keywords": [], + "children": [] + } + } + ] + } + }, + { + "Vue.js是什么": { + "keywords": [], + "children": [ + { + "Vue.js与其他框架的区别": { + "keywords": [], + "children": [] + } + }, + { + "如何使用Vue.js": { + "keywords": [], + "children": [] + } + }, + { + "Vue.js的发展历史": { + "keywords": [], + "children": [] + } + } + ] + } + } + ], + "export": [] +} \ No newline at end of file diff --git "a/data/3.web\351\253\230\351\230\266/2.vue.js/10.Vue\345\256\236\344\276\213\346\226\271\346\263\225/config.json" "b/data/3.web\351\253\230\351\230\266/2.vue.js/10.Vue\345\256\236\344\276\213\346\226\271\346\263\225/config.json" new file mode 100644 index 0000000..c6fc1ee --- /dev/null +++ "b/data/3.web\351\253\230\351\230\266/2.vue.js/10.Vue\345\256\236\344\276\213\346\226\271\346\263\225/config.json" @@ -0,0 +1,32 @@ +{ + "node_id": "569d5e11c4fc5de7844053d9a733c5e8", + "keywords": [], + "children": [ + { + "实例属性": { + "keywords": [], + "children": [ + { + "组件树访问": { + "keywords": [], + "children": [] + } + }, + { + "DOM访问": { + "keywords": [], + "children": [] + } + }, + { + "数据访问": { + "keywords": [], + "children": [] + } + } + ] + } + } + ], + "export": [] +} \ No newline at end of file diff --git "a/data/3.web\351\253\230\351\230\266/2.vue.js/11.\347\273\204\344\273\266/config.json" "b/data/3.web\351\253\230\351\230\266/2.vue.js/11.\347\273\204\344\273\266/config.json" new file mode 100644 index 0000000..4be74a2 --- /dev/null +++ "b/data/3.web\351\253\230\351\230\266/2.vue.js/11.\347\273\204\344\273\266/config.json" @@ -0,0 +1,106 @@ +{ + "node_id": "569d5e11c4fc5de7844053d9a733c5e8", + "keywords": [], + "children": [ + { + "基础": { + "keywords": [], + "children": [ + { + "注册": { + "keywords": [], + "children": [] + } + }, + { + "数据传递": { + "keywords": [], + "children": [] + } + }, + { + "混合": { + "keywords": [], + "children": [] + } + }, + { + "动态组件": { + "keywords": [], + "children": [] + } + } + ] + } + }, + { + "相关拓展": { + "keywords": [], + "children": [ + { + "组件和v-for": { + "keywords": [], + "children": [] + } + }, + { + "编写可复用组件": { + "keywords": [], + "children": [] + } + }, + { + "异步组件": { + "keywords": [], + "children": [] + } + }, + { + "资源命名约定": { + "keywords": [], + "children": [] + } + }, + { + "内联模板": { + "keywords": [], + "children": [] + } + }, + { + "片段实例": { + "keywords": [], + "children": [] + } + } + ] + } + }, + { + "生命周期": { + "keywords": [], + "children": [] + } + }, + { + "开发组件": { + "keywords": [], + "children": [ + { + "基础组件": { + "keywords": [], + "children": [] + } + }, + { + "基于第三方组件开发": { + "keywords": [], + "children": [] + } + } + ] + } + } + ], + "export": [] +} \ No newline at end of file diff --git "a/data/3.web\351\253\230\351\230\266/2.vue.js/12.\350\241\250\345\215\225\346\240\241\351\252\214/config.json" "b/data/3.web\351\253\230\351\230\266/2.vue.js/12.\350\241\250\345\215\225\346\240\241\351\252\214/config.json" new file mode 100644 index 0000000..8d4dab8 --- /dev/null +++ "b/data/3.web\351\253\230\351\230\266/2.vue.js/12.\350\241\250\345\215\225\346\240\241\351\252\214/config.json" @@ -0,0 +1,218 @@ +{ + "node_id": "569d5e11c4fc5de7844053d9a733c5e8", + "keywords": [], + "children": [ + { + "安装": { + "keywords": [], + "children": [] + } + }, + { + "基本使用": { + "keywords": [], + "children": [] + } + }, + { + "验证结果结构": { + "keywords": [], + "children": [] + } + }, + { + "验证器语法": { + "keywords": [], + "children": [ + { + "校验字段名field": { + "keywords": [], + "children": [] + } + }, + { + "校验规则定义": { + "keywords": [], + "children": [] + } + } + ] + } + }, + { + "内置验证规则": { + "keywords": [], + "children": [ + { + "required": { + "keywords": [], + "children": [] + } + }, + { + "pattern": { + "keywords": [], + "children": [] + } + }, + { + "minlength": { + "keywords": [], + "children": [] + } + }, + { + "maxlength": { + "keywords": [], + "children": [] + } + }, + { + "min": { + "keywords": [], + "children": [] + } + }, + { + "max": { + "keywords": [], + "children": [] + } + } + ] + } + }, + { + "与v-model同时使用": { + "keywords": [], + "children": [] + } + }, + { + "重置校验结果": { + "keywords": [], + "children": [] + } + }, + { + "表单元素": { + "keywords": [], + "children": [] + } + }, + { + "各校验状态对应的class": { + "keywords": [], + "children": [ + { + "自定义校验状态class": { + "keywords": [], + "children": [] + } + }, + { + "在其他元素上使用校验状态class": { + "keywords": [], + "children": [] + } + } + ] + } + }, + { + "分组校验": { + "keywords": [], + "children": [] + } + }, + { + "错误信息": { + "keywords": [], + "children": [ + { + "错误信息输出组件": { + "keywords": [], + "children": [] + } + }, + { + "动态设置错误信息": { + "keywords": [], + "children": [] + } + } + ] + } + }, + { + "事件": { + "keywords": [], + "children": [ + { + "单个字段校验事件": { + "keywords": [], + "children": [] + } + }, + { + "整个表单校验事件": { + "keywords": [], + "children": [] + } + } + ] + } + }, + { + "延迟初始化": { + "keywords": [], + "children": [] + } + }, + { + "自定义验证器": { + "keywords": [], + "children": [ + { + "注册自定义验证器": { + "keywords": [], + "children": [] + } + }, + { + "错误信息": { + "keywords": [], + "children": [] + } + } + ] + } + }, + { + "自定义验证时机": { + "keywords": [], + "children": [] + } + }, + { + "异步验证": { + "keywords": [], + "children": [ + { + "注册异步验证器": { + "keywords": [], + "children": [] + } + }, + { + "验证器函数context": { + "keywords": [], + "children": [] + } + } + ] + } + } + ], + "export": [] +} \ No newline at end of file diff --git "a/data/3.web\351\253\230\351\230\266/2.vue.js/13.\344\270\216\346\234\215\345\212\241\347\253\257\351\200\232\344\277\241/config.json" "b/data/3.web\351\253\230\351\230\266/2.vue.js/13.\344\270\216\346\234\215\345\212\241\347\253\257\351\200\232\344\277\241/config.json" new file mode 100644 index 0000000..1088fe5 --- /dev/null +++ "b/data/3.web\351\253\230\351\230\266/2.vue.js/13.\344\270\216\346\234\215\345\212\241\347\253\257\351\200\232\344\277\241/config.json" @@ -0,0 +1,130 @@ +{ + "node_id": "569d5e11c4fc5de7844053d9a733c5e8", + "keywords": [], + "children": [ + { + "vue-resource安装及配置": { + "keywords": [], + "children": [ + { + "安装": { + "keywords": [], + "children": [] + } + }, + { + "参数配置": { + "keywords": [], + "children": [] + } + }, + { + "headers配置": { + "keywords": [], + "children": [] + } + }, + { + "基本调用": { + "keywords": [], + "children": [] + } + }, + { + "请求选项对象": { + "keywords": [], + "children": [] + } + }, + { + "response对象": { + "keywords": [], + "children": [] + } + }, + { + "RESTful调用": { + "keywords": [], + "children": [] + } + }, + { + "拦截器": { + "keywords": [], + "children": [] + } + }, + { + "跨域AJAX": { + "keywords": [], + "children": [] + } + }, + { + "Promise": { + "keywords": [], + "children": [] + } + }, + { + "url模板": { + "keywords": [], + "children": [] + } + } + ] + } + }, + { + "vue-async-data": { + "keywords": [], + "children": [ + { + "安装": { + "keywords": [], + "children": [] + } + }, + { + "使用": { + "keywords": [], + "children": [] + } + } + ] + } + }, + { + "常见问题解析": { + "keywords": [], + "children": [ + { + "如何发送JSONP请求": { + "keywords": [], + "children": [] + } + }, + { + "如何修改发送给服务端的数据类型": { + "keywords": [], + "children": [] + } + }, + { + "跨域请求出错": { + "keywords": [], + "children": [] + } + }, + { + "$..post方法变为OPTIONS方法": { + "keywords": [], + "children": [] + } + } + ] + } + } + ], + "export": [] +} \ No newline at end of file diff --git "a/data/3.web\351\253\230\351\230\266/2.vue.js/14.\350\267\257\347\224\261\344\270\216\350\247\206\345\233\276/config.json" "b/data/3.web\351\253\230\351\230\266/2.vue.js/14.\350\267\257\347\224\261\344\270\216\350\247\206\345\233\276/config.json" new file mode 100644 index 0000000..4f2d9d9 --- /dev/null +++ "b/data/3.web\351\253\230\351\230\266/2.vue.js/14.\350\267\257\347\224\261\344\270\216\350\247\206\345\233\276/config.json" @@ -0,0 +1,112 @@ +{ + "node_id": "569d5e11c4fc5de7844053d9a733c5e8", + "keywords": [], + "children": [ + { + "如何安装": { + "keywords": [], + "children": [] + } + }, + { + "基本使用": { + "keywords": [], + "children": [] + } + }, + { + "视图部分": { + "keywords": [], + "children": [ + { + "v-link": { + "keywords": [], + "children": [] + } + }, + { + "router-view": { + "keywords": [], + "children": [] + } + } + ] + } + }, + { + "路由实例": { + "keywords": [], + "children": [] + } + }, + { + "组件路由配置": { + "keywords": [], + "children": [ + { + "路由切换的各个阶段": { + "keywords": [], + "children": [] + } + }, + { + "各阶段的钩子函数介绍": { + "keywords": [], + "children": [] + } + } + ] + } + }, + { + "路由匹配": { + "keywords": [], + "children": [ + { + "动态片段": { + "keywords": [], + "children": [] + } + }, + { + "全匹配片段": { + "keywords": [], + "children": [] + } + }, + { + "具名路径": { + "keywords": [], + "children": [] + } + }, + { + "路由对象": { + "keywords": [], + "children": [] + } + } + ] + } + }, + { + "transition对象": { + "keywords": [], + "children": [] + } + }, + { + "嵌套路由": { + "keywords": [], + "children": [] + } + }, + { + "动态加载路由组件": { + "keywords": [], + "children": [] + } + } + ], + "export": [] +} \ No newline at end of file diff --git "a/data/3.web\351\253\230\351\230\266/2.vue.js/15.vue-cli/config.json" "b/data/3.web\351\253\230\351\230\266/2.vue.js/15.vue-cli/config.json" new file mode 100644 index 0000000..9333bc5 --- /dev/null +++ "b/data/3.web\351\253\230\351\230\266/2.vue.js/15.vue-cli/config.json" @@ -0,0 +1,94 @@ +{ + "node_id": "569d5e11c4fc5de7844053d9a733c5e8", + "keywords": [], + "children": [ + { + "安装": { + "keywords": [], + "children": [] + } + }, + { + "基本使用": { + "keywords": [], + "children": [] + } + }, + { + "命令": { + "keywords": [], + "children": [ + { + "init": { + "keywords": [], + "children": [] + } + }, + { + "list": { + "keywords": [], + "children": [] + } + } + ] + } + }, + { + "模板": { + "keywords": [], + "children": [ + { + "官方模板": { + "keywords": [], + "children": [] + } + }, + { + "自定义模板": { + "keywords": [], + "children": [] + } + }, + { + "本地模板": { + "keywords": [], + "children": [] + } + } + ] + } + }, + { + "不错的工具包": { + "keywords": [], + "children": [ + { + "mander": { + "keywords": [], + "children": [] + } + }, + { + "download-git-repo": { + "keywords": [], + "children": [] + } + }, + { + "inquirer": { + "keywords": [], + "children": [] + } + }, + { + "ora": { + "keywords": [], + "children": [] + } + } + ] + } + } + ], + "export": [] +} \ No newline at end of file diff --git "a/data/3.web\351\253\230\351\230\266/2.vue.js/16.\346\265\213\350\257\225\345\274\200\345\217\221\344\270\216\350\260\203\350\257\225/config.json" "b/data/3.web\351\253\230\351\230\266/2.vue.js/16.\346\265\213\350\257\225\345\274\200\345\217\221\344\270\216\350\260\203\350\257\225/config.json" new file mode 100644 index 0000000..19c9b8e --- /dev/null +++ "b/data/3.web\351\253\230\351\230\266/2.vue.js/16.\346\265\213\350\257\225\345\274\200\345\217\221\344\270\216\350\260\203\350\257\225/config.json" @@ -0,0 +1,57 @@ +{ + "node_id": "569d5e11c4fc5de7844053d9a733c5e8", + "keywords": [], + "children": [ + { + "测试工具": { + "keywords": [], + "children": [ + { + "ESLint": { + "keywords": [], + "children": [] + } + }, + { + "工具包": { + "keywords": [], + "children": [] + } + } + ] + } + }, + { + "开发工具": { + "keywords": [], + "children": [ + { + "Vue Syntax Highlight": { + "keywords": [], + "children": [] + } + }, + { + "Snippets": { + "keywords": [], + "children": [] + } + }, + { + "其他编辑器和IDE": { + "keywords": [], + "children": [] + } + } + ] + } + }, + { + "调试工具": { + "keywords": [], + "children": [] + } + } + ], + "export": [] +} \ No newline at end of file diff --git "a/data/3.web\351\253\230\351\230\266/2.vue.js/17.Scrat Vue.js\347\232\204\345\214\226\345\255\246\345\217\215\345\272\224/config.json" "b/data/3.web\351\253\230\351\230\266/2.vue.js/17.Scrat Vue.js\347\232\204\345\214\226\345\255\246\345\217\215\345\272\224/config.json" new file mode 100644 index 0000000..6cb65d8 --- /dev/null +++ "b/data/3.web\351\253\230\351\230\266/2.vue.js/17.Scrat Vue.js\347\232\204\345\214\226\345\255\246\345\217\215\345\272\224/config.json" @@ -0,0 +1,56 @@ +{ + "node_id": "569d5e11c4fc5de7844053d9a733c5e8", + "keywords": [], + "children": [ + { + "浅谈前端工程化": { + "keywords": [], + "children": [] + } + }, + { + "前端工程化怎么做": { + "keywords": [], + "children": [] + } + }, + { + "Scrat简介": { + "keywords": [], + "children": [] + } + }, + { + "Scrat Vue.js实现组件": { + "keywords": [], + "children": [] + } + }, + { + "案例分析": { + "keywords": [], + "children": [ + { + "准备工作": { + "keywords": [], + "children": [] + } + }, + { + "代码实现": { + "keywords": [], + "children": [] + } + }, + { + "编译和发布": { + "keywords": [], + "children": [] + } + } + ] + } + } + ], + "export": [] +} \ No newline at end of file diff --git "a/data/3.web\351\253\230\351\230\266/2.vue.js/18.Vue.js 2.0/config.json" "b/data/3.web\351\253\230\351\230\266/2.vue.js/18.Vue.js 2.0/config.json" new file mode 100644 index 0000000..d617a2e --- /dev/null +++ "b/data/3.web\351\253\230\351\230\266/2.vue.js/18.Vue.js 2.0/config.json" @@ -0,0 +1,100 @@ +{ + "node_id": "569d5e11c4fc5de7844053d9a733c5e8", + "keywords": [], + "children": [ + { + "API变更": { + "keywords": [], + "children": [ + { + "全局配置": { + "keywords": [], + "children": [] + } + }, + { + "全局API": { + "keywords": [], + "children": [] + } + }, + { + "VM选项": { + "keywords": [], + "children": [] + } + }, + { + "实例属性": { + "keywords": [], + "children": [] + } + }, + { + "实例方法": { + "keywords": [], + "children": [] + } + }, + { + "指令": { + "keywords": [], + "children": [] + } + }, + { + "特殊元素": { + "keywords": [], + "children": [] + } + }, + { + "服务端渲染": { + "keywords": [], + "children": [] + } + } + ] + } + }, + { + "Virtual DOM": { + "keywords": [], + "children": [ + { + "认识Virtual DOM": { + "keywords": [], + "children": [] + } + }, + { + "Virtual DOM在Vue.js 2.0中的实现": { + "keywords": [], + "children": [] + } + } + ] + } + }, + { + "服务端渲染技术": { + "keywords": [], + "children": [ + { + "普通服务端渲染": { + "keywords": [], + "children": [] + } + }, + { + "流式服务端渲染": { + "keywords": [], + "children": [] + } + } + ] + } + } + ], + "export": [] +} \ No newline at end of file diff --git "a/data/3.web\351\253\230\351\230\266/2.vue.js/19.\346\272\220\347\240\201\347\257\207\342\200\224\342\200\224util/config.json" "b/data/3.web\351\253\230\351\230\266/2.vue.js/19.\346\272\220\347\240\201\347\257\207\342\200\224\342\200\224util/config.json" new file mode 100644 index 0000000..81fb8d3 --- /dev/null +++ "b/data/3.web\351\253\230\351\230\266/2.vue.js/19.\346\272\220\347\240\201\347\257\207\342\200\224\342\200\224util/config.json" @@ -0,0 +1,142 @@ +{ + "node_id": "569d5e11c4fc5de7844053d9a733c5e8", + "keywords": [], + "children": [ + { + "env": { + "keywords": [], + "children": [ + { + "系统判断": { + "keywords": [], + "children": [] + } + }, + { + "属性支持": { + "keywords": [], + "children": [] + } + }, + { + "过渡属性": { + "keywords": [], + "children": [] + } + }, + { + "nextTick": { + "keywords": [], + "children": [] + } + }, + { + "set": { + "keywords": [], + "children": [] + } + } + ] + } + }, + { + "dom": { + "keywords": [], + "children": [ + { + "dom操作": { + "keywords": [], + "children": [] + } + }, + { + "属性操作": { + "keywords": [], + "children": [] + } + }, + { + "class操作": { + "keywords": [], + "children": [] + } + }, + { + "事件操作": { + "keywords": [], + "children": [] + } + }, + { + "其他": { + "keywords": [], + "children": [] + } + } + ] + } + }, + { + "lang": { + "keywords": [], + "children": [ + { + "对象操作": { + "keywords": [], + "children": [] + } + }, + { + "名称转换": { + "keywords": [], + "children": [] + } + }, + { + "数组操作": { + "keywords": [], + "children": [] + } + }, + { + "类型转换": { + "keywords": [], + "children": [] + } + }, + { + "方法绑定": { + "keywords": [], + "children": [] + } + }, + { + "其他": { + "keywords": [], + "children": [] + } + } + ] + } + }, + { + "ponents": { + "keywords": [], + "children": [] + } + }, + { + "options": { + "keywords": [], + "children": [] + } + }, + { + "debug": { + "keywords": [], + "children": [] + } + } + ], + "export": [] +} \ No newline at end of file diff --git "a/data/3.web\351\253\230\351\230\266/2.vue.js/2.\346\225\260\346\215\256\347\273\221\345\256\232/config.json" "b/data/3.web\351\253\230\351\230\266/2.vue.js/2.\346\225\260\346\215\256\347\273\221\345\256\232/config.json" new file mode 100644 index 0000000..4bc9caa --- /dev/null +++ "b/data/3.web\351\253\230\351\230\266/2.vue.js/2.\346\225\260\346\215\256\347\273\221\345\256\232/config.json" @@ -0,0 +1,38 @@ +{ + "node_id": "569d5e11c4fc5de7844053d9a733c5e8", + "keywords": [], + "children": [ + { + "语法": { + "keywords": [], + "children": [ + { + "插值": { + "keywords": [], + "children": [] + } + }, + { + "表达式": { + "keywords": [], + "children": [] + } + }, + { + "指令": { + "keywords": [], + "children": [] + } + } + ] + } + }, + { + "分隔符": { + "keywords": [], + "children": [] + } + } + ], + "export": [] +} \ No newline at end of file diff --git "a/data/3.web\351\253\230\351\230\266/2.vue.js/20.\346\272\220\347\240\201\347\257\207\342\200\224\342\200\224\346\267\261\345\205\245\345\223\215\345\272\224\345\274\217\345\216\237\347\220\206/config.json" "b/data/3.web\351\253\230\351\230\266/2.vue.js/20.\346\272\220\347\240\201\347\257\207\342\200\224\342\200\224\346\267\261\345\205\245\345\223\215\345\272\224\345\274\217\345\216\237\347\220\206/config.json" new file mode 100644 index 0000000..fdaea5b --- /dev/null +++ "b/data/3.web\351\253\230\351\230\266/2.vue.js/20.\346\272\220\347\240\201\347\257\207\342\200\224\342\200\224\346\267\261\345\205\245\345\223\215\345\272\224\345\274\217\345\216\237\347\220\206/config.json" @@ -0,0 +1,56 @@ +{ + "node_id": "569d5e11c4fc5de7844053d9a733c5e8", + "keywords": [], + "children": [ + { + "如何追踪变化": { + "keywords": [], + "children": [ + { + "Observer": { + "keywords": [], + "children": [] + } + }, + { + "Directive": { + "keywords": [], + "children": [] + } + }, + { + "Watcher": { + "keywords": [], + "children": [] + } + } + ] + } + }, + { + "变化检测问题": { + "keywords": [], + "children": [] + } + }, + { + "初始化数据": { + "keywords": [], + "children": [] + } + }, + { + "异步更新队列": { + "keywords": [], + "children": [] + } + }, + { + "计算属性的奥秘": { + "keywords": [], + "children": [] + } + } + ], + "export": [] +} \ No newline at end of file diff --git "a/data/3.web\351\253\230\351\230\266/2.vue.js/21.\346\272\220\347\240\201\347\257\207\342\200\224\342\200\224\347\210\266\345\255\220\347\261\273\345\220\210\345\271\266\347\255\226\347\225\245/config.json" "b/data/3.web\351\253\230\351\230\266/2.vue.js/21.\346\272\220\347\240\201\347\257\207\342\200\224\342\200\224\347\210\266\345\255\220\347\261\273\345\220\210\345\271\266\347\255\226\347\225\245/config.json" new file mode 100644 index 0000000..6cddf74 --- /dev/null +++ "b/data/3.web\351\253\230\351\230\266/2.vue.js/21.\346\272\220\347\240\201\347\257\207\342\200\224\342\200\224\347\210\266\345\255\220\347\261\273\345\220\210\345\271\266\347\255\226\347\225\245/config.json" @@ -0,0 +1,32 @@ +{ + "node_id": "569d5e11c4fc5de7844053d9a733c5e8", + "keywords": [], + "children": [ + { + "策略是什么": { + "keywords": [], + "children": [ + { + "生命周期合并策略": { + "keywords": [], + "children": [] + } + }, + { + "属性方法计算": { + "keywords": [], + "children": [] + } + }, + { + "数据合并策略": { + "keywords": [], + "children": [] + } + } + ] + } + } + ], + "export": [] +} \ No newline at end of file diff --git "a/data/3.web\351\253\230\351\230\266/2.vue.js/22.\346\272\220\347\240\201\347\257\207\342\200\224\342\200\224\347\274\223\345\255\230/config.json" "b/data/3.web\351\253\230\351\230\266/2.vue.js/22.\346\272\220\347\240\201\347\257\207\342\200\224\342\200\224\347\274\223\345\255\230/config.json" new file mode 100644 index 0000000..23ea3ff --- /dev/null +++ "b/data/3.web\351\253\230\351\230\266/2.vue.js/22.\346\272\220\347\240\201\347\257\207\342\200\224\342\200\224\347\274\223\345\255\230/config.json" @@ -0,0 +1,43 @@ +{ + "node_id": "569d5e11c4fc5de7844053d9a733c5e8", + "keywords": [], + "children": [ + { + "Cache有什么用": { + "keywords": [], + "children": [] + } + }, + { + "LRU": { + "keywords": [], + "children": [] + } + }, + { + "Cache类": { + "keywords": [], + "children": [] + } + }, + { + "put": { + "keywords": [], + "children": [] + } + }, + { + "shift": { + "keywords": [], + "children": [] + } + }, + { + "get": { + "keywords": [], + "children": [] + } + } + ], + "export": [] +} \ No newline at end of file diff --git "a/data/3.web\351\253\230\351\230\266/2.vue.js/23.\346\272\220\347\240\201\347\257\207\342\200\224\342\200\224\345\261\236\346\200\247props/config.json" "b/data/3.web\351\253\230\351\230\266/2.vue.js/23.\346\272\220\347\240\201\347\257\207\342\200\224\342\200\224\345\261\236\346\200\247props/config.json" new file mode 100644 index 0000000..a69469e --- /dev/null +++ "b/data/3.web\351\253\230\351\230\266/2.vue.js/23.\346\272\220\347\240\201\347\257\207\342\200\224\342\200\224\345\261\236\346\200\247props/config.json" @@ -0,0 +1,43 @@ +{ + "node_id": "569d5e11c4fc5de7844053d9a733c5e8", + "keywords": [], + "children": [ + { + "流程设计": { + "keywords": [], + "children": [] + } + }, + { + "属性name": { + "keywords": [], + "children": [] + } + }, + { + "coerce": { + "keywords": [], + "children": [] + } + }, + { + "type 验证": { + "keywords": [], + "children": [] + } + }, + { + "default": { + "keywords": [], + "children": [] + } + }, + { + "validator": { + "keywords": [], + "children": [] + } + } + ], + "export": [] +} \ No newline at end of file diff --git "a/data/3.web\351\253\230\351\230\266/2.vue.js/24.\346\272\220\347\240\201\347\257\207\342\200\224\342\200\224events/config.json" "b/data/3.web\351\253\230\351\230\266/2.vue.js/24.\346\272\220\347\240\201\347\257\207\342\200\224\342\200\224events/config.json" new file mode 100644 index 0000000..2a9af63 --- /dev/null +++ "b/data/3.web\351\253\230\351\230\266/2.vue.js/24.\346\272\220\347\240\201\347\257\207\342\200\224\342\200\224events/config.json" @@ -0,0 +1,50 @@ +{ + "node_id": "569d5e11c4fc5de7844053d9a733c5e8", + "keywords": [], + "children": [ + { + "events配置是什么": { + "keywords": [], + "children": [] + } + }, + { + "如何配置": { + "keywords": [], + "children": [ + { + "$emit触发": { + "keywords": [], + "children": [] + } + }, + { + "$once 绑定": { + "keywords": [], + "children": [] + } + }, + { + "$off删除": { + "keywords": [], + "children": [] + } + }, + { + "$dispatch派发": { + "keywords": [], + "children": [] + } + }, + { + "$broadcast广播": { + "keywords": [], + "children": [] + } + } + ] + } + } + ], + "export": [] +} \ No newline at end of file diff --git "a/data/3.web\351\253\230\351\230\266/2.vue.js/3.\346\214\207\344\273\244/config.json" "b/data/3.web\351\253\230\351\230\266/2.vue.js/3.\346\214\207\344\273\244/config.json" new file mode 100644 index 0000000..1eef2eb --- /dev/null +++ "b/data/3.web\351\253\230\351\230\266/2.vue.js/3.\346\214\207\344\273\244/config.json" @@ -0,0 +1,123 @@ +{ + "node_id": "569d5e11c4fc5de7844053d9a733c5e8", + "keywords": [], + "children": [ + { + "内部指令": { + "keywords": [], + "children": [ + { + "v-if": { + "keywords": [], + "children": [] + } + }, + { + "v-show": { + "keywords": [], + "children": [] + } + }, + { + "v-else": { + "keywords": [], + "children": [] + } + }, + { + "v-model": { + "keywords": [], + "children": [] + } + }, + { + "v-repeat": { + "keywords": [], + "children": [] + } + }, + { + "v-for": { + "keywords": [], + "children": [] + } + }, + { + "v-text": { + "keywords": [], + "children": [] + } + }, + { + "v-": { + "keywords": [], + "children": [] + } + }, + { + "v-bind": { + "keywords": [], + "children": [] + } + }, + { + "v-on": { + "keywords": [], + "children": [] + } + }, + { + "v-ref": { + "keywords": [], + "children": [] + } + }, + { + "v-el": { + "keywords": [], + "children": [] + } + }, + { + "v-pre": { + "keywords": [], + "children": [] + } + }, + { + "v-cloak": { + "keywords": [], + "children": [] + } + } + ] + } + }, + { + "自定义指令": { + "keywords": [], + "children": [ + { + "基础": { + "keywords": [], + "children": [] + } + }, + { + "高级选项": { + "keywords": [], + "children": [] + } + } + ] + } + }, + { + "内部指令解析": { + "keywords": [], + "children": [] + } + } + ], + "export": [] +} \ No newline at end of file diff --git "a/data/3.web\351\253\230\351\230\266/2.vue.js/4.\350\256\241\347\256\227\345\261\236\346\200\247/config.json" "b/data/3.web\351\253\230\351\230\266/2.vue.js/4.\350\256\241\347\256\227\345\261\236\346\200\247/config.json" new file mode 100644 index 0000000..d2479dd --- /dev/null +++ "b/data/3.web\351\253\230\351\230\266/2.vue.js/4.\350\256\241\347\256\227\345\261\236\346\200\247/config.json" @@ -0,0 +1,38 @@ +{ + "node_id": "569d5e11c4fc5de7844053d9a733c5e8", + "keywords": [], + "children": [ + { + "什么是计算属性": { + "keywords": [], + "children": [] + } + }, + { + "计算属性缓存": { + "keywords": [], + "children": [] + } + }, + { + "常见问题": { + "keywords": [], + "children": [ + { + "计算属性getter不执行的场景": { + "keywords": [], + "children": [] + } + }, + { + "在v-repeat中使用计算属性": { + "keywords": [], + "children": [] + } + } + ] + } + } + ], + "export": [] +} \ No newline at end of file diff --git "a/data/3.web\351\253\230\351\230\266/2.vue.js/5.\350\241\250\345\215\225\346\216\247\344\273\266\347\273\221\345\256\232/config.json" "b/data/3.web\351\253\230\351\230\266/2.vue.js/5.\350\241\250\345\215\225\346\216\247\344\273\266\347\273\221\345\256\232/config.json" new file mode 100644 index 0000000..db2c792 --- /dev/null +++ "b/data/3.web\351\253\230\351\230\266/2.vue.js/5.\350\241\250\345\215\225\346\216\247\344\273\266\347\273\221\345\256\232/config.json" @@ -0,0 +1,94 @@ +{ + "node_id": "569d5e11c4fc5de7844053d9a733c5e8", + "keywords": [], + "children": [ + { + "基本用法": { + "keywords": [], + "children": [ + { + "text": { + "keywords": [], + "children": [] + } + }, + { + "checkbox": { + "keywords": [], + "children": [] + } + }, + { + "radio": { + "keywords": [], + "children": [] + } + }, + { + "select": { + "keywords": [], + "children": [] + } + } + ] + } + }, + { + "值绑定": { + "keywords": [], + "children": [] + } + }, + { + "v-model修饰指令": { + "keywords": [], + "children": [ + { + "lazy": { + "keywords": [], + "children": [] + } + }, + { + "debounce": { + "keywords": [], + "children": [] + } + }, + { + "number": { + "keywords": [], + "children": [] + } + } + ] + } + }, + { + "修饰指令原理": { + "keywords": [], + "children": [ + { + "lazy源码解析": { + "keywords": [], + "children": [] + } + }, + { + "debounce源码解析": { + "keywords": [], + "children": [] + } + }, + { + "number源码解析": { + "keywords": [], + "children": [] + } + } + ] + } + } + ], + "export": [] +} \ No newline at end of file diff --git "a/data/3.web\351\253\230\351\230\266/2.vue.js/6.\350\277\207\346\273\244\345\231\250/config.json" "b/data/3.web\351\253\230\351\230\266/2.vue.js/6.\350\277\207\346\273\244\345\231\250/config.json" new file mode 100644 index 0000000..a9ed5ee --- /dev/null +++ "b/data/3.web\351\253\230\351\230\266/2.vue.js/6.\350\277\207\346\273\244\345\231\250/config.json" @@ -0,0 +1,82 @@ +{ + "node_id": "569d5e11c4fc5de7844053d9a733c5e8", + "keywords": [], + "children": [ + { + "内置过滤器": { + "keywords": [], + "children": [ + { + "字母操作": { + "keywords": [], + "children": [] + } + }, + { + "json过滤器": { + "keywords": [], + "children": [] + } + }, + { + "限制": { + "keywords": [], + "children": [] + } + }, + { + "currency过滤器": { + "keywords": [], + "children": [] + } + }, + { + "debounce过滤器": { + "keywords": [], + "children": [] + } + } + ] + } + }, + { + "自定义过滤器": { + "keywords": [], + "children": [ + { + "fillter语法": { + "keywords": [], + "children": [] + } + }, + { + "教你写一个filter": { + "keywords": [], + "children": [] + } + } + ] + } + }, + { + "源码解析": { + "keywords": [], + "children": [ + { + "管道实现": { + "keywords": [], + "children": [] + } + }, + { + "过滤器解析": { + "keywords": [], + "children": [] + } + } + ] + } + } + ], + "export": [] +} \ No newline at end of file diff --git "a/data/3.web\351\253\230\351\230\266/2.vue.js/7.Class\344\270\216Style\347\273\221\345\256\232/config.json" "b/data/3.web\351\253\230\351\230\266/2.vue.js/7.Class\344\270\216Style\347\273\221\345\256\232/config.json" new file mode 100644 index 0000000..d787d9f --- /dev/null +++ "b/data/3.web\351\253\230\351\230\266/2.vue.js/7.Class\344\270\216Style\347\273\221\345\256\232/config.json" @@ -0,0 +1,51 @@ +{ + "node_id": "569d5e11c4fc5de7844053d9a733c5e8", + "keywords": [], + "children": [ + { + "绑定HTML Class": { + "keywords": [], + "children": [ + { + "对象语法": { + "keywords": [], + "children": [] + } + }, + { + "数组语法": { + "keywords": [], + "children": [] + } + } + ] + } + }, + { + "绑定内联样式": { + "keywords": [], + "children": [ + { + "对象语法": { + "keywords": [], + "children": [] + } + }, + { + "数组语法": { + "keywords": [], + "children": [] + } + }, + { + "自动添加前缀": { + "keywords": [], + "children": [] + } + } + ] + } + } + ], + "export": [] +} \ No newline at end of file diff --git "a/data/3.web\351\253\230\351\230\266/2.vue.js/8.\350\277\207\346\270\241/config.json" "b/data/3.web\351\253\230\351\230\266/2.vue.js/8.\350\277\207\346\270\241/config.json" new file mode 100644 index 0000000..a2cd54b --- /dev/null +++ "b/data/3.web\351\253\230\351\230\266/2.vue.js/8.\350\277\207\346\270\241/config.json" @@ -0,0 +1,56 @@ +{ + "node_id": "569d5e11c4fc5de7844053d9a733c5e8", + "keywords": [], + "children": [ + { + "CSS过渡": { + "keywords": [], + "children": [ + { + "内置Class类名": { + "keywords": [], + "children": [] + } + }, + { + "自定义CSS类名": { + "keywords": [], + "children": [] + } + }, + { + "显式声明CSS过渡类型": { + "keywords": [], + "children": [] + } + }, + { + "动画案例": { + "keywords": [], + "children": [] + } + }, + { + "过渡流程": { + "keywords": [], + "children": [] + } + } + ] + } + }, + { + "JavaScript过渡": { + "keywords": [], + "children": [] + } + }, + { + "渐进过渡": { + "keywords": [], + "children": [] + } + } + ], + "export": [] +} \ No newline at end of file diff --git "a/data/3.web\351\253\230\351\230\266/2.vue.js/9.Method97/config.json" "b/data/3.web\351\253\230\351\230\266/2.vue.js/9.Method97/config.json" new file mode 100644 index 0000000..3dd73c2 --- /dev/null +++ "b/data/3.web\351\253\230\351\230\266/2.vue.js/9.Method97/config.json" @@ -0,0 +1,88 @@ +{ + "node_id": "569d5e11c4fc5de7844053d9a733c5e8", + "keywords": [], + "children": [ + { + "如何绑定事件": { + "keywords": [], + "children": [ + { + "内联方式": { + "keywords": [], + "children": [] + } + }, + { + "methods配置": { + "keywords": [], + "children": [] + } + }, + { + "$events应用": { + "keywords": [], + "children": [] + } + } + ] + } + }, + { + "如何使用修饰符": { + "keywords": [], + "children": [ + { + "prevent": { + "keywords": [], + "children": [] + } + }, + { + "s00": { + "keywords": [], + "children": [] + } + }, + { + "capture": { + "keywords": [], + "children": [] + } + }, + { + "self": { + "keywords": [], + "children": [] + } + }, + { + "按键": { + "keywords": [], + "children": [] + } + } + ] + } + }, + { + "Vue.js 0.12到1.0中的变化": { + "keywords": [], + "children": [ + { + "v-on变更": { + "keywords": [], + "children": [] + } + }, + { + "@click缩写": { + "keywords": [], + "children": [] + } + } + ] + } + } + ], + "export": [] +} \ No newline at end of file diff --git "a/data/3.web\351\253\230\351\230\266/2.vue.js/config.json" "b/data/3.web\351\253\230\351\230\266/2.vue.js/config.json" new file mode 100644 index 0000000..3407cf9 --- /dev/null +++ "b/data/3.web\351\253\230\351\230\266/2.vue.js/config.json" @@ -0,0 +1,4 @@ +{ + "node_id": "569d5e11c4fc5de7844053d9a733c5e8", + "keywords": [] +} \ No newline at end of file diff --git "a/data/3.web\351\253\230\351\230\266/3.angular.js/1.AngularJS\347\256\200\344\273\213/config.json" "b/data/3.web\351\253\230\351\230\266/3.angular.js/1.AngularJS\347\256\200\344\273\213/config.json" new file mode 100644 index 0000000..a841424 --- /dev/null +++ "b/data/3.web\351\253\230\351\230\266/3.angular.js/1.AngularJS\347\256\200\344\273\213/config.json" @@ -0,0 +1,32 @@ +{ + "node_id": "569d5e11c4fc5de7844053d9a733c5e8", + "keywords": [], + "children": [ + { + "搭建AngularJS开发环境": { + "keywords": [], + "children": [ + { + "选择集成开发工具": { + "keywords": [], + "children": [] + } + }, + { + "下载与安装AngularJS": { + "keywords": [], + "children": [] + } + }, + { + "代码调试工具": { + "keywords": [], + "children": [] + } + } + ] + } + } + ], + "export": [] +} \ No newline at end of file diff --git "a/data/3.web\351\253\230\351\230\266/3.angular.js/10.AngularJS\350\277\207\346\273\244\345\231\250/config.json" "b/data/3.web\351\253\230\351\230\266/3.angular.js/10.AngularJS\350\277\207\346\273\244\345\231\250/config.json" new file mode 100644 index 0000000..e886d99 --- /dev/null +++ "b/data/3.web\351\253\230\351\230\266/3.angular.js/10.AngularJS\350\277\207\346\273\244\345\231\250/config.json" @@ -0,0 +1,44 @@ +{ + "node_id": "569d5e11c4fc5de7844053d9a733c5e8", + "keywords": [], + "children": [ + { + "过滤器使用方法": { + "keywords": [], + "children": [] + } + }, + { + "AngularJS内置过滤器": { + "keywords": [], + "children": [] + } + }, + { + "自定义过滤器": { + "keywords": [], + "children": [] + } + }, + { + "第三方过滤器库的使用": { + "keywords": [], + "children": [ + { + "angular-filter": { + "keywords": [], + "children": [] + } + }, + { + "angular-emoji-filter": { + "keywords": [], + "children": [] + } + } + ] + } + } + ], + "export": [] +} \ No newline at end of file diff --git "a/data/3.web\351\253\230\351\230\266/3.angular.js/11.AngularJS\344\270\255\347\232\204\344\276\235\350\265\226\346\263\250\345\205\245/config.json" "b/data/3.web\351\253\230\351\230\266/3.angular.js/11.AngularJS\344\270\255\347\232\204\344\276\235\350\265\226\346\263\250\345\205\245/config.json" new file mode 100644 index 0000000..78b9fb5 --- /dev/null +++ "b/data/3.web\351\253\230\351\230\266/3.angular.js/11.AngularJS\344\270\255\347\232\204\344\276\235\350\265\226\346\263\250\345\205\245/config.json" @@ -0,0 +1,31 @@ +{ + "node_id": "569d5e11c4fc5de7844053d9a733c5e8", + "keywords": [], + "children": [ + { + "依赖注入实现": { + "keywords": [], + "children": [] + } + }, + { + "AngularJS中的依赖注入": { + "keywords": [], + "children": [] + } + }, + { + "$provide服务介绍": { + "keywords": [], + "children": [] + } + }, + { + "$injector服务介绍": { + "keywords": [], + "children": [] + } + } + ], + "export": [] +} \ No newline at end of file diff --git "a/data/3.web\351\253\230\351\230\266/3.angular.js/12.AngularJS\344\270\216\345\212\250\347\224\273/config.json" "b/data/3.web\351\253\230\351\230\266/3.angular.js/12.AngularJS\344\270\216\345\212\250\347\224\273/config.json" new file mode 100644 index 0000000..528b3c3 --- /dev/null +++ "b/data/3.web\351\253\230\351\230\266/3.angular.js/12.AngularJS\344\270\216\345\212\250\347\224\273/config.json" @@ -0,0 +1,81 @@ +{ + "node_id": "569d5e11c4fc5de7844053d9a733c5e8", + "keywords": [], + "children": [ + { + "Web动画实现原理": { + "keywords": [], + "children": [] + } + }, + { + "使用CSS3实现动画": { + "keywords": [], + "children": [ + { + "CSS3中的Transform属性": { + "keywords": [], + "children": [] + } + }, + { + "CSS3中的Transition属性": { + "keywords": [], + "children": [] + } + }, + { + "CSS3中的Animation属性": { + "keywords": [], + "children": [] + } + }, + { + "常用的CSS3动画库": { + "keywords": [], + "children": [] + } + } + ] + } + }, + { + "AngularJS动画": { + "keywords": [], + "children": [ + { + "基于事件驱动的CSS3动画": { + "keywords": [], + "children": [] + } + }, + { + "AngularJS中的动画": { + "keywords": [], + "children": [] + } + }, + { + "ngView视图切换动画案例": { + "keywords": [], + "children": [] + } + }, + { + "ngAnimate与CSS3动画库整合": { + "keywords": [], + "children": [] + } + }, + { + "ngFx动画扩展库": { + "keywords": [], + "children": [] + } + } + ] + } + } + ], + "export": [] +} \ No newline at end of file diff --git "a/data/3.web\351\253\230\351\230\266/3.angular.js/13.Cookie\350\257\273\345\206\231/config.json" "b/data/3.web\351\253\230\351\230\266/3.angular.js/13.Cookie\350\257\273\345\206\231/config.json" new file mode 100644 index 0000000..b8a852d --- /dev/null +++ "b/data/3.web\351\253\230\351\230\266/3.angular.js/13.Cookie\350\257\273\345\206\231/config.json" @@ -0,0 +1,25 @@ +{ + "node_id": "569d5e11c4fc5de7844053d9a733c5e8", + "keywords": [], + "children": [ + { + "Cookie简介": { + "keywords": [], + "children": [] + } + }, + { + "在中操作Cookie": { + "keywords": [], + "children": [] + } + }, + { + "在AngularJS中操作Cookie": { + "keywords": [], + "children": [] + } + } + ], + "export": [] +} \ No newline at end of file diff --git "a/data/3.web\351\253\230\351\230\266/3.angular.js/14.Promise/config.json" "b/data/3.web\351\253\230\351\230\266/3.angular.js/14.Promise/config.json" new file mode 100644 index 0000000..05db43e --- /dev/null +++ "b/data/3.web\351\253\230\351\230\266/3.angular.js/14.Promise/config.json" @@ -0,0 +1,50 @@ +{ + "node_id": "569d5e11c4fc5de7844053d9a733c5e8", + "keywords": [], + "children": [ + { + "AngularJS中的Promise机制": { + "keywords": [], + "children": [] + } + }, + { + "AngularJS请求Web服务": { + "keywords": [], + "children": [ + { + "$http服务": { + "keywords": [], + "children": [] + } + }, + { + "使用Express构建RESTful服务": { + "keywords": [], + "children": [] + } + }, + { + "$resource服务": { + "keywords": [], + "children": [] + } + } + ] + } + }, + { + "AngularJS文件上传": { + "keywords": [], + "children": [] + } + }, + { + "Angular File Upload模块介绍": { + "keywords": [], + "children": [] + } + } + ], + "export": [] +} \ No newline at end of file diff --git "a/data/3.web\351\253\230\351\230\266/3.angular.js/15.AngularUI/config.json" "b/data/3.web\351\253\230\351\230\266/3.angular.js/15.AngularUI/config.json" new file mode 100644 index 0000000..cecec7d --- /dev/null +++ "b/data/3.web\351\253\230\351\230\266/3.angular.js/15.AngularUI/config.json" @@ -0,0 +1,68 @@ +{ + "node_id": "569d5e11c4fc5de7844053d9a733c5e8", + "keywords": [], + "children": [ + { + "UI Bootstrap": { + "keywords": [], + "children": [ + { + "警告框案例": { + "keywords": [], + "children": [] + } + }, + { + "复选框案例": { + "keywords": [], + "children": [] + } + }, + { + "日历控件案例": { + "keywords": [], + "children": [] + } + }, + { + "模态对话框案例": { + "keywords": [], + "children": [] + } + }, + { + "下拉菜单案例": { + "keywords": [], + "children": [] + } + } + ] + } + }, + { + "UI Ace": { + "keywords": [], + "children": [] + } + }, + { + "UI Grid": { + "keywords": [], + "children": [] + } + }, + { + "UI Date": { + "keywords": [], + "children": [] + } + }, + { + "UI Select": { + "keywords": [], + "children": [] + } + } + ], + "export": [] +} \ No newline at end of file diff --git "a/data/3.web\351\253\230\351\230\266/3.angular.js/16.AngularJS\347\262\276\345\215\216\346\211\251\345\261\225/config.json" "b/data/3.web\351\253\230\351\230\266/3.angular.js/16.AngularJS\347\262\276\345\215\216\346\211\251\345\261\225/config.json" new file mode 100644 index 0000000..157e96a --- /dev/null +++ "b/data/3.web\351\253\230\351\230\266/3.angular.js/16.AngularJS\347\262\276\345\215\216\346\211\251\345\261\225/config.json" @@ -0,0 +1,50 @@ +{ + "node_id": "569d5e11c4fc5de7844053d9a733c5e8", + "keywords": [], + "children": [ + { + "利用Angular": { + "keywords": [], + "children": [ + { + "柱状图案例": { + "keywords": [], + "children": [] + } + }, + { + "曲线图案例": { + "keywords": [], + "children": [] + } + }, + { + "饼状图案例": { + "keywords": [], + "children": [] + } + } + ] + } + }, + { + "利用Videogular实现播放器": { + "keywords": [], + "children": [] + } + }, + { + "利用Angular Chart生成图表": { + "keywords": [], + "children": [] + } + }, + { + "利用ngDialog实现对话框": { + "keywords": [], + "children": [] + } + } + ], + "export": [] +} \ No newline at end of file diff --git "a/data/3.web\351\253\230\351\230\266/3.angular.js/2.\345\217\214\345\220\221\346\225\260\346\215\256\347\273\221\345\256\232/config.json" "b/data/3.web\351\253\230\351\230\266/3.angular.js/2.\345\217\214\345\220\221\346\225\260\346\215\256\347\273\221\345\256\232/config.json" new file mode 100644 index 0000000..e9863b4 --- /dev/null +++ "b/data/3.web\351\253\230\351\230\266/3.angular.js/2.\345\217\214\345\220\221\346\225\260\346\215\256\347\273\221\345\256\232/config.json" @@ -0,0 +1,25 @@ +{ + "node_id": "569d5e11c4fc5de7844053d9a733c5e8", + "keywords": [], + "children": [ + { + "AngularJS双向数据绑定": { + "keywords": [], + "children": [] + } + }, + { + "ng-model指令": { + "keywords": [], + "children": [] + } + }, + { + "ng-bind指令": { + "keywords": [], + "children": [] + } + } + ], + "export": [] +} \ No newline at end of file diff --git "a/data/3.web\351\253\230\351\230\266/3.angular.js/3.AngularJS\344\270\216MVC/config.json" "b/data/3.web\351\253\230\351\230\266/3.angular.js/3.AngularJS\344\270\216MVC/config.json" new file mode 100644 index 0000000..8cb187b --- /dev/null +++ "b/data/3.web\351\253\230\351\230\266/3.angular.js/3.AngularJS\344\270\216MVC/config.json" @@ -0,0 +1,50 @@ +{ + "node_id": "569d5e11c4fc5de7844053d9a733c5e8", + "keywords": [], + "children": [ + { + "MVC模式简介": { + "keywords": [], + "children": [] + } + }, + { + "AngularJS中的MVC": { + "keywords": [], + "children": [ + { + "AngularJS控制器的定义": { + "keywords": [], + "children": [] + } + }, + { + "控制器对象的实例化": { + "keywords": [], + "children": [] + } + } + ] + } + }, + { + "使用MVC思想重构价格计算器程序": { + "keywords": [], + "children": [] + } + }, + { + "控制器的作用域范围": { + "keywords": [], + "children": [] + } + }, + { + "控制器中处理DOM事件": { + "keywords": [], + "children": [] + } + } + ], + "export": [] +} \ No newline at end of file diff --git "a/data/3.web\351\253\230\351\230\266/3.angular.js/4.\345\272\224\347\224\250\346\250\241\345\235\227\345\214\226/config.json" "b/data/3.web\351\253\230\351\230\266/3.angular.js/4.\345\272\224\347\224\250\346\250\241\345\235\227\345\214\226/config.json" new file mode 100644 index 0000000..2339d85 --- /dev/null +++ "b/data/3.web\351\253\230\351\230\266/3.angular.js/4.\345\272\224\347\224\250\346\250\241\345\235\227\345\214\226/config.json" @@ -0,0 +1,32 @@ +{ + "node_id": "569d5e11c4fc5de7844053d9a733c5e8", + "keywords": [], + "children": [ + { + "应用模块划分的重要性": { + "keywords": [], + "children": [] + } + }, + { + "AngularJS中的模块": { + "keywords": [], + "children": [ + { + "AngularJS模块的定义": { + "keywords": [], + "children": [] + } + }, + { + "使用模块解决命名冲突问题": { + "keywords": [], + "children": [] + } + } + ] + } + } + ], + "export": [] +} \ No newline at end of file diff --git "a/data/3.web\351\253\230\351\230\266/3.angular.js/5.\344\275\234\347\224\250\345\237\237\344\270\216\344\272\213\344\273\266/config.json" "b/data/3.web\351\253\230\351\230\266/3.angular.js/5.\344\275\234\347\224\250\345\237\237\344\270\216\344\272\213\344\273\266/config.json" new file mode 100644 index 0000000..0a467fe --- /dev/null +++ "b/data/3.web\351\253\230\351\230\266/3.angular.js/5.\344\275\234\347\224\250\345\237\237\344\270\216\344\272\213\344\273\266/config.json" @@ -0,0 +1,94 @@ +{ + "node_id": "569d5e11c4fc5de7844053d9a733c5e8", + "keywords": [], + "children": [ + { + "AngularJS作用域详解": { + "keywords": [], + "children": [] + } + }, + { + "AngularJS作用域继承": { + "keywords": [], + "children": [ + { + "对象继承机制": { + "keywords": [], + "children": [] + } + }, + { + "AngularJS作用域对象原型继承": { + "keywords": [], + "children": [] + } + } + ] + } + }, + { + "作用域高级特性": { + "keywords": [], + "children": [ + { + "$watch方法监视作用域": { + "keywords": [], + "children": [] + } + }, + { + "作用域监视解除": { + "keywords": [], + "children": [] + } + }, + { + "$apply方法与$digest循环": { + "keywords": [], + "children": [] + } + }, + { + "$apply与$digest应用实战": { + "keywords": [], + "children": [] + } + }, + { + "$timeout与$interval服务介绍": { + "keywords": [], + "children": [] + } + } + ] + } + }, + { + "作用域事件路由与广播": { + "keywords": [], + "children": [ + { + "$emit方法实现事件路由": { + "keywords": [], + "children": [] + } + }, + { + "$broadcast方法实现事件广播": { + "keywords": [], + "children": [] + } + }, + { + "作用域对象$on方法详解": { + "keywords": [], + "children": [] + } + } + ] + } + } + ], + "export": [] +} \ No newline at end of file diff --git "a/data/3.web\351\253\230\351\230\266/3.angular.js/6.\350\267\257\347\224\261\344\270\216\345\244\232\350\247\206\345\233\276/config.json" "b/data/3.web\351\253\230\351\230\266/3.angular.js/6.\350\267\257\347\224\261\344\270\216\345\244\232\350\247\206\345\233\276/config.json" new file mode 100644 index 0000000..efa6bcb --- /dev/null +++ "b/data/3.web\351\253\230\351\230\266/3.angular.js/6.\350\267\257\347\224\261\344\270\216\345\244\232\350\247\206\345\233\276/config.json" @@ -0,0 +1,81 @@ +{ + "node_id": "569d5e11c4fc5de7844053d9a733c5e8", + "keywords": [], + "children": [ + { + "创建多视图应用": { + "keywords": [], + "children": [ + { + "使用$routeProvider创建映射": { + "keywords": [], + "children": [] + } + }, + { + "创建多视图": { + "keywords": [], + "children": [] + } + }, + { + "通过路由切换视图": { + "keywords": [], + "children": [] + } + } + ] + } + }, + { + "通过URL向控制器传递参数": { + "keywords": [], + "children": [] + } + }, + { + "ng-template指令的使用": { + "keywords": [], + "children": [] + } + }, + { + "$location服务": { + "keywords": [], + "children": [] + } + }, + { + "$location实现多视图切换": { + "keywords": [], + "children": [] + } + }, + { + "路由事件": { + "keywords": [], + "children": [] + } + }, + { + "ng-include指令": { + "keywords": [], + "children": [] + } + }, + { + "UI Router框架使用": { + "keywords": [], + "children": [ + { + "UI Router下载与安装": { + "keywords": [], + "children": [] + } + } + ] + } + } + ], + "export": [] +} \ No newline at end of file diff --git "a/data/3.web\351\253\230\351\230\266/3.angular.js/7.AngularJS\350\241\250\345\215\225\346\240\241\351\252\214/config.json" "b/data/3.web\351\253\230\351\230\266/3.angular.js/7.AngularJS\350\241\250\345\215\225\346\240\241\351\252\214/config.json" new file mode 100644 index 0000000..b944396 --- /dev/null +++ "b/data/3.web\351\253\230\351\230\266/3.angular.js/7.AngularJS\350\241\250\345\215\225\346\240\241\351\252\214/config.json" @@ -0,0 +1,25 @@ +{ + "node_id": "569d5e11c4fc5de7844053d9a733c5e8", + "keywords": [], + "children": [ + { + "Web前端表单校验的必要性": { + "keywords": [], + "children": [] + } + }, + { + "AngularJS表单校验模式": { + "keywords": [], + "children": [] + } + }, + { + "ngMessages模块": { + "keywords": [], + "children": [] + } + } + ], + "export": [] +} \ No newline at end of file diff --git "a/data/3.web\351\253\230\351\230\266/3.angular.js/8.AngularJS\346\214\207\344\273\244/config.json" "b/data/3.web\351\253\230\351\230\266/3.angular.js/8.AngularJS\346\214\207\344\273\244/config.json" new file mode 100644 index 0000000..0277516 --- /dev/null +++ "b/data/3.web\351\253\230\351\230\266/3.angular.js/8.AngularJS\346\214\207\344\273\244/config.json" @@ -0,0 +1,68 @@ +{ + "node_id": "569d5e11c4fc5de7844053d9a733c5e8", + "keywords": [], + "children": [ + { + "内置指令详解": { + "keywords": [], + "children": [] + } + }, + { + "AngularJS自定义指令": { + "keywords": [], + "children": [] + } + }, + { + "指令定义对象详解": { + "keywords": [], + "children": [ + { + "link方法": { + "keywords": [], + "children": [] + } + }, + { + "compile方法": { + "keywords": [], + "children": [] + } + }, + { + "scope属性与指令作用域": { + "keywords": [], + "children": [] + } + }, + { + "孤立作用域与父作用域模型数据绑定": { + "keywords": [], + "children": [] + } + }, + { + "Transclusion": { + "keywords": [], + "children": [] + } + }, + { + "controller方法与require属性": { + "keywords": [], + "children": [] + } + } + ] + } + }, + { + "自定义表单验证模式": { + "keywords": [], + "children": [] + } + } + ], + "export": [] +} \ No newline at end of file diff --git "a/data/3.web\351\253\230\351\230\266/3.angular.js/9.Service\343\200\201Factory\344\270\216Provider/config.json" "b/data/3.web\351\253\230\351\230\266/3.angular.js/9.Service\343\200\201Factory\344\270\216Provider/config.json" new file mode 100644 index 0000000..bfedad1 --- /dev/null +++ "b/data/3.web\351\253\230\351\230\266/3.angular.js/9.Service\343\200\201Factory\344\270\216Provider/config.json" @@ -0,0 +1,31 @@ +{ + "node_id": "569d5e11c4fc5de7844053d9a733c5e8", + "keywords": [], + "children": [ + { + "Service": { + "keywords": [], + "children": [] + } + }, + { + "Factory": { + "keywords": [], + "children": [] + } + }, + { + "Provider": { + "keywords": [], + "children": [] + } + }, + { + "Value&Constant": { + "keywords": [], + "children": [] + } + } + ], + "export": [] +} \ No newline at end of file diff --git "a/data/3.web\351\253\230\351\230\266/3.angular.js/config.json" "b/data/3.web\351\253\230\351\230\266/3.angular.js/config.json" new file mode 100644 index 0000000..3407cf9 --- /dev/null +++ "b/data/3.web\351\253\230\351\230\266/3.angular.js/config.json" @@ -0,0 +1,4 @@ +{ + "node_id": "569d5e11c4fc5de7844053d9a733c5e8", + "keywords": [] +} \ No newline at end of file diff --git "a/data/3.web\351\253\230\351\230\266/4.react.js/1.React\347\256\200\344\273\213/config.json" "b/data/3.web\351\253\230\351\230\266/4.react.js/1.React\347\256\200\344\273\213/config.json" new file mode 100644 index 0000000..dc57169 --- /dev/null +++ "b/data/3.web\351\253\230\351\230\266/4.react.js/1.React\347\256\200\344\273\213/config.json" @@ -0,0 +1,86 @@ +{ + "node_id": "569d5e11c4fc5de7844053d9a733c5e8", + "keywords": [], + "children": [ + { + "React概述": { + "keywords": [], + "children": [] + } + }, + { + "React优势": { + "keywords": [], + "children": [] + } + }, + { + "第一个React应用": { + "keywords": [], + "children": [] + } + }, + { + "React脚手架": { + "keywords": [], + "children": [ + { + "关于React脚手架": { + "keywords": [], + "children": [] + } + }, + { + "Node.js与npm": { + "keywords": [], + "children": [] + } + }, + { + "Webpack模块打包器": { + "keywords": [], + "children": [] + } + }, + { + "ES6和Babel": { + "keywords": [], + "children": [] + } + }, + { + "使用create-react-app脚手架开发第一个应用": { + "keywords": [], + "children": [] + } + }, + { + "React项目架构": { + "keywords": [], + "children": [] + } + } + ] + } + }, + { + "React虚拟DOM": { + "keywords": [], + "children": [] + } + }, + { + "JSX简单入门": { + "keywords": [], + "children": [] + } + }, + { + "React渲染机制": { + "keywords": [], + "children": [] + } + } + ], + "export": [] +} \ No newline at end of file diff --git "a/data/3.web\351\253\230\351\230\266/4.react.js/10.\347\212\266\346\200\201\346\217\220\345\215\207/config.json" "b/data/3.web\351\253\230\351\230\266/4.react.js/10.\347\212\266\346\200\201\346\217\220\345\215\207/config.json" new file mode 100644 index 0000000..2b75bd1 --- /dev/null +++ "b/data/3.web\351\253\230\351\230\266/4.react.js/10.\347\212\266\346\200\201\346\217\220\345\215\207/config.json" @@ -0,0 +1,49 @@ +{ + "node_id": "569d5e11c4fc5de7844053d9a733c5e8", + "keywords": [], + "children": [ + { + "设计构想": { + "keywords": [], + "children": [] + } + }, + { + "实现水温监控功能": { + "keywords": [], + "children": [] + } + }, + { + "加入第二个水温输入框": { + "keywords": [], + "children": [] + } + }, + { + "同步二个水温输入框": { + "keywords": [], + "children": [] + } + }, + { + "将水温“状态共享”": { + "keywords": [], + "children": [] + } + }, + { + "将水温“状态提升”": { + "keywords": [], + "children": [] + } + }, + { + "实现水温同步换算": { + "keywords": [], + "children": [] + } + } + ], + "export": [] +} \ No newline at end of file diff --git "a/data/3.web\351\253\230\351\230\266/4.react.js/11.React\346\211\251\345\261\225/config.json" "b/data/3.web\351\253\230\351\230\266/4.react.js/11.React\346\211\251\345\261\225/config.json" new file mode 100644 index 0000000..619569c --- /dev/null +++ "b/data/3.web\351\253\230\351\230\266/4.react.js/11.React\346\211\251\345\261\225/config.json" @@ -0,0 +1,49 @@ +{ + "node_id": "569d5e11c4fc5de7844053d9a733c5e8", + "keywords": [], + "children": [ + { + "Node.js与React": { + "keywords": [], + "children": [] + } + }, + { + "Babel与React": { + "keywords": [], + "children": [] + } + }, + { + "Webpack模块打包器": { + "keywords": [], + "children": [] + } + }, + { + "Node+Babel+Webpack搭建React环境": { + "keywords": [], + "children": [] + } + }, + { + "Browserify模块打包器": { + "keywords": [], + "children": [] + } + }, + { + "React Router与单页面应用": { + "keywords": [], + "children": [] + } + }, + { + "Redux与React": { + "keywords": [], + "children": [] + } + } + ], + "export": [] +} \ No newline at end of file diff --git "a/data/3.web\351\253\230\351\230\266/4.react.js/2.React JSX/config.json" "b/data/3.web\351\253\230\351\230\266/4.react.js/2.React JSX/config.json" new file mode 100644 index 0000000..d448370 --- /dev/null +++ "b/data/3.web\351\253\230\351\230\266/4.react.js/2.React JSX/config.json" @@ -0,0 +1,73 @@ +{ + "node_id": "569d5e11c4fc5de7844053d9a733c5e8", + "keywords": [], + "children": [ + { + "JSX介绍": { + "keywords": [], + "children": [] + } + }, + { + "JSX独立文件": { + "keywords": [], + "children": [] + } + }, + { + "JSX算术表达式": { + "keywords": [], + "children": [] + } + }, + { + "JSX条件表达式": { + "keywords": [], + "children": [] + } + }, + { + "JSX嵌入表达式": { + "keywords": [], + "children": [] + } + }, + { + "JSX对象表达式": { + "keywords": [], + "children": [] + } + }, + { + "JSX函数表达式": { + "keywords": [], + "children": [] + } + }, + { + "JSX增强函数表达式": { + "keywords": [], + "children": [] + } + }, + { + "JSX数组表达式": { + "keywords": [], + "children": [] + } + }, + { + "JSX样式表达式": { + "keywords": [], + "children": [] + } + }, + { + "JSX注释表达式": { + "keywords": [], + "children": [] + } + } + ], + "export": [] +} \ No newline at end of file diff --git "a/data/3.web\351\253\230\351\230\266/4.react.js/3.React\347\273\204\344\273\266\344\270\216Props/config.json" "b/data/3.web\351\253\230\351\230\266/4.react.js/3.React\347\273\204\344\273\266\344\270\216Props/config.json" new file mode 100644 index 0000000..a8560e1 --- /dev/null +++ "b/data/3.web\351\253\230\351\230\266/4.react.js/3.React\347\273\204\344\273\266\344\270\216Props/config.json" @@ -0,0 +1,61 @@ +{ + "node_id": "569d5e11c4fc5de7844053d9a733c5e8", + "keywords": [], + "children": [ + { + "React组件介绍": { + "keywords": [], + "children": [] + } + }, + { + "React函数组件": { + "keywords": [], + "children": [] + } + }, + { + "React类组件": { + "keywords": [], + "children": [] + } + }, + { + "React组合组件": { + "keywords": [], + "children": [] + } + }, + { + "React Props介绍": { + "keywords": [], + "children": [] + } + }, + { + "React Props应用": { + "keywords": [], + "children": [] + } + }, + { + "React Props只读性": { + "keywords": [], + "children": [] + } + }, + { + "React Props默认值": { + "keywords": [], + "children": [] + } + }, + { + "React组件切分与提取": { + "keywords": [], + "children": [] + } + } + ], + "export": [] +} \ No newline at end of file diff --git "a/data/3.web\351\253\230\351\230\266/4.react.js/4.React State\344\270\216\347\224\237\345\221\275\345\221\250\346\234\237/config.json" "b/data/3.web\351\253\230\351\230\266/4.react.js/4.React State\344\270\216\347\224\237\345\221\275\345\221\250\346\234\237/config.json" new file mode 100644 index 0000000..4eb0119 --- /dev/null +++ "b/data/3.web\351\253\230\351\230\266/4.react.js/4.React State\344\270\216\347\224\237\345\221\275\345\221\250\346\234\237/config.json" @@ -0,0 +1,67 @@ +{ + "node_id": "569d5e11c4fc5de7844053d9a733c5e8", + "keywords": [], + "children": [ + { + "React State介绍": { + "keywords": [], + "children": [] + } + }, + { + "关于定时器时钟的思考": { + "keywords": [], + "children": [] + } + }, + { + "开始封装时钟UI": { + "keywords": [], + "children": [] + } + }, + { + "实现时钟UI的自动更新": { + "keywords": [], + "children": [] + } + }, + { + "自我更新的时钟UI类": { + "keywords": [], + "children": [] + } + }, + { + "在时钟组件类中引入State状态": { + "keywords": [], + "children": [] + } + }, + { + "React生命周期介绍": { + "keywords": [], + "children": [] + } + }, + { + "在时钟组件类中使用生命周期": { + "keywords": [], + "children": [] + } + }, + { + "正确的使用State状态": { + "keywords": [], + "children": [] + } + }, + { + "自顶向下的数据流": { + "keywords": [], + "children": [] + } + } + ], + "export": [] +} \ No newline at end of file diff --git "a/data/3.web\351\253\230\351\230\266/4.react.js/5.React\344\272\213\344\273\266\345\244\204\347\220\206/config.json" "b/data/3.web\351\253\230\351\230\266/4.react.js/5.React\344\272\213\344\273\266\345\244\204\347\220\206/config.json" new file mode 100644 index 0000000..5d943a7 --- /dev/null +++ "b/data/3.web\351\253\230\351\230\266/4.react.js/5.React\344\272\213\344\273\266\345\244\204\347\220\206/config.json" @@ -0,0 +1,61 @@ +{ + "node_id": "569d5e11c4fc5de7844053d9a733c5e8", + "keywords": [], + "children": [ + { + "React事件介绍": { + "keywords": [], + "children": [] + } + }, + { + "React单击事件": { + "keywords": [], + "children": [] + } + }, + { + "React阻止事件默认行为": { + "keywords": [], + "children": [] + } + }, + { + "React类的事件处理方法": { + "keywords": [], + "children": [] + } + }, + { + "绑定回调方法的其他方式": { + "keywords": [], + "children": [] + } + }, + { + "在事件处理方法中传递参数": { + "keywords": [], + "children": [] + } + }, + { + "实战:开关按钮": { + "keywords": [], + "children": [] + } + }, + { + "React文本框事件": { + "keywords": [], + "children": [] + } + }, + { + "实战:水温监控控件": { + "keywords": [], + "children": [] + } + } + ], + "export": [] +} \ No newline at end of file diff --git "a/data/3.web\351\253\230\351\230\266/4.react.js/6.React\346\235\241\344\273\266\346\270\262\346\237\223/config.json" "b/data/3.web\351\253\230\351\230\266/4.react.js/6.React\346\235\241\344\273\266\346\270\262\346\237\223/config.json" new file mode 100644 index 0000000..06edda7 --- /dev/null +++ "b/data/3.web\351\253\230\351\230\266/4.react.js/6.React\346\235\241\344\273\266\346\270\262\346\237\223/config.json" @@ -0,0 +1,49 @@ +{ + "node_id": "569d5e11c4fc5de7844053d9a733c5e8", + "keywords": [], + "children": [ + { + "React条件渲染介绍": { + "keywords": [], + "children": [] + } + }, + { + "元素变量的条件渲染": { + "keywords": [], + "children": [] + } + }, + { + "逻辑“与”运算符的条件渲染": { + "keywords": [], + "children": [] + } + }, + { + "逻辑“或”运算符的条件渲染": { + "keywords": [], + "children": [] + } + }, + { + "三元逻辑表达式的条件渲染": { + "keywords": [], + "children": [] + } + }, + { + "实战:改进登录组件": { + "keywords": [], + "children": [] + } + }, + { + "阻止组件渲染": { + "keywords": [], + "children": [] + } + } + ], + "export": [] +} \ No newline at end of file diff --git "a/data/3.web\351\253\230\351\230\266/4.react.js/7.React\345\210\227\350\241\250\344\270\216Key/config.json" "b/data/3.web\351\253\230\351\230\266/4.react.js/7.React\345\210\227\350\241\250\344\270\216Key/config.json" new file mode 100644 index 0000000..5f98e20 --- /dev/null +++ "b/data/3.web\351\253\230\351\230\266/4.react.js/7.React\345\210\227\350\241\250\344\270\216Key/config.json" @@ -0,0 +1,55 @@ +{ + "node_id": "569d5e11c4fc5de7844053d9a733c5e8", + "keywords": [], + "children": [ + { + "React列表介绍": { + "keywords": [], + "children": [] + } + }, + { + "基础列表组件": { + "keywords": [], + "children": [] + } + }, + { + "多级列表组件": { + "keywords": [], + "children": [] + } + }, + { + "React Key介绍": { + "keywords": [], + "children": [] + } + }, + { + "React Key使用": { + "keywords": [], + "children": [] + } + }, + { + "React通过Key提取组件": { + "keywords": [], + "children": [] + } + }, + { + "React Key局部唯一性": { + "keywords": [], + "children": [] + } + }, + { + "React Key有效性": { + "keywords": [], + "children": [] + } + } + ], + "export": [] +} \ No newline at end of file diff --git "a/data/3.web\351\253\230\351\230\266/4.react.js/8.React\350\241\250\345\215\225/config.json" "b/data/3.web\351\253\230\351\230\266/4.react.js/8.React\350\241\250\345\215\225/config.json" new file mode 100644 index 0000000..1943657 --- /dev/null +++ "b/data/3.web\351\253\230\351\230\266/4.react.js/8.React\350\241\250\345\215\225/config.json" @@ -0,0 +1,73 @@ +{ + "node_id": "569d5e11c4fc5de7844053d9a733c5e8", + "keywords": [], + "children": [ + { + "React表单介绍": { + "keywords": [], + "children": [] + } + }, + { + "表单受控组件": { + "keywords": [], + "children": [] + } + }, + { + "强制转换大写字母": { + "keywords": [], + "children": [] + } + }, + { + "校验手机号码格式": { + "keywords": [], + "children": [] + } + }, + { + "格式化序列号": { + "keywords": [], + "children": [] + } + }, + { + "文本域关键字": { + "keywords": [], + "children": [] + } + }, + { + "下拉列表受控组件": { + "keywords": [], + "children": [] + } + }, + { + "处理多个输入": { + "keywords": [], + "children": [] + } + }, + { + "React表单提交操作": { + "keywords": [], + "children": [] + } + }, + { + "React表单提交服务器": { + "keywords": [], + "children": [] + } + }, + { + "受控组件与非受控组件": { + "keywords": [], + "children": [] + } + } + ], + "export": [] +} \ No newline at end of file diff --git "a/data/3.web\351\253\230\351\230\266/4.react.js/9.\347\273\204\345\220\210\344\270\216\347\273\247\346\211\277/config.json" "b/data/3.web\351\253\230\351\230\266/4.react.js/9.\347\273\204\345\220\210\344\270\216\347\273\247\346\211\277/config.json" new file mode 100644 index 0000000..70afa74 --- /dev/null +++ "b/data/3.web\351\253\230\351\230\266/4.react.js/9.\347\273\204\345\220\210\344\270\216\347\273\247\346\211\277/config.json" @@ -0,0 +1,43 @@ +{ + "node_id": "569d5e11c4fc5de7844053d9a733c5e8", + "keywords": [], + "children": [ + { + "组合与继承概述": { + "keywords": [], + "children": [] + } + }, + { + "定义组件容器": { + "keywords": [], + "children": [] + } + }, + { + "定义子组件": { + "keywords": [], + "children": [] + } + }, + { + "自定义Props属性": { + "keywords": [], + "children": [] + } + }, + { + "特例关系组合": { + "keywords": [], + "children": [] + } + }, + { + "类组合方式确认框": { + "keywords": [], + "children": [] + } + } + ], + "export": [] +} \ No newline at end of file diff --git "a/data/3.web\351\253\230\351\230\266/4.react.js/config.json" "b/data/3.web\351\253\230\351\230\266/4.react.js/config.json" new file mode 100644 index 0000000..3407cf9 --- /dev/null +++ "b/data/3.web\351\253\230\351\230\266/4.react.js/config.json" @@ -0,0 +1,4 @@ +{ + "node_id": "569d5e11c4fc5de7844053d9a733c5e8", + "keywords": [] +} \ No newline at end of file diff --git "a/data/3.web\351\253\230\351\230\266/5.\345\260\217\347\250\213\345\272\217\345\274\200\345\217\221/1.\345\276\256\344\277\241\345\260\217\347\250\213\345\272\217/config.json" "b/data/3.web\351\253\230\351\230\266/5.\345\260\217\347\250\213\345\272\217\345\274\200\345\217\221/1.\345\276\256\344\277\241\345\260\217\347\250\213\345\272\217/config.json" new file mode 100644 index 0000000..163cc75 --- /dev/null +++ "b/data/3.web\351\253\230\351\230\266/5.\345\260\217\347\250\213\345\272\217\345\274\200\345\217\221/1.\345\276\256\344\277\241\345\260\217\347\250\213\345\272\217/config.json" @@ -0,0 +1,178 @@ +{ + "node_id": "569d5e11c4fc5de7844053d9a733c5e8", + "keywords": [], + "children": [ + { + "申请小程序账号": { + "keywords": [], + "children": [] + } + }, + { + "微信开发者工具": { + "keywords": [], + "children": [] + } + }, + { + "上传开发版小程序": { + "keywords": [], + "children": [] + } + }, + { + "项目结构概述": { + "keywords": [], + "children": [] + } + }, + { + "小程序配置": { + "keywords": [], + "children": [ + { + "全局配置": { + "keywords": [], + "children": [] + } + }, + { + "低版本兼容": { + "keywords": [], + "children": [] + } + }, + { + "pages属性": { + "keywords": [], + "children": [] + } + }, + { + "window属性": { + "keywords": [], + "children": [] + } + }, + { + "tabBar属性": { + "keywords": [], + "children": [] + } + }, + { + "networkTimeout属性": { + "keywords": [], + "children": [] + } + }, + { + "debug属性": { + "keywords": [], + "children": [] + } + }, + { + "其他属性": { + "keywords": [], + "children": [] + } + }, + { + "页面配置": { + "keywords": [], + "children": [] + } + } + ] + } + }, + { + "WXML和WXSS文件--小程序视图": { + "keywords": [], + "children": [ + { + "认识WXML": { + "keywords": [], + "children": [] + } + }, + { + "认识WXSS": { + "keywords": [], + "children": [] + } + }, + { + "容器组件view与弹性布局": { + "keywords": [], + "children": [] + } + }, + { + "盒模型": { + "keywords": [], + "children": [] + } + }, + { + "块级元素与行内元素": { + "keywords": [], + "children": [] + } + }, + { + "尺寸单位": { + "keywords": [], + "children": [] + } + }, + { + "平台差异与样式补全": { + "keywords": [], + "children": [] + } + } + ] + } + }, + { + "JS文件--小程序的逻辑": { + "keywords": [], + "children": [ + { + "App注册": { + "keywords": [], + "children": [] + } + }, + { + "Page注册": { + "keywords": [], + "children": [] + } + }, + { + "将数据显示在视图中": { + "keywords": [], + "children": [] + } + }, + { + "页面组件事件处理": { + "keywords": [], + "children": [] + } + }, + { + "小程序API": { + "keywords": [], + "children": [] + } + } + ] + } + } + ], + "export": [] +} \ No newline at end of file diff --git "a/data/3.web\351\253\230\351\230\266/5.\345\260\217\347\250\213\345\272\217\345\274\200\345\217\221/2.\346\224\257\344\273\230\345\256\235\345\260\217\347\250\213\345\272\217/config.json" "b/data/3.web\351\253\230\351\230\266/5.\345\260\217\347\250\213\345\272\217\345\274\200\345\217\221/2.\346\224\257\344\273\230\345\256\235\345\260\217\347\250\213\345\272\217/config.json" new file mode 100644 index 0000000..abaa260 --- /dev/null +++ "b/data/3.web\351\253\230\351\230\266/5.\345\260\217\347\250\213\345\272\217\345\274\200\345\217\221/2.\346\224\257\344\273\230\345\256\235\345\260\217\347\250\213\345\272\217/config.json" @@ -0,0 +1,756 @@ +{ + "node_id": "569d5e11c4fc5de7844053d9a733c5e8", + "keywords": [], + "children": [ + { + "程序概述": { + "keywords": [], + "children": [ + { + "小程序介绍": { + "keywords": [], + "children": [ + { + "历史背景": { + "keywords": [], + "children": [] + } + }, + { + "应用场景": { + "keywords": [], + "children": [] + } + }, + { + "小程序的影响": { + "keywords": [], + "children": [] + } + }, + { + "技能要求": { + "keywords": [], + "children": [] + } + }, + { + "小程序入口": { + "keywords": [], + "children": [] + } + }, + { + "小程序开放能力": { + "keywords": [], + "children": [] + } + } + ] + } + }, + { + "如何开始": { + "keywords": [], + "children": [ + { + "成为蚂蚁金服开放平台开发者": { + "keywords": [], + "children": [] + } + }, + { + "身份角色的入驻": { + "keywords": [], + "children": [] + } + }, + { + "创建小程序": { + "keywords": [], + "children": [] + } + }, + { + "小程序设置": { + "keywords": [], + "children": [] + } + } + ] + } + } + ] + } + }, + { + "程序的开发与发布": { + "keywords": [], + "children": [ + { + "安装蚂蚁开发者工具": { + "keywords": [], + "children": [] + } + }, + { + "创建示例工程": { + "keywords": [], + "children": [] + } + }, + { + "编码与调试": { + "keywords": [], + "children": [] + } + }, + { + "上传": { + "keywords": [], + "children": [] + } + }, + { + "设置体验版(可选)": { + "keywords": [], + "children": [] + } + }, + { + "提交审核": { + "keywords": [], + "children": [] + } + }, + { + "灰度测试与上架": { + "keywords": [], + "children": [] + } + } + ] + } + }, + { + "程序的开发基础": { + "keywords": [], + "children": [ + { + "页面布局": { + "keywords": [], + "children": [ + { + "盒模型": { + "keywords": [], + "children": [] + } + }, + { + "显示、定位和浮动": { + "keywords": [], + "children": [] + } + }, + { + "Flex布局": { + "keywords": [], + "children": [] + } + } + ] + } + }, + { + "前端框架的演变": { + "keywords": [], + "children": [ + { + "最初的时代": { + "keywords": [], + "children": [] + } + }, + { + "前端的革命": { + "keywords": [], + "children": [] + } + }, + { + "类库的繁荣": { + "keywords": [], + "children": [] + } + }, + { + "框架的兴起": { + "keywords": [], + "children": [] + } + } + ] + } + } + ] + } + }, + { + "程序的框架": { + "keywords": [], + "children": [ + { + "目录结构": { + "keywords": [], + "children": [] + } + }, + { + "配置文件JSON": { + "keywords": [], + "children": [ + { + "全局配置": { + "keywords": [], + "children": [] + } + }, + { + "页面配置": { + "keywords": [], + "children": [] + } + } + ] + } + }, + { + "逻辑层JS": { + "keywords": [], + "children": [ + { + "注册程序App": { + "keywords": [], + "children": [] + } + }, + { + "注册页面Page": { + "keywords": [], + "children": [] + } + } + ] + } + }, + { + "视图层AXML": { + "keywords": [], + "children": [ + { + "数据绑定": { + "keywords": [], + "children": [] + } + }, + { + "条件渲染": { + "keywords": [], + "children": [] + } + }, + { + "列表渲染": { + "keywords": [], + "children": [] + } + }, + { + "定义模板": { + "keywords": [], + "children": [] + } + }, + { + "引用文件": { + "keywords": [], + "children": [] + } + }, + { + "事件绑定": { + "keywords": [], + "children": [] + } + } + ] + } + }, + { + "样式ACSS": { + "keywords": [], + "children": [] + } + } + ] + } + }, + { + "基础组件": { + "keywords": [], + "children": [ + { + "视图容器": { + "keywords": [], + "children": [ + { + "基础容器view": { + "keywords": [], + "children": [] + } + }, + { + "滑块容器swiper": { + "keywords": [], + "children": [] + } + }, + { + "滚动容器scroll-view": { + "keywords": [], + "children": [] + } + } + ] + } + }, + { + "基础内容": { + "keywords": [], + "children": [ + { + "文字text": { + "keywords": [], + "children": [] + } + }, + { + "图标icon": { + "keywords": [], + "children": [] + } + }, + { + "进度条progress": { + "keywords": [], + "children": [] + } + } + ] + } + }, + { + "表单组件": { + "keywords": [], + "children": [ + { + "表单form": { + "keywords": [], + "children": [] + } + }, + { + "输入框input": { + "keywords": [], + "children": [] + } + }, + { + "按钮button": { + "keywords": [], + "children": [] + } + }, + { + "单选框radio": { + "keywords": [], + "children": [] + } + }, + { + "复选框checkbox": { + "keywords": [], + "children": [] + } + }, + { + "开关switch": { + "keywords": [], + "children": [] + } + }, + { + "标记label": { + "keywords": [], + "children": [] + } + }, + { + "多行输入textarea": { + "keywords": [], + "children": [] + } + }, + { + "滑动条slider": { + "keywords": [], + "children": [] + } + } + ] + } + }, + { + "导航": { + "keywords": [], + "children": [] + } + }, + { + "媒体组件": { + "keywords": [], + "children": [] + } + }, + { + "地图": { + "keywords": [], + "children": [] + } + }, + { + "画布": { + "keywords": [], + "children": [] + } + } + ] + } + }, + { + "业务组件": { + "keywords": [], + "children": [ + { + "组件结构": { + "keywords": [], + "children": [] + } + }, + { + "折叠面板": { + "keywords": [], + "children": [] + } + }, + { + "下拉菜单": { + "keywords": [], + "children": [] + } + }, + { + "通用错误页": { + "keywords": [], + "children": [] + } + }, + { + "宫格": { + "keywords": [], + "children": [] + } + }, + { + "列表": { + "keywords": [], + "children": [] + } + }, + { + "标签": { + "keywords": [], + "children": [] + } + } + ] + } + }, + { + "开放接口": { + "keywords": [], + "children": [ + { + "获取授权码": { + "keywords": [], + "children": [] + } + }, + { + "获取用户信息": { + "keywords": [], + "children": [] + } + }, + { + "发起支付": { + "keywords": [], + "children": [] + } + }, + { + "跳转支付宝卡包": { + "keywords": [], + "children": [] + } + }, + { + "会员卡授权": { + "keywords": [], + "children": [] + } + }, + { + "芝麻认证": { + "keywords": [], + "children": [] + } + } + ] + } + }, + { + "常用API接口": { + "keywords": [], + "children": [ + { + "界面": { + "keywords": [], + "children": [ + { + "导航栏": { + "keywords": [], + "children": [] + } + }, + { + "TabBar": { + "keywords": [], + "children": [] + } + }, + { + "交互反馈": { + "keywords": [], + "children": [] + } + }, + { + "下拉刷新": { + "keywords": [], + "children": [] + } + }, + { + "联系人": { + "keywords": [], + "children": [] + } + }, + { + "选择城市": { + "keywords": [], + "children": [] + } + }, + { + "选择日期": { + "keywords": [], + "children": [] + } + }, + { + "动画": { + "keywords": [], + "children": [] + } + }, + { + "画布": { + "keywords": [], + "children": [] + } + } + ] + } + }, + { + "网络": { + "keywords": [], + "children": [ + { + "发起请求": { + "keywords": [], + "children": [] + } + }, + { + "上传文件": { + "keywords": [], + "children": [] + } + }, + { + "下载文件": { + "keywords": [], + "children": [] + } + }, + { + "WebSocket": { + "keywords": [], + "children": [] + } + } + ] + } + } + ] + } + }, + { + "其他API接口": { + "keywords": [], + "children": [ + { + "设备": { + "keywords": [], + "children": [ + { + "获取系统信息": { + "keywords": [], + "children": [] + } + }, + { + "获取当前网络状态": { + "keywords": [], + "children": [] + } + }, + { + "获取服务器时间": { + "keywords": [], + "children": [] + } + }, + { + "剪贴板": { + "keywords": [], + "children": [] + } + }, + { + "摇一摇": { + "keywords": [], + "children": [] + } + }, + { + "震动": { + "keywords": [], + "children": [] + } + }, + { + "打电话": { + "keywords": [], + "children": [] + } + }, + { + "用户截屏事件": { + "keywords": [], + "children": [] + } + }, + { + "屏幕亮度": { + "keywords": [], + "children": [] + } + } + ] + } + }, + { + "媒体": { + "keywords": [], + "children": [] + } + }, + { + "位置": { + "keywords": [], + "children": [] + } + }, + { + "缓存数据": { + "keywords": [], + "children": [] + } + }, + { + "扫码": { + "keywords": [], + "children": [] + } + }, + { + "分享": { + "keywords": [], + "children": [] + } + }, + { + "数据安全": { + "keywords": [], + "children": [] + } + }, + { + "蓝牙": { + "keywords": [], + "children": [ + { + "快速接入": { + "keywords": [], + "children": [] + } + }, + { + "API列表": { + "keywords": [], + "children": [] + } + } + ] + } + } + ] + } + } + ], + "export": [] +} \ No newline at end of file diff --git "a/data/3.web\351\253\230\351\230\266/5.\345\260\217\347\250\213\345\272\217\345\274\200\345\217\221/config.json" "b/data/3.web\351\253\230\351\230\266/5.\345\260\217\347\250\213\345\272\217\345\274\200\345\217\221/config.json" new file mode 100644 index 0000000..3407cf9 --- /dev/null +++ "b/data/3.web\351\253\230\351\230\266/5.\345\260\217\347\250\213\345\272\217\345\274\200\345\217\221/config.json" @@ -0,0 +1,4 @@ +{ + "node_id": "569d5e11c4fc5de7844053d9a733c5e8", + "keywords": [] +} \ No newline at end of file diff --git "a/data/3.web\351\253\230\351\230\266/6.\347\247\273\345\212\250App\345\274\200\345\217\221/1.Android App\345\274\200\345\217\221/config.json" "b/data/3.web\351\253\230\351\230\266/6.\347\247\273\345\212\250App\345\274\200\345\217\221/1.Android App\345\274\200\345\217\221/config.json" new file mode 100644 index 0000000..6825169 --- /dev/null +++ "b/data/3.web\351\253\230\351\230\266/6.\347\247\273\345\212\250App\345\274\200\345\217\221/1.Android App\345\274\200\345\217\221/config.json" @@ -0,0 +1,1423 @@ +{ + "node_id": "569d5e11c4fc5de7844053d9a733c5e8", + "keywords": [], + "children": [ + { + "Android开发环境搭建": { + "keywords": [], + "children": [ + { + "Android开发简介": { + "keywords": [], + "children": [ + { + "Android的发展历程": { + "keywords": [], + "children": [] + } + }, + { + "Android Studio的发展历程": { + "keywords": [], + "children": [] + } + } + ] + } + }, + { + "搭建Android Studio开发环境": { + "keywords": [], + "children": [ + { + "开发机配置要求": { + "keywords": [], + "children": [] + } + }, + { + "安装Android Studio": { + "keywords": [], + "children": [] + } + }, + { + "下载Android的SDK": { + "keywords": [], + "children": [] + } + } + ] + } + }, + { + "创建并编译App工程": { + "keywords": [], + "children": [ + { + "创建新项目": { + "keywords": [], + "children": [] + } + }, + { + "导入已有的工程": { + "keywords": [], + "children": [] + } + }, + { + "编译App工程": { + "keywords": [], + "children": [] + } + } + ] + } + }, + { + "运行和调试App": { + "keywords": [], + "children": [ + { + "创建内置模拟器": { + "keywords": [], + "children": [] + } + }, + { + "在模拟器上运行App": { + "keywords": [], + "children": [] + } + }, + { + "观察App的运行日志": { + "keywords": [], + "children": [] + } + } + ] + } + } + ] + } + }, + { + "Android App开发基础": { + "keywords": [], + "children": [ + { + "App的开发特点": { + "keywords": [], + "children": [ + { + "App的运行环境": { + "keywords": [], + "children": [] + } + }, + { + "App的开发语言": { + "keywords": [], + "children": [] + } + }, + { + "App连接的数据库": { + "keywords": [], + "children": [] + } + } + ] + } + }, + { + "App的工程结构": { + "keywords": [], + "children": [ + { + "App工程目录结构": { + "keywords": [], + "children": [] + } + }, + { + "编译配置文件build.gradle": { + "keywords": [], + "children": [] + } + }, + { + "运行配置文件AndroidManifest.ml": { + "keywords": [], + "children": [] + } + } + ] + } + }, + { + "App的设计规范": { + "keywords": [], + "children": [ + { + "界面设计与代码逻辑": { + "keywords": [], + "children": [] + } + }, + { + "利用XML标记描绘应用界面": { + "keywords": [], + "children": [] + } + }, + { + "使用Java代码书写程序逻辑": { + "keywords": [], + "children": [] + } + } + ] + } + }, + { + "App的活动页面": { + "keywords": [], + "children": [ + { + "创建新的App页面": { + "keywords": [], + "children": [] + } + }, + { + "快速生成页面源码": { + "keywords": [], + "children": [] + } + }, + { + "跳到另一个页面": { + "keywords": [], + "children": [] + } + } + ] + } + } + ] + } + }, + { + "简单控件": { + "keywords": [], + "children": [ + { + "文本显示": { + "keywords": [], + "children": [ + { + "设置文本的内容": { + "keywords": [], + "children": [] + } + }, + { + "设置文本的大小": { + "keywords": [], + "children": [] + } + }, + { + "设置文本的颜色": { + "keywords": [], + "children": [] + } + } + ] + } + }, + { + "视图基础": { + "keywords": [], + "children": [ + { + "设置视图的宽高": { + "keywords": [], + "children": [] + } + }, + { + "设置视图的间距": { + "keywords": [], + "children": [] + } + }, + { + "设置视图的对齐方式": { + "keywords": [], + "children": [] + } + } + ] + } + }, + { + "常用布局": { + "keywords": [], + "children": [ + { + "线性布局LinearLayout": { + "keywords": [], + "children": [] + } + }, + { + "相对布局RelativeLayout": { + "keywords": [], + "children": [] + } + }, + { + "网格布局GridLayout": { + "keywords": [], + "children": [] + } + }, + { + "滚动视图ScrollView": { + "keywords": [], + "children": [] + } + } + ] + } + }, + { + "按钮触控": { + "keywords": [], + "children": [ + { + "按钮控件Button": { + "keywords": [], + "children": [] + } + }, + { + "点击事件和长按事件": { + "keywords": [], + "children": [] + } + }, + { + "禁用与恢复按钮": { + "keywords": [], + "children": [] + } + } + ] + } + }, + { + "图像显示": { + "keywords": [], + "children": [ + { + "图像视图ImageView": { + "keywords": [], + "children": [] + } + }, + { + "图像按钮ImageButton": { + "keywords": [], + "children": [] + } + }, + { + "同时展示文本与图像": { + "keywords": [], + "children": [] + } + } + ] + } + }, + { + "实战项目:计算器": { + "keywords": [], + "children": [ + { + "需求描述": { + "keywords": [], + "children": [] + } + }, + { + "界面设计": { + "keywords": [], + "children": [] + } + }, + { + "关键代码": { + "keywords": [], + "children": [] + } + } + ] + } + } + ] + } + }, + { + "活动Activity": { + "keywords": [], + "children": [ + { + "启停活动页面": { + "keywords": [], + "children": [ + { + "Activity的启动和结束": { + "keywords": [], + "children": [] + } + }, + { + "Activity的生命周期": { + "keywords": [], + "children": [] + } + }, + { + "Activity的启动模式": { + "keywords": [], + "children": [] + } + } + ] + } + }, + { + "在活动之间传递消息": { + "keywords": [], + "children": [ + { + "显式Intent和隐式Intent": { + "keywords": [], + "children": [] + } + }, + { + "向下一个Activity发送数据": { + "keywords": [], + "children": [] + } + }, + { + "向上一个Activity返回数据": { + "keywords": [], + "children": [] + } + } + ] + } + }, + { + "为活动补充附加信息": { + "keywords": [], + "children": [ + { + "利用资源文件配置字符串": { + "keywords": [], + "children": [] + } + }, + { + "利用元数据传递配置信息": { + "keywords": [], + "children": [] + } + }, + { + "给应用页面注册快捷方式": { + "keywords": [], + "children": [] + } + } + ] + } + } + ] + } + }, + { + "中级控件": { + "keywords": [], + "children": [ + { + "图形定制": { + "keywords": [], + "children": [ + { + "图形Drawable": { + "keywords": [], + "children": [] + } + }, + { + "形状图形": { + "keywords": [], + "children": [] + } + }, + { + "九宫格图片": { + "keywords": [], + "children": [] + } + }, + { + "状态列表图形": { + "keywords": [], + "children": [] + } + } + ] + } + }, + { + "选择按钮": { + "keywords": [], + "children": [ + { + "复选框CheckBo": { + "keywords": [], + "children": [] + } + }, + { + "开关按钮Switch": { + "keywords": [], + "children": [] + } + }, + { + "单选按钮RadioButton": { + "keywords": [], + "children": [] + } + } + ] + } + }, + { + "文本输入": { + "keywords": [], + "children": [ + { + "编辑框EditTet": { + "keywords": [], + "children": [] + } + }, + { + "焦点变更监听器": { + "keywords": [], + "children": [] + } + }, + { + "文本变化监听器": { + "keywords": [], + "children": [] + } + } + ] + } + }, + { + "对话框": { + "keywords": [], + "children": [ + { + "提醒对话框AlertDialog": { + "keywords": [], + "children": [] + } + }, + { + "日期对话框DatePickerDialog": { + "keywords": [], + "children": [] + } + }, + { + "时间对话框TimePickerDialog": { + "keywords": [], + "children": [] + } + } + ] + } + }, + { + "实战项目:找回密码": { + "keywords": [], + "children": [ + { + "需求描述": { + "keywords": [], + "children": [] + } + }, + { + "界面设计": { + "keywords": [], + "children": [] + } + }, + { + "关键代码": { + "keywords": [], + "children": [] + } + } + ] + } + } + ] + } + }, + { + "数据存储": { + "keywords": [], + "children": [ + { + "共享参数SharedPreferences": { + "keywords": [], + "children": [ + { + "共享参数的用法": { + "keywords": [], + "children": [] + } + }, + { + "实现记住密码功能": { + "keywords": [], + "children": [] + } + }, + { + "利用设备浏览器寻找共享参数文件": { + "keywords": [], + "children": [] + } + } + ] + } + }, + { + "数据库SQLite": { + "keywords": [], + "children": [ + { + "SQL的基本语法": { + "keywords": [], + "children": [] + } + }, + { + "数据库管理器SQLiteDatabase": { + "keywords": [], + "children": [] + } + }, + { + "数据库帮助器SQLiteOpenHelper": { + "keywords": [], + "children": [] + } + }, + { + "优化记住密码功能": { + "keywords": [], + "children": [] + } + } + ] + } + }, + { + "存储卡的文件作": { + "keywords": [], + "children": [ + { + "私有存储空间与公共存储空间": { + "keywords": [], + "children": [] + } + }, + { + "在存储卡上读写文本文件": { + "keywords": [], + "children": [] + } + }, + { + "在存储卡上读写图片文件": { + "keywords": [], + "children": [] + } + } + ] + } + }, + { + "应用组件Application": { + "keywords": [], + "children": [ + { + "Application的生命周期": { + "keywords": [], + "children": [] + } + }, + { + "利用Application作全局变量": { + "keywords": [], + "children": [] + } + }, + { + "利用Room简化数据库作": { + "keywords": [], + "children": [] + } + } + ] + } + }, + { + "实战项目:购物车": { + "keywords": [], + "children": [ + { + "需求描述": { + "keywords": [], + "children": [] + } + }, + { + "界面设计": { + "keywords": [], + "children": [] + } + }, + { + "关键代码": { + "keywords": [], + "children": [] + } + } + ] + } + } + ] + } + }, + { + "内容共享": { + "keywords": [], + "children": [ + { + "在应用之间共享数据": { + "keywords": [], + "children": [ + { + "通过ContentProvider封装数据": { + "keywords": [], + "children": [] + } + }, + { + "通过ContentResolver访问数据": { + "keywords": [], + "children": [] + } + } + ] + } + }, + { + "使用内容组件获取通讯信息": { + "keywords": [], + "children": [ + { + "运行时动态申请权限": { + "keywords": [], + "children": [] + } + }, + { + "利用ContentResolver读写联系人": { + "keywords": [], + "children": [] + } + }, + { + "利用ContentObserver监听短信": { + "keywords": [], + "children": [] + } + } + ] + } + }, + { + "在应用之间共享文件": { + "keywords": [], + "children": [ + { + "使用相册图片发送彩信": { + "keywords": [], + "children": [] + } + }, + { + "借助FileProvider发送彩信": { + "keywords": [], + "children": [] + } + }, + { + "借助FileProvider安装应用": { + "keywords": [], + "children": [] + } + } + ] + } + } + ] + } + }, + { + "高级控件": { + "keywords": [], + "children": [ + { + "下拉列表": { + "keywords": [], + "children": [ + { + "下拉框Spinner": { + "keywords": [], + "children": [] + } + }, + { + "数组适配器ArrayAdapter": { + "keywords": [], + "children": [] + } + }, + { + "简单适配器SimpleAdapter": { + "keywords": [], + "children": [] + } + } + ] + } + }, + { + "列表类视图": { + "keywords": [], + "children": [ + { + "基本适配器BaseAdapter": { + "keywords": [], + "children": [] + } + }, + { + "列表视图ListView": { + "keywords": [], + "children": [] + } + }, + { + "网格视图GridView": { + "keywords": [], + "children": [] + } + } + ] + } + }, + { + "翻页类视图": { + "keywords": [], + "children": [ + { + "翻页视图ViewPager": { + "keywords": [], + "children": [] + } + }, + { + "翻页标签栏PagerTabStrip": { + "keywords": [], + "children": [] + } + }, + { + "简单的启动引导页": { + "keywords": [], + "children": [] + } + } + ] + } + }, + { + "碎片Fragment": { + "keywords": [], + "children": [ + { + "碎片的静态注册": { + "keywords": [], + "children": [] + } + }, + { + "碎片的动态注册": { + "keywords": [], + "children": [] + } + }, + { + "改进的启动引导页": { + "keywords": [], + "children": [] + } + } + ] + } + }, + { + "实战项目:记账本": { + "keywords": [], + "children": [ + { + "需求描述": { + "keywords": [], + "children": [] + } + }, + { + "界面设计": { + "keywords": [], + "children": [] + } + }, + { + "关键代码": { + "keywords": [], + "children": [] + } + } + ] + } + } + ] + } + }, + { + "广播组件Broadcast": { + "keywords": [], + "children": [ + { + "收发应用广播": { + "keywords": [], + "children": [ + { + "收发标准广播": { + "keywords": [], + "children": [] + } + }, + { + "收发有序广播": { + "keywords": [], + "children": [] + } + }, + { + "收发静态广播": { + "keywords": [], + "children": [] + } + } + ] + } + }, + { + "监听系统广播": { + "keywords": [], + "children": [ + { + "接收分钟到达广播": { + "keywords": [], + "children": [] + } + }, + { + "接收网络变更广播": { + "keywords": [], + "children": [] + } + }, + { + "定时管理器AlarmManager": { + "keywords": [], + "children": [] + } + } + ] + } + }, + { + "捕获屏幕的变更事件": { + "keywords": [], + "children": [ + { + "竖屏与横屏切换": { + "keywords": [], + "children": [] + } + }, + { + "回到桌面与切换到任务列表": { + "keywords": [], + "children": [] + } + } + ] + } + } + ] + } + }, + { + "自定义控件": { + "keywords": [], + "children": [ + { + "视图的构建过程": { + "keywords": [], + "children": [ + { + "视图的构造方法": { + "keywords": [], + "children": [] + } + }, + { + "视图的测量方法": { + "keywords": [], + "children": [] + } + }, + { + "视图的绘制方法": { + "keywords": [], + "children": [] + } + } + ] + } + }, + { + "改造已有的控件": { + "keywords": [], + "children": [ + { + "自定义月份选择器": { + "keywords": [], + "children": [] + } + }, + { + "给翻页标签栏添加新属性": { + "keywords": [], + "children": [] + } + }, + { + "不滚动的列表视图": { + "keywords": [], + "children": [] + } + } + ] + } + }, + { + "通过持续绘制实现简单动画": { + "keywords": [], + "children": [ + { + "Handler的延迟机制": { + "keywords": [], + "children": [] + } + }, + { + "重新绘制视图界面": { + "keywords": [], + "children": [] + } + }, + { + "自定义饼图动画": { + "keywords": [], + "children": [] + } + } + ] + } + }, + { + "实战项目:广告轮播": { + "keywords": [], + "children": [ + { + "需求描述": { + "keywords": [], + "children": [] + } + }, + { + "界面设计": { + "keywords": [], + "children": [] + } + }, + { + "关键代码": { + "keywords": [], + "children": [] + } + } + ] + } + } + ] + } + }, + { + "通知与服务": { + "keywords": [], + "children": [ + { + "消息通知": { + "keywords": [], + "children": [ + { + "通知推送tification": { + "keywords": [], + "children": [] + } + }, + { + "通知渠道tificationChannel": { + "keywords": [], + "children": [] + } + }, + { + "给桌面应用添加消息角标": { + "keywords": [], + "children": [] + } + } + ] + } + }, + { + "服务Service": { + "keywords": [], + "children": [ + { + "服务的启动和停止": { + "keywords": [], + "children": [] + } + }, + { + "服务的绑定与解绑": { + "keywords": [], + "children": [] + } + }, + { + "推送服务到前台": { + "keywords": [], + "children": [] + } + } + ] + } + }, + { + "多线程": { + "keywords": [], + "children": [ + { + "分线程通过Handler作界面": { + "keywords": [], + "children": [] + } + }, + { + "异步任务AsyncTask": { + "keywords": [], + "children": [] + } + }, + { + "异步服务IntentService": { + "keywords": [], + "children": [] + } + } + ] + } + } + ] + } + }, + { + "组合控件": { + "keywords": [], + "children": [ + { + "底部标签栏": { + "keywords": [], + "children": [ + { + "利用BottomNavigationView实现底部标签栏": { + "keywords": [], + "children": [] + } + }, + { + "自定义标签按钮": { + "keywords": [], + "children": [] + } + }, + { + "结合RadioGroup和ViewPager自定义底部标签栏": { + "keywords": [], + "children": [] + } + } + ] + } + }, + { + "顶部导航栏": { + "keywords": [], + "children": [ + { + "工具栏Toolbar": { + "keywords": [], + "children": [] + } + }, + { + "溢出菜单OverflowMenu": { + "keywords": [], + "children": [] + } + }, + { + "标签布局TabLayout": { + "keywords": [], + "children": [] + } + } + ] + } + }, + { + "增强型列表": { + "keywords": [], + "children": [ + { + "循环视图RecyclerView": { + "keywords": [], + "children": [] + } + }, + { + "布局管理器LayoutManager": { + "keywords": [], + "children": [] + } + }, + { + "动态更新循环视图": { + "keywords": [], + "children": [] + } + } + ] + } + }, + { + "升级版翻页": { + "keywords": [], + "children": [ + { + "下拉刷新布局SwipeRefreshLayout": { + "keywords": [], + "children": [] + } + }, + { + "二代翻页视图ViewPager2": { + "keywords": [], + "children": [] + } + }, + { + "给ViewPager2集成标签布局": { + "keywords": [], + "children": [] + } + } + ] + } + }, + { + "实战项目:电商首页": { + "keywords": [], + "children": [ + { + "需求描述": { + "keywords": [], + "children": [] + } + }, + { + "界面设计": { + "keywords": [], + "children": [] + } + }, + { + "关键代码": { + "keywords": [], + "children": [] + } + } + ] + } + } + ] + } + }, + { + "多媒体": { + "keywords": [], + "children": [ + { + "图片": { + "keywords": [], + "children": [ + { + "使用相机拍摄照片": { + "keywords": [], + "children": [] + } + }, + { + "从相册中选取图片": { + "keywords": [], + "children": [] + } + }, + { + "对图片进行简单加工": { + "keywords": [], + "children": [] + } + }, + { + "图像解码器ImageDecoder": { + "keywords": [], + "children": [] + } + } + ] + } + }, + { + "音频": { + "keywords": [], + "children": [ + { + "使用录音机录制音频": { + "keywords": [], + "children": [] + } + }, + { + "利用MediaPlayer播放音频": { + "keywords": [], + "children": [] + } + }, + { + "利用MediaRecorder录制音频": { + "keywords": [], + "children": [] + } + } + ] + } + }, + { + "视频": { + "keywords": [], + "children": [ + { + "使用摄像机录制视频": { + "keywords": [], + "children": [] + } + }, + { + "从视频库中选取视频": { + "keywords": [], + "children": [] + } + } + ] + } + } + ] + } + } + ], + "export": [] +} \ No newline at end of file diff --git "a/data/3.web\351\253\230\351\230\266/6.\347\247\273\345\212\250App\345\274\200\345\217\221/2.IOS App\345\274\200\345\217\221/config.json" "b/data/3.web\351\253\230\351\230\266/6.\347\247\273\345\212\250App\345\274\200\345\217\221/2.IOS App\345\274\200\345\217\221/config.json" new file mode 100644 index 0000000..3db3a82 --- /dev/null +++ "b/data/3.web\351\253\230\351\230\266/6.\347\247\273\345\212\250App\345\274\200\345\217\221/2.IOS App\345\274\200\345\217\221/config.json" @@ -0,0 +1,1487 @@ +{ + "node_id": "569d5e11c4fc5de7844053d9a733c5e8", + "keywords": [], + "children": [ + { + "开发准备": { + "keywords": [], + "children": [ + { + "iOS 11新特性简述": { + "keywords": [], + "children": [ + { + "新增拖放交互编程接口": { + "keywords": [], + "children": [] + } + }, + { + "其他新增功能": { + "keywords": [], + "children": [] + } + } + ] + } + }, + { + "iOS开发环境": { + "keywords": [], + "children": [ + { + "安装Xcode开发工具": { + "keywords": [], + "children": [] + } + }, + { + "了解Xcode开发工具主界面": { + "keywords": [], + "children": [] + } + }, + { + "Xcode开发工具的使用技巧及常用快捷键": { + "keywords": [], + "children": [] + } + } + ] + } + }, + { + "创建第一个iOS项目": { + "keywords": [], + "children": [] + } + }, + { + "使用Git进行项目版本管理": { + "keywords": [], + "children": [ + { + "Git与Github简介": { + "keywords": [], + "children": [] + } + }, + { + "注册GitHub会员": { + "keywords": [], + "children": [] + } + }, + { + "使用Xcode创建Git仓库": { + "keywords": [], + "children": [] + } + }, + { + "用Xcode建立本地Git仓库与GitHub代码托管平台的关联": { + "keywords": [], + "children": [] + } + } + ] + } + } + ] + } + }, + { + "基础UI组件": { + "keywords": [], + "children": [ + { + "iOS系统UI框架的介绍": { + "keywords": [], + "children": [ + { + "MVC设计模式": { + "keywords": [], + "children": [] + } + }, + { + "代理设计模式": { + "keywords": [], + "children": [] + } + } + ] + } + }, + { + "视图控制器——UIViewController": { + "keywords": [], + "children": [ + { + "UIViewController的生命周期": { + "keywords": [], + "children": [] + } + }, + { + "UIViewController的视图层级结构": { + "keywords": [], + "children": [] + } + } + ] + } + }, + { + "文本控件——UILabel": { + "keywords": [], + "children": [ + { + "使用UILabel在屏幕上创建一个标签控件": { + "keywords": [], + "children": [] + } + }, + { + "自定义标签控件的相关属性": { + "keywords": [], + "children": [] + } + }, + { + "多行显示的UILabel控件与换行模式": { + "keywords": [], + "children": [] + } + } + ] + } + }, + { + "按钮控件——UIButton": { + "keywords": [], + "children": [ + { + "创建一个按钮改变屏幕颜色": { + "keywords": [], + "children": [] + } + }, + { + "更加多彩的UIButton控件": { + "keywords": [], + "children": [] + } + } + ] + } + }, + { + "文本输入框控件——UITextField": { + "keywords": [], + "children": [ + { + "在屏幕上创建一个输入框": { + "keywords": [], + "children": [] + } + }, + { + "UITextField的常用属性介绍": { + "keywords": [], + "children": [] + } + }, + { + "UITextField的代理方法": { + "keywords": [], + "children": [] + } + }, + { + "实现一个监听输入信息的用户名输入框": { + "keywords": [], + "children": [] + } + } + ] + } + }, + { + "开关控件——UISwitch": { + "keywords": [], + "children": [ + { + "创建一个开关控件": { + "keywords": [], + "children": [] + } + }, + { + "为UISiwtch控件添加触发方法": { + "keywords": [], + "children": [] + } + } + ] + } + }, + { + "分页控制器——UIPageControl": { + "keywords": [], + "children": [] + } + }, + { + "分段控制器——UISegmentedControl": { + "keywords": [], + "children": [ + { + "UISegmentedControl基本属性的应用": { + "keywords": [], + "children": [] + } + }, + { + "对UISegmentedControl中的按钮进行增、删、改操作": { + "keywords": [], + "children": [] + } + }, + { + "UISegmentedControl中按钮宽度的自适应": { + "keywords": [], + "children": [] + } + } + ] + } + }, + { + "滑块控件——UISlider": { + "keywords": [], + "children": [ + { + "UISlider的创建与常规设置": { + "keywords": [], + "children": [] + } + }, + { + "对UISlider添加图片修饰": { + "keywords": [], + "children": [] + } + } + ] + } + }, + { + "活动指示器控件——UIActivityIndicatorView": { + "keywords": [], + "children": [] + } + }, + { + "进度条控件——UIProgressView": { + "keywords": [], + "children": [] + } + }, + { + "步进控制器——UIStepper": { + "keywords": [], + "children": [ + { + "步进控制器的基本属性使用": { + "keywords": [], + "children": [] + } + }, + { + "自定义UIStepper按钮图片": { + "keywords": [], + "children": [] + } + } + ] + } + }, + { + "选择器控件——UIPickerView": { + "keywords": [], + "children": [ + { + "创建一个UIPickerView控件": { + "keywords": [], + "children": [] + } + }, + { + "UIPickerView选中数据时的回调代理": { + "keywords": [], + "children": [] + } + } + ] + } + }, + { + "通过CALayer对视图进行修饰": { + "keywords": [], + "children": [ + { + "创建圆角的控件": { + "keywords": [], + "children": [] + } + }, + { + "创建带边框的控件": { + "keywords": [], + "children": [] + } + }, + { + "为控件添加阴影效果": { + "keywords": [], + "children": [] + } + } + ] + } + }, + { + "警告控制器——UIAlertController": { + "keywords": [], + "children": [ + { + "UIAlertController的警告框": { + "keywords": [], + "children": [] + } + }, + { + "UIAlertController之活动列表": { + "keywords": [], + "children": [] + } + } + ] + } + }, + { + "基础UI控件扩展篇": { + "keywords": [], + "children": [ + { + "搜索栏控件——UISearchBar": { + "keywords": [], + "children": [] + } + }, + { + "日期时间选择器——UIDatePicker": { + "keywords": [], + "children": [] + } + }, + { + "警告视图——UIAlertView": { + "keywords": [], + "children": [] + } + }, + { + "活动列表——UIActionSheet": { + "keywords": [], + "children": [] + } + } + ] + } + } + ] + } + }, + { + "高级UI控件": { + "keywords": [], + "children": [ + { + "导航控制器——UINavigationController": { + "keywords": [], + "children": [ + { + "导航控制器的工作原理": { + "keywords": [], + "children": [] + } + }, + { + "使用导航控制器进行多界面搭建": { + "keywords": [], + "children": [] + } + }, + { + "导航栏UINavigationBar": { + "keywords": [], + "children": [] + } + }, + { + "导航按钮UIBarButtonItem": { + "keywords": [], + "children": [] + } + }, + { + "导航控制器的工具栏": { + "keywords": [], + "children": [] + } + }, + { + "iOS 8系统之后导航控制器的一些有趣功能": { + "keywords": [], + "children": [] + } + } + ] + } + }, + { + "标签控制器——UITabBarController": { + "keywords": [], + "children": [ + { + "标签控制器的工作原理": { + "keywords": [], + "children": [] + } + }, + { + "标签控制器的基础用法解析": { + "keywords": [], + "children": [] + } + }, + { + "关于UITabBarItem的使用": { + "keywords": [], + "children": [] + } + } + ] + } + }, + { + "滚动视图——UIScrollView": { + "keywords": [], + "children": [ + { + "使用UIScrollView展示视图内容": { + "keywords": [], + "children": [] + } + }, + { + "UIScrollView的代理方法": { + "keywords": [], + "children": [] + } + } + ] + } + }, + { + "网络视图——UIWebView": { + "keywords": [], + "children": [ + { + "App网络传输安全策略": { + "keywords": [], + "children": [] + } + }, + { + "通过网络请求加载UIWebView": { + "keywords": [], + "children": [] + } + }, + { + "通过HTML字符串加载UIWebView": { + "keywords": [], + "children": [] + } + }, + { + "通过Data数据加载UIWebView": { + "keywords": [], + "children": [] + } + }, + { + "UIWebView中常用方法解析": { + "keywords": [], + "children": [] + } + }, + { + "UIWebView的代理方法": { + "keywords": [], + "children": [] + } + } + ] + } + }, + { + "表格视图——UITableView": { + "keywords": [], + "children": [ + { + "UITableView的创建与复用机制": { + "keywords": [], + "children": [] + } + }, + { + "创建一个表格视图UITableView": { + "keywords": [], + "children": [] + } + }, + { + "关于表格数据的载体UITableViewCell": { + "keywords": [], + "children": [] + } + }, + { + "设置UITableView的行高和头尾视图": { + "keywords": [], + "children": [] + } + }, + { + "UITableView的用户交互行为": { + "keywords": [], + "children": [] + } + }, + { + "为UITableView添加索引栏": { + "keywords": [], + "children": [] + } + } + ] + } + }, + { + "复杂布局视图——UICollectionView": { + "keywords": [], + "children": [ + { + "UICollectionView控件的优势与布局方式": { + "keywords": [], + "children": [] + } + }, + { + "使用UICollectionView进行九宫格式的布局": { + "keywords": [], + "children": [] + } + }, + { + "创建更加灵活的流式布局": { + "keywords": [], + "children": [] + } + }, + { + "自定义UICollectionViewFlowLayout进行参差瀑布流布局": { + "keywords": [], + "children": [] + } + }, + { + "使用UICollectionView进行圆环布局": { + "keywords": [], + "children": [] + } + } + ] + } + }, + { + "扩展内容": { + "keywords": [], + "children": [ + { + "应用内评价组件": { + "keywords": [], + "children": [] + } + }, + { + "进行系统拨号与短信界面的调用": { + "keywords": [], + "children": [] + } + }, + { + "拖拽交互体验": { + "keywords": [], + "children": [] + } + } + ] + } + } + ] + } + }, + { + "网络编程技术": { + "keywords": [], + "children": [ + { + "使用NSURLConnection请求网络数据": { + "keywords": [], + "children": [ + { + "申请一个免费的API服务": { + "keywords": [], + "children": [] + } + }, + { + "使用NSURLConnection进行API服务数据的获取": { + "keywords": [], + "children": [] + } + }, + { + "使用NSURLConnection进行异步网络请求": { + "keywords": [], + "children": [] + } + }, + { + "使用NSURLConnection类通过代理回调的方式异步请求": { + "keywords": [], + "children": [] + } + } + ] + } + }, + { + "设计封装一个更加易用的网络请求类": { + "keywords": [], + "children": [ + { + "设计自定义的网络请求连接类": { + "keywords": [], + "children": [] + } + }, + { + "设计自定义的网络请求管理类": { + "keywords": [], + "children": [] + } + } + ] + } + }, + { + "JSON类型数据的解析与数据模型的设计": { + "keywords": [], + "children": [ + { + "JSON数据简介": { + "keywords": [], + "children": [] + } + }, + { + "在iOS中解析JSON数据": { + "keywords": [], + "children": [] + } + }, + { + "数据模型Model类的设计": { + "keywords": [], + "children": [] + } + } + ] + } + }, + { + "使用CocoaPods进行第三方库的管理": { + "keywords": [], + "children": [ + { + "在MAC上安装CocoaPods工具": { + "keywords": [], + "children": [] + } + }, + { + "用CocoaPods搭建一个使用第三方网络请求框架AlamoFire的工程": { + "keywords": [], + "children": [] + } + } + ] + } + }, + { + "使用AlamoFire进行网络请求": { + "keywords": [], + "children": [ + { + "详解HTTP/HTTPS协议": { + "keywords": [], + "children": [] + } + }, + { + "使用AlamoFire进行网络请求": { + "keywords": [], + "children": [] + } + } + ] + } + } + ] + } + }, + { + "音频、视频开发技术": { + "keywords": [], + "children": [ + { + "iOS音频开发基础——AVAudioPlayer类的使用": { + "keywords": [], + "children": [ + { + "使用AVAudioPlayer进行MP3音频文件的播放": { + "keywords": [], + "children": [] + } + }, + { + "进行音频播放相关属性的控制": { + "keywords": [], + "children": [] + } + }, + { + "后台播放音频及用户交互的优化": { + "keywords": [], + "children": [] + } + } + ] + } + }, + { + "iOS视频开发基础": { + "keywords": [], + "children": [ + { + "使用MPMoviePlayerController向应用中嵌入视频模块": { + "keywords": [], + "children": [] + } + }, + { + "MPMoviePlayerController常用属性与方法解析": { + "keywords": [], + "children": [] + } + } + ] + } + }, + { + "视频播放器视图控制器——MPMoviePlayerViewController": { + "keywords": [], + "children": [] + } + }, + { + "AVPlayViewController视频播放框架与画中画开发技术": { + "keywords": [], + "children": [ + { + "使用AVPlayerViewController进行视频播放": { + "keywords": [], + "children": [] + } + }, + { + "iPad的画中画播放技术": { + "keywords": [], + "children": [] + } + } + ] + } + } + ] + } + }, + { + "动画开发技术": { + "keywords": [], + "children": [ + { + "使用UIImageView播放图片组帧动画": { + "keywords": [], + "children": [] + } + }, + { + "UIView层动画的应用": { + "keywords": [], + "children": [ + { + "执行UIView层过渡动画的3个类方法": { + "keywords": [], + "children": [] + } + }, + { + "创建UIView层的阻尼动画": { + "keywords": [], + "children": [] + } + }, + { + "动画参数配置与组合动画": { + "keywords": [], + "children": [] + } + }, + { + "UIView层过渡动画支持的属性": { + "keywords": [], + "children": [] + } + } + ] + } + }, + { + "使用commit方式进行UIView层动画的创建": { + "keywords": [], + "children": [ + { + "使用commit方式进行UIView层过渡动画的创建": { + "keywords": [], + "children": [] + } + }, + { + "两种UIView层动画创建方式的优劣": { + "keywords": [], + "children": [] + } + } + ] + } + }, + { + "UIView的转场动画": { + "keywords": [], + "children": [ + { + "重绘UIView视图时使用的转场动画": { + "keywords": [], + "children": [] + } + }, + { + "切换UIView视图时使用的转场动画": { + "keywords": [], + "children": [] + } + } + ] + } + }, + { + "核心动画编程技术——CoreAnimation": { + "keywords": [], + "children": [ + { + "锚点对视图控件几何位置的影响": { + "keywords": [], + "children": [] + } + }, + { + "色彩梯度层——CAGradientLayer": { + "keywords": [], + "children": [] + } + }, + { + "视图拷贝层——CAReplicatorLayer": { + "keywords": [], + "children": [] + } + }, + { + "图形渲染层——CAShapeLayer": { + "keywords": [], + "children": [] + } + }, + { + "文本绘制层——CATextLayer": { + "keywords": [], + "children": [] + } + }, + { + "CAAnimation动画体系介绍": { + "keywords": [], + "children": [] + } + }, + { + "使用CABasicAnimation创建基础动画": { + "keywords": [], + "children": [] + } + }, + { + "使用CAKeyframeAnimation类创建关键帧动画": { + "keywords": [], + "children": [] + } + }, + { + "CALayer层的转场动画——CATransition": { + "keywords": [], + "children": [] + } + }, + { + "CALayer层的组合动画——CAAnimationGroup": { + "keywords": [], + "children": [] + } + }, + { + "CATransform3D变换的应用": { + "keywords": [], + "children": [] + } + } + ] + } + }, + { + "炫酷的粒子效果": { + "keywords": [], + "children": [ + { + "粒子发射器——CAEmitterLayer": { + "keywords": [], + "children": [] + } + }, + { + "粒子单元——CAEmitterCell": { + "keywords": [], + "children": [] + } + }, + { + "创建粒子火焰动画": { + "keywords": [], + "children": [] + } + } + ] + } + }, + { + "播放GIF动态图": { + "keywords": [], + "children": [ + { + "使用UIWebView进行GIF动态图播放": { + "keywords": [], + "children": [] + } + }, + { + "使用UIImageView帧动画进行GIF动态图播放": { + "keywords": [], + "children": [] + } + } + ] + } + } + ] + } + }, + { + "传感器开发技术": { + "keywords": [], + "children": [ + { + "为应用程序添加手机密码及指纹识别的安全验证": { + "keywords": [], + "children": [ + { + "使用手机密码为应用程序添加安全验证": { + "keywords": [], + "children": [] + } + }, + { + "使用用户指纹为应用程序添加安全验证": { + "keywords": [], + "children": [] + } + } + ] + } + }, + { + "使用加速度传感器、螺旋仪传感器与磁力传感器获取设备空间状态": { + "keywords": [], + "children": [] + } + }, + { + "距离传感器的应用": { + "keywords": [], + "children": [] + } + }, + { + "iOS蓝牙开发技术": { + "keywords": [], + "children": [ + { + "中心设备管理类CBCentealManager": { + "keywords": [], + "children": [] + } + }, + { + "外围设备管理类CBPeripheraManager": { + "keywords": [], + "children": [] + } + } + ] + } + }, + { + "GPS应用与地图编程技术": { + "keywords": [], + "children": [ + { + "进行设备地理位置定位": { + "keywords": [], + "children": [] + } + }, + { + "原生地图开发技术": { + "keywords": [], + "children": [] + } + }, + { + "在地图中添加大头针及标注": { + "keywords": [], + "children": [] + } + }, + { + "在地图视图中添加覆盖物": { + "keywords": [], + "children": [] + } + }, + { + "在地图中进行线路导航与附近兴趣点检索": { + "keywords": [], + "children": [] + } + } + ] + } + } + ] + } + }, + { + "界面布局技术": { + "keywords": [], + "children": [ + { + "iOS中传统的UIViewAutoresizing布局模式": { + "keywords": [], + "children": [ + { + "通过代码设置视图控件的UIViewAutoresizing模式": { + "keywords": [], + "children": [] + } + }, + { + "在xib文件中可视化地配置控件的autoresizing属性": { + "keywords": [], + "children": [] + } + } + ] + } + }, + { + "autolayout自动布局框架": { + "keywords": [], + "children": [ + { + "初识autolayout": { + "keywords": [], + "children": [] + } + }, + { + "autolayout的属性意义与一个简单的自动布局示例": { + "keywords": [], + "children": [] + } + }, + { + "使用代码进行autolayout布局": { + "keywords": [], + "children": [] + } + }, + { + "使用格式化的字符串进行autolayout布局对象的创建": { + "keywords": [], + "children": [] + } + }, + { + "与约束相关的几个方法": { + "keywords": [], + "children": [] + } + }, + { + "使用autolayout设计一个高度自适应的聊天输入框及动画优化": { + "keywords": [], + "children": [] + } + }, + { + "使用第三方库SnapKit进行autolayout约束布局": { + "keywords": [], + "children": [] + } + } + ] + } + } + ] + } + }, + { + "数据持久化技术": { + "keywords": [], + "children": [ + { + "使用plist文件进行轻量级数据持久化管理": { + "keywords": [], + "children": [ + { + "在工程中读取Plist文件数据": { + "keywords": [], + "children": [] + } + }, + { + "在程序沙盒Documents目录中创建和使用plist文件": { + "keywords": [], + "children": [] + } + }, + { + "使用NSUserDefaults类进行数据持久化": { + "keywords": [], + "children": [] + } + } + ] + } + }, + { + "使用归档技术进行数据模型持久化": { + "keywords": [], + "children": [ + { + "进行单一系统数据类型的归档与解归档操作": { + "keywords": [], + "children": [] + } + }, + { + "对多个对象进行数据归档": { + "keywords": [], + "children": [] + } + }, + { + "进行自定义数据模型的归档": { + "keywords": [], + "children": [] + } + } + ] + } + }, + { + "小型数据库SQLite在iOS开发中的应用": { + "keywords": [], + "children": [] + } + }, + { + "核心数据管理框架CoreData的使用": { + "keywords": [], + "children": [ + { + "使用CoreData设计数据模型": { + "keywords": [], + "children": [] + } + }, + { + "CoreData编程框架中3个重要的类": { + "keywords": [], + "children": [] + } + }, + { + "CoreData编程框架的数据操作": { + "keywords": [], + "children": [] + } + }, + { + "使用CoreData进行数据与页面的绑定": { + "keywords": [], + "children": [] + } + } + ] + } + }, + { + "网络缓存策略": { + "keywords": [], + "children": [ + { + "为网络请求设置缓存策略": { + "keywords": [], + "children": [] + } + }, + { + "应用缓存管理类NSURLCache简介": { + "keywords": [], + "children": [] + } + } + ] + } + } + ] + } + }, + { + "提交应用程序到App Store": { + "keywords": [], + "children": [ + { + "使用Xcode开发工具进行程序调试": { + "keywords": [], + "children": [ + { + "使用自定义断点进行代码调试": { + "keywords": [], + "children": [] + } + }, + { + "添加全局异常断点": { + "keywords": [], + "children": [] + } + }, + { + "使用LLDB调试器进行程序调试": { + "keywords": [], + "children": [] + } + } + ] + } + }, + { + "Apple开发者账号的申请": { + "keywords": [], + "children": [ + { + "几种类型的开发者账号": { + "keywords": [], + "children": [] + } + }, + { + "申请开发者账号的过程": { + "keywords": [], + "children": [] + } + } + ] + } + }, + { + "进行应用程序打包": { + "keywords": [], + "children": [ + { + "在iTunes Connect中进行应用的创建与配置": { + "keywords": [], + "children": [] + } + }, + { + "使用Xcode打包与提交iTunes": { + "keywords": [], + "children": [] + } + } + ] + } + } + ] + } + }, + { + "更多功能与进阶技巧": { + "keywords": [], + "children": [ + { + "iOS通知中心NotificaitonCenter的应用": { + "keywords": [], + "children": [ + { + "通知类Notification简介": { + "keywords": [], + "children": [] + } + }, + { + "通知中心NotificationCenter应用": { + "keywords": [], + "children": [] + } + } + ] + } + }, + { + "多线程开发技术": { + "keywords": [], + "children": [ + { + "使用Thread进行线程管理": { + "keywords": [], + "children": [] + } + }, + { + "使用Operation类与OperationQueue类进行多任务管理": { + "keywords": [], + "children": [] + } + }, + { + "iOS中GCD编程技术简介": { + "keywords": [], + "children": [] + } + } + ] + } + }, + { + "3D Touch技术的应用": { + "keywords": [], + "children": [ + { + "3D Touch的3大模块": { + "keywords": [], + "children": [] + } + }, + { + "Home Screen Quick Action使用与相关API详解": { + "keywords": [], + "children": [] + } + } + ] + } + }, + { + "iOS中语音识别技术的应用": { + "keywords": [], + "children": [ + { + "SpeechFramework框架中的重要类": { + "keywords": [], + "children": [] + } + }, + { + "申请用户语音识别权限与进行语音识别请求": { + "keywords": [], + "children": [] + } + } + ] + } + } + ] + } + } + ], + "export": [] +} \ No newline at end of file diff --git "a/data/3.web\351\253\230\351\230\266/6.\347\247\273\345\212\250App\345\274\200\345\217\221/3.\350\267\250\345\271\263\345\217\260\345\274\200\345\217\221/config.json" "b/data/3.web\351\253\230\351\230\266/6.\347\247\273\345\212\250App\345\274\200\345\217\221/3.\350\267\250\345\271\263\345\217\260\345\274\200\345\217\221/config.json" new file mode 100644 index 0000000..7235389 --- /dev/null +++ "b/data/3.web\351\253\230\351\230\266/6.\347\247\273\345\212\250App\345\274\200\345\217\221/3.\350\267\250\345\271\263\345\217\260\345\274\200\345\217\221/config.json" @@ -0,0 +1,31 @@ +{ + "node_id": "569d5e11c4fc5de7844053d9a733c5e8", + "keywords": [], + "children": [ + { + "react native": { + "keywords": [], + "children": [] + } + }, + { + "NativeScript": { + "keywords": [], + "children": [] + } + }, + { + "Flutter": { + "keywords": [], + "children": [] + } + }, + { + "uni-app": { + "keywords": [], + "children": [] + } + } + ], + "export": [] +} \ No newline at end of file diff --git "a/data/3.web\351\253\230\351\230\266/6.\347\247\273\345\212\250App\345\274\200\345\217\221/config.json" "b/data/3.web\351\253\230\351\230\266/6.\347\247\273\345\212\250App\345\274\200\345\217\221/config.json" new file mode 100644 index 0000000..3407cf9 --- /dev/null +++ "b/data/3.web\351\253\230\351\230\266/6.\347\247\273\345\212\250App\345\274\200\345\217\221/config.json" @@ -0,0 +1,4 @@ +{ + "node_id": "569d5e11c4fc5de7844053d9a733c5e8", + "keywords": [] +} \ No newline at end of file diff --git "a/data/3.web\351\253\230\351\230\266/7.\346\241\214\351\235\242\345\272\224\347\224\250\345\274\200\345\217\221(GUI)/1.Java\346\241\214\351\235\242\345\272\224\347\224\250\345\274\200\345\217\221/config.json" "b/data/3.web\351\253\230\351\230\266/7.\346\241\214\351\235\242\345\272\224\347\224\250\345\274\200\345\217\221(GUI)/1.Java\346\241\214\351\235\242\345\272\224\347\224\250\345\274\200\345\217\221/config.json" new file mode 100644 index 0000000..f6416a1 --- /dev/null +++ "b/data/3.web\351\253\230\351\230\266/7.\346\241\214\351\235\242\345\272\224\347\224\250\345\274\200\345\217\221(GUI)/1.Java\346\241\214\351\235\242\345\272\224\347\224\250\345\274\200\345\217\221/config.json" @@ -0,0 +1,6 @@ +{ + "node_id": "569d5e11c4fc5de7844053d9a733c5e8", + "keywords": [], + "children": [], + "export": [] +} \ No newline at end of file diff --git "a/data/3.web\351\253\230\351\230\266/7.\346\241\214\351\235\242\345\272\224\347\224\250\345\274\200\345\217\221(GUI)/2..net\346\241\214\351\235\242\345\272\224\347\224\250\347\250\213\345\272\217\345\274\200\345\217\221/config.json" "b/data/3.web\351\253\230\351\230\266/7.\346\241\214\351\235\242\345\272\224\347\224\250\345\274\200\345\217\221(GUI)/2..net\346\241\214\351\235\242\345\272\224\347\224\250\347\250\213\345\272\217\345\274\200\345\217\221/config.json" new file mode 100644 index 0000000..f6416a1 --- /dev/null +++ "b/data/3.web\351\253\230\351\230\266/7.\346\241\214\351\235\242\345\272\224\347\224\250\345\274\200\345\217\221(GUI)/2..net\346\241\214\351\235\242\345\272\224\347\224\250\347\250\213\345\272\217\345\274\200\345\217\221/config.json" @@ -0,0 +1,6 @@ +{ + "node_id": "569d5e11c4fc5de7844053d9a733c5e8", + "keywords": [], + "children": [], + "export": [] +} \ No newline at end of file diff --git "a/data/3.web\351\253\230\351\230\266/7.\346\241\214\351\235\242\345\272\224\347\224\250\345\274\200\345\217\221(GUI)/3.\350\267\250\345\271\263\345\217\260\346\241\214\351\235\242\345\272\224\347\224\250\347\250\213\345\272\217\345\274\200\345\217\221/config.json" "b/data/3.web\351\253\230\351\230\266/7.\346\241\214\351\235\242\345\272\224\347\224\250\345\274\200\345\217\221(GUI)/3.\350\267\250\345\271\263\345\217\260\346\241\214\351\235\242\345\272\224\347\224\250\347\250\213\345\272\217\345\274\200\345\217\221/config.json" new file mode 100644 index 0000000..53543fa --- /dev/null +++ "b/data/3.web\351\253\230\351\230\266/7.\346\241\214\351\235\242\345\272\224\347\224\250\345\274\200\345\217\221(GUI)/3.\350\267\250\345\271\263\345\217\260\346\241\214\351\235\242\345\272\224\347\224\250\347\250\213\345\272\217\345\274\200\345\217\221/config.json" @@ -0,0 +1,304 @@ +{ + "node_id": "569d5e11c4fc5de7844053d9a733c5e8", + "keywords": [], + "children": [ + { + "electron": { + "keywords": [], + "children": [ + { + "Electron和NW.js入门": { + "keywords": [], + "children": [ + { + "NW.js和Electron的起源": { + "keywords": [], + "children": [] + } + }, + { + "NW.js介绍": { + "keywords": [], + "children": [ + { + "使用NW.js构建Hello World应用": { + "keywords": [], + "children": [] + } + }, + { + "NW.js有哪些特性": { + "keywords": [], + "children": [] + } + } + ] + } + }, + { + "Electron介绍": { + "keywords": [], + "children": [ + { + "Electron是如何工作的以及它和NW.js的区别是什么": { + "keywords": [], + "children": [] + } + }, + { + "使用Electron开发Hello World应用": { + "keywords": [], + "children": [] + } + }, + { + "Electron有哪些特性": { + "keywords": [], + "children": [] + } + } + ] + } + }, + { + "NW.js和Electron支持创建哪类应用": { + "keywords": [], + "children": [ + { + "Slack": { + "keywords": [], + "children": [] + } + }, + { + "Light Table": { + "keywords": [], + "children": [] + } + }, + { + "Game Dev Tycoon": { + "keywords": [], + "children": [] + } + }, + { + "Gitter": { + "keywords": [], + "children": [] + } + }, + { + "Macaw": { + "keywords": [], + "children": [] + } + }, + { + "Hyper": { + "keywords": [], + "children": [] + } + } + ] + } + } + ] + } + }, + { + "为桌面应用搭建基础架构": { + "keywords": [], + "children": [ + { + "创建应用": { + "keywords": [], + "children": [ + { + "安装NW.js和Electron": { + "keywords": [], + "children": [] + } + }, + { + "为NW.js版本的应用创建文件和文件夹": { + "keywords": [], + "children": [] + } + }, + { + "为Electron版本的应用创建文件和文件夹": { + "keywords": [], + "children": [] + } + } + ] + } + }, + { + "实现启动界面": { + "keywords": [], + "children": [ + { + "在工具条中展示用户个人文件夹信息": { + "keywords": [], + "children": [] + } + }, + { + "显示用户个人文件夹中的文件和文件夹": { + "keywords": [], + "children": [] + } + } + ] + } + } + ] + } + }, + { + "构建你的桌面应用": { + "keywords": [], + "children": [ + { + "浏览文件夹": { + "keywords": [], + "children": [ + { + "重构代码": { + "keywords": [], + "children": [] + } + }, + { + "处理对文件夹的双击操作": { + "keywords": [], + "children": [] + } + } + ] + } + }, + { + "实现快速搜索": { + "keywords": [], + "children": [ + { + "在工具条中增加搜索框": { + "keywords": [], + "children": [] + } + }, + { + "引入一个内存搜索库.65": { + "keywords": [], + "children": [] + } + }, + { + "在界面上触发搜索功能.67": { + "keywords": [], + "children": [] + } + } + ] + } + }, + { + "改进应用内的导航功能": { + "keywords": [], + "children": [ + { + "实现当前文件夹路径可单击": { + "keywords": [], + "children": [] + } + }, + { + "让应用随着文件夹路径的改变显示对应的文件夹内容": { + "keywords": [], + "children": [] + } + }, + { + "实现使用默认应用打开对应的文件": { + "keywords": [], + "children": [] + } + } + ] + } + } + ] + } + }, + { + "分发你的桌面应用": { + "keywords": [], + "children": [ + { + "对应用进行与分发相关的设置": { + "keywords": [], + "children": [] + } + }, + { + "对要分发的应用进行打包": { + "keywords": [], + "children": [ + { + "使用一种NW.js的构建工具": { + "keywords": [], + "children": [] + } + }, + { + "使用一种Electron的构建工具": { + "keywords": [], + "children": [] + } + }, + { + "设置应用的图标": { + "keywords": [], + "children": [] + } + } + ] + } + }, + { + "在多个操作系统中测试应用": { + "keywords": [], + "children": [ + { + "Windows.操作系统": { + "keywords": [], + "children": [] + } + }, + { + "Linux.操作系统": { + "keywords": [], + "children": [] + } + }, + { + "Mac.OS.系统": { + "keywords": [], + "children": [] + } + } + ] + } + } + ] + } + } + ] + } + } + ], + "export": [] +} \ No newline at end of file diff --git "a/data/3.web\351\253\230\351\230\266/7.\346\241\214\351\235\242\345\272\224\347\224\250\345\274\200\345\217\221(GUI)/config.json" "b/data/3.web\351\253\230\351\230\266/7.\346\241\214\351\235\242\345\272\224\347\224\250\345\274\200\345\217\221(GUI)/config.json" new file mode 100644 index 0000000..3407cf9 --- /dev/null +++ "b/data/3.web\351\253\230\351\230\266/7.\346\241\214\351\235\242\345\272\224\347\224\250\345\274\200\345\217\221(GUI)/config.json" @@ -0,0 +1,4 @@ +{ + "node_id": "569d5e11c4fc5de7844053d9a733c5e8", + "keywords": [] +} \ No newline at end of file diff --git "a/data/3.web\351\253\230\351\230\266/config.json" "b/data/3.web\351\253\230\351\230\266/config.json" new file mode 100644 index 0000000..3407cf9 --- /dev/null +++ "b/data/3.web\351\253\230\351\230\266/config.json" @@ -0,0 +1,4 @@ +{ + "node_id": "569d5e11c4fc5de7844053d9a733c5e8", + "keywords": [] +} \ No newline at end of file diff --git a/data/config.json b/data/config.json new file mode 100644 index 0000000..f831903 --- /dev/null +++ b/data/config.json @@ -0,0 +1,5 @@ +{ + "tree_name": "web", + "keywords": [], + "node_id": "569d5e11c4fc5de7844053d9a733c5e8" +} \ No newline at end of file diff --git a/data/tree.json b/data/tree.json new file mode 100644 index 0000000..3f83a77 --- /dev/null +++ b/data/tree.json @@ -0,0 +1,18159 @@ +{ + "web": { + "node_id": "569d5e11c4fc5de7844053d9a733c5e8", + "keywords": [], + "children": [ + { + "web初阶": { + "node_id": "569d5e11c4fc5de7844053d9a733c5e8", + "keywords": [], + "children": [ + { + "前端基础": { + "node_id": "569d5e11c4fc5de7844053d9a733c5e8", + "keywords": [], + "children": [ + { + "客户端": { + "node_id": "569d5e11c4fc5de7844053d9a733c5e8", + "keywords": [], + "children": [ + { + "浏览器": { + "keywords": [], + "children": [ + { + "Chrome": { + "keywords": [], + "children": [] + } + }, + { + "Safari": { + "keywords": [], + "children": [] + } + }, + { + "Firefox": { + "keywords": [], + "children": [] + } + } + ] + } + }, + { + "APP": { + "keywords": [], + "children": [ + { + "小程序": { + "keywords": [], + "children": [] + } + }, + { + "WebView": { + "keywords": [], + "children": [] + } + } + ] + } + } + ] + } + }, + { + "网络": { + "node_id": "569d5e11c4fc5de7844053d9a733c5e8", + "keywords": [], + "children": [ + { + "Domain": { + "keywords": [], + "children": [] + } + }, + { + "TCP/IP": { + "keywords": [], + "children": [] + } + }, + { + "DNS": { + "keywords": [], + "children": [] + } + }, + { + "HTTP": { + "keywords": [], + "children": [] + } + } + ] + } + }, + { + "服务端": { + "node_id": "569d5e11c4fc5de7844053d9a733c5e8", + "keywords": [], + "children": [ + { + "WebServer": { + "keywords": [], + "children": [ + { + "Nginx": { + "keywords": [], + "children": [] + } + }, + { + "Apache HTTP Server": { + "keywords": [], + "children": [] + } + }, + { + "CDN": { + "keywords": [], + "children": [] + } + } + ] + } + }, + { + "服务端语言": { + "keywords": [], + "children": [ + { + "PHP": { + "keywords": [], + "children": [] + } + }, + { + "Java": { + "keywords": [], + "children": [] + } + }, + { + "Golang": { + "keywords": [], + "children": [] + } + } + ] + } + }, + { + "数据库": { + "keywords": [], + "children": [] + } + }, + { + "操作系统": { + "keywords": [], + "children": [] + } + } + ] + } + }, + { + "行业标准": { + "node_id": "569d5e11c4fc5de7844053d9a733c5e8", + "keywords": [], + "children": [ + { + "W3C/WHATWG": { + "keywords": [], + "children": [ + { + "CSS标准": { + "keywords": [], + "children": [] + } + }, + { + "HTML、XHTML、XML、HTML5标准": { + "keywords": [], + "children": [] + } + }, + { + "DOM标准": { + "keywords": [], + "children": [] + } + }, + { + "SVG标准": { + "keywords": [], + "children": [] + } + }, + { + "小程序标准": { + "keywords": [], + "children": [] + } + } + ] + } + } + ] + } + }, + { + "ECMA-TC39": { + "node_id": "569d5e11c4fc5de7844053d9a733c5e8", + "keywords": [], + "children": [ + { + "EcmaScript标准": { + "keywords": [], + "children": [] + } + }, + { + "JavaScript标准": { + "keywords": [], + "children": [] + } + } + ] + } + } + ] + } + }, + { + "研发工具": { + "node_id": "569d5e11c4fc5de7844053d9a733c5e8", + "keywords": [], + "children": [ + { + "编辑器": { + "node_id": "569d5e11c4fc5de7844053d9a733c5e8", + "keywords": [], + "children": [ + { + "Sublime Text": { + "keywords": [], + "children": [] + } + }, + { + "Visual Studio Code": { + "keywords": [], + "children": [] + } + }, + { + "WebStorm": { + "keywords": [], + "children": [] + } + } + ] + } + }, + { + "调试预览": { + "node_id": "569d5e11c4fc5de7844053d9a733c5e8", + "keywords": [], + "children": [ + { + "浏览器调试工具": { + "keywords": [], + "children": [ + { + "FireBug": { + "keywords": [], + "children": [] + } + }, + { + "Chrome DevTools": { + "keywords": [], + "children": [] + } + } + ] + } + }, + { + "本地服务": { + "keywords": [], + "children": [ + { + "file://": { + "keywords": [], + "children": [] + } + }, + { + "http://、SimpleHTTPServer": { + "keywords": [], + "children": [] + } + } + ] + } + }, + { + "在线服务": { + "keywords": [], + "children": [ + { + "CodePen": { + "keywords": [], + "children": [] + } + }, + { + "JSFiddle": { + "keywords": [], + "children": [] + } + } + ] + } + }, + { + "网络调试": { + "keywords": [], + "children": [ + { + "hosts、Switchhosts": { + "keywords": [], + "children": [] + } + }, + { + "Debugging Proxy、Charles、wireshark": { + "keywords": [], + "children": [] + } + } + ] + } + } + ] + } + }, + { + "图片编辑器": { + "node_id": "569d5e11c4fc5de7844053d9a733c5e8", + "keywords": [], + "children": [ + { + "Photoshop": { + "keywords": [], + "children": [] + } + }, + { + "Sketch": { + "keywords": [], + "children": [] + } + } + ] + } + }, + { + "版本管理": { + "node_id": "569d5e11c4fc5de7844053d9a733c5e8", + "keywords": [], + "children": [ + { + "Git": { + "keywords": [], + "children": [] + } + }, + { + "SVN": { + "keywords": [], + "children": [] + } + } + ] + } + } + ] + } + }, + { + "HTML": { + "node_id": "569d5e11c4fc5de7844053d9a733c5e8", + "keywords": [], + "children": [ + { + "元素": { + "node_id": "569d5e11c4fc5de7844053d9a733c5e8", + "keywords": [], + "children": [ + { + "根元素": { + "keywords": [], + "children": [ + { + "主根元素 html": { + "keywords": [], + "children": [] + } + }, + { + "分区根元素 body": { + "keywords": [], + "children": [] + } + } + ] + } + }, + { + "元数据": { + "keywords": [], + "children": [ + { + "base、head": { + "keywords": [], + "children": [] + } + } + ] + } + }, + { + "内容分区": { + "keywords": [], + "children": [ + { + "header、footer": { + "keywords": [], + "children": [] + } + } + ] + } + }, + { + "内容": { + "keywords": [], + "children": [ + { + "块级内容 div、dir": { + "keywords": [], + "children": [] + } + }, + { + "文字内容 a、b、strong": { + "keywords": [], + "children": [] + } + } + ] + } + }, + { + "图片和多媒体": { + "keywords": [], + "children": [ + { + "audio、img": { + "keywords": [], + "children": [] + } + } + ] + } + }, + { + "内嵌内容": { + "keywords": [], + "children": [ + { + "iframe、object": { + "keywords": [], + "children": [] + } + } + ] + } + }, + { + "脚本": { + "keywords": [], + "children": [ + { + "canvas、script": { + "keywords": [], + "children": [] + } + } + ] + } + }, + { + "表格": { + "keywords": [], + "children": [ + { + "table、tbody": { + "keywords": [], + "children": [] + } + } + ] + } + }, + { + "表单": { + "keywords": [], + "children": [ + { + "button、input": { + "keywords": [], + "children": [] + } + } + ] + } + }, + { + "可交互元素": { + "keywords": [], + "children": [ + { + "menu、menuitem": { + "keywords": [], + "children": [] + } + } + ] + } + } + ] + } + }, + { + "属性": { + "node_id": "569d5e11c4fc5de7844053d9a733c5e8", + "keywords": [], + "children": [ + { + "常用属性": { + "keywords": [], + "children": [ + { + "class、id、style、title": { + "keywords": [], + "children": [] + } + } + ] + } + }, + { + "全局属性": { + "keywords": [], + "children": [] + } + } + ] + } + }, + { + "事件": { + "node_id": "569d5e11c4fc5de7844053d9a733c5e8", + "keywords": [], + "children": [ + { + "窗口事件": { + "keywords": [], + "children": [] + } + }, + { + "表单事件": { + "keywords": [], + "children": [] + } + }, + { + "键盘事件": { + "keywords": [], + "children": [] + } + }, + { + "鼠标事件": { + "keywords": [], + "children": [] + } + }, + { + "多媒体事件": { + "keywords": [], + "children": [] + } + } + ] + } + }, + { + "编码": { + "node_id": "569d5e11c4fc5de7844053d9a733c5e8", + "keywords": [], + "children": [ + { + "URL编码": { + "keywords": [], + "children": [] + } + }, + { + "语言代码": { + "keywords": [], + "children": [] + } + }, + { + "字符集": { + "keywords": [], + "children": [] + } + } + ] + } + } + ] + } + }, + { + "CSS": { + "node_id": "569d5e11c4fc5de7844053d9a733c5e8", + "keywords": [], + "children": [ + { + "语法": { + "node_id": "569d5e11c4fc5de7844053d9a733c5e8", + "keywords": [], + "children": [ + { + "@规则": { + "keywords": [], + "children": [] + } + }, + { + "层叠": { + "keywords": [], + "children": [] + } + }, + { + "注释": { + "keywords": [], + "children": [] + } + }, + { + "解释器": { + "keywords": [], + "children": [] + } + }, + { + "继承": { + "keywords": [], + "children": [] + } + }, + { + "简写": { + "keywords": [], + "children": [] + } + }, + { + "优先级": { + "keywords": [], + "children": [] + } + }, + { + "值定义": { + "keywords": [], + "children": [] + } + }, + { + "单位与取值类型": { + "keywords": [], + "children": [] + } + } + ] + } + }, + { + "选择器": { + "node_id": "569d5e11c4fc5de7844053d9a733c5e8", + "keywords": [], + "children": [ + { + "元素选择器": { + "keywords": [], + "children": [] + } + }, + { + "选择器分组": { + "keywords": [], + "children": [] + } + }, + { + "类选择器": { + "keywords": [], + "children": [] + } + }, + { + "ID 选择器": { + "keywords": [], + "children": [] + } + }, + { + "属性选择器": { + "keywords": [], + "children": [] + } + }, + { + "后代选择器": { + "keywords": [], + "children": [] + } + }, + { + "子元素选择器": { + "keywords": [], + "children": [] + } + }, + { + "相邻选择器": { + "keywords": [], + "children": [] + } + }, + { + "伪类": { + "keywords": [], + "children": [] + } + }, + { + "伪元素": { + "keywords": [], + "children": [] + } + } + ] + } + }, + { + "定位": { + "node_id": "569d5e11c4fc5de7844053d9a733c5e8", + "keywords": [], + "children": [ + { + "position": { + "keywords": [], + "children": [] + } + }, + { + "top、left、bottom、right": { + "keywords": [], + "children": [] + } + }, + { + "z-index": { + "keywords": [], + "children": [] + } + } + ] + } + }, + { + "布局": { + "node_id": "569d5e11c4fc5de7844053d9a733c5e8", + "keywords": [], + "children": [ + { + "Box Model": { + "keywords": [], + "children": [] + } + }, + { + "FlexBox": { + "keywords": [], + "children": [] + } + }, + { + "Grid": { + "keywords": [], + "children": [] + } + }, + { + "Column": { + "keywords": [], + "children": [] + } + } + ] + } + }, + { + "样式": { + "node_id": "569d5e11c4fc5de7844053d9a733c5e8", + "keywords": [], + "children": [ + { + "背景": { + "keywords": [], + "children": [] + } + }, + { + "文本": { + "keywords": [], + "children": [] + } + }, + { + "轮廓": { + "keywords": [], + "children": [] + } + }, + { + "列表": { + "keywords": [], + "children": [] + } + } + ] + } + }, + { + "动画": { + "node_id": "569d5e11c4fc5de7844053d9a733c5e8", + "keywords": [], + "children": [ + { + "Animation": { + "keywords": [], + "children": [] + } + }, + { + "transition": { + "keywords": [], + "children": [] + } + } + ] + } + }, + { + "应用": { + "node_id": "569d5e11c4fc5de7844053d9a733c5e8", + "keywords": [], + "children": [ + { + "响应式": { + "keywords": [], + "children": [ + { + "em、vh/vw、%": { + "keywords": [], + "children": [] + } + } + ] + } + }, + { + "自适应": { + "keywords": [], + "children": [ + { + "@media、rem": { + "keywords": [], + "children": [] + } + } + ] + } + } + ] + } + } + ] + } + }, + { + "JavaScript": { + "node_id": "569d5e11c4fc5de7844053d9a733c5e8", + "keywords": [], + "children": [ + { + "语法": { + "node_id": "569d5e11c4fc5de7844053d9a733c5e8", + "keywords": [], + "children": [ + { + "值、变量": { + "keywords": [], + "children": [] + } + }, + { + "数据类型": { + "keywords": [], + "children": [ + { + "基本类型": { + "keywords": [], + "children": [] + } + }, + { + "类型判断": { + "keywords": [], + "children": [] + } + }, + { + "类型转换": { + "keywords": [], + "children": [] + } + } + ] + } + }, + { + "流程控制": { + "keywords": [], + "children": [] + } + }, + { + "运算(表达式、运算符)": { + "keywords": [], + "children": [ + { + "数学": { + "keywords": [], + "children": [] + } + }, + { + "比较": { + "keywords": [], + "children": [] + } + }, + { + "逻辑": { + "keywords": [], + "children": [] + } + } + ] + } + }, + { + "函数": { + "keywords": [], + "children": [ + { + "函数声明": { + "keywords": [], + "children": [] + } + }, + { + "函数表达式": { + "keywords": [], + "children": [] + } + }, + { + "回调函数": { + "keywords": [], + "children": [] + } + }, + { + "箭头函数": { + "keywords": [], + "children": [] + } + } + ] + } + } + ] + } + }, + { + "数据类型深入": { + "node_id": "569d5e11c4fc5de7844053d9a733c5e8", + "keywords": [], + "children": [ + { + "原始类型的方法": { + "keywords": [], + "children": [] + } + }, + { + "数字类型": { + "keywords": [], + "children": [] + } + }, + { + "字符串": { + "keywords": [], + "children": [] + } + }, + { + "数组": { + "keywords": [], + "children": [] + } + }, + { + "数组方法": { + "keywords": [], + "children": [] + } + }, + { + "Iterable object(可迭代对象)": { + "keywords": [], + "children": [] + } + }, + { + "Map and Set(映射和集合)": { + "keywords": [], + "children": [] + } + }, + { + "WeakMap and WeakSet(弱映射和弱集合)": { + "keywords": [], + "children": [] + } + }, + { + "Object.keys、values、entries": { + "keywords": [], + "children": [] + } + }, + { + "解构赋值": { + "keywords": [], + "children": [] + } + }, + { + "日期和时间": { + "keywords": [], + "children": [] + } + }, + { + "JSON序列化、反序列化": { + "keywords": [], + "children": [] + } + } + ] + } + }, + { + "对象": { + "node_id": "569d5e11c4fc5de7844053d9a733c5e8", + "keywords": [], + "children": [ + { + "属性/字面量": { + "keywords": [], + "children": [] + } + }, + { + "in 、for…in": { + "keywords": [], + "children": [] + } + }, + { + "对象引用": { + "keywords": [], + "children": [] + } + }, + { + "深拷贝、浅拷贝": { + "keywords": [], + "children": [] + } + }, + { + "Symbol": { + "keywords": [], + "children": [] + } + }, + { + "垃圾收集机制": { + "keywords": [], + "children": [] + } + }, + { + "this": { + "keywords": [], + "children": [] + } + }, + { + "new": { + "keywords": [], + "children": [] + } + }, + { + "Optional chaining ‘?.’": { + "keywords": [], + "children": [] + } + }, + { + "类型转换Symbol.toPrimitive": { + "keywords": [], + "children": [] + } + }, + { + "Property flags、descriptors": { + "keywords": [], + "children": [] + } + }, + { + "getters、setters": { + "keywords": [], + "children": [] + } + } + ] + } + }, + { + "函数": { + "node_id": "569d5e11c4fc5de7844053d9a733c5e8", + "keywords": [], + "children": [ + { + "调用栈": { + "keywords": [], + "children": [] + } + }, + { + "递归、尾递归": { + "keywords": [], + "children": [] + } + }, + { + "arguments、params spread": { + "keywords": [], + "children": [] + } + }, + { + "作用域、闭包": { + "keywords": [], + "children": [] + } + }, + { + "var、变量提升": { + "keywords": [], + "children": [] + } + }, + { + "IIFE、匿名自执行函数": { + "keywords": [], + "children": [] + } + }, + { + "NFE、函数命名表达式": { + "keywords": [], + "children": [] + } + }, + { + "箭头函数": { + "keywords": [], + "children": [] + } + }, + { + "new Function": { + "keywords": [], + "children": [] + } + }, + { + "setTimeout、setInterval": { + "keywords": [], + "children": [] + } + }, + { + "call、apply、bind": { + "keywords": [], + "children": [] + } + }, + { + "部分施用、柯里化": { + "keywords": [], + "children": [] + } + } + ] + } + }, + { + "原型": { + "node_id": "569d5e11c4fc5de7844053d9a733c5e8", + "keywords": [], + "children": [ + { + "原型链、继承": { + "keywords": [], + "children": [] + } + }, + { + "F.prototype": { + "keywords": [], + "children": [] + } + }, + { + "Object.prototype": { + "keywords": [], + "children": [] + } + } + ] + } + }, + { + "类": { + "node_id": "569d5e11c4fc5de7844053d9a733c5e8", + "keywords": [], + "children": [ + { + "extend 继承": { + "keywords": [], + "children": [] + } + }, + { + "方法重载": { + "keywords": [], + "children": [] + } + }, + { + "构造函数": { + "keywords": [], + "children": [] + } + }, + { + "Super、[[HomeObject]]": { + "keywords": [], + "children": [] + } + }, + { + "静态属性、静态函数": { + "keywords": [], + "children": [] + } + }, + { + "私有属性、私有函数": { + "keywords": [], + "children": [] + } + }, + { + "混合、Mixins": { + "keywords": [], + "children": [] + } + } + ] + } + }, + { + "异步流程控制": { + "node_id": "569d5e11c4fc5de7844053d9a733c5e8", + "keywords": [], + "children": [ + { + "Callback": { + "keywords": [], + "children": [] + } + }, + { + "Promise": { + "keywords": [], + "children": [ + { + "Promises/A+、Promisification、Thenable": { + "keywords": [], + "children": [] + } + } + ] + } + }, + { + "async/await": { + "keywords": [], + "children": [] + } + }, + { + "generator": { + "keywords": [], + "children": [] + } + }, + { + "iterable": { + "keywords": [], + "children": [] + } + } + ] + } + }, + { + "模块化": { + "node_id": "569d5e11c4fc5de7844053d9a733c5e8", + "keywords": [], + "children": [ + { + "commonJS": { + "keywords": [], + "children": [] + } + }, + { + "amd、cmd、umd、es-module": { + "keywords": [], + "children": [] + } + } + ] + } + }, + { + "异常捕获": { + "node_id": "569d5e11c4fc5de7844053d9a733c5e8", + "keywords": [], + "children": [ + { + "try…catch…finally": { + "keywords": [], + "children": [] + } + }, + { + "throw": { + "keywords": [], + "children": [] + } + }, + { + "Error": { + "keywords": [], + "children": [] + } + } + ] + } + } + ] + } + }, + { + "浏览器": { + "node_id": "569d5e11c4fc5de7844053d9a733c5e8", + "keywords": [], + "children": [ + { + "DOM": { + "node_id": "569d5e11c4fc5de7844053d9a733c5e8", + "keywords": [], + "children": [ + { + "DOM Tree": { + "keywords": [], + "children": [] + } + }, + { + "DOM Node": { + "keywords": [], + "children": [] + } + }, + { + "DOM Query": { + "keywords": [], + "children": [] + } + }, + { + "DOM Properties": { + "keywords": [], + "children": [] + } + }, + { + "DOM Modify": { + "keywords": [], + "children": [] + } + }, + { + "Styles": { + "keywords": [], + "children": [] + } + }, + { + "Coordinates、Element Scrolling": { + "keywords": [], + "children": [] + } + }, + { + "DOM Events": { + "keywords": [], + "children": [ + { + "UI Event": { + "keywords": [], + "children": [] + } + }, + { + "Bubbling and Capturing": { + "keywords": [], + "children": [] + } + }, + { + "Event Delegate": { + "keywords": [], + "children": [] + } + } + ] + } + } + ] + } + }, + { + "浏览器API": { + "node_id": "569d5e11c4fc5de7844053d9a733c5e8", + "keywords": [], + "children": [ + { + "location": { + "keywords": [], + "children": [] + } + }, + { + "history": { + "keywords": [], + "children": [] + } + }, + { + "navigator": { + "keywords": [], + "children": [] + } + }, + { + "Default Actions": { + "keywords": [], + "children": [ + { + "event.preventDefault()": { + "keywords": [], + "children": [] + } + } + ] + } + }, + { + "Form": { + "keywords": [], + "children": [ + { + "change、focus、blur、submit": { + "keywords": [], + "children": [] + } + } + ] + } + } + ] + } + }, + { + "网络": { + "node_id": "569d5e11c4fc5de7844053d9a733c5e8", + "keywords": [], + "children": [ + { + "XHR": { + "keywords": [], + "children": [] + } + }, + { + "Fetch": { + "keywords": [], + "children": [] + } + }, + { + "JSONP": { + "keywords": [], + "children": [] + } + }, + { + "WebSocket": { + "keywords": [], + "children": [] + } + } + ] + } + }, + { + "权限": { + "node_id": "569d5e11c4fc5de7844053d9a733c5e8", + "keywords": [], + "children": [ + { + "Cookie": { + "keywords": [], + "children": [] + } + }, + { + "Session": { + "keywords": [], + "children": [] + } + }, + { + "OAuth": { + "keywords": [], + "children": [] + } + }, + { + "SSO": { + "keywords": [], + "children": [] + } + }, + { + "JWT": { + "keywords": [], + "children": [] + } + } + ] + } + }, + { + "安全与隐私": { + "node_id": "569d5e11c4fc5de7844053d9a733c5e8", + "keywords": [], + "children": [ + { + "Content Security Policy (CSP)": { + "keywords": [], + "children": [] + } + }, + { + "CORS": { + "keywords": [], + "children": [] + } + }, + { + "XSS": { + "keywords": [], + "children": [] + } + }, + { + "CSRF": { + "keywords": [], + "children": [] + } + }, + { + "MITM": { + "keywords": [], + "children": [] + } + }, + { + "Samesite": { + "keywords": [], + "children": [] + } + } + ] + } + }, + { + "兼容性": { + "node_id": "569d5e11c4fc5de7844053d9a733c5e8", + "keywords": [], + "children": [ + { + "Can I Use": { + "keywords": [], + "children": [] + } + }, + { + "polyfill": { + "keywords": [], + "children": [] + } + }, + { + "shim": { + "keywords": [], + "children": [] + } + }, + { + "browserslist": { + "keywords": [], + "children": [] + } + }, + { + "Autoprefixer": { + "keywords": [], + "children": [] + } + } + ] + } + }, + { + "开发者工具": { + "node_id": "569d5e11c4fc5de7844053d9a733c5e8", + "keywords": [], + "children": [ + { + "设备模式": { + "keywords": [], + "children": [] + } + }, + { + "元素面板": { + "keywords": [], + "children": [] + } + }, + { + "控制台面板": { + "keywords": [], + "children": [] + } + }, + { + "源代码面板": { + "keywords": [], + "children": [] + } + }, + { + "网络面板": { + "keywords": [], + "children": [] + } + }, + { + "性能面板": { + "keywords": [], + "children": [] + } + }, + { + "内存面板": { + "keywords": [], + "children": [] + } + }, + { + "应用面板": { + "keywords": [], + "children": [] + } + }, + { + "安全面板": { + "keywords": [], + "children": [] + } + } + ] + } + } + ] + } + }, + { + "jquery": { + "node_id": "569d5e11c4fc5de7844053d9a733c5e8", + "keywords": [], + "children": [ + { + "jQuery基础": { + "node_id": "569d5e11c4fc5de7844053d9a733c5e8", + "keywords": [], + "children": [ + { + "认识jQuery": { + "keywords": [], + "children": [] + } + }, + { + "使用jQuery": { + "keywords": [], + "children": [] + } + } + ] + } + }, + { + "jQueryUI基础": { + "node_id": "569d5e11c4fc5de7844053d9a733c5e8", + "keywords": [], + "children": [ + { + "使用jQueryUI库": { + "keywords": [], + "children": [ + { + "认识jQueryUI": { + "keywords": [], + "children": [] + } + }, + { + "jQueryUI库结构": { + "keywords": [], + "children": [] + } + }, + { + "组件分类": { + "keywords": [], + "children": [] + } + }, + { + "浏览器支持": { + "keywords": [], + "children": [] + } + }, + { + "使用主题定制器": { + "keywords": [], + "children": [] + } + }, + { + "使用jQueryUI组件": { + "keywords": [], + "children": [] + } + } + ] + } + }, + { + "案例实战:使用第三方插件": { + "keywords": [], + "children": [] + } + } + ] + } + }, + { + "jQueryUI交互开发": { + "node_id": "569d5e11c4fc5de7844053d9a733c5e8", + "keywords": [], + "children": [ + { + "拖放": { + "keywords": [], + "children": [ + { + "拖动对象": { + "keywords": [], + "children": [] + } + }, + { + "投放对象": { + "keywords": [], + "children": [] + } + } + ] + } + }, + { + "缩放": { + "keywords": [], + "children": [] + } + }, + { + "选择": { + "keywords": [], + "children": [] + } + }, + { + "排序": { + "keywords": [], + "children": [] + } + } + ] + } + }, + { + "jQueryUI小部件": { + "node_id": "569d5e11c4fc5de7844053d9a733c5e8", + "keywords": [], + "children": [ + { + "选项卡": { + "keywords": [], + "children": [] + } + }, + { + "手风琴": { + "keywords": [], + "children": [] + } + }, + { + "对话框": { + "keywords": [], + "children": [] + } + }, + { + "滑动条": { + "keywords": [], + "children": [] + } + }, + { + "日期选择器": { + "keywords": [], + "children": [] + } + } + ] + } + }, + { + "jQueryUI特效": { + "node_id": "569d5e11c4fc5de7844053d9a733c5e8", + "keywords": [], + "children": [ + { + "特效核心": { + "keywords": [], + "children": [] + } + }, + { + "高亮": { + "keywords": [], + "children": [] + } + }, + { + "弹跳": { + "keywords": [], + "children": [] + } + }, + { + "摇晃": { + "keywords": [], + "children": [] + } + }, + { + "转换": { + "keywords": [], + "children": [] + } + }, + { + "缩放": { + "keywords": [], + "children": [] + } + }, + { + "爆炸": { + "keywords": [], + "children": [] + } + }, + { + "抖动": { + "keywords": [], + "children": [] + } + }, + { + "落体": { + "keywords": [], + "children": [] + } + }, + { + "滑动": { + "keywords": [], + "children": [] + } + }, + { + "剪辑": { + "keywords": [], + "children": [] + } + }, + { + "百叶窗": { + "keywords": [], + "children": [] + } + }, + { + "折叠": { + "keywords": [], + "children": [] + } + } + ] + } + }, + { + "浏览器和导航开发": { + "node_id": "569d5e11c4fc5de7844053d9a733c5e8", + "keywords": [], + "children": [ + { + "浏览器开发": { + "keywords": [], + "children": [ + { + "浏览器智能检测": { + "keywords": [], + "children": [] + } + }, + { + "强制渲染": { + "keywords": [], + "children": [] + } + }, + { + "浏览器插件检测": { + "keywords": [], + "children": [] + } + } + ] + } + }, + { + "菜单开发": { + "keywords": [], + "children": [ + { + "使用jMenu菜单": { + "keywords": [], + "children": [] + } + }, + { + "uiSelect下拉菜单": { + "keywords": [], + "children": [] + } + }, + { + "Apycom弹出菜单": { + "keywords": [], + "children": [] + } + }, + { + "Smartango内容菜单": { + "keywords": [], + "children": [] + } + } + ] + } + }, + { + "导航开发": { + "keywords": [], + "children": [ + { + "jqDock码头导航": { + "keywords": [], + "children": [] + } + }, + { + "AnythingSlider预览导航": { + "keywords": [], + "children": [] + } + } + ] + } + } + ] + } + }, + { + "表格开发": { + "node_id": "569d5e11c4fc5de7844053d9a733c5e8", + "keywords": [], + "children": [ + { + "表格排序": { + "keywords": [], + "children": [ + { + "设计适合排序的表格结构": { + "keywords": [], + "children": [] + } + }, + { + "实现基本排序功能": { + "keywords": [], + "children": [] + } + }, + { + "优化排序性能": { + "keywords": [], + "children": [] + } + }, + { + "优化类型排序": { + "keywords": [], + "children": [] + } + }, + { + "完善视觉交互效果": { + "keywords": [], + "children": [] + } + }, + { + "使用tablesorter插件": { + "keywords": [], + "children": [] + } + } + ] + } + }, + { + "表格分页": { + "keywords": [], + "children": [ + { + "使用服务器分页": { + "keywords": [], + "children": [] + } + }, + { + "使用JavaScript实现分页": { + "keywords": [], + "children": [] + } + }, + { + "使用Pagination插件分页": { + "keywords": [], + "children": [] + } + } + ] + } + }, + { + "表格过滤": { + "keywords": [], + "children": [ + { + "快速过滤": { + "keywords": [], + "children": [] + } + }, + { + "多关键字匹配": { + "keywords": [], + "children": [] + } + }, + { + "列过滤": { + "keywords": [], + "children": [] + } + }, + { + "自定义表格过滤插件": { + "keywords": [], + "children": [] + } + }, + { + "使用uiTableFilter插件": { + "keywords": [], + "children": [] + } + } + ] + } + }, + { + "表格编辑": { + "keywords": [], + "children": [ + { + "实现表格编辑功能": { + "keywords": [], + "children": [] + } + }, + { + "自定义表格编辑插件": { + "keywords": [], + "children": [] + } + }, + { + "使用tableRowCheckboxToggle": { + "keywords": [], + "children": [] + } + }, + { + "使用TableDnD插件": { + "keywords": [], + "children": [] + } + }, + { + "使用uiTableEdit插件": { + "keywords": [], + "children": [] + } + } + ] + } + } + ] + } + }, + { + "表单开发": { + "node_id": "569d5e11c4fc5de7844053d9a733c5e8", + "keywords": [], + "children": [ + { + "设计表单": { + "keywords": [], + "children": [ + { + "设计表单结构": { + "keywords": [], + "children": [] + } + }, + { + "设计分组标题": { + "keywords": [], + "children": [] + } + }, + { + "设计提示信息": { + "keywords": [], + "children": [] + } + }, + { + "设计条件字段": { + "keywords": [], + "children": [] + } + }, + { + "使用checkbox插件": { + "keywords": [], + "children": [] + } + }, + { + "使用jqTransform插件": { + "keywords": [], + "children": [] + } + } + ] + } + }, + { + "表单验证": { + "keywords": [], + "children": [ + { + "表单验证基础": { + "keywords": [], + "children": [] + } + }, + { + "使用jQueryValidation插件": { + "keywords": [], + "children": [] + } + }, + { + "使用validationEngine插件": { + "keywords": [], + "children": [] + } + } + ] + } + }, + { + "增强表单": { + "keywords": [], + "children": [ + { + "使用Elastic插件": { + "keywords": [], + "children": [] + } + }, + { + "使用Autotab插件": { + "keywords": [], + "children": [] + } + }, + { + "使用maskedInput插件": { + "keywords": [], + "children": [] + } + }, + { + "使用passwordStrength插件": { + "keywords": [], + "children": [] + } + }, + { + "使用formToWizard插件": { + "keywords": [], + "children": [] + } + }, + { + "使用datePicker插件": { + "keywords": [], + "children": [] + } + } + ] + } + } + ] + } + }, + { + "jQueryMobile基础": { + "node_id": "569d5e11c4fc5de7844053d9a733c5e8", + "keywords": [], + "children": [ + { + "移动开发概述": { + "keywords": [], + "children": [ + { + "移动设备统计分析": { + "keywords": [], + "children": [] + } + }, + { + "手机浏览器兼容性测试结果概要": { + "keywords": [], + "children": [] + } + }, + { + "开发中可能遇到的问题": { + "keywords": [], + "children": [] + } + } + ] + } + }, + { + "jQueryMobile概述": { + "keywords": [], + "children": [ + { + "为什么要选择jQueryMobile": { + "keywords": [], + "children": [] + } + }, + { + "jQueryMobile移动平台的兼容性": { + "keywords": [], + "children": [] + } + }, + { + "jQueryMobile的功能": { + "keywords": [], + "children": [] + } + }, + { + "jQueryMobile的特性": { + "keywords": [], + "children": [] + } + } + ] + } + }, + { + "安装jQueryMobile": { + "keywords": [], + "children": [ + { + "下载插件文件": { + "keywords": [], + "children": [] + } + }, + { + "初始化配置": { + "keywords": [], + "children": [] + } + } + ] + } + }, + { + "案例:设计第一个移动页面": { + "keywords": [], + "children": [] + } + } + ] + } + }, + { + "设计移动页面和对话框": { + "node_id": "569d5e11c4fc5de7844053d9a733c5e8", + "keywords": [], + "children": [ + { + "设计页面": { + "keywords": [], + "children": [ + { + "定义单页": { + "keywords": [], + "children": [] + } + }, + { + "定义多页": { + "keywords": [], + "children": [] + } + }, + { + "定义外部页": { + "keywords": [], + "children": [] + } + } + ] + } + }, + { + "设计对话框": { + "keywords": [], + "children": [ + { + "定义对话框": { + "keywords": [], + "children": [] + } + }, + { + "定义关闭对话框": { + "keywords": [], + "children": [] + } + } + ] + } + } + ] + } + }, + { + "使用选择器": { + "node_id": "569d5e11c4fc5de7844053d9a733c5e8", + "keywords": [], + "children": [ + { + "jQuery选择器基础": { + "keywords": [], + "children": [] + } + }, + { + "基本选择器": { + "keywords": [], + "children": [ + { + "ID选择器": { + "keywords": [], + "children": [] + } + }, + { + "类型选择器": { + "keywords": [], + "children": [] + } + }, + { + "类选择器": { + "keywords": [], + "children": [] + } + }, + { + "通配选择器": { + "keywords": [], + "children": [] + } + }, + { + "分组选择器": { + "keywords": [], + "children": [] + } + } + ] + } + }, + { + "结构选择器": { + "keywords": [], + "children": [ + { + "层级选择器": { + "keywords": [], + "children": [] + } + }, + { + "子元素选择器": { + "keywords": [], + "children": [] + } + } + ] + } + }, + { + "过滤选择器": { + "keywords": [], + "children": [ + { + "定位过滤器": { + "keywords": [], + "children": [] + } + }, + { + "内容过滤器": { + "keywords": [], + "children": [] + } + }, + { + "可见过滤器": { + "keywords": [], + "children": [] + } + } + ] + } + }, + { + "属性选择器": { + "keywords": [], + "children": [] + } + }, + { + "表单选择器": { + "keywords": [], + "children": [ + { + "基本选择器": { + "keywords": [], + "children": [] + } + }, + { + "高级表单选择器": { + "keywords": [], + "children": [] + } + } + ] + } + }, + { + "jQuery选择器优化": { + "keywords": [], + "children": [] + } + }, + { + "使用原生选择器": { + "keywords": [], + "children": [] + } + } + ] + } + }, + { + "使用过滤器": { + "node_id": "569d5e11c4fc5de7844053d9a733c5e8", + "keywords": [], + "children": [ + { + "过滤": { + "keywords": [], + "children": [ + { + "类过滤": { + "keywords": [], + "children": [] + } + }, + { + "下标过滤": { + "keywords": [], + "children": [] + } + }, + { + "表达式过滤": { + "keywords": [], + "children": [] + } + }, + { + "判断": { + "keywords": [], + "children": [] + } + }, + { + "映射": { + "keywords": [], + "children": [] + } + }, + { + "清除": { + "keywords": [], + "children": [] + } + }, + { + "截取": { + "keywords": [], + "children": [] + } + } + ] + } + }, + { + "查找": { + "keywords": [], + "children": [ + { + "向下查找.": { + "keywords": [], + "children": [] + } + }, + { + "向上查找.": { + "keywords": [], + "children": [] + } + }, + { + "向前查找.": { + "keywords": [], + "children": [] + } + }, + { + "向后查找.": { + "keywords": [], + "children": [] + } + }, + { + "查找同辈元素": { + "keywords": [], + "children": [] + } + }, + { + "添加查找.": { + "keywords": [], + "children": [] + } + } + ] + } + }, + { + "串联": { + "keywords": [], + "children": [ + { + "合并jQuery对象": { + "keywords": [], + "children": [] + } + }, + { + "返回jQuery对象": { + "keywords": [], + "children": [] + } + } + ] + } + } + ] + } + }, + { + "操作DOM": { + "node_id": "569d5e11c4fc5de7844053d9a733c5e8", + "keywords": [], + "children": [ + { + "创建节点": { + "keywords": [], + "children": [ + { + "创建元素.": { + "keywords": [], + "children": [] + } + }, + { + "创建文本.": { + "keywords": [], + "children": [] + } + }, + { + "创建属性.": { + "keywords": [], + "children": [] + } + } + ] + } + }, + { + "插入节点": { + "keywords": [], + "children": [ + { + "内部插入.": { + "keywords": [], + "children": [] + } + }, + { + "外部插入.": { + "keywords": [], + "children": [] + } + } + ] + } + }, + { + "删除节点": { + "keywords": [], + "children": [ + { + "移出": { + "keywords": [], + "children": [] + } + }, + { + "清空": { + "keywords": [], + "children": [] + } + }, + { + "分离": { + "keywords": [], + "children": [] + } + } + ] + } + }, + { + "复制节点": { + "keywords": [], + "children": [] + } + }, + { + "替换节点": { + "keywords": [], + "children": [] + } + }, + { + "包裹元素": { + "keywords": [], + "children": [ + { + "外包": { + "keywords": [], + "children": [] + } + }, + { + "内包": { + "keywords": [], + "children": [] + } + }, + { + "总包": { + "keywords": [], + "children": [] + } + }, + { + "卸包": { + "keywords": [], + "children": [] + } + } + ] + } + }, + { + "操作属性": { + "keywords": [], + "children": [ + { + "设置属性.": { + "keywords": [], + "children": [] + } + }, + { + "访问属性": { + "keywords": [], + "children": [] + } + }, + { + "删除属性": { + "keywords": [], + "children": [] + } + } + ] + } + }, + { + "操作类": { + "keywords": [], + "children": [ + { + "添加类样式": { + "keywords": [], + "children": [] + } + }, + { + "删除类样式": { + "keywords": [], + "children": [] + } + }, + { + "切换类样式": { + "keywords": [], + "children": [] + } + }, + { + "判断类样式": { + "keywords": [], + "children": [] + } + } + ] + } + }, + { + "操作内容": { + "keywords": [], + "children": [ + { + "读写HTML字符串": { + "keywords": [], + "children": [] + } + }, + { + "读写文本": { + "keywords": [], + "children": [] + } + }, + { + "读写值": { + "keywords": [], + "children": [] + } + } + ] + } + }, + { + "操作样式表": { + "keywords": [], + "children": [ + { + "读写CSS样式": { + "keywords": [], + "children": [] + } + }, + { + "绝对定位": { + "keywords": [], + "children": [] + } + }, + { + "相对定位": { + "keywords": [], + "children": [] + } + }, + { + "控制大小": { + "keywords": [], + "children": [] + } + } + ] + } + }, + { + "遍历文档": { + "keywords": [], + "children": [] + } + } + ] + } + }, + { + "事件处理": { + "node_id": "569d5e11c4fc5de7844053d9a733c5e8", + "keywords": [], + "children": [ + { + "jQuery事件基础": { + "keywords": [], + "children": [ + { + "绑定事件": { + "keywords": [], + "children": [] + } + }, + { + "事件方法": { + "keywords": [], + "children": [] + } + }, + { + "绑定一次性事件": { + "keywords": [], + "children": [] + } + }, + { + "注销事件": { + "keywords": [], + "children": [] + } + }, + { + "使用事件对象": { + "keywords": [], + "children": [] + } + }, + { + "触发事件": { + "keywords": [], + "children": [] + } + } + ] + } + }, + { + "案例实战": { + "keywords": [], + "children": [ + { + "切换事件": { + "keywords": [], + "children": [] + } + }, + { + "使用悬停事件": { + "keywords": [], + "children": [] + } + }, + { + "事件命名空间": { + "keywords": [], + "children": [] + } + }, + { + "绑定多个事件": { + "keywords": [], + "children": [] + } + }, + { + "自定义事件": { + "keywords": [], + "children": [] + } + }, + { + "页面初始化": { + "keywords": [], + "children": [] + } + }, + { + "使用ready事件": { + "keywords": [], + "children": [] + } + } + ] + } + } + ] + } + }, + { + "使用Ajax": { + "node_id": "569d5e11c4fc5de7844053d9a733c5e8", + "keywords": [], + "children": [ + { + "jQueryAjax基础": { + "keywords": [], + "children": [ + { + "认识Ajax": { + "keywords": [], + "children": [] + } + }, + { + "安装虚拟服务器": { + "keywords": [], + "children": [] + } + }, + { + "配置IIS组件": { + "keywords": [], + "children": [] + } + }, + { + "定义虚拟目录": { + "keywords": [], + "children": [] + } + }, + { + "定义本地站点": { + "keywords": [], + "children": [] + } + }, + { + "定义动态站点": { + "keywords": [], + "children": [] + } + }, + { + "测试本地站点": { + "keywords": [], + "children": [] + } + } + ] + } + } + ] + } + }, + { + "设计动画": { + "node_id": "569d5e11c4fc5de7844053d9a733c5e8", + "keywords": [], + "children": [ + { + "jQuery动画基础": { + "keywords": [], + "children": [ + { + "显隐效果.": { + "keywords": [], + "children": [] + } + }, + { + "显隐切换.": { + "keywords": [], + "children": [] + } + }, + { + "滑动效果.": { + "keywords": [], + "children": [] + } + }, + { + "滑动切换.": { + "keywords": [], + "children": [] + } + }, + { + "淡入淡出.": { + "keywords": [], + "children": [] + } + }, + { + "控制淡入淡出度": { + "keywords": [], + "children": [] + } + }, + { + "渐变切换.": { + "keywords": [], + "children": [] + } + } + ] + } + }, + { + "设计复杂动画": { + "keywords": [], + "children": [ + { + "模拟show()方法.": { + "keywords": [], + "children": [] + } + }, + { + "自定义动画": { + "keywords": [], + "children": [] + } + }, + { + "滑动定位.": { + "keywords": [], + "children": [] + } + }, + { + "停止动画.": { + "keywords": [], + "children": [] + } + }, + { + "关闭动画.": { + "keywords": [], + "children": [] + } + }, + { + "设置动画频率": { + "keywords": [], + "children": [] + } + }, + { + "延迟动画.": { + "keywords": [], + "children": [] + } + } + ] + } + } + ] + } + }, + { + "使用辅助工具": { + "node_id": "569d5e11c4fc5de7844053d9a733c5e8", + "keywords": [], + "children": [ + { + "检测浏览器": { + "keywords": [], + "children": [ + { + "检测类型.": { + "keywords": [], + "children": [] + } + }, + { + "检测版本号": { + "keywords": [], + "children": [] + } + }, + { + "检测渲染方式": { + "keywords": [], + "children": [] + } + }, + { + "综合测试.": { + "keywords": [], + "children": [] + } + } + ] + } + }, + { + "管理jQuery库1": { + "keywords": [], + "children": [ + { + "兼容其他库": { + "keywords": [], + "children": [] + } + }, + { + "混用多个库": { + "keywords": [], + "children": [] + } + } + ] + } + }, + { + "扩展JavaScript方法": { + "keywords": [], + "children": [ + { + "修剪字符串": { + "keywords": [], + "children": [] + } + }, + { + "序列化字符串": { + "keywords": [], + "children": [] + } + }, + { + "检测数组": { + "keywords": [], + "children": [] + } + }, + { + "遍历对象": { + "keywords": [], + "children": [] + } + }, + { + "转换数组": { + "keywords": [], + "children": [] + } + }, + { + "过滤数组": { + "keywords": [], + "children": [] + } + }, + { + "映射数组": { + "keywords": [], + "children": [] + } + }, + { + "合并数组": { + "keywords": [], + "children": [] + } + }, + { + "删除重复项": { + "keywords": [], + "children": [] + } + }, + { + "遍历jQuery对象": { + "keywords": [], + "children": [] + } + }, + { + "获取jQuery对象长度": { + "keywords": [], + "children": [] + } + }, + { + "获取选择器和选择范围": { + "keywords": [], + "children": [] + } + }, + { + "获取jQuery对象成员": { + "keywords": [], + "children": [] + } + } + ] + } + }, + { + "使用缓存和队列": { + "keywords": [], + "children": [ + { + "认识缓存": { + "keywords": [], + "children": [] + } + }, + { + "定义缓存": { + "keywords": [], + "children": [] + } + }, + { + "获取缓存": { + "keywords": [], + "children": [] + } + }, + { + "删除缓存": { + "keywords": [], + "children": [] + } + }, + { + "jQuery缓存规范": { + "keywords": [], + "children": [] + } + }, + { + "认识队列": { + "keywords": [], + "children": [] + } + }, + { + "添加队列": { + "keywords": [], + "children": [] + } + }, + { + "显示队列": { + "keywords": [], + "children": [] + } + }, + { + "更新队列": { + "keywords": [], + "children": [] + } + }, + { + "删除队列": { + "keywords": [], + "children": [] + } + } + ] + } + }, + { + "使用延迟对象": { + "keywords": [], + "children": [ + { + "认识deferred对象": { + "keywords": [], + "children": [] + } + }, + { + "Ajax链式写法": { + "keywords": [], + "children": [] + } + }, + { + "定义同一操作的多个回调函数": { + "keywords": [], + "children": [] + } + }, + { + "为多个操作定义回调函数": { + "keywords": [], + "children": [] + } + }, + { + "普通操作的回调函数接口": { + "keywords": [], + "children": [] + } + } + ] + } + }, + { + "使用回调函数对象": { + "keywords": [], + "children": [ + { + "添加回调函数": { + "keywords": [], + "children": [] + } + }, + { + "删除回调函数": { + "keywords": [], + "children": [] + } + }, + { + "判断回调函数": { + "keywords": [], + "children": [] + } + }, + { + "清空回调函数": { + "keywords": [], + "children": [] + } + }, + { + "禁用回调函数": { + "keywords": [], + "children": [] + } + }, + { + "触发回调函数": { + "keywords": [], + "children": [] + } + }, + { + "锁定回调函数": { + "keywords": [], + "children": [] + } + } + ] + } + } + ] + } + }, + { + "自定义插件": { + "node_id": "569d5e11c4fc5de7844053d9a733c5e8", + "keywords": [], + "children": [ + { + "jQuery插件开发基础": { + "keywords": [], + "children": [ + { + "jQuery插件开发规范": { + "keywords": [], + "children": [] + } + }, + { + "jQuery插件设计原理": { + "keywords": [], + "children": [] + } + }, + { + "定义工具函数": { + "keywords": [], + "children": [] + } + }, + { + "定义jQuery方法": { + "keywords": [], + "children": [] + } + }, + { + "匹配元素对象": { + "keywords": [], + "children": [] + } + }, + { + "使用extend()": { + "keywords": [], + "children": [] + } + }, + { + "定义jQuery选择器": { + "keywords": [], + "children": [] + } + }, + { + "优化默认选择器": { + "keywords": [], + "children": [] + } + }, + { + "封装插件.": { + "keywords": [], + "children": [] + } + }, + { + "开放参数": { + "keywords": [], + "children": [] + } + }, + { + "开放功能": { + "keywords": [], + "children": [] + } + }, + { + "保留隐私": { + "keywords": [], + "children": [] + } + }, + { + "非破坏性实现": { + "keywords": [], + "children": [] + } + }, + { + "添加事件日志": { + "keywords": [], + "children": [] + } + }, + { + "简化式插件设计": { + "keywords": [], + "children": [] + } + } + ] + } + } + ] + } + } + ] + } + }, + { + "网络请求": { + "node_id": "569d5e11c4fc5de7844053d9a733c5e8", + "keywords": [], + "children": [ + { + "json": { + "node_id": "569d5e11c4fc5de7844053d9a733c5e8", + "keywords": [], + "children": [] + } + }, + { + "ajax": { + "node_id": "569d5e11c4fc5de7844053d9a733c5e8", + "keywords": [], + "children": [] + } + }, + { + "axios": { + "node_id": "569d5e11c4fc5de7844053d9a733c5e8", + "keywords": [], + "children": [] + } + }, + { + "mock": { + "node_id": "569d5e11c4fc5de7844053d9a733c5e8", + "keywords": [], + "children": [] + } + }, + { + "proxy": { + "node_id": "569d5e11c4fc5de7844053d9a733c5e8", + "keywords": [], + "children": [] + } + } + ] + } + }, + { + "移动web开发": { + "node_id": "569d5e11c4fc5de7844053d9a733c5e8", + "keywords": [], + "children": [ + { + "HTML 5移动Web开发实战": { + "node_id": "569d5e11c4fc5de7844053d9a733c5e8", + "keywords": [], + "children": [ + { + "重温HTML": { + "keywords": [], + "children": [ + { + "HTML能干什么": { + "keywords": [], + "children": [] + } + }, + { + "HTML的核心要素": { + "keywords": [], + "children": [] + } + } + ] + } + }, + { + "HTML的语义来源": { + "keywords": [], + "children": [] + } + }, + { + "HTML 5的元素和属性": { + "keywords": [], + "children": [ + { + "全局属性": { + "keywords": [], + "children": [] + } + }, + { + "HTML 5与它的全局属性": { + "keywords": [], + "children": [] + } + }, + { + "内容模型(content models)": { + "keywords": [], + "children": [] + } + }, + { + "文档元数据(Document metadata)": { + "keywords": [], + "children": [] + } + }, + { + "区块(sections)": { + "keywords": [], + "children": [] + } + }, + { + "分组内容(grouping content)": { + "keywords": [], + "children": [] + } + }, + { + "文本级语义(text-level semantics)": { + "keywords": [], + "children": [] + } + }, + { + "修改记录(edits)": { + "keywords": [], + "children": [] + } + }, + { + "嵌入内容(embedded content)": { + "keywords": [], + "children": [] + } + }, + { + "表格数据(tabular data)": { + "keywords": [], + "children": [] + } + }, + { + "HTML 5表单": { + "keywords": [], + "children": [] + } + }, + { + "input元素和其属性": { + "keywords": [], + "children": [] + } + }, + { + "表单操作": { + "keywords": [], + "children": [] + } + }, + { + "HTML 5表单兼容性": { + "keywords": [], + "children": [] + } + }, + { + "交互式元素(Interactive elements)": { + "keywords": [], + "children": [] + } + } + ] + } + } + ] + } + }, + { + "history与导航": { + "node_id": "569d5e11c4fc5de7844053d9a733c5e8", + "keywords": [], + "children": [ + { + "基于hashchange事件管理导航": { + "keywords": [], + "children": [] + } + }, + { + "HTML 5 history API": { + "keywords": [], + "children": [] + } + }, + { + "history.js": { + "keywords": [], + "children": [] + } + } + ] + } + }, + { + "站在巨人们的肩上--jQuery Mobile": { + "node_id": "569d5e11c4fc5de7844053d9a733c5e8", + "keywords": [], + "children": [ + { + "移动Web框架概览": { + "keywords": [], + "children": [ + { + "HTML 5移动应用技术大观": { + "keywords": [], + "children": [] + } + }, + { + "因地制宜、量体裁衣": { + "keywords": [], + "children": [] + } + } + ] + } + }, + { + "jQuery Mobile": { + "keywords": [], + "children": [ + { + "综述": { + "keywords": [], + "children": [] + } + }, + { + "Hello,jQuery Mobile!": { + "keywords": [], + "children": [] + } + }, + { + "页面(Pages)": { + "keywords": [], + "children": [] + } + }, + { + "Ajax导航模型和转场动画(transitions)": { + "keywords": [], + "children": [] + } + }, + { + "UI组件--一切皆响应": { + "keywords": [], + "children": [] + } + }, + { + "UI组件--表单元素": { + "keywords": [], + "children": [] + } + }, + { + "UI组件--Header & Footer": { + "keywords": [], + "children": [] + } + }, + { + "UI组件--ListView": { + "keywords": [], + "children": [] + } + }, + { + "UI组件--Collapsibles和Accordions": { + "keywords": [], + "children": [] + } + }, + { + "UI组件--popup": { + "keywords": [], + "children": [] + } + }, + { + "UI组件--dialog": { + "keywords": [], + "children": [] + } + }, + { + "响应式组件--responsive grids": { + "keywords": [], + "children": [] + } + }, + { + "响应式组件--reflow tables": { + "keywords": [], + "children": [] + } + }, + { + "响应式组件--Column Toggle tables": { + "keywords": [], + "children": [] + } + }, + { + "响应式组件--sliding panels": { + "keywords": [], + "children": [] + } + }, + { + "主题化和themeroller": { + "keywords": [], + "children": [] + } + } + ] + } + } + ] + } + }, + { + "Sencha Touch": { + "node_id": "569d5e11c4fc5de7844053d9a733c5e8", + "keywords": [], + "children": [] + } + }, + { + "初探CSS 3": { + "node_id": "569d5e11c4fc5de7844053d9a733c5e8", + "keywords": [], + "children": [ + { + "关于CSS的那件小事": { + "keywords": [], + "children": [] + } + }, + { + "CSS的核心概念": { + "keywords": [], + "children": [ + { + "语法、层叠和特殊性(specificity)": { + "keywords": [], + "children": [] + } + }, + { + "框模型(Box Model)": { + "keywords": [], + "children": [] + } + }, + { + "可视化格式模型(visual formatting model)": { + "keywords": [], + "children": [] + } + }, + { + "表格": { + "keywords": [], + "children": [] + } + } + ] + } + }, + { + "CSS 3选择器增强": { + "keywords": [], + "children": [ + { + "属性选择器的妙用": { + "keywords": [], + "children": [] + } + }, + { + "强大的结构性伪类(Structural pseudo-classes)": { + "keywords": [], + "children": [] + } + }, + { + "其他选择器": { + "keywords": [], + "children": [] + } + }, + { + "CSS 4中的选择器": { + "keywords": [], + "children": [] + } + } + ] + } + }, + { + "和图片说再见": { + "keywords": [], + "children": [ + { + "背景和边框": { + "keywords": [], + "children": [] + } + }, + { + "渐变和阴影": { + "keywords": [], + "children": [] + } + }, + { + "自定义字体": { + "keywords": [], + "children": [] + } + } + ] + } + }, + { + "CSS 3布局之道": { + "keywords": [], + "children": [ + { + "炒冷饭--负边距与浮动": { + "keywords": [], + "children": [] + } + }, + { + "栅格系统与多列布局": { + "keywords": [], + "children": [] + } + }, + { + "弹性盒布局(Flexible Box)": { + "keywords": [], + "children": [] + } + } + ] + } + }, + { + "动起来": { + "keywords": [], + "children": [ + { + "CSS变形(CSS transform)": { + "keywords": [], + "children": [] + } + }, + { + "CSS过渡(CSS Transitions)": { + "keywords": [], + "children": [] + } + }, + { + "CSS动画(CSS Animations)": { + "keywords": [], + "children": [] + } + } + ] + } + }, + { + "响应式设计基础": { + "keywords": [], + "children": [ + { + "从两栏布局开始说起": { + "keywords": [], + "children": [] + } + }, + { + "从media到media queries": { + "keywords": [], + "children": [] + } + }, + { + "响应式栅格系统": { + "keywords": [], + "children": [] + } + }, + { + "移动优先(mobile first)理念": { + "keywords": [], + "children": [] + } + }, + { + "另一种思路:后端模板输出的优化": { + "keywords": [], + "children": [] + } + }, + { + "其他细节": { + "keywords": [], + "children": [] + } + } + ] + } + } + ] + } + }, + { + "从网页(Web page)到应用(Application)": { + "node_id": "569d5e11c4fc5de7844053d9a733c5e8", + "keywords": [], + "children": [ + { + "Web不能承受之重": { + "keywords": [], + "children": [] + } + }, + { + "本地存储升级": { + "keywords": [], + "children": [ + { + "cookie和cookie的局限": { + "keywords": [], + "children": [] + } + }, + { + "来自HTML 5的Web Storage": { + "keywords": [], + "children": [] + } + }, + { + "IE的userData": { + "keywords": [], + "children": [] + } + } + ] + } + }, + { + "离线应用": { + "keywords": [], + "children": [ + { + "缓存和应用缓存": { + "keywords": [], + "children": [] + } + }, + { + "应用缓存的基本使用": { + "keywords": [], + "children": [] + } + } + ] + } + }, + { + "拖放": { + "keywords": [], + "children": [ + { + "模拟拖放": { + "keywords": [], + "children": [] + } + }, + { + "原生拖放": { + "keywords": [], + "children": [] + } + } + ] + } + }, + { + "文件操作": { + "keywords": [], + "children": [ + { + "选择文件": { + "keywords": [], + "children": [] + } + }, + { + "操作文件": { + "keywords": [], + "children": [] + } + } + ] + } + } + ] + } + }, + { + "指尖下的浏览器": { + "node_id": "569d5e11c4fc5de7844053d9a733c5e8", + "keywords": [], + "children": [ + { + "基本touch事件": { + "keywords": [], + "children": [] + } + }, + { + "模拟手势事件": { + "keywords": [], + "children": [] + } + }, + { + "hammer.js": { + "keywords": [], + "children": [] + } + }, + { + "实例:精仿iOS的相册": { + "keywords": [], + "children": [] + } + }, + { + "工具": { + "keywords": [], + "children": [] + } + } + ] + } + }, + { + "地理定位(Geolocation API)": { + "node_id": "569d5e11c4fc5de7844053d9a733c5e8", + "keywords": [], + "children": [ + { + "获取当前位置": { + "keywords": [], + "children": [] + } + }, + { + "监视位置变化": { + "keywords": [], + "children": [] + } + }, + { + "来半斤Google maps尝尝": { + "keywords": [], + "children": [] + } + }, + { + "开发者工具": { + "keywords": [], + "children": [] + } + } + ] + } + }, + { + "Web Worker": { + "node_id": "569d5e11c4fc5de7844053d9a733c5e8", + "keywords": [], + "children": [ + { + "单线程语言之殇": { + "keywords": [], + "children": [] + } + }, + { + "为JavaScript引入线程技术": { + "keywords": [], + "children": [] + } + }, + { + "嵌入式Worker代码": { + "keywords": [], + "children": [] + } + }, + { + "共享Worker": { + "keywords": [], + "children": [] + } + } + ] + } + }, + { + "通信基础": { + "node_id": "569d5e11c4fc5de7844053d9a733c5e8", + "keywords": [], + "children": [ + { + "XHR 2": { + "keywords": [], + "children": [] + } + }, + { + "跨文档通信(Cross-document messaging)": { + "keywords": [], + "children": [] + } + }, + { + "通道通信(channel messaging)": { + "keywords": [], + "children": [] + } + } + ] + } + }, + { + "实时Web技术": { + "node_id": "569d5e11c4fc5de7844053d9a733c5e8", + "keywords": [], + "children": [ + { + "轮询和长轮询(comet)": { + "keywords": [], + "children": [] + } + }, + { + "服务器事件(server-sent events)": { + "keywords": [], + "children": [] + } + }, + { + "Web Sockets": { + "keywords": [], + "children": [] + } + }, + { + "利器:Socket.IO": { + "keywords": [], + "children": [] + } + }, + { + "基于Socket.IO的聊天室": { + "keywords": [], + "children": [] + } + } + ] + } + }, + { + "感官世界": { + "node_id": "569d5e11c4fc5de7844053d9a733c5e8", + "keywords": [], + "children": [ + { + "感知方向(orientation)和动作(motion)": { + "keywords": [], + "children": [] + } + }, + { + "音视频捕获": { + "keywords": [], + "children": [] + } + } + ] + } + } + ] + } + } + ] + } + }, + { + "web中阶": { + "node_id": "569d5e11c4fc5de7844053d9a733c5e8", + "keywords": [], + "children": [ + { + "前端UI库": { + "node_id": "569d5e11c4fc5de7844053d9a733c5e8", + "keywords": [], + "children": [ + { + "bootstrap": { + "node_id": "569d5e11c4fc5de7844053d9a733c5e8", + "keywords": [], + "children": [ + { + "下载安装Bootstrap": { + "keywords": [], + "children": [] + } + }, + { + "网格及其用法": { + "keywords": [], + "children": [ + { + "设计中的网格": { + "keywords": [], + "children": [] + } + }, + { + "Bootstrap网格系统": { + "keywords": [], + "children": [] + } + }, + { + "如何在Bootstrap中创建网格": { + "keywords": [], + "children": [ + { + "创建基本网格": { + "keywords": [], + "children": [] + } + }, + { + "响应式列重置": { + "keywords": [], + "children": [] + } + }, + { + "列的偏移、排序和嵌套": { + "keywords": [], + "children": [] + } + } + ] + } + }, + { + "Bootstrap中的响应式Web": { + "keywords": [], + "children": [] + } + } + ] + } + }, + { + "标签、徽章、面板、Well和超大屏幕": { + "keywords": [], + "children": [ + { + "标签和徽章": { + "keywords": [], + "children": [ + { + "标签": { + "keywords": [], + "children": [] + } + }, + { + "徽章": { + "keywords": [], + "children": [] + } + } + ] + } + }, + { + "Well和面板": { + "keywords": [], + "children": [ + { + "Well": { + "keywords": [], + "children": [] + } + }, + { + "面板": { + "keywords": [], + "children": [] + } + } + ] + } + }, + { + "超大屏幕": { + "keywords": [], + "children": [] + } + } + ] + } + }, + { + "Bootstrap排版": { + "keywords": [], + "children": [ + { + "Bootstrap中的基本排版": { + "keywords": [], + "children": [] + } + }, + { + "标题": { + "keywords": [], + "children": [ + { + "标题": { + "keywords": [], + "children": [] + } + }, + { + "页眉": { + "keywords": [], + "children": [] + } + } + ] + } + }, + { + "正文": { + "keywords": [], + "children": [ + { + "内联文本": { + "keywords": [], + "children": [] + } + }, + { + "元素对齐": { + "keywords": [], + "children": [] + } + }, + { + "文本元素转换": { + "keywords": [], + "children": [] + } + } + ] + } + }, + { + "其他文本块": { + "keywords": [], + "children": [ + { + "代码": { + "keywords": [], + "children": [] + } + }, + { + "引用语": { + "keywords": [], + "children": [] + } + }, + { + "列表": { + "keywords": [], + "children": [] + } + }, + { + "缩略语": { + "keywords": [], + "children": [] + } + }, + { + "地址": { + "keywords": [], + "children": [] + } + } + ] + } + } + ] + } + }, + { + "设置表格样式": { + "keywords": [], + "children": [ + { + "基本表格": { + "keywords": [], + "children": [] + } + }, + { + "Bootstrap表格类": { + "keywords": [], + "children": [] + } + }, + { + "包含表格的面板": { + "keywords": [], + "children": [] + } + }, + { + "响应式表格": { + "keywords": [], + "children": [] + } + } + ] + } + }, + { + "设置表单样式": { + "keywords": [], + "children": [ + { + "基本表单": { + "keywords": [], + "children": [ + { + "水平表单": { + "keywords": [], + "children": [] + } + }, + { + "内联表单": { + "keywords": [], + "children": [] + } + } + ] + } + }, + { + "Bootstrap支持的表单控件": { + "keywords": [], + "children": [ + { + "基本输入标记": { + "keywords": [], + "children": [] + } + }, + { + "复选框和单选按钮": { + "keywords": [], + "children": [] + } + }, + { + "下拉菜单": { + "keywords": [], + "children": [] + } + }, + { + "设置表单控件的大小": { + "keywords": [], + "children": [] + } + }, + { + "帮助块": { + "keywords": [], + "children": [] + } + } + ] + } + }, + { + "输入组": { + "keywords": [], + "children": [ + { + "基本输入组": { + "keywords": [], + "children": [] + } + }, + { + "设置输入组的大小": { + "keywords": [], + "children": [] + } + }, + { + "奇妙的附加控件": { + "keywords": [], + "children": [] + } + } + ] + } + }, + { + "Bootstrap表单的交互性": { + "keywords": [], + "children": [ + { + "焦点状态": { + "keywords": [], + "children": [] + } + }, + { + "禁用和只读状态": { + "keywords": [], + "children": [] + } + }, + { + "验证状态": { + "keywords": [], + "children": [] + } + } + ] + } + } + ] + } + }, + { + "图像、媒体对象和图像": { + "keywords": [], + "children": [ + { + "响应式图像": { + "keywords": [], + "children": [] + } + }, + { + "图像形状": { + "keywords": [], + "children": [] + } + }, + { + "媒体对象": { + "keywords": [], + "children": [] + } + }, + { + "缩略图": { + "keywords": [], + "children": [] + } + }, + { + "Glyphicon": { + "keywords": [], + "children": [] + } + } + ] + } + }, + { + "按钮和按钮组样式设置及基本按钮": { + "keywords": [], + "children": [ + { + "按钮标记": { + "keywords": [], + "children": [] + } + }, + { + "按钮类和大小": { + "keywords": [], + "children": [] + } + }, + { + "按钮状态": { + "keywords": [], + "children": [] + } + }, + { + "按钮组": { + "keywords": [], + "children": [ + { + "水平按钮组": { + "keywords": [], + "children": [] + } + }, + { + "垂直按钮组": { + "keywords": [], + "children": [] + } + }, + { + "按钮工具栏": { + "keywords": [], + "children": [] + } + } + ] + } + }, + { + "按钮JavaScript": { + "keywords": [], + "children": [] + } + } + ] + } + }, + { + "用Bootstrap创建导航系统": { + "keywords": [], + "children": [ + { + "标准导航元素": { + "keywords": [], + "children": [] + } + }, + { + "下拉菜单": { + "keywords": [], + "children": [ + { + "拆分下拉菜单": { + "keywords": [], + "children": [] + } + }, + { + "上拉式变种": { + "keywords": [], + "children": [] + } + } + ] + } + }, + { + "导航栏": { + "keywords": [], + "children": [ + { + "导航栏标题和品牌": { + "keywords": [], + "children": [] + } + }, + { + "切换导航开关": { + "keywords": [], + "children": [] + } + }, + { + "导航栏中的链接、文本、按钮": { + "keywords": [], + "children": [] + } + }, + { + "改变导航栏的颜色和对齐": { + "keywords": [], + "children": [] + } + } + ] + } + }, + { + "面包屑导航和分页": { + "keywords": [], + "children": [] + } + }, + { + "列表组": { + "keywords": [], + "children": [] + } + } + ] + } + }, + { + "Bootstrap实用工具": { + "keywords": [], + "children": [ + { + "助手类": { + "keywords": [], + "children": [ + { + "更改颜色": { + "keywords": [], + "children": [] + } + }, + { + "图标": { + "keywords": [], + "children": [] + } + }, + { + "布局类": { + "keywords": [], + "children": [] + } + }, + { + "显示和隐藏内容": { + "keywords": [], + "children": [] + } + } + ] + } + }, + { + "响应式实用工具": { + "keywords": [], + "children": [] + } + }, + { + "打印类": { + "keywords": [], + "children": [] + } + }, + { + "响应式嵌入": { + "keywords": [], + "children": [] + } + }, + { + "Bootstrap中的可访问性": { + "keywords": [], + "children": [] + } + } + ] + } + }, + { + "模态窗口": { + "keywords": [], + "children": [ + { + "什么是模态窗口": { + "keywords": [], + "children": [] + } + }, + { + "如何构建模态窗口": { + "keywords": [], + "children": [ + { + "触发模态窗口": { + "keywords": [], + "children": [] + } + }, + { + "模态窗口编码": { + "keywords": [], + "children": [] + } + } + ] + } + }, + { + "修改模态窗口": { + "keywords": [], + "children": [ + { + "更改模态窗口的打开": { + "keywords": [], + "children": [] + } + }, + { + "更改模态窗口的大小": { + "keywords": [], + "children": [] + } + }, + { + "更改布局": { + "keywords": [], + "children": [] + } + }, + { + "动态更改模态内容": { + "keywords": [], + "children": [] + } + } + ] + } + } + ] + } + }, + { + "附加导航、选项卡和滚动": { + "keywords": [], + "children": [ + { + "附加导航": { + "keywords": [], + "children": [] + } + }, + { + "选项卡": { + "keywords": [], + "children": [] + } + }, + { + "滚动监听": { + "keywords": [], + "children": [] + } + }, + { + "结合使用这些插件": { + "keywords": [], + "children": [] + } + } + ] + } + }, + { + "弹出框和工具提示": { + "keywords": [], + "children": [ + { + "工具提示": { + "keywords": [], + "children": [ + { + "工具提示选项": { + "keywords": [], + "children": [] + } + }, + { + "工具提示方法": { + "keywords": [], + "children": [] + } + }, + { + "工具提示事件": { + "keywords": [], + "children": [] + } + } + ] + } + }, + { + "弹出框": { + "keywords": [], + "children": [ + { + "弹出框选项": { + "keywords": [], + "children": [] + } + }, + { + "弹出框方法": { + "keywords": [], + "children": [] + } + }, + { + "弹出框事件": { + "keywords": [], + "children": [] + } + } + ] + } + } + ] + } + }, + { + "过渡、按钮、警告框和过渡": { + "keywords": [], + "children": [ + { + "按钮": { + "keywords": [], + "children": [ + { + "按钮状态": { + "keywords": [], + "children": [] + } + }, + { + "切换按钮": { + "keywords": [], + "children": [] + } + }, + { + "复选框和单选按钮": { + "keywords": [], + "children": [] + } + }, + { + "按钮方法": { + "keywords": [], + "children": [] + } + } + ] + } + }, + { + "警告框": { + "keywords": [], + "children": [ + { + "警告框方法": { + "keywords": [], + "children": [] + } + }, + { + "警告框事件": { + "keywords": [], + "children": [] + } + } + ] + } + }, + { + "进度条": { + "keywords": [], + "children": [ + { + "创建进度条": { + "keywords": [], + "children": [] + } + }, + { + "设置进度条样式": { + "keywords": [], + "children": [] + } + } + ] + } + } + ] + } + }, + { + "折叠插件和折叠面板": { + "keywords": [], + "children": [ + { + "折叠插件": { + "keywords": [], + "children": [ + { + "创建一个可折叠部分": { + "keywords": [], + "children": [] + } + }, + { + "水平折叠元素": { + "keywords": [], + "children": [] + } + }, + { + "折叠选项": { + "keywords": [], + "children": [] + } + }, + { + "折叠方法": { + "keywords": [], + "children": [] + } + }, + { + "折叠事件": { + "keywords": [], + "children": [] + } + } + ] + } + }, + { + "折叠面板": { + "keywords": [], + "children": [ + { + "创建折叠面板": { + "keywords": [], + "children": [] + } + }, + { + "使用折叠面板导航": { + "keywords": [], + "children": [] + } + } + ] + } + } + ] + } + }, + { + "轮播": { + "keywords": [], + "children": [ + { + "创建轮播": { + "keywords": [], + "children": [ + { + "基本轮播": { + "keywords": [], + "children": [] + } + }, + { + "更精致的轮播": { + "keywords": [], + "children": [] + } + } + ] + } + }, + { + "使用轮播插件": { + "keywords": [], + "children": [ + { + "添加多个轮播": { + "keywords": [], + "children": [] + } + }, + { + "轮播选项": { + "keywords": [], + "children": [] + } + }, + { + "轮播方法": { + "keywords": [], + "children": [] + } + }, + { + "轮播事件": { + "keywords": [], + "children": [] + } + } + ] + } + }, + { + "Web上的轮播": { + "keywords": [], + "children": [ + { + "轮播最佳实践": { + "keywords": [], + "children": [] + } + }, + { + "轮播的问题和解决方案": { + "keywords": [], + "children": [] + } + } + ] + } + } + ] + } + } + ] + } + }, + { + "layui.js": { + "node_id": "569d5e11c4fc5de7844053d9a733c5e8", + "keywords": [], + "children": [ + { + "页面布局": { + "keywords": [], + "children": [ + { + "布局": { + "keywords": [], + "children": [] + } + }, + { + "颜色": { + "keywords": [], + "children": [] + } + }, + { + "图标": { + "keywords": [], + "children": [] + } + }, + { + "动画": { + "keywords": [], + "children": [] + } + }, + { + "按钮": { + "keywords": [], + "children": [] + } + }, + { + "表单": { + "keywords": [], + "children": [] + } + }, + { + "导航": { + "keywords": [], + "children": [] + } + }, + { + "菜单": { + "keywords": [], + "children": [] + } + }, + { + "选项卡": { + "keywords": [], + "children": [] + } + }, + { + "进度条": { + "keywords": [], + "children": [] + } + }, + { + "面板": { + "keywords": [], + "children": [] + } + }, + { + "表格": { + "keywords": [], + "children": [] + } + }, + { + "徽章": { + "keywords": [], + "children": [] + } + }, + { + "时间线": { + "keywords": [], + "children": [] + } + }, + { + "辅助": { + "keywords": [], + "children": [] + } + } + ] + } + }, + { + "内置模块": { + "keywords": [], + "children": [ + { + "弹出层": { + "keywords": [], + "children": [] + } + }, + { + "日期与时间选择": { + "keywords": [], + "children": [] + } + }, + { + "分页": { + "keywords": [], + "children": [] + } + }, + { + "模板引擎": { + "keywords": [], + "children": [] + } + }, + { + "数据表格": { + "keywords": [], + "children": [] + } + }, + { + "表单": { + "keywords": [], + "children": [] + } + }, + { + "文件上传": { + "keywords": [], + "children": [] + } + }, + { + "下拉菜单": { + "keywords": [], + "children": [] + } + }, + { + "穿梭框": { + "keywords": [], + "children": [] + } + }, + { + "树形组件": { + "keywords": [], + "children": [] + } + }, + { + "颜色选择器": { + "keywords": [], + "children": [] + } + }, + { + "常用元素操作": { + "keywords": [], + "children": [] + } + }, + { + "滑块": { + "keywords": [], + "children": [] + } + }, + { + "评分": { + "keywords": [], + "children": [] + } + }, + { + "轮播": { + "keywords": [], + "children": [] + } + }, + { + "流加载": { + "keywords": [], + "children": [] + } + }, + { + "工具组件": { + "keywords": [], + "children": [] + } + }, + { + "代码高亮显示": { + "keywords": [], + "children": [] + } + } + ] + } + } + ] + } + }, + { + "iView": { + "node_id": "569d5e11c4fc5de7844053d9a733c5e8", + "keywords": [], + "children": [ + { + "组件基础": { + "keywords": [], + "children": [ + { + "olor色彩": { + "keywords": [], + "children": [] + } + }, + { + "Font字体": { + "keywords": [], + "children": [] + } + }, + { + "Button按钮": { + "keywords": [], + "children": [] + } + }, + { + "Icon图标": { + "keywords": [], + "children": [] + } + } + ] + } + }, + { + "组件布局": { + "keywords": [], + "children": [ + { + "Grid栅格": { + "keywords": [], + "children": [] + } + }, + { + "Layout布局": { + "keywords": [], + "children": [] + } + }, + { + "Card卡片": { + "keywords": [], + "children": [] + } + }, + { + "Collapse折叠面板": { + "keywords": [], + "children": [] + } + }, + { + "Split面板分割": { + "keywords": [], + "children": [] + } + }, + { + "Divider分割线": { + "keywords": [], + "children": [] + } + }, + { + "Cell单元格": { + "keywords": [], + "children": [] + } + }, + { + "Menu导航菜单": { + "keywords": [], + "children": [] + } + }, + { + "Tabs标签页": { + "keywords": [], + "children": [] + } + }, + { + "Dropdown下拉菜单": { + "keywords": [], + "children": [] + } + }, + { + "Page分页": { + "keywords": [], + "children": [] + } + }, + { + "Breadcrumb面包屑": { + "keywords": [], + "children": [] + } + }, + { + "Badge徽标数": { + "keywords": [], + "children": [] + } + }, + { + "Anchor锚点": { + "keywords": [], + "children": [] + } + }, + { + "Steps步骤条": { + "keywords": [], + "children": [] + } + }, + { + "LoadingBar加载进度条": { + "keywords": [], + "children": [] + } + } + ] + } + } + ] + } + }, + { + "element-ui": { + "node_id": "569d5e11c4fc5de7844053d9a733c5e8", + "keywords": [], + "children": [ + { + "Layout 布局": { + "keywords": [], + "children": [] + } + }, + { + "Container 布局容器": { + "keywords": [], + "children": [] + } + }, + { + "Color 色彩": { + "keywords": [], + "children": [] + } + }, + { + "Typography 字体": { + "keywords": [], + "children": [] + } + }, + { + "Icon 图标": { + "keywords": [], + "children": [] + } + }, + { + "Button 按钮": { + "keywords": [], + "children": [] + } + }, + { + "Radio 单选框": { + "keywords": [], + "children": [] + } + }, + { + "Checkbox 多选框": { + "keywords": [], + "children": [] + } + }, + { + "Input 输入框": { + "keywords": [], + "children": [] + } + }, + { + "InputNumber 计数器": { + "keywords": [], + "children": [] + } + }, + { + "Select 选择器": { + "keywords": [], + "children": [] + } + }, + { + "Cascader 级联选择器": { + "keywords": [], + "children": [] + } + }, + { + "Switch 开关": { + "keywords": [], + "children": [] + } + }, + { + "Slider 滑块": { + "keywords": [], + "children": [] + } + }, + { + "TimePicker 时间选择器": { + "keywords": [], + "children": [] + } + }, + { + "DatePicker 日期选择器": { + "keywords": [], + "children": [] + } + }, + { + "DateTimePicker 日期时间选择器": { + "keywords": [], + "children": [] + } + }, + { + "Upload 上传": { + "keywords": [], + "children": [] + } + }, + { + "Rate 评分": { + "keywords": [], + "children": [] + } + }, + { + "ColorPicker 颜色选择器": { + "keywords": [], + "children": [] + } + }, + { + "Transfer 穿梭框": { + "keywords": [], + "children": [] + } + }, + { + "Form 表单": { + "keywords": [], + "children": [] + } + }, + { + "Table 表格": { + "keywords": [], + "children": [] + } + }, + { + "Tag 标签": { + "keywords": [], + "children": [] + } + }, + { + "Progress 进度条": { + "keywords": [], + "children": [] + } + }, + { + "Tree 树形控件": { + "keywords": [], + "children": [] + } + }, + { + "Pagination 分页": { + "keywords": [], + "children": [] + } + }, + { + "Badge 标记": { + "keywords": [], + "children": [] + } + }, + { + "Alert 警告": { + "keywords": [], + "children": [] + } + }, + { + "Loading 加载": { + "keywords": [], + "children": [] + } + }, + { + "Message 消息提示": { + "keywords": [], + "children": [] + } + }, + { + "MessageBox 弹框": { + "keywords": [], + "children": [] + } + }, + { + "Notification 通知": { + "keywords": [], + "children": [] + } + }, + { + "NavMenu 导航菜单": { + "keywords": [], + "children": [] + } + }, + { + "Tabs 标签页": { + "keywords": [], + "children": [] + } + }, + { + "Breadcrumb 面包屑": { + "keywords": [], + "children": [] + } + }, + { + "Dropdown 下拉菜单": { + "keywords": [], + "children": [] + } + }, + { + "Steps 步骤条": { + "keywords": [], + "children": [] + } + }, + { + "Dialog 对话框": { + "keywords": [], + "children": [] + } + }, + { + "Tooltip 文字提示": { + "keywords": [], + "children": [] + } + }, + { + "Popover 弹出框": { + "keywords": [], + "children": [] + } + }, + { + "Card 卡片": { + "keywords": [], + "children": [] + } + }, + { + "Carousel 走马灯": { + "keywords": [], + "children": [] + } + }, + { + "Collapse 折叠面板": { + "keywords": [], + "children": [] + } + } + ] + } + } + ] + } + }, + { + "数据可视化": { + "node_id": "569d5e11c4fc5de7844053d9a733c5e8", + "keywords": [], + "children": [ + { + "技术标准": { + "node_id": "569d5e11c4fc5de7844053d9a733c5e8", + "keywords": [], + "children": [ + { + "Canvas": { + "keywords": [], + "children": [] + } + }, + { + "SVG": { + "keywords": [], + "children": [] + } + }, + { + "WebGL/2": { + "keywords": [], + "children": [] + } + }, + { + "WebGPU": { + "keywords": [], + "children": [] + } + }, + { + "OpenGL": { + "keywords": [], + "children": [] + } + } + ] + } + }, + { + "数理统计": { + "node_id": "569d5e11c4fc5de7844053d9a733c5e8", + "keywords": [], + "children": [ + { + "统计学": { + "keywords": [], + "children": [] + } + }, + { + "平面几何": { + "keywords": [], + "children": [] + } + }, + { + "线性代数": { + "keywords": [], + "children": [] + } + }, + { + "离散数学": { + "keywords": [], + "children": [] + } + } + ] + } + }, + { + "图形美学": { + "node_id": "569d5e11c4fc5de7844053d9a733c5e8", + "keywords": [], + "children": [ + { + "色彩": { + "keywords": [], + "children": [] + } + }, + { + "图形": { + "keywords": [], + "children": [] + } + }, + { + "动画": { + "keywords": [], + "children": [] + } + }, + { + "格式塔理论": { + "keywords": [], + "children": [] + } + } + ] + } + }, + { + "可视化基础概念": { + "node_id": "569d5e11c4fc5de7844053d9a733c5e8", + "keywords": [], + "children": [ + { + "数据类型": { + "keywords": [], + "children": [] + } + }, + { + "视觉通道与映射": { + "keywords": [], + "children": [] + } + }, + { + "信息密度": { + "keywords": [], + "children": [] + } + }, + { + "可视化隐喻": { + "keywords": [], + "children": [] + } + }, + { + "图形符号学与图形语法": { + "keywords": [], + "children": [] + } + }, + { + "基础图表类型": { + "keywords": [], + "children": [ + { + "折线图": { + "keywords": [], + "children": [] + } + }, + { + "柱形图(条形图)": { + "keywords": [], + "children": [] + } + }, + { + "饼状图(环型图)": { + "keywords": [], + "children": [] + } + }, + { + "散点图(气泡图)": { + "keywords": [], + "children": [] + } + }, + { + "雷达图": { + "keywords": [], + "children": [] + } + }, + { + "地图": { + "keywords": [], + "children": [] + } + }, + { + "多维表格": { + "keywords": [], + "children": [] + } + }, + { + "其他": { + "keywords": [], + "children": [] + } + } + ] + } + }, + { + "绘图引擎": { + "keywords": [], + "children": [ + { + "2D": { + "keywords": [], + "children": [] + } + }, + { + "3D": { + "keywords": [], + "children": [] + } + } + ] + } + } + ] + } + }, + { + "图表类库&可视化框架": { + "node_id": "569d5e11c4fc5de7844053d9a733c5e8", + "keywords": [], + "children": [ + { + "基础可视化框架": { + "keywords": [], + "children": [ + { + "D3": { + "keywords": [], + "children": [] + } + }, + { + "G2": { + "keywords": [], + "children": [] + } + }, + { + "Vega": { + "keywords": [], + "children": [] + } + } + ] + } + }, + { + "常用统计图表": { + "keywords": [], + "children": [ + { + "Chartjs": { + "keywords": [], + "children": [] + } + }, + { + "ECharts": { + "keywords": [], + "children": [] + } + }, + { + "Highcharts": { + "keywords": [], + "children": [] + } + } + ] + } + }, + { + "图分析与编排": { + "keywords": [], + "children": [ + { + "Cytoscape": { + "keywords": [], + "children": [] + } + }, + { + "G6": { + "keywords": [], + "children": [] + } + }, + { + "mxGraph": { + "keywords": [], + "children": [] + } + }, + { + "Sigma.js": { + "keywords": [], + "children": [] + } + }, + { + "X6": { + "keywords": [], + "children": [] + } + } + ] + } + }, + { + "地理空间可视化": { + "keywords": [], + "children": [ + { + "Leaflet": { + "keywords": [], + "children": [] + } + }, + { + "L7": { + "keywords": [], + "children": [] + } + }, + { + "Mapbox": { + "keywords": [], + "children": [] + } + }, + { + "PolyMaps": { + "keywords": [], + "children": [] + } + } + ] + } + } + ] + } + }, + { + "领域方案": { + "node_id": "569d5e11c4fc5de7844053d9a733c5e8", + "keywords": [], + "children": [ + { + "监控可视化": { + "keywords": [], + "children": [] + } + }, + { + "关系可视分析": { + "keywords": [], + "children": [] + } + }, + { + "金融数据可视化": { + "keywords": [], + "children": [] + } + }, + { + "商业智能可视化": { + "keywords": [], + "children": [] + } + } + ] + } + } + ] + } + }, + { + "js拓展": { + "node_id": "569d5e11c4fc5de7844053d9a733c5e8", + "keywords": [], + "children": [ + { + "es6": { + "node_id": "569d5e11c4fc5de7844053d9a733c5e8", + "keywords": [], + "children": [ + { + "EcmaScript标准 6简介": { + "keywords": [], + "children": [ + { + "ES背景": { + "keywords": [], + "children": [] + } + }, + { + "ES历史": { + "keywords": [], + "children": [] + } + }, + { + "目标与愿景": { + "keywords": [], + "children": [] + } + }, + { + "环境搭建": { + "keywords": [], + "children": [] + } + } + ] + } + }, + { + "声明与表达式": { + "keywords": [], + "children": [ + { + "let与const": { + "keywords": [], + "children": [] + } + }, + { + "解析赋值": { + "keywords": [], + "children": [] + } + }, + { + "Symbol": { + "keywords": [], + "children": [] + } + } + ] + } + }, + { + "内置对象": { + "keywords": [], + "children": [ + { + "Map与Set": { + "keywords": [], + "children": [] + } + }, + { + "Proxy与Reflect": { + "keywords": [], + "children": [] + } + }, + { + "字符串": { + "keywords": [], + "children": [] + } + }, + { + "数值": { + "keywords": [], + "children": [] + } + }, + { + "对象": { + "keywords": [], + "children": [] + } + }, + { + "数组": { + "keywords": [], + "children": [] + } + } + ] + } + }, + { + "运算符与语句": { + "keywords": [], + "children": [ + { + "函数": { + "keywords": [], + "children": [ + { + "函数的扩展": { + "keywords": [], + "children": [] + } + }, + { + "箭头函数": { + "keywords": [], + "children": [] + } + } + ] + } + }, + { + "迭代器": { + "keywords": [], + "children": [ + { + "Iterator": { + "keywords": [], + "children": [] + } + }, + { + "for...of循环": { + "keywords": [], + "children": [] + } + } + ] + } + }, + { + "class类": { + "keywords": [], + "children": [ + { + "概述": { + "keywords": [], + "children": [] + } + }, + { + "基本用法": { + "keywords": [], + "children": [] + } + }, + { + "decorator": { + "keywords": [], + "children": [] + } + }, + { + "继承与封装": { + "keywords": [], + "children": [] + } + } + ] + } + }, + { + "模块": { + "keywords": [], + "children": [ + { + "特点": { + "keywords": [], + "children": [] + } + }, + { + "export与import": { + "keywords": [], + "children": [] + } + }, + { + "复合使用": { + "keywords": [], + "children": [] + } + } + ] + } + }, + { + "异步编程": { + "keywords": [], + "children": [ + { + "Promise对象": { + "keywords": [], + "children": [] + } + }, + { + "Generator函数": { + "keywords": [], + "children": [] + } + }, + { + "async函数": { + "keywords": [], + "children": [] + } + } + ] + } + } + ] + } + } + ] + } + }, + { + "JS编译": { + "node_id": "569d5e11c4fc5de7844053d9a733c5e8", + "keywords": [], + "children": [ + { + "babel": { + "keywords": [], + "children": [] + } + }, + { + "tsc": { + "keywords": [], + "children": [] + } + }, + { + "esbuild": { + "keywords": [], + "children": [] + } + } + ] + } + }, + { + "JavaScirpt引擎": { + "node_id": "569d5e11c4fc5de7844053d9a733c5e8", + "keywords": [], + "children": [ + { + "V8": { + "keywords": [], + "children": [] + } + }, + { + "SpiderMonkey": { + "keywords": [], + "children": [] + } + }, + { + "JavaScriptCore": { + "keywords": [], + "children": [] + } + } + ] + } + }, + { + "TypeScript": { + "node_id": "569d5e11c4fc5de7844053d9a733c5e8", + "keywords": [], + "children": [ + { + "TypeScript简介": { + "keywords": [], + "children": [] + } + }, + { + "TypeScript语言基础": { + "keywords": [], + "children": [ + { + "变量": { + "keywords": [], + "children": [ + { + "变量名": { + "keywords": [], + "children": [] + } + }, + { + "变量声明": { + "keywords": [], + "children": [] + } + } + ] + } + }, + { + "注释": { + "keywords": [], + "children": [ + { + "单行注释与多行注释": { + "keywords": [], + "children": [] + } + }, + { + "区域注释": { + "keywords": [], + "children": [] + } + } + ] + } + }, + { + "数据类型": { + "keywords": [], + "children": [ + { + "Undefined": { + "keywords": [], + "children": [] + } + }, + { + "Null": { + "keywords": [], + "children": [] + } + }, + { + "Boolean": { + "keywords": [], + "children": [] + } + }, + { + "String": { + "keywords": [], + "children": [] + } + }, + { + "Number": { + "keywords": [], + "children": [] + } + }, + { + "Symbol": { + "keywords": [], + "children": [] + } + }, + { + "Object": { + "keywords": [], + "children": [] + } + } + ] + } + }, + { + "字面量": { + "keywords": [], + "children": [ + { + "Null字面量": { + "keywords": [], + "children": [] + } + }, + { + "Boolean字面量": { + "keywords": [], + "children": [] + } + }, + { + "Number字面量": { + "keywords": [], + "children": [] + } + }, + { + "字符串字面量": { + "keywords": [], + "children": [] + } + }, + { + "模板字面量": { + "keywords": [], + "children": [] + } + } + ] + } + }, + { + "对象": { + "keywords": [], + "children": [ + { + "对象字面量": { + "keywords": [], + "children": [] + } + }, + { + "原型对象": { + "keywords": [], + "children": [] + } + } + ] + } + }, + { + "数组": { + "keywords": [], + "children": [ + { + "数组字面量": { + "keywords": [], + "children": [] + } + }, + { + "数组中的元素": { + "keywords": [], + "children": [] + } + } + ] + } + }, + { + "函数": { + "keywords": [], + "children": [ + { + "函数声明": { + "keywords": [], + "children": [] + } + }, + { + "函数表达式": { + "keywords": [], + "children": [] + } + }, + { + "箭头函数": { + "keywords": [], + "children": [] + } + } + ] + } + } + ] + } + }, + { + "TypeScript语言进阶": { + "keywords": [], + "children": [ + { + "BigInt": { + "keywords": [], + "children": [ + { + "创建BigInt": { + "keywords": [], + "children": [] + } + }, + { + "BigInt与Number": { + "keywords": [], + "children": [] + } + } + ] + } + }, + { + "展开运算符": { + "keywords": [], + "children": [ + { + "展开数组字面量": { + "keywords": [], + "children": [] + } + }, + { + "展开对象字面量": { + "keywords": [], + "children": [] + } + }, + { + "展开函数参数": { + "keywords": [], + "children": [] + } + } + ] + } + }, + { + "解构": { + "keywords": [], + "children": [ + { + "数组解构": { + "keywords": [], + "children": [] + } + }, + { + "对象解构": { + "keywords": [], + "children": [] + } + } + ] + } + }, + { + "可选链运算符": { + "keywords": [], + "children": [ + { + "基础语法": { + "keywords": [], + "children": [] + } + }, + { + "短路求值": { + "keywords": [], + "children": [] + } + } + ] + } + }, + { + "空值合并运算符": { + "keywords": [], + "children": [] + } + } + ] + } + }, + { + "TypeScript类型基础": { + "keywords": [], + "children": [ + { + "类型注解": { + "keywords": [], + "children": [] + } + }, + { + "类型检查": { + "keywords": [], + "children": [ + { + "非严格类型检查": { + "keywords": [], + "children": [] + } + }, + { + "严格类型检查": { + "keywords": [], + "children": [] + } + } + ] + } + }, + { + "原始类型": { + "keywords": [], + "children": [ + { + "boolean": { + "keywords": [], + "children": [] + } + }, + { + "string": { + "keywords": [], + "children": [] + } + }, + { + "number": { + "keywords": [], + "children": [] + } + }, + { + "bigint": { + "keywords": [], + "children": [] + } + }, + { + "symbol与unique symbol": { + "keywords": [], + "children": [] + } + }, + { + "Nullable": { + "keywords": [], + "children": [] + } + }, + { + "void": { + "keywords": [], + "children": [] + } + } + ] + } + }, + { + "枚举类型": { + "keywords": [], + "children": [ + { + "数值型枚举": { + "keywords": [], + "children": [] + } + }, + { + "字符串枚举": { + "keywords": [], + "children": [] + } + }, + { + "异构型枚举": { + "keywords": [], + "children": [] + } + }, + { + "枚举成员映射": { + "keywords": [], + "children": [] + } + }, + { + "常量枚举成员与计算枚举成员": { + "keywords": [], + "children": [] + } + }, + { + "联合枚举类型": { + "keywords": [], + "children": [] + } + }, + { + "const枚举类型": { + "keywords": [], + "children": [] + } + } + ] + } + }, + { + "字面量类型": { + "keywords": [], + "children": [ + { + "boolean字面量类型": { + "keywords": [], + "children": [] + } + }, + { + "string字面量类型": { + "keywords": [], + "children": [] + } + }, + { + "数字字面量类型": { + "keywords": [], + "children": [] + } + }, + { + "枚举成员字面量类型": { + "keywords": [], + "children": [] + } + } + ] + } + }, + { + "单元类型": { + "keywords": [], + "children": [] + } + }, + { + "&端类型": { + "keywords": [], + "children": [ + { + "any": { + "keywords": [], + "children": [] + } + }, + { + "unknown": { + "keywords": [], + "children": [] + } + }, + { + "小结": { + "keywords": [], + "children": [] + } + } + ] + } + }, + { + "尾端类型": { + "keywords": [], + "children": [ + { + "never": { + "keywords": [], + "children": [] + } + }, + { + "应用场景": { + "keywords": [], + "children": [] + } + } + ] + } + }, + { + "数组类型": { + "keywords": [], + "children": [ + { + "数组类型定义": { + "keywords": [], + "children": [] + } + }, + { + "数组元素类型": { + "keywords": [], + "children": [] + } + }, + { + "只读数组": { + "keywords": [], + "children": [] + } + } + ] + } + }, + { + "元组类型": { + "keywords": [], + "children": [ + { + "元组的定义": { + "keywords": [], + "children": [] + } + }, + { + "只读元组": { + "keywords": [], + "children": [] + } + }, + { + "访问元组中的元素": { + "keywords": [], + "children": [] + } + }, + { + "元组类型中的可选元素": { + "keywords": [], + "children": [] + } + }, + { + "元组类型中的剩余元素": { + "keywords": [], + "children": [] + } + }, + { + "元组的长度": { + "keywords": [], + "children": [] + } + }, + { + "元组类型与数组类型的兼容性": { + "keywords": [], + "children": [] + } + } + ] + } + }, + { + "对象类型": { + "keywords": [], + "children": [ + { + "Object": { + "keywords": [], + "children": [] + } + }, + { + "object": { + "keywords": [], + "children": [] + } + }, + { + "对象类型字面量": { + "keywords": [], + "children": [] + } + }, + { + "弱类型": { + "keywords": [], + "children": [] + } + }, + { + "多余属性": { + "keywords": [], + "children": [] + } + } + ] + } + }, + { + "函数类型": { + "keywords": [], + "children": [ + { + "常规参数类型": { + "keywords": [], + "children": [] + } + }, + { + "可选参数类型": { + "keywords": [], + "children": [] + } + }, + { + "默认参数类型": { + "keywords": [], + "children": [] + } + }, + { + "剩余参数类型": { + "keywords": [], + "children": [] + } + }, + { + "解构参数类型": { + "keywords": [], + "children": [] + } + }, + { + "返回值类型": { + "keywords": [], + "children": [] + } + }, + { + "函数类型字面量": { + "keywords": [], + "children": [] + } + }, + { + "调用签名": { + "keywords": [], + "children": [] + } + }, + { + "构造函数类型字面量": { + "keywords": [], + "children": [] + } + }, + { + "构造签名": { + "keywords": [], + "children": [] + } + }, + { + "调用签名与构造签名": { + "keywords": [], + "children": [] + } + }, + { + "重载函数": { + "keywords": [], + "children": [] + } + }, + { + "函数中this值的类型": { + "keywords": [], + "children": [] + } + } + ] + } + }, + { + "接口": { + "keywords": [], + "children": [ + { + "接口声明": { + "keywords": [], + "children": [] + } + }, + { + "属性签名": { + "keywords": [], + "children": [] + } + }, + { + "调用签名": { + "keywords": [], + "children": [] + } + }, + { + "构造签名": { + "keywords": [], + "children": [] + } + }, + { + "方法签名": { + "keywords": [], + "children": [] + } + }, + { + "索引签名": { + "keywords": [], + "children": [] + } + }, + { + "可选属性与方法": { + "keywords": [], + "children": [] + } + }, + { + "只读属性与方法": { + "keywords": [], + "children": [] + } + }, + { + "接口的继承": { + "keywords": [], + "children": [] + } + } + ] + } + }, + { + "类型别名": { + "keywords": [], + "children": [ + { + "类型别名声明": { + "keywords": [], + "children": [] + } + }, + { + "递归的类型别名": { + "keywords": [], + "children": [] + } + }, + { + "类型别名与接口": { + "keywords": [], + "children": [] + } + } + ] + } + }, + { + "类": { + "keywords": [], + "children": [ + { + "类的定义": { + "keywords": [], + "children": [] + } + }, + { + "成员变量": { + "keywords": [], + "children": [] + } + }, + { + "成员函数": { + "keywords": [], + "children": [] + } + }, + { + "成员存取器": { + "keywords": [], + "children": [] + } + }, + { + "索引成员": { + "keywords": [], + "children": [] + } + }, + { + "成员可访问性": { + "keywords": [], + "children": [] + } + }, + { + "构造函数": { + "keywords": [], + "children": [] + } + }, + { + "参数成员": { + "keywords": [], + "children": [] + } + }, + { + "继承": { + "keywords": [], + "children": [] + } + }, + { + "实现接口": { + "keywords": [], + "children": [] + } + }, + { + "静态成员": { + "keywords": [], + "children": [] + } + }, + { + "抽象类和抽象成员": { + "keywords": [], + "children": [] + } + }, + { + "this类型": { + "keywords": [], + "children": [] + } + }, + { + "类类型": { + "keywords": [], + "children": [] + } + } + ] + } + } + ] + } + }, + { + "TypeScript类型进阶": { + "keywords": [], + "children": [ + { + "泛型": { + "keywords": [], + "children": [ + { + "泛型简介": { + "keywords": [], + "children": [] + } + }, + { + "形式类型参数": { + "keywords": [], + "children": [] + } + }, + { + "实际类型参数": { + "keywords": [], + "children": [] + } + }, + { + "泛型约束": { + "keywords": [], + "children": [] + } + }, + { + "泛型函数": { + "keywords": [], + "children": [] + } + }, + { + "泛型接口": { + "keywords": [], + "children": [] + } + }, + { + "泛型类型别名": { + "keywords": [], + "children": [] + } + }, + { + "泛型类": { + "keywords": [], + "children": [] + } + } + ] + } + }, + { + "局部类型": { + "keywords": [], + "children": [] + } + }, + { + "联合类型": { + "keywords": [], + "children": [ + { + "联合类型字面量": { + "keywords": [], + "children": [] + } + }, + { + "联合类型的类型成员": { + "keywords": [], + "children": [] + } + } + ] + } + }, + { + "交叉类型": { + "keywords": [], + "children": [ + { + "交叉类型字面量": { + "keywords": [], + "children": [] + } + }, + { + "交叉类型的类型成员": { + "keywords": [], + "children": [] + } + }, + { + "交叉类型与联合类型": { + "keywords": [], + "children": [] + } + } + ] + } + }, + { + "索引类型": { + "keywords": [], + "children": [ + { + "索引类型查询": { + "keywords": [], + "children": [] + } + }, + { + "索引访问类型": { + "keywords": [], + "children": [] + } + }, + { + "索引类型的应用": { + "keywords": [], + "children": [] + } + } + ] + } + }, + { + "映射对象类型": { + "keywords": [], + "children": [ + { + "映射对象类型声明": { + "keywords": [], + "children": [] + } + }, + { + "映射对象类型解析": { + "keywords": [], + "children": [] + } + }, + { + "映射对象类型应用": { + "keywords": [], + "children": [] + } + }, + { + "同态映射对象类型": { + "keywords": [], + "children": [] + } + } + ] + } + }, + { + "条件类型": { + "keywords": [], + "children": [ + { + "条件类型的定义": { + "keywords": [], + "children": [] + } + }, + { + "分布式条件类型": { + "keywords": [], + "children": [] + } + }, + { + "infer关键字": { + "keywords": [], + "children": [] + } + } + ] + } + }, + { + "内置工具类型": { + "keywords": [], + "children": [ + { + "Partial": { + "keywords": [], + "children": [] + } + }, + { + "Required": { + "keywords": [], + "children": [] + } + }, + { + "Readonly": { + "keywords": [], + "children": [] + } + }, + { + "Record": { + "keywords": [], + "children": [] + } + }, + { + "Pick": { + "keywords": [], + "children": [] + } + }, + { + "Omit": { + "keywords": [], + "children": [] + } + }, + { + "Exclude": { + "keywords": [], + "children": [] + } + }, + { + "Extract": { + "keywords": [], + "children": [] + } + }, + { + "NonNullable": { + "keywords": [], + "children": [] + } + }, + { + "Parameters": { + "keywords": [], + "children": [] + } + }, + { + "ConstructorParameters": { + "keywords": [], + "children": [] + } + }, + { + "ReturnType": { + "keywords": [], + "children": [] + } + }, + { + "InstanceType": { + "keywords": [], + "children": [] + } + }, + { + "ThisParameterType": { + "keywords": [], + "children": [] + } + }, + { + "OmitThisParameter": { + "keywords": [], + "children": [] + } + }, + { + "ThisType": { + "keywords": [], + "children": [] + } + } + ] + } + }, + { + "类型查询": { + "keywords": [], + "children": [] + } + }, + { + "类型断言": { + "keywords": [], + "children": [ + { + "类型断言": { + "keywords": [], + "children": [] + } + }, + { + "as T类型断言": { + "keywords": [], + "children": [] + } + }, + { + "类型断言的约束": { + "keywords": [], + "children": [] + } + }, + { + "const类型断言": { + "keywords": [], + "children": [] + } + }, + { + "!类型断言": { + "keywords": [], + "children": [] + } + } + ] + } + }, + { + "类型细化": { + "keywords": [], + "children": [ + { + "类型守卫": { + "keywords": [], + "children": [] + } + }, + { + "可辨识联合类型": { + "keywords": [], + "children": [] + } + }, + { + "赋值语句分析": { + "keywords": [], + "children": [] + } + }, + { + "基于控制流的类型分析": { + "keywords": [], + "children": [] + } + }, + { + "断言函数": { + "keywords": [], + "children": [] + } + } + ] + } + } + ] + } + }, + { + "TypeScript类型深入": { + "keywords": [], + "children": [ + { + "子类型兼容性": { + "keywords": [], + "children": [ + { + "类型系统可靠性": { + "keywords": [], + "children": [] + } + }, + { + "子类型的基本性质": { + "keywords": [], + "children": [] + } + }, + { + "&端类型与尾端类型": { + "keywords": [], + "children": [] + } + }, + { + "原始类型": { + "keywords": [], + "children": [] + } + }, + { + "函数类型": { + "keywords": [], + "children": [] + } + }, + { + "对象类型": { + "keywords": [], + "children": [] + } + }, + { + "泛型": { + "keywords": [], + "children": [] + } + }, + { + "联合类型": { + "keywords": [], + "children": [] + } + }, + { + "交叉类型": { + "keywords": [], + "children": [] + } + } + ] + } + }, + { + "赋值兼容性": { + "keywords": [], + "children": [] + } + }, + { + "类型推断": { + "keywords": [], + "children": [ + { + "常规类型推断": { + "keywords": [], + "children": [] + } + }, + { + "按上下文归类": { + "keywords": [], + "children": [] + } + } + ] + } + }, + { + "类型放宽": { + "keywords": [], + "children": [ + { + "常规类型放宽": { + "keywords": [], + "children": [] + } + }, + { + "字面量类型放宽": { + "keywords": [], + "children": [] + } + } + ] + } + }, + { + "命名空间": { + "keywords": [], + "children": [ + { + "命名空间声明": { + "keywords": [], + "children": [] + } + }, + { + "导出命名空间内的声明": { + "keywords": [], + "children": [] + } + }, + { + "别名导入声明": { + "keywords": [], + "children": [] + } + }, + { + "在多文件中使用命名空间": { + "keywords": [], + "children": [] + } + }, + { + "小结": { + "keywords": [], + "children": [] + } + } + ] + } + }, + { + "模块": { + "keywords": [], + "children": [ + { + "模块简史": { + "keywords": [], + "children": [] + } + }, + { + "ECMAScript模块": { + "keywords": [], + "children": [] + } + }, + { + "模块导出": { + "keywords": [], + "children": [] + } + }, + { + "模块导入": { + "keywords": [], + "children": [] + } + }, + { + "重命名模块导入和导出": { + "keywords": [], + "children": [] + } + }, + { + "针对类型的模块导入与导出 280": { + "keywords": [], + "children": [] + } + }, + { + "动态模块导入": { + "keywords": [], + "children": [] + } + }, + { + "--module": { + "keywords": [], + "children": [] + } + } + ] + } + }, + { + "外部声明": { + "keywords": [], + "children": [ + { + "外部类型声明": { + "keywords": [], + "children": [] + } + }, + { + "外部模块声明": { + "keywords": [], + "children": [] + } + } + ] + } + }, + { + "使用声明文件": { + "keywords": [], + "children": [ + { + "语言内置的声明文件": { + "keywords": [], + "children": [] + } + }, + { + "第三方声明文件": { + "keywords": [], + "children": [] + } + }, + { + "自定义声明文件": { + "keywords": [], + "children": [] + } + } + ] + } + }, + { + "模块解析": { + "keywords": [], + "children": [ + { + "相对模块导入": { + "keywords": [], + "children": [] + } + }, + { + "非相对模块导入": { + "keywords": [], + "children": [] + } + }, + { + "模块解析策略": { + "keywords": [], + "children": [] + } + }, + { + "模块解析策略之Classic": { + "keywords": [], + "children": [] + } + }, + { + "模块解析策略之Node": { + "keywords": [], + "children": [] + } + }, + { + "--baseUrl": { + "keywords": [], + "children": [] + } + }, + { + "paths": { + "keywords": [], + "children": [] + } + }, + { + "rootDirs": { + "keywords": [], + "children": [] + } + }, + { + "导入外部模块声明": { + "keywords": [], + "children": [] + } + }, + { + "--traceResolution": { + "keywords": [], + "children": [] + } + } + ] + } + }, + { + "声明合并": { + "keywords": [], + "children": [ + { + "接口声明合并": { + "keywords": [], + "children": [] + } + }, + { + "枚举声明合并": { + "keywords": [], + "children": [] + } + }, + { + "类声明合并": { + "keywords": [], + "children": [] + } + }, + { + "命名空间声明合并": { + "keywords": [], + "children": [] + } + }, + { + "扩充模块声明": { + "keywords": [], + "children": [] + } + }, + { + "扩充全局声明": { + "keywords": [], + "children": [] + } + } + ] + } + } + ] + } + }, + { + "TypeScript配置管理": { + "keywords": [], + "children": [ + { + "编译器": { + "keywords": [], + "children": [ + { + "安装编译器": { + "keywords": [], + "children": [] + } + }, + { + "编译程序": { + "keywords": [], + "children": [] + } + } + ] + } + }, + { + "编译选项": { + "keywords": [], + "children": [ + { + "编译选项风格": { + "keywords": [], + "children": [] + } + }, + { + "使用编译选项": { + "keywords": [], + "children": [] + } + }, + { + "严格类型检查": { + "keywords": [], + "children": [] + } + }, + { + "编译选项列表": { + "keywords": [], + "children": [] + } + } + ] + } + }, + { + "tsconfig.json": { + "keywords": [], + "children": [ + { + "使用配置文件": { + "keywords": [], + "children": [] + } + }, + { + "编译选项列表": { + "keywords": [], + "children": [] + } + }, + { + "编译文件列表": { + "keywords": [], + "children": [] + } + }, + { + "声明文件列表": { + "keywords": [], + "children": [] + } + }, + { + "继承配置文件": { + "keywords": [], + "children": [] + } + } + ] + } + }, + { + "工程引用": { + "keywords": [], + "children": [ + { + "使用工程引用": { + "keywords": [], + "children": [] + } + }, + { + "工程引用示例": { + "keywords": [], + "children": [] + } + }, + { + "--build": { + "keywords": [], + "children": [] + } + }, + { + "solution模式": { + "keywords": [], + "children": [] + } + } + ] + } + }, + { + "类型检查": { + "keywords": [], + "children": [ + { + "编译": { + "keywords": [], + "children": [] + } + }, + { + "类型检查": { + "keywords": [], + "children": [] + } + }, + { + "JSDoc与类型": { + "keywords": [], + "children": [] + } + } + ] + } + }, + { + "三斜线指令": { + "keywords": [], + "children": [] + } + } + ] + } + } + ] + } + } + ] + } + }, + { + "node.js": { + "node_id": "569d5e11c4fc5de7844053d9a733c5e8", + "keywords": [], + "children": [ + { + "Node简介": { + "node_id": "569d5e11c4fc5de7844053d9a733c5e8", + "keywords": [], + "children": [ + { + "Node的诞生历程": { + "keywords": [], + "children": [] + } + }, + { + "Node的命名与起源": { + "keywords": [], + "children": [ + { + "为什么是JavaScript": { + "keywords": [], + "children": [] + } + }, + { + "为什么叫Node": { + "keywords": [], + "children": [] + } + } + ] + } + }, + { + "Node的特点": { + "keywords": [], + "children": [ + { + "异步IO": { + "keywords": [], + "children": [] + } + }, + { + "事件与回调函数": { + "keywords": [], + "children": [] + } + }, + { + "单线程": { + "keywords": [], + "children": [] + } + }, + { + "跨平台": { + "keywords": [], + "children": [] + } + } + ] + } + }, + { + "Node的应用场景": { + "keywords": [], + "children": [ + { + "IO密集型": { + "keywords": [], + "children": [] + } + }, + { + "是否不擅长CPU密集型业务": { + "keywords": [], + "children": [] + } + }, + { + "与遗留系统和平共处": { + "keywords": [], + "children": [] + } + }, + { + "分布式应用": { + "keywords": [], + "children": [] + } + } + ] + } + } + ] + } + }, + { + "模块机制": { + "node_id": "569d5e11c4fc5de7844053d9a733c5e8", + "keywords": [], + "children": [ + { + "CommonJS规范": { + "keywords": [], + "children": [ + { + "CommonJS的出发点": { + "keywords": [], + "children": [] + } + }, + { + "CommonJS的模块规范": { + "keywords": [], + "children": [] + } + } + ] + } + }, + { + "Node的模块实现": { + "keywords": [], + "children": [ + { + "优先从缓存加载": { + "keywords": [], + "children": [] + } + }, + { + "路径分析和文件定位": { + "keywords": [], + "children": [] + } + }, + { + "模块编译": { + "keywords": [], + "children": [] + } + } + ] + } + }, + { + "核心模块": { + "keywords": [], + "children": [ + { + "JavaScript核心模块的编译过程": { + "keywords": [], + "children": [] + } + }, + { + "C&C++核心模块的编译过程": { + "keywords": [], + "children": [] + } + }, + { + "核心模块的引入流程": { + "keywords": [], + "children": [] + } + }, + { + "编写核心模块": { + "keywords": [], + "children": [] + } + } + ] + } + }, + { + "C&C++扩展模块": { + "keywords": [], + "children": [ + { + "前提条件": { + "keywords": [], + "children": [] + } + }, + { + "C&C++扩展模块的编写": { + "keywords": [], + "children": [] + } + }, + { + "C&C++扩展模块的编译": { + "keywords": [], + "children": [] + } + }, + { + "C&C++扩展模块的加载": { + "keywords": [], + "children": [] + } + } + ] + } + }, + { + "模块调用栈": { + "keywords": [], + "children": [] + } + }, + { + "包与NPM": { + "keywords": [], + "children": [ + { + "包结构": { + "keywords": [], + "children": [] + } + }, + { + "包描述文件与NPM": { + "keywords": [], + "children": [] + } + }, + { + "NPM常用功能": { + "keywords": [], + "children": [] + } + }, + { + "局域NPM": { + "keywords": [], + "children": [] + } + }, + { + "NPM潜在问题": { + "keywords": [], + "children": [] + } + } + ] + } + }, + { + "前后端共用模块": { + "keywords": [], + "children": [ + { + "模块的侧重点": { + "keywords": [], + "children": [] + } + }, + { + "AMD规范": { + "keywords": [], + "children": [] + } + }, + { + "CMD规范": { + "keywords": [], + "children": [] + } + }, + { + "兼容多种模块规范": { + "keywords": [], + "children": [] + } + } + ] + } + } + ] + } + }, + { + "异步IO": { + "node_id": "569d5e11c4fc5de7844053d9a733c5e8", + "keywords": [], + "children": [ + { + "为什么要异步IO": { + "keywords": [], + "children": [ + { + "用户体验": { + "keywords": [], + "children": [] + } + }, + { + "资源分配": { + "keywords": [], + "children": [] + } + } + ] + } + }, + { + "异步IO实现现状": { + "keywords": [], + "children": [ + { + "异步IO与非阻塞IO": { + "keywords": [], + "children": [] + } + }, + { + "理想的非阻塞异步IO": { + "keywords": [], + "children": [] + } + }, + { + "现实的异步IO": { + "keywords": [], + "children": [] + } + } + ] + } + }, + { + "Node的异步IO": { + "keywords": [], + "children": [ + { + "事件循环": { + "keywords": [], + "children": [] + } + }, + { + "观察者": { + "keywords": [], + "children": [] + } + }, + { + "请求对象": { + "keywords": [], + "children": [] + } + }, + { + "执行回调": { + "keywords": [], + "children": [] + } + }, + { + "小结": { + "keywords": [], + "children": [] + } + } + ] + } + }, + { + "非IO的异步API": { + "keywords": [], + "children": [ + { + "定时器": { + "keywords": [], + "children": [] + } + }, + { + "process.nextTick()": { + "keywords": [], + "children": [] + } + }, + { + "setImmediate()": { + "keywords": [], + "children": [] + } + } + ] + } + }, + { + "事件驱动与高性能服务器": { + "keywords": [], + "children": [] + } + } + ] + } + }, + { + "异步编程": { + "node_id": "569d5e11c4fc5de7844053d9a733c5e8", + "keywords": [], + "children": [ + { + "函数式编程": { + "keywords": [], + "children": [ + { + "高阶函数": { + "keywords": [], + "children": [] + } + }, + { + "偏函数用法": { + "keywords": [], + "children": [] + } + } + ] + } + }, + { + "异步编程的优势与难点": { + "keywords": [], + "children": [ + { + "优势": { + "keywords": [], + "children": [] + } + }, + { + "难点": { + "keywords": [], + "children": [] + } + } + ] + } + }, + { + "异步编程解决方案": { + "keywords": [], + "children": [ + { + "事件发布 & 订阅模式": { + "keywords": [], + "children": [] + } + }, + { + "Promise & Deferred模式": { + "keywords": [], + "children": [] + } + }, + { + "流程控制库": { + "keywords": [], + "children": [] + } + } + ] + } + }, + { + "异步并发控制": { + "keywords": [], + "children": [ + { + "bagpipe的解决方案": { + "keywords": [], + "children": [] + } + }, + { + "async的解决方案": { + "keywords": [], + "children": [] + } + } + ] + } + } + ] + } + }, + { + "内存控制": { + "node_id": "569d5e11c4fc5de7844053d9a733c5e8", + "keywords": [], + "children": [ + { + "V8的垃圾回收机制与内存限制": { + "keywords": [], + "children": [ + { + "Node与V8": { + "keywords": [], + "children": [] + } + }, + { + "V8的内存限制": { + "keywords": [], + "children": [] + } + }, + { + "V8的对象分配": { + "keywords": [], + "children": [] + } + }, + { + "V8的垃圾回收机制": { + "keywords": [], + "children": [] + } + }, + { + "查看垃圾回收日志": { + "keywords": [], + "children": [] + } + } + ] + } + }, + { + "高效使用内存": { + "keywords": [], + "children": [ + { + "作用域": { + "keywords": [], + "children": [] + } + }, + { + "闭包": { + "keywords": [], + "children": [] + } + }, + { + "小结": { + "keywords": [], + "children": [] + } + } + ] + } + }, + { + "内存指标": { + "keywords": [], + "children": [ + { + "查看内存使用情况": { + "keywords": [], + "children": [] + } + }, + { + "堆外内存": { + "keywords": [], + "children": [] + } + }, + { + "小结": { + "keywords": [], + "children": [] + } + } + ] + } + }, + { + "内存泄漏": { + "keywords": [], + "children": [ + { + "慎将内存当做缓存": { + "keywords": [], + "children": [] + } + }, + { + "关注队列状态": { + "keywords": [], + "children": [] + } + } + ] + } + }, + { + "内存泄漏排查": { + "keywords": [], + "children": [ + { + "node-heapdump": { + "keywords": [], + "children": [] + } + }, + { + "node-memwatch": { + "keywords": [], + "children": [] + } + }, + { + "小结": { + "keywords": [], + "children": [] + } + } + ] + } + }, + { + "大内存应用": { + "keywords": [], + "children": [] + } + } + ] + } + }, + { + "理解Buffer": { + "node_id": "569d5e11c4fc5de7844053d9a733c5e8", + "keywords": [], + "children": [ + { + "Buffer结构": { + "keywords": [], + "children": [ + { + "模块结构": { + "keywords": [], + "children": [] + } + }, + { + "Buffer对象": { + "keywords": [], + "children": [] + } + }, + { + "Buffer内存分配": { + "keywords": [], + "children": [] + } + } + ] + } + }, + { + "Buffer的转换": { + "keywords": [], + "children": [ + { + "字符串转Buffer": { + "keywords": [], + "children": [] + } + }, + { + "Buffer转字符串": { + "keywords": [], + "children": [] + } + }, + { + "Buffer不支持的编码类型": { + "keywords": [], + "children": [] + } + } + ] + } + }, + { + "Buffer的拼接": { + "keywords": [], + "children": [ + { + "乱码是如何产生的": { + "keywords": [], + "children": [] + } + }, + { + "setEncoding()与string_decoder()": { + "keywords": [], + "children": [] + } + }, + { + "正确拼接Buffer": { + "keywords": [], + "children": [] + } + } + ] + } + }, + { + "Buffer与性能": { + "keywords": [], + "children": [] + } + } + ] + } + }, + { + "网络编程": { + "node_id": "569d5e11c4fc5de7844053d9a733c5e8", + "keywords": [], + "children": [ + { + "构建TCP服务": { + "keywords": [], + "children": [ + { + "TCP": { + "keywords": [], + "children": [] + } + }, + { + "创建TCP服务器端": { + "keywords": [], + "children": [] + } + }, + { + "TCP服务的事件": { + "keywords": [], + "children": [] + } + } + ] + } + }, + { + "构建UDP服务": { + "keywords": [], + "children": [ + { + "创建UDP套接字": { + "keywords": [], + "children": [] + } + }, + { + "创建UDP服务器端": { + "keywords": [], + "children": [] + } + }, + { + "创建UDP客户端": { + "keywords": [], + "children": [] + } + }, + { + "UDP套接字事件": { + "keywords": [], + "children": [] + } + } + ] + } + }, + { + "构建HTTP服务": { + "keywords": [], + "children": [ + { + "HTTP": { + "keywords": [], + "children": [] + } + }, + { + "http模块": { + "keywords": [], + "children": [] + } + }, + { + "HTTP客户端": { + "keywords": [], + "children": [] + } + } + ] + } + }, + { + "构建WebSocket服务": { + "keywords": [], + "children": [ + { + "WebSocket握手": { + "keywords": [], + "children": [] + } + }, + { + "WebSocket数据传输": { + "keywords": [], + "children": [] + } + }, + { + "小结": { + "keywords": [], + "children": [] + } + } + ] + } + }, + { + "网络服务与安全": { + "keywords": [], + "children": [ + { + "TLS & SSL": { + "keywords": [], + "children": [] + } + }, + { + "TLS服务": { + "keywords": [], + "children": [] + } + }, + { + "HTTPS服务": { + "keywords": [], + "children": [] + } + } + ] + } + } + ] + } + }, + { + "构建Web应用": { + "node_id": "569d5e11c4fc5de7844053d9a733c5e8", + "keywords": [], + "children": [ + { + "基础功能": { + "keywords": [], + "children": [ + { + "请求方法": { + "keywords": [], + "children": [] + } + }, + { + "路径解析": { + "keywords": [], + "children": [] + } + }, + { + "查询字符串": { + "keywords": [], + "children": [] + } + }, + { + "Cookie": { + "keywords": [], + "children": [] + } + }, + { + "Session": { + "keywords": [], + "children": [] + } + }, + { + "缓存": { + "keywords": [], + "children": [] + } + }, + { + "Basic认证": { + "keywords": [], + "children": [] + } + } + ] + } + }, + { + "数据上传": { + "keywords": [], + "children": [ + { + "表单数据": { + "keywords": [], + "children": [] + } + }, + { + "其他格式": { + "keywords": [], + "children": [] + } + }, + { + "附件上传": { + "keywords": [], + "children": [] + } + }, + { + "数据上传与安全": { + "keywords": [], + "children": [] + } + } + ] + } + }, + { + "路由解析": { + "keywords": [], + "children": [ + { + "文件路径型": { + "keywords": [], + "children": [] + } + }, + { + "MVC": { + "keywords": [], + "children": [] + } + }, + { + "RESTful": { + "keywords": [], + "children": [] + } + } + ] + } + }, + { + "中间件": { + "keywords": [], + "children": [ + { + "异常处理": { + "keywords": [], + "children": [] + } + }, + { + "中间件与性能": { + "keywords": [], + "children": [] + } + }, + { + "小结": { + "keywords": [], + "children": [] + } + } + ] + } + }, + { + "页面渲染": { + "keywords": [], + "children": [ + { + "内容响应": { + "keywords": [], + "children": [] + } + }, + { + "视图渲染": { + "keywords": [], + "children": [] + } + }, + { + "模板": { + "keywords": [], + "children": [] + } + }, + { + "Bigpipe": { + "keywords": [], + "children": [] + } + } + ] + } + } + ] + } + } + ] + } + }, + { + "包管理器": { + "node_id": "569d5e11c4fc5de7844053d9a733c5e8", + "keywords": [], + "children": [ + { + "npm": { + "node_id": "569d5e11c4fc5de7844053d9a733c5e8", + "keywords": [], + "children": [] + } + }, + { + "yarn": { + "node_id": "569d5e11c4fc5de7844053d9a733c5e8", + "keywords": [], + "children": [] + } + }, + { + "nvm": { + "node_id": "569d5e11c4fc5de7844053d9a733c5e8", + "keywords": [], + "children": [] + } + } + ] + } + }, + { + "构建工具": { + "node_id": "569d5e11c4fc5de7844053d9a733c5e8", + "keywords": [], + "children": [ + { + "任务运行式": { + "node_id": "569d5e11c4fc5de7844053d9a733c5e8", + "keywords": [], + "children": [ + { + "gulp": { + "keywords": [], + "children": [] + } + }, + { + "npm脚本": { + "keywords": [], + "children": [] + } + } + ] + } + }, + { + "模块捆扎式": { + "node_id": "569d5e11c4fc5de7844053d9a733c5e8", + "keywords": [], + "children": [ + { + "Webpack": { + "keywords": [], + "children": [ + { + "安装": { + "keywords": [], + "children": [] + } + }, + { + "基本使用": { + "keywords": [], + "children": [] + } + }, + { + "命令行": { + "keywords": [], + "children": [] + } + }, + { + "配置文件": { + "keywords": [], + "children": [ + { + "context": { + "keywords": [], + "children": [] + } + }, + { + "entry": { + "keywords": [], + "children": [] + } + }, + { + "output": { + "keywords": [], + "children": [] + } + } + ] + } + } + ] + } + }, + { + "rollup": { + "keywords": [], + "children": [] + } + }, + { + "parel": { + "keywords": [], + "children": [] + } + } + ] + } + } + ] + } + }, + { + "CSS 编译": { + "node_id": "569d5e11c4fc5de7844053d9a733c5e8", + "keywords": [], + "children": [ + { + "Sass": { + "node_id": "569d5e11c4fc5de7844053d9a733c5e8", + "keywords": [], + "children": [ + { + "安装": { + "keywords": [], + "children": [] + } + }, + { + "变量": { + "keywords": [], + "children": [] + } + }, + { + "嵌套规则与属性": { + "keywords": [], + "children": [] + } + }, + { + "@import与Partials": { + "keywords": [], + "children": [] + } + }, + { + "@minxin与@include": { + "keywords": [], + "children": [] + } + }, + { + "@extend与继承": { + "keywords": [], + "children": [] + } + }, + { + "函数": { + "keywords": [], + "children": [] + } + } + ] + } + }, + { + "Less": { + "node_id": "569d5e11c4fc5de7844053d9a733c5e8", + "keywords": [], + "children": [ + { + "使用Less": { + "keywords": [], + "children": [ + { + "安装": { + "keywords": [], + "children": [] + } + }, + { + "命令行用法": { + "keywords": [], + "children": [] + } + }, + { + "配置": { + "keywords": [], + "children": [] + } + }, + { + "第三方工具": { + "keywords": [], + "children": [] + } + } + ] + } + }, + { + "Rhino命令行": { + "keywords": [], + "children": [] + } + }, + { + "客户端用法": { + "keywords": [], + "children": [] + } + }, + { + "获取Less.js": { + "keywords": [], + "children": [ + { + "浏览器下载": { + "keywords": [], + "children": [] + } + }, + { + "Less CDN": { + "keywords": [], + "children": [] + } + } + ] + } + } + ] + } + }, + { + "Stylus": { + "node_id": "569d5e11c4fc5de7844053d9a733c5e8", + "keywords": [], + "children": [ + { + "安装": { + "keywords": [], + "children": [] + } + }, + { + "特征": { + "keywords": [], + "children": [] + } + }, + { + "选择器": { + "keywords": [], + "children": [] + } + }, + { + "变量": { + "keywords": [], + "children": [] + } + }, + { + "插值": { + "keywords": [], + "children": [] + } + }, + { + "运算符": { + "keywords": [], + "children": [] + } + }, + { + "混合书写": { + "keywords": [], + "children": [] + } + }, + { + "函数": { + "keywords": [], + "children": [] + } + }, + { + "关键字参数": { + "keywords": [], + "children": [] + } + }, + { + "内置方法": { + "keywords": [], + "children": [] + } + }, + { + "其他参数": { + "keywords": [], + "children": [] + } + }, + { + "注释": { + "keywords": [], + "children": [] + } + }, + { + "迭代": { + "keywords": [], + "children": [] + } + }, + { + "@import": { + "keywords": [], + "children": [] + } + }, + { + "@media": { + "keywords": [], + "children": [] + } + }, + { + "@font-face": { + "keywords": [], + "children": [] + } + }, + { + "@keyframes": { + "keywords": [], + "children": [] + } + }, + { + "@extend": { + "keywords": [], + "children": [] + } + }, + { + "url": { + "keywords": [], + "children": [] + } + }, + { + "CSS字面量": { + "keywords": [], + "children": [] + } + }, + { + "CSS样式解析": { + "keywords": [], + "children": [] + } + }, + { + "字符转码": { + "keywords": [], + "children": [] + } + }, + { + "可执行性": { + "keywords": [], + "children": [] + } + }, + { + "错误报告": { + "keywords": [], + "children": [] + } + }, + { + "连接中间件": { + "keywords": [], + "children": [] + } + }, + { + "自检API": { + "keywords": [], + "children": [] + } + } + ] + } + }, + { + "PostCSS": { + "node_id": "569d5e11c4fc5de7844053d9a733c5e8", + "keywords": [], + "children": [ + { + "PostCSS runner": { + "keywords": [], + "children": [] + } + }, + { + "编写自定义语法": { + "keywords": [], + "children": [ + { + "语法": { + "keywords": [], + "children": [] + } + }, + { + "解析器": { + "keywords": [], + "children": [] + } + }, + { + "字符串生成器": { + "keywords": [], + "children": [] + } + } + ] + } + }, + { + "PostCSS插件": { + "keywords": [], + "children": [ + { + "控制": { + "keywords": [], + "children": [] + } + }, + { + "打包": { + "keywords": [], + "children": [] + } + }, + { + "面向未来的CSS语法": { + "keywords": [], + "children": [] + } + }, + { + "向下兼容": { + "keywords": [], + "children": [] + } + }, + { + "语言扩展": { + "keywords": [], + "children": [] + } + }, + { + "颜色": { + "keywords": [], + "children": [] + } + }, + { + "图片与字体": { + "keywords": [], + "children": [] + } + }, + { + "网格": { + "keywords": [], + "children": [] + } + }, + { + "优化": { + "keywords": [], + "children": [] + } + }, + { + "快捷工具": { + "keywords": [], + "children": [] + } + }, + { + "其他": { + "keywords": [], + "children": [] + } + }, + { + "分析": { + "keywords": [], + "children": [] + } + } + ] + } + } + ] + } + } + ] + } + }, + { + "web安全": { + "node_id": "569d5e11c4fc5de7844053d9a733c5e8", + "keywords": [], + "children": [ + { + "https": { + "node_id": "569d5e11c4fc5de7844053d9a733c5e8", + "keywords": [], + "children": [] + } + }, + { + "CORS": { + "node_id": "569d5e11c4fc5de7844053d9a733c5e8", + "keywords": [], + "children": [] + } + }, + { + "常见web攻击技术": { + "node_id": "569d5e11c4fc5de7844053d9a733c5e8", + "keywords": [], + "children": [ + { + "XSS(Cross-Site Scripting,跨站脚本攻击)": { + "keywords": [], + "children": [] + } + }, + { + "SQL注入攻击": { + "keywords": [], + "children": [] + } + }, + { + "CSRFCross-Site Request Forgeries,跨站点请求伪造)": { + "keywords": [], + "children": [] + } + } + ] + } + } + ] + } + }, + { + "性能优化": { + "node_id": "569d5e11c4fc5de7844053d9a733c5e8", + "keywords": [], + "children": [ + { + "指标": { + "node_id": "569d5e11c4fc5de7844053d9a733c5e8", + "keywords": [], + "children": [ + { + "真实指标": { + "keywords": [], + "children": [ + { + "First Contentful Paint (FCP)": { + "keywords": [], + "children": [] + } + }, + { + "Largest Contentful Paint (LCP)": { + "keywords": [], + "children": [] + } + }, + { + "First Input Delay (FID)": { + "keywords": [], + "children": [] + } + }, + { + "Cumulative Layout Shift (CLS)": { + "keywords": [], + "children": [] + } + } + ] + } + }, + { + "实验室指标": { + "keywords": [], + "children": [ + { + "Total Blocking Time (TBT)": { + "keywords": [], + "children": [] + } + }, + { + "Time to Interactive (TTI)": { + "keywords": [], + "children": [] + } + } + ] + } + } + ] + } + }, + { + "评估工具": { + "node_id": "569d5e11c4fc5de7844053d9a733c5e8", + "keywords": [], + "children": [ + { + "Chrome DevTools": { + "keywords": [], + "children": [] + } + }, + { + "LightHouse": { + "keywords": [], + "children": [] + } + }, + { + "PageSpeed Insights": { + "keywords": [], + "children": [] + } + }, + { + "WebPageTest": { + "keywords": [], + "children": [] + } + } + ] + } + }, + { + "优化方案": { + "node_id": "569d5e11c4fc5de7844053d9a733c5e8", + "keywords": [], + "children": [ + { + "压缩": { + "keywords": [], + "children": [ + { + "代码压缩": { + "keywords": [], + "children": [] + } + }, + { + "文本压缩(gzip、Brotli、Zopfli等)": { + "keywords": [], + "children": [] + } + }, + { + "Tree-shaking": { + "keywords": [], + "children": [] + } + }, + { + "Code-splitting": { + "keywords": [], + "children": [] + } + } + ] + } + }, + { + "图片优化": { + "keywords": [], + "children": [ + { + "小图优化(css sprite、iconfont、dataURI、svg)": { + "keywords": [], + "children": [] + } + }, + { + "图片格式选择": { + "keywords": [], + "children": [] + } + }, + { + "压缩(如tinypng)": { + "keywords": [], + "children": [] + } + }, + { + "响应式": { + "keywords": [], + "children": [] + } + } + ] + } + }, + { + "加载策略": { + "keywords": [], + "children": [ + { + "懒加载": { + "keywords": [], + "children": [] + } + }, + { + "DNS预解析、预加载、预渲染": { + "keywords": [], + "children": [] + } + }, + { + "离线化(ServiceWorker、AppCache、离线包等)": { + "keywords": [], + "children": [] + } + }, + { + "HTTP缓存": { + "keywords": [], + "children": [] + } + }, + { + "数据缓存(localStorage、sessionStorage)": { + "keywords": [], + "children": [] + } + }, + { + "资源加载(顺序、位置、异步等)": { + "keywords": [], + "children": [] + } + }, + { + "请求合并": { + "keywords": [], + "children": [] + } + }, + { + "HTTP2": { + "keywords": [], + "children": [] + } + }, + { + "CDN": { + "keywords": [], + "children": [] + } + }, + { + "服务端渲染": { + "keywords": [], + "children": [] + } + } + ] + } + }, + { + "执行渲染": { + "keywords": [], + "children": [ + { + "CSS代码优化(选择器、启用GPU、避免表达式等)": { + "keywords": [], + "children": [] + } + }, + { + "JS代码优化及评估": { + "keywords": [], + "children": [] + } + } + ] + } + }, + { + "感官体验优化": { + "keywords": [], + "children": [ + { + "骨架屏": { + "keywords": [], + "children": [] + } + }, + { + "Snapshot": { + "keywords": [], + "children": [] + } + }, + { + "Loading": { + "keywords": [], + "children": [] + } + } + ] + } + } + ] + } + } + ] + } + } + ] + } + }, + { + "web高阶": { + "node_id": "569d5e11c4fc5de7844053d9a733c5e8", + "keywords": [], + "children": [ + { + "前端架构模式": { + "node_id": "569d5e11c4fc5de7844053d9a733c5e8", + "keywords": [], + "children": [ + { + "MVC": { + "node_id": "569d5e11c4fc5de7844053d9a733c5e8", + "keywords": [], + "children": [] + } + }, + { + "MVP": { + "node_id": "569d5e11c4fc5de7844053d9a733c5e8", + "keywords": [], + "children": [] + } + }, + { + "MVVM": { + "node_id": "569d5e11c4fc5de7844053d9a733c5e8", + "keywords": [], + "children": [] + } + } + ] + } + }, + { + "vue.js": { + "node_id": "569d5e11c4fc5de7844053d9a733c5e8", + "keywords": [], + "children": [ + { + "遇见Vue.js": { + "node_id": "569d5e11c4fc5de7844053d9a733c5e8", + "keywords": [], + "children": [ + { + "MVX模式是什么": { + "keywords": [], + "children": [ + { + "MVC": { + "keywords": [], + "children": [] + } + }, + { + "MVP": { + "keywords": [], + "children": [] + } + }, + { + "MVVM": { + "keywords": [], + "children": [] + } + } + ] + } + }, + { + "Vue.js是什么": { + "keywords": [], + "children": [ + { + "Vue.js与其他框架的区别": { + "keywords": [], + "children": [] + } + }, + { + "如何使用Vue.js": { + "keywords": [], + "children": [] + } + }, + { + "Vue.js的发展历史": { + "keywords": [], + "children": [] + } + } + ] + } + } + ] + } + }, + { + "Vue实例方法": { + "node_id": "569d5e11c4fc5de7844053d9a733c5e8", + "keywords": [], + "children": [ + { + "实例属性": { + "keywords": [], + "children": [ + { + "组件树访问": { + "keywords": [], + "children": [] + } + }, + { + "DOM访问": { + "keywords": [], + "children": [] + } + }, + { + "数据访问": { + "keywords": [], + "children": [] + } + } + ] + } + } + ] + } + }, + { + "组件": { + "node_id": "569d5e11c4fc5de7844053d9a733c5e8", + "keywords": [], + "children": [ + { + "基础": { + "keywords": [], + "children": [ + { + "注册": { + "keywords": [], + "children": [] + } + }, + { + "数据传递": { + "keywords": [], + "children": [] + } + }, + { + "混合": { + "keywords": [], + "children": [] + } + }, + { + "动态组件": { + "keywords": [], + "children": [] + } + } + ] + } + }, + { + "相关拓展": { + "keywords": [], + "children": [ + { + "组件和v-for": { + "keywords": [], + "children": [] + } + }, + { + "编写可复用组件": { + "keywords": [], + "children": [] + } + }, + { + "异步组件": { + "keywords": [], + "children": [] + } + }, + { + "资源命名约定": { + "keywords": [], + "children": [] + } + }, + { + "内联模板": { + "keywords": [], + "children": [] + } + }, + { + "片段实例": { + "keywords": [], + "children": [] + } + } + ] + } + }, + { + "生命周期": { + "keywords": [], + "children": [] + } + }, + { + "开发组件": { + "keywords": [], + "children": [ + { + "基础组件": { + "keywords": [], + "children": [] + } + }, + { + "基于第三方组件开发": { + "keywords": [], + "children": [] + } + } + ] + } + } + ] + } + }, + { + "表单校验": { + "node_id": "569d5e11c4fc5de7844053d9a733c5e8", + "keywords": [], + "children": [ + { + "安装": { + "keywords": [], + "children": [] + } + }, + { + "基本使用": { + "keywords": [], + "children": [] + } + }, + { + "验证结果结构": { + "keywords": [], + "children": [] + } + }, + { + "验证器语法": { + "keywords": [], + "children": [ + { + "校验字段名field": { + "keywords": [], + "children": [] + } + }, + { + "校验规则定义": { + "keywords": [], + "children": [] + } + } + ] + } + }, + { + "内置验证规则": { + "keywords": [], + "children": [ + { + "required": { + "keywords": [], + "children": [] + } + }, + { + "pattern": { + "keywords": [], + "children": [] + } + }, + { + "minlength": { + "keywords": [], + "children": [] + } + }, + { + "maxlength": { + "keywords": [], + "children": [] + } + }, + { + "min": { + "keywords": [], + "children": [] + } + }, + { + "max": { + "keywords": [], + "children": [] + } + } + ] + } + }, + { + "与v-model同时使用": { + "keywords": [], + "children": [] + } + }, + { + "重置校验结果": { + "keywords": [], + "children": [] + } + }, + { + "表单元素": { + "keywords": [], + "children": [] + } + }, + { + "各校验状态对应的class": { + "keywords": [], + "children": [ + { + "自定义校验状态class": { + "keywords": [], + "children": [] + } + }, + { + "在其他元素上使用校验状态class": { + "keywords": [], + "children": [] + } + } + ] + } + }, + { + "分组校验": { + "keywords": [], + "children": [] + } + }, + { + "错误信息": { + "keywords": [], + "children": [ + { + "错误信息输出组件": { + "keywords": [], + "children": [] + } + }, + { + "动态设置错误信息": { + "keywords": [], + "children": [] + } + } + ] + } + }, + { + "事件": { + "keywords": [], + "children": [ + { + "单个字段校验事件": { + "keywords": [], + "children": [] + } + }, + { + "整个表单校验事件": { + "keywords": [], + "children": [] + } + } + ] + } + }, + { + "延迟初始化": { + "keywords": [], + "children": [] + } + }, + { + "自定义验证器": { + "keywords": [], + "children": [ + { + "注册自定义验证器": { + "keywords": [], + "children": [] + } + }, + { + "错误信息": { + "keywords": [], + "children": [] + } + } + ] + } + }, + { + "自定义验证时机": { + "keywords": [], + "children": [] + } + }, + { + "异步验证": { + "keywords": [], + "children": [ + { + "注册异步验证器": { + "keywords": [], + "children": [] + } + }, + { + "验证器函数context": { + "keywords": [], + "children": [] + } + } + ] + } + } + ] + } + }, + { + "与服务端通信": { + "node_id": "569d5e11c4fc5de7844053d9a733c5e8", + "keywords": [], + "children": [ + { + "vue-resource安装及配置": { + "keywords": [], + "children": [ + { + "安装": { + "keywords": [], + "children": [] + } + }, + { + "参数配置": { + "keywords": [], + "children": [] + } + }, + { + "headers配置": { + "keywords": [], + "children": [] + } + }, + { + "基本调用": { + "keywords": [], + "children": [] + } + }, + { + "请求选项对象": { + "keywords": [], + "children": [] + } + }, + { + "response对象": { + "keywords": [], + "children": [] + } + }, + { + "RESTful调用": { + "keywords": [], + "children": [] + } + }, + { + "拦截器": { + "keywords": [], + "children": [] + } + }, + { + "跨域AJAX": { + "keywords": [], + "children": [] + } + }, + { + "Promise": { + "keywords": [], + "children": [] + } + }, + { + "url模板": { + "keywords": [], + "children": [] + } + } + ] + } + }, + { + "vue-async-data": { + "keywords": [], + "children": [ + { + "安装": { + "keywords": [], + "children": [] + } + }, + { + "使用": { + "keywords": [], + "children": [] + } + } + ] + } + }, + { + "常见问题解析": { + "keywords": [], + "children": [ + { + "如何发送JSONP请求": { + "keywords": [], + "children": [] + } + }, + { + "如何修改发送给服务端的数据类型": { + "keywords": [], + "children": [] + } + }, + { + "跨域请求出错": { + "keywords": [], + "children": [] + } + }, + { + "$..post方法变为OPTIONS方法": { + "keywords": [], + "children": [] + } + } + ] + } + } + ] + } + }, + { + "路由与视图": { + "node_id": "569d5e11c4fc5de7844053d9a733c5e8", + "keywords": [], + "children": [ + { + "如何安装": { + "keywords": [], + "children": [] + } + }, + { + "基本使用": { + "keywords": [], + "children": [] + } + }, + { + "视图部分": { + "keywords": [], + "children": [ + { + "v-link": { + "keywords": [], + "children": [] + } + }, + { + "router-view": { + "keywords": [], + "children": [] + } + } + ] + } + }, + { + "路由实例": { + "keywords": [], + "children": [] + } + }, + { + "组件路由配置": { + "keywords": [], + "children": [ + { + "路由切换的各个阶段": { + "keywords": [], + "children": [] + } + }, + { + "各阶段的钩子函数介绍": { + "keywords": [], + "children": [] + } + } + ] + } + }, + { + "路由匹配": { + "keywords": [], + "children": [ + { + "动态片段": { + "keywords": [], + "children": [] + } + }, + { + "全匹配片段": { + "keywords": [], + "children": [] + } + }, + { + "具名路径": { + "keywords": [], + "children": [] + } + }, + { + "路由对象": { + "keywords": [], + "children": [] + } + } + ] + } + }, + { + "transition对象": { + "keywords": [], + "children": [] + } + }, + { + "嵌套路由": { + "keywords": [], + "children": [] + } + }, + { + "动态加载路由组件": { + "keywords": [], + "children": [] + } + } + ] + } + }, + { + "vue-cli": { + "node_id": "569d5e11c4fc5de7844053d9a733c5e8", + "keywords": [], + "children": [ + { + "安装": { + "keywords": [], + "children": [] + } + }, + { + "基本使用": { + "keywords": [], + "children": [] + } + }, + { + "命令": { + "keywords": [], + "children": [ + { + "init": { + "keywords": [], + "children": [] + } + }, + { + "list": { + "keywords": [], + "children": [] + } + } + ] + } + }, + { + "模板": { + "keywords": [], + "children": [ + { + "官方模板": { + "keywords": [], + "children": [] + } + }, + { + "自定义模板": { + "keywords": [], + "children": [] + } + }, + { + "本地模板": { + "keywords": [], + "children": [] + } + } + ] + } + }, + { + "不错的工具包": { + "keywords": [], + "children": [ + { + "mander": { + "keywords": [], + "children": [] + } + }, + { + "download-git-repo": { + "keywords": [], + "children": [] + } + }, + { + "inquirer": { + "keywords": [], + "children": [] + } + }, + { + "ora": { + "keywords": [], + "children": [] + } + } + ] + } + } + ] + } + }, + { + "测试开发与调试": { + "node_id": "569d5e11c4fc5de7844053d9a733c5e8", + "keywords": [], + "children": [ + { + "测试工具": { + "keywords": [], + "children": [ + { + "ESLint": { + "keywords": [], + "children": [] + } + }, + { + "工具包": { + "keywords": [], + "children": [] + } + } + ] + } + }, + { + "开发工具": { + "keywords": [], + "children": [ + { + "Vue Syntax Highlight": { + "keywords": [], + "children": [] + } + }, + { + "Snippets": { + "keywords": [], + "children": [] + } + }, + { + "其他编辑器和IDE": { + "keywords": [], + "children": [] + } + } + ] + } + }, + { + "调试工具": { + "keywords": [], + "children": [] + } + } + ] + } + }, + { + "Scrat Vue.js的化学反应": { + "node_id": "569d5e11c4fc5de7844053d9a733c5e8", + "keywords": [], + "children": [ + { + "浅谈前端工程化": { + "keywords": [], + "children": [] + } + }, + { + "前端工程化怎么做": { + "keywords": [], + "children": [] + } + }, + { + "Scrat简介": { + "keywords": [], + "children": [] + } + }, + { + "Scrat Vue.js实现组件": { + "keywords": [], + "children": [] + } + }, + { + "案例分析": { + "keywords": [], + "children": [ + { + "准备工作": { + "keywords": [], + "children": [] + } + }, + { + "代码实现": { + "keywords": [], + "children": [] + } + }, + { + "编译和发布": { + "keywords": [], + "children": [] + } + } + ] + } + } + ] + } + }, + { + "Vue.js 2.0": { + "node_id": "569d5e11c4fc5de7844053d9a733c5e8", + "keywords": [], + "children": [ + { + "API变更": { + "keywords": [], + "children": [ + { + "全局配置": { + "keywords": [], + "children": [] + } + }, + { + "全局API": { + "keywords": [], + "children": [] + } + }, + { + "VM选项": { + "keywords": [], + "children": [] + } + }, + { + "实例属性": { + "keywords": [], + "children": [] + } + }, + { + "实例方法": { + "keywords": [], + "children": [] + } + }, + { + "指令": { + "keywords": [], + "children": [] + } + }, + { + "特殊元素": { + "keywords": [], + "children": [] + } + }, + { + "服务端渲染": { + "keywords": [], + "children": [] + } + } + ] + } + }, + { + "Virtual DOM": { + "keywords": [], + "children": [ + { + "认识Virtual DOM": { + "keywords": [], + "children": [] + } + }, + { + "Virtual DOM在Vue.js 2.0中的实现": { + "keywords": [], + "children": [] + } + } + ] + } + }, + { + "服务端渲染技术": { + "keywords": [], + "children": [ + { + "普通服务端渲染": { + "keywords": [], + "children": [] + } + }, + { + "流式服务端渲染": { + "keywords": [], + "children": [] + } + } + ] + } + } + ] + } + }, + { + "源码篇——util": { + "node_id": "569d5e11c4fc5de7844053d9a733c5e8", + "keywords": [], + "children": [ + { + "env": { + "keywords": [], + "children": [ + { + "系统判断": { + "keywords": [], + "children": [] + } + }, + { + "属性支持": { + "keywords": [], + "children": [] + } + }, + { + "过渡属性": { + "keywords": [], + "children": [] + } + }, + { + "nextTick": { + "keywords": [], + "children": [] + } + }, + { + "set": { + "keywords": [], + "children": [] + } + } + ] + } + }, + { + "dom": { + "keywords": [], + "children": [ + { + "dom操作": { + "keywords": [], + "children": [] + } + }, + { + "属性操作": { + "keywords": [], + "children": [] + } + }, + { + "class操作": { + "keywords": [], + "children": [] + } + }, + { + "事件操作": { + "keywords": [], + "children": [] + } + }, + { + "其他": { + "keywords": [], + "children": [] + } + } + ] + } + }, + { + "lang": { + "keywords": [], + "children": [ + { + "对象操作": { + "keywords": [], + "children": [] + } + }, + { + "名称转换": { + "keywords": [], + "children": [] + } + }, + { + "数组操作": { + "keywords": [], + "children": [] + } + }, + { + "类型转换": { + "keywords": [], + "children": [] + } + }, + { + "方法绑定": { + "keywords": [], + "children": [] + } + }, + { + "其他": { + "keywords": [], + "children": [] + } + } + ] + } + }, + { + "ponents": { + "keywords": [], + "children": [] + } + }, + { + "options": { + "keywords": [], + "children": [] + } + }, + { + "debug": { + "keywords": [], + "children": [] + } + } + ] + } + }, + { + "数据绑定": { + "node_id": "569d5e11c4fc5de7844053d9a733c5e8", + "keywords": [], + "children": [ + { + "语法": { + "keywords": [], + "children": [ + { + "插值": { + "keywords": [], + "children": [] + } + }, + { + "表达式": { + "keywords": [], + "children": [] + } + }, + { + "指令": { + "keywords": [], + "children": [] + } + } + ] + } + }, + { + "分隔符": { + "keywords": [], + "children": [] + } + } + ] + } + }, + { + "源码篇——深入响应式原理": { + "node_id": "569d5e11c4fc5de7844053d9a733c5e8", + "keywords": [], + "children": [ + { + "如何追踪变化": { + "keywords": [], + "children": [ + { + "Observer": { + "keywords": [], + "children": [] + } + }, + { + "Directive": { + "keywords": [], + "children": [] + } + }, + { + "Watcher": { + "keywords": [], + "children": [] + } + } + ] + } + }, + { + "变化检测问题": { + "keywords": [], + "children": [] + } + }, + { + "初始化数据": { + "keywords": [], + "children": [] + } + }, + { + "异步更新队列": { + "keywords": [], + "children": [] + } + }, + { + "计算属性的奥秘": { + "keywords": [], + "children": [] + } + } + ] + } + }, + { + "源码篇——父子类合并策略": { + "node_id": "569d5e11c4fc5de7844053d9a733c5e8", + "keywords": [], + "children": [ + { + "策略是什么": { + "keywords": [], + "children": [ + { + "生命周期合并策略": { + "keywords": [], + "children": [] + } + }, + { + "属性方法计算": { + "keywords": [], + "children": [] + } + }, + { + "数据合并策略": { + "keywords": [], + "children": [] + } + } + ] + } + } + ] + } + }, + { + "源码篇——缓存": { + "node_id": "569d5e11c4fc5de7844053d9a733c5e8", + "keywords": [], + "children": [ + { + "Cache有什么用": { + "keywords": [], + "children": [] + } + }, + { + "LRU": { + "keywords": [], + "children": [] + } + }, + { + "Cache类": { + "keywords": [], + "children": [] + } + }, + { + "put": { + "keywords": [], + "children": [] + } + }, + { + "shift": { + "keywords": [], + "children": [] + } + }, + { + "get": { + "keywords": [], + "children": [] + } + } + ] + } + }, + { + "源码篇——属性props": { + "node_id": "569d5e11c4fc5de7844053d9a733c5e8", + "keywords": [], + "children": [ + { + "流程设计": { + "keywords": [], + "children": [] + } + }, + { + "属性name": { + "keywords": [], + "children": [] + } + }, + { + "coerce": { + "keywords": [], + "children": [] + } + }, + { + "type 验证": { + "keywords": [], + "children": [] + } + }, + { + "default": { + "keywords": [], + "children": [] + } + }, + { + "validator": { + "keywords": [], + "children": [] + } + } + ] + } + }, + { + "源码篇——events": { + "node_id": "569d5e11c4fc5de7844053d9a733c5e8", + "keywords": [], + "children": [ + { + "events配置是什么": { + "keywords": [], + "children": [] + } + }, + { + "如何配置": { + "keywords": [], + "children": [ + { + "$emit触发": { + "keywords": [], + "children": [] + } + }, + { + "$once 绑定": { + "keywords": [], + "children": [] + } + }, + { + "$off删除": { + "keywords": [], + "children": [] + } + }, + { + "$dispatch派发": { + "keywords": [], + "children": [] + } + }, + { + "$broadcast广播": { + "keywords": [], + "children": [] + } + } + ] + } + } + ] + } + }, + { + "指令": { + "node_id": "569d5e11c4fc5de7844053d9a733c5e8", + "keywords": [], + "children": [ + { + "内部指令": { + "keywords": [], + "children": [ + { + "v-if": { + "keywords": [], + "children": [] + } + }, + { + "v-show": { + "keywords": [], + "children": [] + } + }, + { + "v-else": { + "keywords": [], + "children": [] + } + }, + { + "v-model": { + "keywords": [], + "children": [] + } + }, + { + "v-repeat": { + "keywords": [], + "children": [] + } + }, + { + "v-for": { + "keywords": [], + "children": [] + } + }, + { + "v-text": { + "keywords": [], + "children": [] + } + }, + { + "v-": { + "keywords": [], + "children": [] + } + }, + { + "v-bind": { + "keywords": [], + "children": [] + } + }, + { + "v-on": { + "keywords": [], + "children": [] + } + }, + { + "v-ref": { + "keywords": [], + "children": [] + } + }, + { + "v-el": { + "keywords": [], + "children": [] + } + }, + { + "v-pre": { + "keywords": [], + "children": [] + } + }, + { + "v-cloak": { + "keywords": [], + "children": [] + } + } + ] + } + }, + { + "自定义指令": { + "keywords": [], + "children": [ + { + "基础": { + "keywords": [], + "children": [] + } + }, + { + "高级选项": { + "keywords": [], + "children": [] + } + } + ] + } + }, + { + "内部指令解析": { + "keywords": [], + "children": [] + } + } + ] + } + }, + { + "计算属性": { + "node_id": "569d5e11c4fc5de7844053d9a733c5e8", + "keywords": [], + "children": [ + { + "什么是计算属性": { + "keywords": [], + "children": [] + } + }, + { + "计算属性缓存": { + "keywords": [], + "children": [] + } + }, + { + "常见问题": { + "keywords": [], + "children": [ + { + "计算属性getter不执行的场景": { + "keywords": [], + "children": [] + } + }, + { + "在v-repeat中使用计算属性": { + "keywords": [], + "children": [] + } + } + ] + } + } + ] + } + }, + { + "表单控件绑定": { + "node_id": "569d5e11c4fc5de7844053d9a733c5e8", + "keywords": [], + "children": [ + { + "基本用法": { + "keywords": [], + "children": [ + { + "text": { + "keywords": [], + "children": [] + } + }, + { + "checkbox": { + "keywords": [], + "children": [] + } + }, + { + "radio": { + "keywords": [], + "children": [] + } + }, + { + "select": { + "keywords": [], + "children": [] + } + } + ] + } + }, + { + "值绑定": { + "keywords": [], + "children": [] + } + }, + { + "v-model修饰指令": { + "keywords": [], + "children": [ + { + "lazy": { + "keywords": [], + "children": [] + } + }, + { + "debounce": { + "keywords": [], + "children": [] + } + }, + { + "number": { + "keywords": [], + "children": [] + } + } + ] + } + }, + { + "修饰指令原理": { + "keywords": [], + "children": [ + { + "lazy源码解析": { + "keywords": [], + "children": [] + } + }, + { + "debounce源码解析": { + "keywords": [], + "children": [] + } + }, + { + "number源码解析": { + "keywords": [], + "children": [] + } + } + ] + } + } + ] + } + }, + { + "过滤器": { + "node_id": "569d5e11c4fc5de7844053d9a733c5e8", + "keywords": [], + "children": [ + { + "内置过滤器": { + "keywords": [], + "children": [ + { + "字母操作": { + "keywords": [], + "children": [] + } + }, + { + "json过滤器": { + "keywords": [], + "children": [] + } + }, + { + "限制": { + "keywords": [], + "children": [] + } + }, + { + "currency过滤器": { + "keywords": [], + "children": [] + } + }, + { + "debounce过滤器": { + "keywords": [], + "children": [] + } + } + ] + } + }, + { + "自定义过滤器": { + "keywords": [], + "children": [ + { + "fillter语法": { + "keywords": [], + "children": [] + } + }, + { + "教你写一个filter": { + "keywords": [], + "children": [] + } + } + ] + } + }, + { + "源码解析": { + "keywords": [], + "children": [ + { + "管道实现": { + "keywords": [], + "children": [] + } + }, + { + "过滤器解析": { + "keywords": [], + "children": [] + } + } + ] + } + } + ] + } + }, + { + "Class与Style绑定": { + "node_id": "569d5e11c4fc5de7844053d9a733c5e8", + "keywords": [], + "children": [ + { + "绑定HTML Class": { + "keywords": [], + "children": [ + { + "对象语法": { + "keywords": [], + "children": [] + } + }, + { + "数组语法": { + "keywords": [], + "children": [] + } + } + ] + } + }, + { + "绑定内联样式": { + "keywords": [], + "children": [ + { + "对象语法": { + "keywords": [], + "children": [] + } + }, + { + "数组语法": { + "keywords": [], + "children": [] + } + }, + { + "自动添加前缀": { + "keywords": [], + "children": [] + } + } + ] + } + } + ] + } + }, + { + "过渡": { + "node_id": "569d5e11c4fc5de7844053d9a733c5e8", + "keywords": [], + "children": [ + { + "CSS过渡": { + "keywords": [], + "children": [ + { + "内置Class类名": { + "keywords": [], + "children": [] + } + }, + { + "自定义CSS类名": { + "keywords": [], + "children": [] + } + }, + { + "显式声明CSS过渡类型": { + "keywords": [], + "children": [] + } + }, + { + "动画案例": { + "keywords": [], + "children": [] + } + }, + { + "过渡流程": { + "keywords": [], + "children": [] + } + } + ] + } + }, + { + "JavaScript过渡": { + "keywords": [], + "children": [] + } + }, + { + "渐进过渡": { + "keywords": [], + "children": [] + } + } + ] + } + }, + { + "Method97": { + "node_id": "569d5e11c4fc5de7844053d9a733c5e8", + "keywords": [], + "children": [ + { + "如何绑定事件": { + "keywords": [], + "children": [ + { + "内联方式": { + "keywords": [], + "children": [] + } + }, + { + "methods配置": { + "keywords": [], + "children": [] + } + }, + { + "$events应用": { + "keywords": [], + "children": [] + } + } + ] + } + }, + { + "如何使用修饰符": { + "keywords": [], + "children": [ + { + "prevent": { + "keywords": [], + "children": [] + } + }, + { + "s00": { + "keywords": [], + "children": [] + } + }, + { + "capture": { + "keywords": [], + "children": [] + } + }, + { + "self": { + "keywords": [], + "children": [] + } + }, + { + "按键": { + "keywords": [], + "children": [] + } + } + ] + } + }, + { + "Vue.js 0.12到1.0中的变化": { + "keywords": [], + "children": [ + { + "v-on变更": { + "keywords": [], + "children": [] + } + }, + { + "@click缩写": { + "keywords": [], + "children": [] + } + } + ] + } + } + ] + } + } + ] + } + }, + { + "angular.js": { + "node_id": "569d5e11c4fc5de7844053d9a733c5e8", + "keywords": [], + "children": [ + { + "AngularJS简介": { + "node_id": "569d5e11c4fc5de7844053d9a733c5e8", + "keywords": [], + "children": [ + { + "搭建AngularJS开发环境": { + "keywords": [], + "children": [ + { + "选择集成开发工具": { + "keywords": [], + "children": [] + } + }, + { + "下载与安装AngularJS": { + "keywords": [], + "children": [] + } + }, + { + "代码调试工具": { + "keywords": [], + "children": [] + } + } + ] + } + } + ] + } + }, + { + "AngularJS过滤器": { + "node_id": "569d5e11c4fc5de7844053d9a733c5e8", + "keywords": [], + "children": [ + { + "过滤器使用方法": { + "keywords": [], + "children": [] + } + }, + { + "AngularJS内置过滤器": { + "keywords": [], + "children": [] + } + }, + { + "自定义过滤器": { + "keywords": [], + "children": [] + } + }, + { + "第三方过滤器库的使用": { + "keywords": [], + "children": [ + { + "angular-filter": { + "keywords": [], + "children": [] + } + }, + { + "angular-emoji-filter": { + "keywords": [], + "children": [] + } + } + ] + } + } + ] + } + }, + { + "AngularJS中的依赖注入": { + "node_id": "569d5e11c4fc5de7844053d9a733c5e8", + "keywords": [], + "children": [ + { + "依赖注入实现": { + "keywords": [], + "children": [] + } + }, + { + "AngularJS中的依赖注入": { + "keywords": [], + "children": [] + } + }, + { + "$provide服务介绍": { + "keywords": [], + "children": [] + } + }, + { + "$injector服务介绍": { + "keywords": [], + "children": [] + } + } + ] + } + }, + { + "AngularJS与动画": { + "node_id": "569d5e11c4fc5de7844053d9a733c5e8", + "keywords": [], + "children": [ + { + "Web动画实现原理": { + "keywords": [], + "children": [] + } + }, + { + "使用CSS3实现动画": { + "keywords": [], + "children": [ + { + "CSS3中的Transform属性": { + "keywords": [], + "children": [] + } + }, + { + "CSS3中的Transition属性": { + "keywords": [], + "children": [] + } + }, + { + "CSS3中的Animation属性": { + "keywords": [], + "children": [] + } + }, + { + "常用的CSS3动画库": { + "keywords": [], + "children": [] + } + } + ] + } + }, + { + "AngularJS动画": { + "keywords": [], + "children": [ + { + "基于事件驱动的CSS3动画": { + "keywords": [], + "children": [] + } + }, + { + "AngularJS中的动画": { + "keywords": [], + "children": [] + } + }, + { + "ngView视图切换动画案例": { + "keywords": [], + "children": [] + } + }, + { + "ngAnimate与CSS3动画库整合": { + "keywords": [], + "children": [] + } + }, + { + "ngFx动画扩展库": { + "keywords": [], + "children": [] + } + } + ] + } + } + ] + } + }, + { + "Cookie读写": { + "node_id": "569d5e11c4fc5de7844053d9a733c5e8", + "keywords": [], + "children": [ + { + "Cookie简介": { + "keywords": [], + "children": [] + } + }, + { + "在中操作Cookie": { + "keywords": [], + "children": [] + } + }, + { + "在AngularJS中操作Cookie": { + "keywords": [], + "children": [] + } + } + ] + } + }, + { + "Promise": { + "node_id": "569d5e11c4fc5de7844053d9a733c5e8", + "keywords": [], + "children": [ + { + "AngularJS中的Promise机制": { + "keywords": [], + "children": [] + } + }, + { + "AngularJS请求Web服务": { + "keywords": [], + "children": [ + { + "$http服务": { + "keywords": [], + "children": [] + } + }, + { + "使用Express构建RESTful服务": { + "keywords": [], + "children": [] + } + }, + { + "$resource服务": { + "keywords": [], + "children": [] + } + } + ] + } + }, + { + "AngularJS文件上传": { + "keywords": [], + "children": [] + } + }, + { + "Angular File Upload模块介绍": { + "keywords": [], + "children": [] + } + } + ] + } + }, + { + "AngularUI": { + "node_id": "569d5e11c4fc5de7844053d9a733c5e8", + "keywords": [], + "children": [ + { + "UI Bootstrap": { + "keywords": [], + "children": [ + { + "警告框案例": { + "keywords": [], + "children": [] + } + }, + { + "复选框案例": { + "keywords": [], + "children": [] + } + }, + { + "日历控件案例": { + "keywords": [], + "children": [] + } + }, + { + "模态对话框案例": { + "keywords": [], + "children": [] + } + }, + { + "下拉菜单案例": { + "keywords": [], + "children": [] + } + } + ] + } + }, + { + "UI Ace": { + "keywords": [], + "children": [] + } + }, + { + "UI Grid": { + "keywords": [], + "children": [] + } + }, + { + "UI Date": { + "keywords": [], + "children": [] + } + }, + { + "UI Select": { + "keywords": [], + "children": [] + } + } + ] + } + }, + { + "AngularJS精华扩展": { + "node_id": "569d5e11c4fc5de7844053d9a733c5e8", + "keywords": [], + "children": [ + { + "利用Angular": { + "keywords": [], + "children": [ + { + "柱状图案例": { + "keywords": [], + "children": [] + } + }, + { + "曲线图案例": { + "keywords": [], + "children": [] + } + }, + { + "饼状图案例": { + "keywords": [], + "children": [] + } + } + ] + } + }, + { + "利用Videogular实现播放器": { + "keywords": [], + "children": [] + } + }, + { + "利用Angular Chart生成图表": { + "keywords": [], + "children": [] + } + }, + { + "利用ngDialog实现对话框": { + "keywords": [], + "children": [] + } + } + ] + } + }, + { + "双向数据绑定": { + "node_id": "569d5e11c4fc5de7844053d9a733c5e8", + "keywords": [], + "children": [ + { + "AngularJS双向数据绑定": { + "keywords": [], + "children": [] + } + }, + { + "ng-model指令": { + "keywords": [], + "children": [] + } + }, + { + "ng-bind指令": { + "keywords": [], + "children": [] + } + } + ] + } + }, + { + "AngularJS与MVC": { + "node_id": "569d5e11c4fc5de7844053d9a733c5e8", + "keywords": [], + "children": [ + { + "MVC模式简介": { + "keywords": [], + "children": [] + } + }, + { + "AngularJS中的MVC": { + "keywords": [], + "children": [ + { + "AngularJS控制器的定义": { + "keywords": [], + "children": [] + } + }, + { + "控制器对象的实例化": { + "keywords": [], + "children": [] + } + } + ] + } + }, + { + "使用MVC思想重构价格计算器程序": { + "keywords": [], + "children": [] + } + }, + { + "控制器的作用域范围": { + "keywords": [], + "children": [] + } + }, + { + "控制器中处理DOM事件": { + "keywords": [], + "children": [] + } + } + ] + } + }, + { + "应用模块化": { + "node_id": "569d5e11c4fc5de7844053d9a733c5e8", + "keywords": [], + "children": [ + { + "应用模块划分的重要性": { + "keywords": [], + "children": [] + } + }, + { + "AngularJS中的模块": { + "keywords": [], + "children": [ + { + "AngularJS模块的定义": { + "keywords": [], + "children": [] + } + }, + { + "使用模块解决命名冲突问题": { + "keywords": [], + "children": [] + } + } + ] + } + } + ] + } + }, + { + "作用域与事件": { + "node_id": "569d5e11c4fc5de7844053d9a733c5e8", + "keywords": [], + "children": [ + { + "AngularJS作用域详解": { + "keywords": [], + "children": [] + } + }, + { + "AngularJS作用域继承": { + "keywords": [], + "children": [ + { + "对象继承机制": { + "keywords": [], + "children": [] + } + }, + { + "AngularJS作用域对象原型继承": { + "keywords": [], + "children": [] + } + } + ] + } + }, + { + "作用域高级特性": { + "keywords": [], + "children": [ + { + "$watch方法监视作用域": { + "keywords": [], + "children": [] + } + }, + { + "作用域监视解除": { + "keywords": [], + "children": [] + } + }, + { + "$apply方法与$digest循环": { + "keywords": [], + "children": [] + } + }, + { + "$apply与$digest应用实战": { + "keywords": [], + "children": [] + } + }, + { + "$timeout与$interval服务介绍": { + "keywords": [], + "children": [] + } + } + ] + } + }, + { + "作用域事件路由与广播": { + "keywords": [], + "children": [ + { + "$emit方法实现事件路由": { + "keywords": [], + "children": [] + } + }, + { + "$broadcast方法实现事件广播": { + "keywords": [], + "children": [] + } + }, + { + "作用域对象$on方法详解": { + "keywords": [], + "children": [] + } + } + ] + } + } + ] + } + }, + { + "路由与多视图": { + "node_id": "569d5e11c4fc5de7844053d9a733c5e8", + "keywords": [], + "children": [ + { + "创建多视图应用": { + "keywords": [], + "children": [ + { + "使用$routeProvider创建映射": { + "keywords": [], + "children": [] + } + }, + { + "创建多视图": { + "keywords": [], + "children": [] + } + }, + { + "通过路由切换视图": { + "keywords": [], + "children": [] + } + } + ] + } + }, + { + "通过URL向控制器传递参数": { + "keywords": [], + "children": [] + } + }, + { + "ng-template指令的使用": { + "keywords": [], + "children": [] + } + }, + { + "$location服务": { + "keywords": [], + "children": [] + } + }, + { + "$location实现多视图切换": { + "keywords": [], + "children": [] + } + }, + { + "路由事件": { + "keywords": [], + "children": [] + } + }, + { + "ng-include指令": { + "keywords": [], + "children": [] + } + }, + { + "UI Router框架使用": { + "keywords": [], + "children": [ + { + "UI Router下载与安装": { + "keywords": [], + "children": [] + } + } + ] + } + } + ] + } + }, + { + "AngularJS表单校验": { + "node_id": "569d5e11c4fc5de7844053d9a733c5e8", + "keywords": [], + "children": [ + { + "Web前端表单校验的必要性": { + "keywords": [], + "children": [] + } + }, + { + "AngularJS表单校验模式": { + "keywords": [], + "children": [] + } + }, + { + "ngMessages模块": { + "keywords": [], + "children": [] + } + } + ] + } + }, + { + "AngularJS指令": { + "node_id": "569d5e11c4fc5de7844053d9a733c5e8", + "keywords": [], + "children": [ + { + "内置指令详解": { + "keywords": [], + "children": [] + } + }, + { + "AngularJS自定义指令": { + "keywords": [], + "children": [] + } + }, + { + "指令定义对象详解": { + "keywords": [], + "children": [ + { + "link方法": { + "keywords": [], + "children": [] + } + }, + { + "compile方法": { + "keywords": [], + "children": [] + } + }, + { + "scope属性与指令作用域": { + "keywords": [], + "children": [] + } + }, + { + "孤立作用域与父作用域模型数据绑定": { + "keywords": [], + "children": [] + } + }, + { + "Transclusion": { + "keywords": [], + "children": [] + } + }, + { + "controller方法与require属性": { + "keywords": [], + "children": [] + } + } + ] + } + }, + { + "自定义表单验证模式": { + "keywords": [], + "children": [] + } + } + ] + } + }, + { + "Service、Factory与Provider": { + "node_id": "569d5e11c4fc5de7844053d9a733c5e8", + "keywords": [], + "children": [ + { + "Service": { + "keywords": [], + "children": [] + } + }, + { + "Factory": { + "keywords": [], + "children": [] + } + }, + { + "Provider": { + "keywords": [], + "children": [] + } + }, + { + "Value&Constant": { + "keywords": [], + "children": [] + } + } + ] + } + } + ] + } + }, + { + "react.js": { + "node_id": "569d5e11c4fc5de7844053d9a733c5e8", + "keywords": [], + "children": [ + { + "React简介": { + "node_id": "569d5e11c4fc5de7844053d9a733c5e8", + "keywords": [], + "children": [ + { + "React概述": { + "keywords": [], + "children": [] + } + }, + { + "React优势": { + "keywords": [], + "children": [] + } + }, + { + "第一个React应用": { + "keywords": [], + "children": [] + } + }, + { + "React脚手架": { + "keywords": [], + "children": [ + { + "关于React脚手架": { + "keywords": [], + "children": [] + } + }, + { + "Node.js与npm": { + "keywords": [], + "children": [] + } + }, + { + "Webpack模块打包器": { + "keywords": [], + "children": [] + } + }, + { + "ES6和Babel": { + "keywords": [], + "children": [] + } + }, + { + "使用create-react-app脚手架开发第一个应用": { + "keywords": [], + "children": [] + } + }, + { + "React项目架构": { + "keywords": [], + "children": [] + } + } + ] + } + }, + { + "React虚拟DOM": { + "keywords": [], + "children": [] + } + }, + { + "JSX简单入门": { + "keywords": [], + "children": [] + } + }, + { + "React渲染机制": { + "keywords": [], + "children": [] + } + } + ] + } + }, + { + "状态提升": { + "node_id": "569d5e11c4fc5de7844053d9a733c5e8", + "keywords": [], + "children": [ + { + "设计构想": { + "keywords": [], + "children": [] + } + }, + { + "实现水温监控功能": { + "keywords": [], + "children": [] + } + }, + { + "加入第二个水温输入框": { + "keywords": [], + "children": [] + } + }, + { + "同步二个水温输入框": { + "keywords": [], + "children": [] + } + }, + { + "将水温“状态共享”": { + "keywords": [], + "children": [] + } + }, + { + "将水温“状态提升”": { + "keywords": [], + "children": [] + } + }, + { + "实现水温同步换算": { + "keywords": [], + "children": [] + } + } + ] + } + }, + { + "React扩展": { + "node_id": "569d5e11c4fc5de7844053d9a733c5e8", + "keywords": [], + "children": [ + { + "Node.js与React": { + "keywords": [], + "children": [] + } + }, + { + "Babel与React": { + "keywords": [], + "children": [] + } + }, + { + "Webpack模块打包器": { + "keywords": [], + "children": [] + } + }, + { + "Node+Babel+Webpack搭建React环境": { + "keywords": [], + "children": [] + } + }, + { + "Browserify模块打包器": { + "keywords": [], + "children": [] + } + }, + { + "React Router与单页面应用": { + "keywords": [], + "children": [] + } + }, + { + "Redux与React": { + "keywords": [], + "children": [] + } + } + ] + } + }, + { + "React JSX": { + "node_id": "569d5e11c4fc5de7844053d9a733c5e8", + "keywords": [], + "children": [ + { + "JSX介绍": { + "keywords": [], + "children": [] + } + }, + { + "JSX独立文件": { + "keywords": [], + "children": [] + } + }, + { + "JSX算术表达式": { + "keywords": [], + "children": [] + } + }, + { + "JSX条件表达式": { + "keywords": [], + "children": [] + } + }, + { + "JSX嵌入表达式": { + "keywords": [], + "children": [] + } + }, + { + "JSX对象表达式": { + "keywords": [], + "children": [] + } + }, + { + "JSX函数表达式": { + "keywords": [], + "children": [] + } + }, + { + "JSX增强函数表达式": { + "keywords": [], + "children": [] + } + }, + { + "JSX数组表达式": { + "keywords": [], + "children": [] + } + }, + { + "JSX样式表达式": { + "keywords": [], + "children": [] + } + }, + { + "JSX注释表达式": { + "keywords": [], + "children": [] + } + } + ] + } + }, + { + "React组件与Props": { + "node_id": "569d5e11c4fc5de7844053d9a733c5e8", + "keywords": [], + "children": [ + { + "React组件介绍": { + "keywords": [], + "children": [] + } + }, + { + "React函数组件": { + "keywords": [], + "children": [] + } + }, + { + "React类组件": { + "keywords": [], + "children": [] + } + }, + { + "React组合组件": { + "keywords": [], + "children": [] + } + }, + { + "React Props介绍": { + "keywords": [], + "children": [] + } + }, + { + "React Props应用": { + "keywords": [], + "children": [] + } + }, + { + "React Props只读性": { + "keywords": [], + "children": [] + } + }, + { + "React Props默认值": { + "keywords": [], + "children": [] + } + }, + { + "React组件切分与提取": { + "keywords": [], + "children": [] + } + } + ] + } + }, + { + "React State与生命周期": { + "node_id": "569d5e11c4fc5de7844053d9a733c5e8", + "keywords": [], + "children": [ + { + "React State介绍": { + "keywords": [], + "children": [] + } + }, + { + "关于定时器时钟的思考": { + "keywords": [], + "children": [] + } + }, + { + "开始封装时钟UI": { + "keywords": [], + "children": [] + } + }, + { + "实现时钟UI的自动更新": { + "keywords": [], + "children": [] + } + }, + { + "自我更新的时钟UI类": { + "keywords": [], + "children": [] + } + }, + { + "在时钟组件类中引入State状态": { + "keywords": [], + "children": [] + } + }, + { + "React生命周期介绍": { + "keywords": [], + "children": [] + } + }, + { + "在时钟组件类中使用生命周期": { + "keywords": [], + "children": [] + } + }, + { + "正确的使用State状态": { + "keywords": [], + "children": [] + } + }, + { + "自顶向下的数据流": { + "keywords": [], + "children": [] + } + } + ] + } + }, + { + "React事件处理": { + "node_id": "569d5e11c4fc5de7844053d9a733c5e8", + "keywords": [], + "children": [ + { + "React事件介绍": { + "keywords": [], + "children": [] + } + }, + { + "React单击事件": { + "keywords": [], + "children": [] + } + }, + { + "React阻止事件默认行为": { + "keywords": [], + "children": [] + } + }, + { + "React类的事件处理方法": { + "keywords": [], + "children": [] + } + }, + { + "绑定回调方法的其他方式": { + "keywords": [], + "children": [] + } + }, + { + "在事件处理方法中传递参数": { + "keywords": [], + "children": [] + } + }, + { + "实战:开关按钮": { + "keywords": [], + "children": [] + } + }, + { + "React文本框事件": { + "keywords": [], + "children": [] + } + }, + { + "实战:水温监控控件": { + "keywords": [], + "children": [] + } + } + ] + } + }, + { + "React条件渲染": { + "node_id": "569d5e11c4fc5de7844053d9a733c5e8", + "keywords": [], + "children": [ + { + "React条件渲染介绍": { + "keywords": [], + "children": [] + } + }, + { + "元素变量的条件渲染": { + "keywords": [], + "children": [] + } + }, + { + "逻辑“与”运算符的条件渲染": { + "keywords": [], + "children": [] + } + }, + { + "逻辑“或”运算符的条件渲染": { + "keywords": [], + "children": [] + } + }, + { + "三元逻辑表达式的条件渲染": { + "keywords": [], + "children": [] + } + }, + { + "实战:改进登录组件": { + "keywords": [], + "children": [] + } + }, + { + "阻止组件渲染": { + "keywords": [], + "children": [] + } + } + ] + } + }, + { + "React列表与Key": { + "node_id": "569d5e11c4fc5de7844053d9a733c5e8", + "keywords": [], + "children": [ + { + "React列表介绍": { + "keywords": [], + "children": [] + } + }, + { + "基础列表组件": { + "keywords": [], + "children": [] + } + }, + { + "多级列表组件": { + "keywords": [], + "children": [] + } + }, + { + "React Key介绍": { + "keywords": [], + "children": [] + } + }, + { + "React Key使用": { + "keywords": [], + "children": [] + } + }, + { + "React通过Key提取组件": { + "keywords": [], + "children": [] + } + }, + { + "React Key局部唯一性": { + "keywords": [], + "children": [] + } + }, + { + "React Key有效性": { + "keywords": [], + "children": [] + } + } + ] + } + }, + { + "React表单": { + "node_id": "569d5e11c4fc5de7844053d9a733c5e8", + "keywords": [], + "children": [ + { + "React表单介绍": { + "keywords": [], + "children": [] + } + }, + { + "表单受控组件": { + "keywords": [], + "children": [] + } + }, + { + "强制转换大写字母": { + "keywords": [], + "children": [] + } + }, + { + "校验手机号码格式": { + "keywords": [], + "children": [] + } + }, + { + "格式化序列号": { + "keywords": [], + "children": [] + } + }, + { + "文本域关键字": { + "keywords": [], + "children": [] + } + }, + { + "下拉列表受控组件": { + "keywords": [], + "children": [] + } + }, + { + "处理多个输入": { + "keywords": [], + "children": [] + } + }, + { + "React表单提交操作": { + "keywords": [], + "children": [] + } + }, + { + "React表单提交服务器": { + "keywords": [], + "children": [] + } + }, + { + "受控组件与非受控组件": { + "keywords": [], + "children": [] + } + } + ] + } + }, + { + "组合与继承": { + "node_id": "569d5e11c4fc5de7844053d9a733c5e8", + "keywords": [], + "children": [ + { + "组合与继承概述": { + "keywords": [], + "children": [] + } + }, + { + "定义组件容器": { + "keywords": [], + "children": [] + } + }, + { + "定义子组件": { + "keywords": [], + "children": [] + } + }, + { + "自定义Props属性": { + "keywords": [], + "children": [] + } + }, + { + "特例关系组合": { + "keywords": [], + "children": [] + } + }, + { + "类组合方式确认框": { + "keywords": [], + "children": [] + } + } + ] + } + } + ] + } + }, + { + "小程序开发": { + "node_id": "569d5e11c4fc5de7844053d9a733c5e8", + "keywords": [], + "children": [ + { + "微信小程序": { + "node_id": "569d5e11c4fc5de7844053d9a733c5e8", + "keywords": [], + "children": [ + { + "申请小程序账号": { + "keywords": [], + "children": [] + } + }, + { + "微信开发者工具": { + "keywords": [], + "children": [] + } + }, + { + "上传开发版小程序": { + "keywords": [], + "children": [] + } + }, + { + "项目结构概述": { + "keywords": [], + "children": [] + } + }, + { + "小程序配置": { + "keywords": [], + "children": [ + { + "全局配置": { + "keywords": [], + "children": [] + } + }, + { + "低版本兼容": { + "keywords": [], + "children": [] + } + }, + { + "pages属性": { + "keywords": [], + "children": [] + } + }, + { + "window属性": { + "keywords": [], + "children": [] + } + }, + { + "tabBar属性": { + "keywords": [], + "children": [] + } + }, + { + "networkTimeout属性": { + "keywords": [], + "children": [] + } + }, + { + "debug属性": { + "keywords": [], + "children": [] + } + }, + { + "其他属性": { + "keywords": [], + "children": [] + } + }, + { + "页面配置": { + "keywords": [], + "children": [] + } + } + ] + } + }, + { + "WXML和WXSS文件--小程序视图": { + "keywords": [], + "children": [ + { + "认识WXML": { + "keywords": [], + "children": [] + } + }, + { + "认识WXSS": { + "keywords": [], + "children": [] + } + }, + { + "容器组件view与弹性布局": { + "keywords": [], + "children": [] + } + }, + { + "盒模型": { + "keywords": [], + "children": [] + } + }, + { + "块级元素与行内元素": { + "keywords": [], + "children": [] + } + }, + { + "尺寸单位": { + "keywords": [], + "children": [] + } + }, + { + "平台差异与样式补全": { + "keywords": [], + "children": [] + } + } + ] + } + }, + { + "JS文件--小程序的逻辑": { + "keywords": [], + "children": [ + { + "App注册": { + "keywords": [], + "children": [] + } + }, + { + "Page注册": { + "keywords": [], + "children": [] + } + }, + { + "将数据显示在视图中": { + "keywords": [], + "children": [] + } + }, + { + "页面组件事件处理": { + "keywords": [], + "children": [] + } + }, + { + "小程序API": { + "keywords": [], + "children": [] + } + } + ] + } + } + ] + } + }, + { + "支付宝小程序": { + "node_id": "569d5e11c4fc5de7844053d9a733c5e8", + "keywords": [], + "children": [ + { + "程序概述": { + "keywords": [], + "children": [ + { + "小程序介绍": { + "keywords": [], + "children": [ + { + "历史背景": { + "keywords": [], + "children": [] + } + }, + { + "应用场景": { + "keywords": [], + "children": [] + } + }, + { + "小程序的影响": { + "keywords": [], + "children": [] + } + }, + { + "技能要求": { + "keywords": [], + "children": [] + } + }, + { + "小程序入口": { + "keywords": [], + "children": [] + } + }, + { + "小程序开放能力": { + "keywords": [], + "children": [] + } + } + ] + } + }, + { + "如何开始": { + "keywords": [], + "children": [ + { + "成为蚂蚁金服开放平台开发者": { + "keywords": [], + "children": [] + } + }, + { + "身份角色的入驻": { + "keywords": [], + "children": [] + } + }, + { + "创建小程序": { + "keywords": [], + "children": [] + } + }, + { + "小程序设置": { + "keywords": [], + "children": [] + } + } + ] + } + } + ] + } + }, + { + "程序的开发与发布": { + "keywords": [], + "children": [ + { + "安装蚂蚁开发者工具": { + "keywords": [], + "children": [] + } + }, + { + "创建示例工程": { + "keywords": [], + "children": [] + } + }, + { + "编码与调试": { + "keywords": [], + "children": [] + } + }, + { + "上传": { + "keywords": [], + "children": [] + } + }, + { + "设置体验版(可选)": { + "keywords": [], + "children": [] + } + }, + { + "提交审核": { + "keywords": [], + "children": [] + } + }, + { + "灰度测试与上架": { + "keywords": [], + "children": [] + } + } + ] + } + }, + { + "程序的开发基础": { + "keywords": [], + "children": [ + { + "页面布局": { + "keywords": [], + "children": [ + { + "盒模型": { + "keywords": [], + "children": [] + } + }, + { + "显示、定位和浮动": { + "keywords": [], + "children": [] + } + }, + { + "Flex布局": { + "keywords": [], + "children": [] + } + } + ] + } + }, + { + "前端框架的演变": { + "keywords": [], + "children": [ + { + "最初的时代": { + "keywords": [], + "children": [] + } + }, + { + "前端的革命": { + "keywords": [], + "children": [] + } + }, + { + "类库的繁荣": { + "keywords": [], + "children": [] + } + }, + { + "框架的兴起": { + "keywords": [], + "children": [] + } + } + ] + } + } + ] + } + }, + { + "程序的框架": { + "keywords": [], + "children": [ + { + "目录结构": { + "keywords": [], + "children": [] + } + }, + { + "配置文件JSON": { + "keywords": [], + "children": [ + { + "全局配置": { + "keywords": [], + "children": [] + } + }, + { + "页面配置": { + "keywords": [], + "children": [] + } + } + ] + } + }, + { + "逻辑层JS": { + "keywords": [], + "children": [ + { + "注册程序App": { + "keywords": [], + "children": [] + } + }, + { + "注册页面Page": { + "keywords": [], + "children": [] + } + } + ] + } + }, + { + "视图层AXML": { + "keywords": [], + "children": [ + { + "数据绑定": { + "keywords": [], + "children": [] + } + }, + { + "条件渲染": { + "keywords": [], + "children": [] + } + }, + { + "列表渲染": { + "keywords": [], + "children": [] + } + }, + { + "定义模板": { + "keywords": [], + "children": [] + } + }, + { + "引用文件": { + "keywords": [], + "children": [] + } + }, + { + "事件绑定": { + "keywords": [], + "children": [] + } + } + ] + } + }, + { + "样式ACSS": { + "keywords": [], + "children": [] + } + } + ] + } + }, + { + "基础组件": { + "keywords": [], + "children": [ + { + "视图容器": { + "keywords": [], + "children": [ + { + "基础容器view": { + "keywords": [], + "children": [] + } + }, + { + "滑块容器swiper": { + "keywords": [], + "children": [] + } + }, + { + "滚动容器scroll-view": { + "keywords": [], + "children": [] + } + } + ] + } + }, + { + "基础内容": { + "keywords": [], + "children": [ + { + "文字text": { + "keywords": [], + "children": [] + } + }, + { + "图标icon": { + "keywords": [], + "children": [] + } + }, + { + "进度条progress": { + "keywords": [], + "children": [] + } + } + ] + } + }, + { + "表单组件": { + "keywords": [], + "children": [ + { + "表单form": { + "keywords": [], + "children": [] + } + }, + { + "输入框input": { + "keywords": [], + "children": [] + } + }, + { + "按钮button": { + "keywords": [], + "children": [] + } + }, + { + "单选框radio": { + "keywords": [], + "children": [] + } + }, + { + "复选框checkbox": { + "keywords": [], + "children": [] + } + }, + { + "开关switch": { + "keywords": [], + "children": [] + } + }, + { + "标记label": { + "keywords": [], + "children": [] + } + }, + { + "多行输入textarea": { + "keywords": [], + "children": [] + } + }, + { + "滑动条slider": { + "keywords": [], + "children": [] + } + } + ] + } + }, + { + "导航": { + "keywords": [], + "children": [] + } + }, + { + "媒体组件": { + "keywords": [], + "children": [] + } + }, + { + "地图": { + "keywords": [], + "children": [] + } + }, + { + "画布": { + "keywords": [], + "children": [] + } + } + ] + } + }, + { + "业务组件": { + "keywords": [], + "children": [ + { + "组件结构": { + "keywords": [], + "children": [] + } + }, + { + "折叠面板": { + "keywords": [], + "children": [] + } + }, + { + "下拉菜单": { + "keywords": [], + "children": [] + } + }, + { + "通用错误页": { + "keywords": [], + "children": [] + } + }, + { + "宫格": { + "keywords": [], + "children": [] + } + }, + { + "列表": { + "keywords": [], + "children": [] + } + }, + { + "标签": { + "keywords": [], + "children": [] + } + } + ] + } + }, + { + "开放接口": { + "keywords": [], + "children": [ + { + "获取授权码": { + "keywords": [], + "children": [] + } + }, + { + "获取用户信息": { + "keywords": [], + "children": [] + } + }, + { + "发起支付": { + "keywords": [], + "children": [] + } + }, + { + "跳转支付宝卡包": { + "keywords": [], + "children": [] + } + }, + { + "会员卡授权": { + "keywords": [], + "children": [] + } + }, + { + "芝麻认证": { + "keywords": [], + "children": [] + } + } + ] + } + }, + { + "常用API接口": { + "keywords": [], + "children": [ + { + "界面": { + "keywords": [], + "children": [ + { + "导航栏": { + "keywords": [], + "children": [] + } + }, + { + "TabBar": { + "keywords": [], + "children": [] + } + }, + { + "交互反馈": { + "keywords": [], + "children": [] + } + }, + { + "下拉刷新": { + "keywords": [], + "children": [] + } + }, + { + "联系人": { + "keywords": [], + "children": [] + } + }, + { + "选择城市": { + "keywords": [], + "children": [] + } + }, + { + "选择日期": { + "keywords": [], + "children": [] + } + }, + { + "动画": { + "keywords": [], + "children": [] + } + }, + { + "画布": { + "keywords": [], + "children": [] + } + } + ] + } + }, + { + "网络": { + "keywords": [], + "children": [ + { + "发起请求": { + "keywords": [], + "children": [] + } + }, + { + "上传文件": { + "keywords": [], + "children": [] + } + }, + { + "下载文件": { + "keywords": [], + "children": [] + } + }, + { + "WebSocket": { + "keywords": [], + "children": [] + } + } + ] + } + } + ] + } + }, + { + "其他API接口": { + "keywords": [], + "children": [ + { + "设备": { + "keywords": [], + "children": [ + { + "获取系统信息": { + "keywords": [], + "children": [] + } + }, + { + "获取当前网络状态": { + "keywords": [], + "children": [] + } + }, + { + "获取服务器时间": { + "keywords": [], + "children": [] + } + }, + { + "剪贴板": { + "keywords": [], + "children": [] + } + }, + { + "摇一摇": { + "keywords": [], + "children": [] + } + }, + { + "震动": { + "keywords": [], + "children": [] + } + }, + { + "打电话": { + "keywords": [], + "children": [] + } + }, + { + "用户截屏事件": { + "keywords": [], + "children": [] + } + }, + { + "屏幕亮度": { + "keywords": [], + "children": [] + } + } + ] + } + }, + { + "媒体": { + "keywords": [], + "children": [] + } + }, + { + "位置": { + "keywords": [], + "children": [] + } + }, + { + "缓存数据": { + "keywords": [], + "children": [] + } + }, + { + "扫码": { + "keywords": [], + "children": [] + } + }, + { + "分享": { + "keywords": [], + "children": [] + } + }, + { + "数据安全": { + "keywords": [], + "children": [] + } + }, + { + "蓝牙": { + "keywords": [], + "children": [ + { + "快速接入": { + "keywords": [], + "children": [] + } + }, + { + "API列表": { + "keywords": [], + "children": [] + } + } + ] + } + } + ] + } + } + ] + } + } + ] + } + }, + { + "移动App开发": { + "node_id": "569d5e11c4fc5de7844053d9a733c5e8", + "keywords": [], + "children": [ + { + "Android App开发": { + "node_id": "569d5e11c4fc5de7844053d9a733c5e8", + "keywords": [], + "children": [ + { + "Android开发环境搭建": { + "keywords": [], + "children": [ + { + "Android开发简介": { + "keywords": [], + "children": [ + { + "Android的发展历程": { + "keywords": [], + "children": [] + } + }, + { + "Android Studio的发展历程": { + "keywords": [], + "children": [] + } + } + ] + } + }, + { + "搭建Android Studio开发环境": { + "keywords": [], + "children": [ + { + "开发机配置要求": { + "keywords": [], + "children": [] + } + }, + { + "安装Android Studio": { + "keywords": [], + "children": [] + } + }, + { + "下载Android的SDK": { + "keywords": [], + "children": [] + } + } + ] + } + }, + { + "创建并编译App工程": { + "keywords": [], + "children": [ + { + "创建新项目": { + "keywords": [], + "children": [] + } + }, + { + "导入已有的工程": { + "keywords": [], + "children": [] + } + }, + { + "编译App工程": { + "keywords": [], + "children": [] + } + } + ] + } + }, + { + "运行和调试App": { + "keywords": [], + "children": [ + { + "创建内置模拟器": { + "keywords": [], + "children": [] + } + }, + { + "在模拟器上运行App": { + "keywords": [], + "children": [] + } + }, + { + "观察App的运行日志": { + "keywords": [], + "children": [] + } + } + ] + } + } + ] + } + }, + { + "Android App开发基础": { + "keywords": [], + "children": [ + { + "App的开发特点": { + "keywords": [], + "children": [ + { + "App的运行环境": { + "keywords": [], + "children": [] + } + }, + { + "App的开发语言": { + "keywords": [], + "children": [] + } + }, + { + "App连接的数据库": { + "keywords": [], + "children": [] + } + } + ] + } + }, + { + "App的工程结构": { + "keywords": [], + "children": [ + { + "App工程目录结构": { + "keywords": [], + "children": [] + } + }, + { + "编译配置文件build.gradle": { + "keywords": [], + "children": [] + } + }, + { + "运行配置文件AndroidManifest.ml": { + "keywords": [], + "children": [] + } + } + ] + } + }, + { + "App的设计规范": { + "keywords": [], + "children": [ + { + "界面设计与代码逻辑": { + "keywords": [], + "children": [] + } + }, + { + "利用XML标记描绘应用界面": { + "keywords": [], + "children": [] + } + }, + { + "使用Java代码书写程序逻辑": { + "keywords": [], + "children": [] + } + } + ] + } + }, + { + "App的活动页面": { + "keywords": [], + "children": [ + { + "创建新的App页面": { + "keywords": [], + "children": [] + } + }, + { + "快速生成页面源码": { + "keywords": [], + "children": [] + } + }, + { + "跳到另一个页面": { + "keywords": [], + "children": [] + } + } + ] + } + } + ] + } + }, + { + "简单控件": { + "keywords": [], + "children": [ + { + "文本显示": { + "keywords": [], + "children": [ + { + "设置文本的内容": { + "keywords": [], + "children": [] + } + }, + { + "设置文本的大小": { + "keywords": [], + "children": [] + } + }, + { + "设置文本的颜色": { + "keywords": [], + "children": [] + } + } + ] + } + }, + { + "视图基础": { + "keywords": [], + "children": [ + { + "设置视图的宽高": { + "keywords": [], + "children": [] + } + }, + { + "设置视图的间距": { + "keywords": [], + "children": [] + } + }, + { + "设置视图的对齐方式": { + "keywords": [], + "children": [] + } + } + ] + } + }, + { + "常用布局": { + "keywords": [], + "children": [ + { + "线性布局LinearLayout": { + "keywords": [], + "children": [] + } + }, + { + "相对布局RelativeLayout": { + "keywords": [], + "children": [] + } + }, + { + "网格布局GridLayout": { + "keywords": [], + "children": [] + } + }, + { + "滚动视图ScrollView": { + "keywords": [], + "children": [] + } + } + ] + } + }, + { + "按钮触控": { + "keywords": [], + "children": [ + { + "按钮控件Button": { + "keywords": [], + "children": [] + } + }, + { + "点击事件和长按事件": { + "keywords": [], + "children": [] + } + }, + { + "禁用与恢复按钮": { + "keywords": [], + "children": [] + } + } + ] + } + }, + { + "图像显示": { + "keywords": [], + "children": [ + { + "图像视图ImageView": { + "keywords": [], + "children": [] + } + }, + { + "图像按钮ImageButton": { + "keywords": [], + "children": [] + } + }, + { + "同时展示文本与图像": { + "keywords": [], + "children": [] + } + } + ] + } + }, + { + "实战项目:计算器": { + "keywords": [], + "children": [ + { + "需求描述": { + "keywords": [], + "children": [] + } + }, + { + "界面设计": { + "keywords": [], + "children": [] + } + }, + { + "关键代码": { + "keywords": [], + "children": [] + } + } + ] + } + } + ] + } + }, + { + "活动Activity": { + "keywords": [], + "children": [ + { + "启停活动页面": { + "keywords": [], + "children": [ + { + "Activity的启动和结束": { + "keywords": [], + "children": [] + } + }, + { + "Activity的生命周期": { + "keywords": [], + "children": [] + } + }, + { + "Activity的启动模式": { + "keywords": [], + "children": [] + } + } + ] + } + }, + { + "在活动之间传递消息": { + "keywords": [], + "children": [ + { + "显式Intent和隐式Intent": { + "keywords": [], + "children": [] + } + }, + { + "向下一个Activity发送数据": { + "keywords": [], + "children": [] + } + }, + { + "向上一个Activity返回数据": { + "keywords": [], + "children": [] + } + } + ] + } + }, + { + "为活动补充附加信息": { + "keywords": [], + "children": [ + { + "利用资源文件配置字符串": { + "keywords": [], + "children": [] + } + }, + { + "利用元数据传递配置信息": { + "keywords": [], + "children": [] + } + }, + { + "给应用页面注册快捷方式": { + "keywords": [], + "children": [] + } + } + ] + } + } + ] + } + }, + { + "中级控件": { + "keywords": [], + "children": [ + { + "图形定制": { + "keywords": [], + "children": [ + { + "图形Drawable": { + "keywords": [], + "children": [] + } + }, + { + "形状图形": { + "keywords": [], + "children": [] + } + }, + { + "九宫格图片": { + "keywords": [], + "children": [] + } + }, + { + "状态列表图形": { + "keywords": [], + "children": [] + } + } + ] + } + }, + { + "选择按钮": { + "keywords": [], + "children": [ + { + "复选框CheckBo": { + "keywords": [], + "children": [] + } + }, + { + "开关按钮Switch": { + "keywords": [], + "children": [] + } + }, + { + "单选按钮RadioButton": { + "keywords": [], + "children": [] + } + } + ] + } + }, + { + "文本输入": { + "keywords": [], + "children": [ + { + "编辑框EditTet": { + "keywords": [], + "children": [] + } + }, + { + "焦点变更监听器": { + "keywords": [], + "children": [] + } + }, + { + "文本变化监听器": { + "keywords": [], + "children": [] + } + } + ] + } + }, + { + "对话框": { + "keywords": [], + "children": [ + { + "提醒对话框AlertDialog": { + "keywords": [], + "children": [] + } + }, + { + "日期对话框DatePickerDialog": { + "keywords": [], + "children": [] + } + }, + { + "时间对话框TimePickerDialog": { + "keywords": [], + "children": [] + } + } + ] + } + }, + { + "实战项目:找回密码": { + "keywords": [], + "children": [ + { + "需求描述": { + "keywords": [], + "children": [] + } + }, + { + "界面设计": { + "keywords": [], + "children": [] + } + }, + { + "关键代码": { + "keywords": [], + "children": [] + } + } + ] + } + } + ] + } + }, + { + "数据存储": { + "keywords": [], + "children": [ + { + "共享参数SharedPreferences": { + "keywords": [], + "children": [ + { + "共享参数的用法": { + "keywords": [], + "children": [] + } + }, + { + "实现记住密码功能": { + "keywords": [], + "children": [] + } + }, + { + "利用设备浏览器寻找共享参数文件": { + "keywords": [], + "children": [] + } + } + ] + } + }, + { + "数据库SQLite": { + "keywords": [], + "children": [ + { + "SQL的基本语法": { + "keywords": [], + "children": [] + } + }, + { + "数据库管理器SQLiteDatabase": { + "keywords": [], + "children": [] + } + }, + { + "数据库帮助器SQLiteOpenHelper": { + "keywords": [], + "children": [] + } + }, + { + "优化记住密码功能": { + "keywords": [], + "children": [] + } + } + ] + } + }, + { + "存储卡的文件作": { + "keywords": [], + "children": [ + { + "私有存储空间与公共存储空间": { + "keywords": [], + "children": [] + } + }, + { + "在存储卡上读写文本文件": { + "keywords": [], + "children": [] + } + }, + { + "在存储卡上读写图片文件": { + "keywords": [], + "children": [] + } + } + ] + } + }, + { + "应用组件Application": { + "keywords": [], + "children": [ + { + "Application的生命周期": { + "keywords": [], + "children": [] + } + }, + { + "利用Application作全局变量": { + "keywords": [], + "children": [] + } + }, + { + "利用Room简化数据库作": { + "keywords": [], + "children": [] + } + } + ] + } + }, + { + "实战项目:购物车": { + "keywords": [], + "children": [ + { + "需求描述": { + "keywords": [], + "children": [] + } + }, + { + "界面设计": { + "keywords": [], + "children": [] + } + }, + { + "关键代码": { + "keywords": [], + "children": [] + } + } + ] + } + } + ] + } + }, + { + "内容共享": { + "keywords": [], + "children": [ + { + "在应用之间共享数据": { + "keywords": [], + "children": [ + { + "通过ContentProvider封装数据": { + "keywords": [], + "children": [] + } + }, + { + "通过ContentResolver访问数据": { + "keywords": [], + "children": [] + } + } + ] + } + }, + { + "使用内容组件获取通讯信息": { + "keywords": [], + "children": [ + { + "运行时动态申请权限": { + "keywords": [], + "children": [] + } + }, + { + "利用ContentResolver读写联系人": { + "keywords": [], + "children": [] + } + }, + { + "利用ContentObserver监听短信": { + "keywords": [], + "children": [] + } + } + ] + } + }, + { + "在应用之间共享文件": { + "keywords": [], + "children": [ + { + "使用相册图片发送彩信": { + "keywords": [], + "children": [] + } + }, + { + "借助FileProvider发送彩信": { + "keywords": [], + "children": [] + } + }, + { + "借助FileProvider安装应用": { + "keywords": [], + "children": [] + } + } + ] + } + } + ] + } + }, + { + "高级控件": { + "keywords": [], + "children": [ + { + "下拉列表": { + "keywords": [], + "children": [ + { + "下拉框Spinner": { + "keywords": [], + "children": [] + } + }, + { + "数组适配器ArrayAdapter": { + "keywords": [], + "children": [] + } + }, + { + "简单适配器SimpleAdapter": { + "keywords": [], + "children": [] + } + } + ] + } + }, + { + "列表类视图": { + "keywords": [], + "children": [ + { + "基本适配器BaseAdapter": { + "keywords": [], + "children": [] + } + }, + { + "列表视图ListView": { + "keywords": [], + "children": [] + } + }, + { + "网格视图GridView": { + "keywords": [], + "children": [] + } + } + ] + } + }, + { + "翻页类视图": { + "keywords": [], + "children": [ + { + "翻页视图ViewPager": { + "keywords": [], + "children": [] + } + }, + { + "翻页标签栏PagerTabStrip": { + "keywords": [], + "children": [] + } + }, + { + "简单的启动引导页": { + "keywords": [], + "children": [] + } + } + ] + } + }, + { + "碎片Fragment": { + "keywords": [], + "children": [ + { + "碎片的静态注册": { + "keywords": [], + "children": [] + } + }, + { + "碎片的动态注册": { + "keywords": [], + "children": [] + } + }, + { + "改进的启动引导页": { + "keywords": [], + "children": [] + } + } + ] + } + }, + { + "实战项目:记账本": { + "keywords": [], + "children": [ + { + "需求描述": { + "keywords": [], + "children": [] + } + }, + { + "界面设计": { + "keywords": [], + "children": [] + } + }, + { + "关键代码": { + "keywords": [], + "children": [] + } + } + ] + } + } + ] + } + }, + { + "广播组件Broadcast": { + "keywords": [], + "children": [ + { + "收发应用广播": { + "keywords": [], + "children": [ + { + "收发标准广播": { + "keywords": [], + "children": [] + } + }, + { + "收发有序广播": { + "keywords": [], + "children": [] + } + }, + { + "收发静态广播": { + "keywords": [], + "children": [] + } + } + ] + } + }, + { + "监听系统广播": { + "keywords": [], + "children": [ + { + "接收分钟到达广播": { + "keywords": [], + "children": [] + } + }, + { + "接收网络变更广播": { + "keywords": [], + "children": [] + } + }, + { + "定时管理器AlarmManager": { + "keywords": [], + "children": [] + } + } + ] + } + }, + { + "捕获屏幕的变更事件": { + "keywords": [], + "children": [ + { + "竖屏与横屏切换": { + "keywords": [], + "children": [] + } + }, + { + "回到桌面与切换到任务列表": { + "keywords": [], + "children": [] + } + } + ] + } + } + ] + } + }, + { + "自定义控件": { + "keywords": [], + "children": [ + { + "视图的构建过程": { + "keywords": [], + "children": [ + { + "视图的构造方法": { + "keywords": [], + "children": [] + } + }, + { + "视图的测量方法": { + "keywords": [], + "children": [] + } + }, + { + "视图的绘制方法": { + "keywords": [], + "children": [] + } + } + ] + } + }, + { + "改造已有的控件": { + "keywords": [], + "children": [ + { + "自定义月份选择器": { + "keywords": [], + "children": [] + } + }, + { + "给翻页标签栏添加新属性": { + "keywords": [], + "children": [] + } + }, + { + "不滚动的列表视图": { + "keywords": [], + "children": [] + } + } + ] + } + }, + { + "通过持续绘制实现简单动画": { + "keywords": [], + "children": [ + { + "Handler的延迟机制": { + "keywords": [], + "children": [] + } + }, + { + "重新绘制视图界面": { + "keywords": [], + "children": [] + } + }, + { + "自定义饼图动画": { + "keywords": [], + "children": [] + } + } + ] + } + }, + { + "实战项目:广告轮播": { + "keywords": [], + "children": [ + { + "需求描述": { + "keywords": [], + "children": [] + } + }, + { + "界面设计": { + "keywords": [], + "children": [] + } + }, + { + "关键代码": { + "keywords": [], + "children": [] + } + } + ] + } + } + ] + } + }, + { + "通知与服务": { + "keywords": [], + "children": [ + { + "消息通知": { + "keywords": [], + "children": [ + { + "通知推送tification": { + "keywords": [], + "children": [] + } + }, + { + "通知渠道tificationChannel": { + "keywords": [], + "children": [] + } + }, + { + "给桌面应用添加消息角标": { + "keywords": [], + "children": [] + } + } + ] + } + }, + { + "服务Service": { + "keywords": [], + "children": [ + { + "服务的启动和停止": { + "keywords": [], + "children": [] + } + }, + { + "服务的绑定与解绑": { + "keywords": [], + "children": [] + } + }, + { + "推送服务到前台": { + "keywords": [], + "children": [] + } + } + ] + } + }, + { + "多线程": { + "keywords": [], + "children": [ + { + "分线程通过Handler作界面": { + "keywords": [], + "children": [] + } + }, + { + "异步任务AsyncTask": { + "keywords": [], + "children": [] + } + }, + { + "异步服务IntentService": { + "keywords": [], + "children": [] + } + } + ] + } + } + ] + } + }, + { + "组合控件": { + "keywords": [], + "children": [ + { + "底部标签栏": { + "keywords": [], + "children": [ + { + "利用BottomNavigationView实现底部标签栏": { + "keywords": [], + "children": [] + } + }, + { + "自定义标签按钮": { + "keywords": [], + "children": [] + } + }, + { + "结合RadioGroup和ViewPager自定义底部标签栏": { + "keywords": [], + "children": [] + } + } + ] + } + }, + { + "顶部导航栏": { + "keywords": [], + "children": [ + { + "工具栏Toolbar": { + "keywords": [], + "children": [] + } + }, + { + "溢出菜单OverflowMenu": { + "keywords": [], + "children": [] + } + }, + { + "标签布局TabLayout": { + "keywords": [], + "children": [] + } + } + ] + } + }, + { + "增强型列表": { + "keywords": [], + "children": [ + { + "循环视图RecyclerView": { + "keywords": [], + "children": [] + } + }, + { + "布局管理器LayoutManager": { + "keywords": [], + "children": [] + } + }, + { + "动态更新循环视图": { + "keywords": [], + "children": [] + } + } + ] + } + }, + { + "升级版翻页": { + "keywords": [], + "children": [ + { + "下拉刷新布局SwipeRefreshLayout": { + "keywords": [], + "children": [] + } + }, + { + "二代翻页视图ViewPager2": { + "keywords": [], + "children": [] + } + }, + { + "给ViewPager2集成标签布局": { + "keywords": [], + "children": [] + } + } + ] + } + }, + { + "实战项目:电商首页": { + "keywords": [], + "children": [ + { + "需求描述": { + "keywords": [], + "children": [] + } + }, + { + "界面设计": { + "keywords": [], + "children": [] + } + }, + { + "关键代码": { + "keywords": [], + "children": [] + } + } + ] + } + } + ] + } + }, + { + "多媒体": { + "keywords": [], + "children": [ + { + "图片": { + "keywords": [], + "children": [ + { + "使用相机拍摄照片": { + "keywords": [], + "children": [] + } + }, + { + "从相册中选取图片": { + "keywords": [], + "children": [] + } + }, + { + "对图片进行简单加工": { + "keywords": [], + "children": [] + } + }, + { + "图像解码器ImageDecoder": { + "keywords": [], + "children": [] + } + } + ] + } + }, + { + "音频": { + "keywords": [], + "children": [ + { + "使用录音机录制音频": { + "keywords": [], + "children": [] + } + }, + { + "利用MediaPlayer播放音频": { + "keywords": [], + "children": [] + } + }, + { + "利用MediaRecorder录制音频": { + "keywords": [], + "children": [] + } + } + ] + } + }, + { + "视频": { + "keywords": [], + "children": [ + { + "使用摄像机录制视频": { + "keywords": [], + "children": [] + } + }, + { + "从视频库中选取视频": { + "keywords": [], + "children": [] + } + } + ] + } + } + ] + } + } + ] + } + }, + { + "IOS App开发": { + "node_id": "569d5e11c4fc5de7844053d9a733c5e8", + "keywords": [], + "children": [ + { + "开发准备": { + "keywords": [], + "children": [ + { + "iOS 11新特性简述": { + "keywords": [], + "children": [ + { + "新增拖放交互编程接口": { + "keywords": [], + "children": [] + } + }, + { + "其他新增功能": { + "keywords": [], + "children": [] + } + } + ] + } + }, + { + "iOS开发环境": { + "keywords": [], + "children": [ + { + "安装Xcode开发工具": { + "keywords": [], + "children": [] + } + }, + { + "了解Xcode开发工具主界面": { + "keywords": [], + "children": [] + } + }, + { + "Xcode开发工具的使用技巧及常用快捷键": { + "keywords": [], + "children": [] + } + } + ] + } + }, + { + "创建第一个iOS项目": { + "keywords": [], + "children": [] + } + }, + { + "使用Git进行项目版本管理": { + "keywords": [], + "children": [ + { + "Git与Github简介": { + "keywords": [], + "children": [] + } + }, + { + "注册GitHub会员": { + "keywords": [], + "children": [] + } + }, + { + "使用Xcode创建Git仓库": { + "keywords": [], + "children": [] + } + }, + { + "用Xcode建立本地Git仓库与GitHub代码托管平台的关联": { + "keywords": [], + "children": [] + } + } + ] + } + } + ] + } + }, + { + "基础UI组件": { + "keywords": [], + "children": [ + { + "iOS系统UI框架的介绍": { + "keywords": [], + "children": [ + { + "MVC设计模式": { + "keywords": [], + "children": [] + } + }, + { + "代理设计模式": { + "keywords": [], + "children": [] + } + } + ] + } + }, + { + "视图控制器——UIViewController": { + "keywords": [], + "children": [ + { + "UIViewController的生命周期": { + "keywords": [], + "children": [] + } + }, + { + "UIViewController的视图层级结构": { + "keywords": [], + "children": [] + } + } + ] + } + }, + { + "文本控件——UILabel": { + "keywords": [], + "children": [ + { + "使用UILabel在屏幕上创建一个标签控件": { + "keywords": [], + "children": [] + } + }, + { + "自定义标签控件的相关属性": { + "keywords": [], + "children": [] + } + }, + { + "多行显示的UILabel控件与换行模式": { + "keywords": [], + "children": [] + } + } + ] + } + }, + { + "按钮控件——UIButton": { + "keywords": [], + "children": [ + { + "创建一个按钮改变屏幕颜色": { + "keywords": [], + "children": [] + } + }, + { + "更加多彩的UIButton控件": { + "keywords": [], + "children": [] + } + } + ] + } + }, + { + "文本输入框控件——UITextField": { + "keywords": [], + "children": [ + { + "在屏幕上创建一个输入框": { + "keywords": [], + "children": [] + } + }, + { + "UITextField的常用属性介绍": { + "keywords": [], + "children": [] + } + }, + { + "UITextField的代理方法": { + "keywords": [], + "children": [] + } + }, + { + "实现一个监听输入信息的用户名输入框": { + "keywords": [], + "children": [] + } + } + ] + } + }, + { + "开关控件——UISwitch": { + "keywords": [], + "children": [ + { + "创建一个开关控件": { + "keywords": [], + "children": [] + } + }, + { + "为UISiwtch控件添加触发方法": { + "keywords": [], + "children": [] + } + } + ] + } + }, + { + "分页控制器——UIPageControl": { + "keywords": [], + "children": [] + } + }, + { + "分段控制器——UISegmentedControl": { + "keywords": [], + "children": [ + { + "UISegmentedControl基本属性的应用": { + "keywords": [], + "children": [] + } + }, + { + "对UISegmentedControl中的按钮进行增、删、改操作": { + "keywords": [], + "children": [] + } + }, + { + "UISegmentedControl中按钮宽度的自适应": { + "keywords": [], + "children": [] + } + } + ] + } + }, + { + "滑块控件——UISlider": { + "keywords": [], + "children": [ + { + "UISlider的创建与常规设置": { + "keywords": [], + "children": [] + } + }, + { + "对UISlider添加图片修饰": { + "keywords": [], + "children": [] + } + } + ] + } + }, + { + "活动指示器控件——UIActivityIndicatorView": { + "keywords": [], + "children": [] + } + }, + { + "进度条控件——UIProgressView": { + "keywords": [], + "children": [] + } + }, + { + "步进控制器——UIStepper": { + "keywords": [], + "children": [ + { + "步进控制器的基本属性使用": { + "keywords": [], + "children": [] + } + }, + { + "自定义UIStepper按钮图片": { + "keywords": [], + "children": [] + } + } + ] + } + }, + { + "选择器控件——UIPickerView": { + "keywords": [], + "children": [ + { + "创建一个UIPickerView控件": { + "keywords": [], + "children": [] + } + }, + { + "UIPickerView选中数据时的回调代理": { + "keywords": [], + "children": [] + } + } + ] + } + }, + { + "通过CALayer对视图进行修饰": { + "keywords": [], + "children": [ + { + "创建圆角的控件": { + "keywords": [], + "children": [] + } + }, + { + "创建带边框的控件": { + "keywords": [], + "children": [] + } + }, + { + "为控件添加阴影效果": { + "keywords": [], + "children": [] + } + } + ] + } + }, + { + "警告控制器——UIAlertController": { + "keywords": [], + "children": [ + { + "UIAlertController的警告框": { + "keywords": [], + "children": [] + } + }, + { + "UIAlertController之活动列表": { + "keywords": [], + "children": [] + } + } + ] + } + }, + { + "基础UI控件扩展篇": { + "keywords": [], + "children": [ + { + "搜索栏控件——UISearchBar": { + "keywords": [], + "children": [] + } + }, + { + "日期时间选择器——UIDatePicker": { + "keywords": [], + "children": [] + } + }, + { + "警告视图——UIAlertView": { + "keywords": [], + "children": [] + } + }, + { + "活动列表——UIActionSheet": { + "keywords": [], + "children": [] + } + } + ] + } + } + ] + } + }, + { + "高级UI控件": { + "keywords": [], + "children": [ + { + "导航控制器——UINavigationController": { + "keywords": [], + "children": [ + { + "导航控制器的工作原理": { + "keywords": [], + "children": [] + } + }, + { + "使用导航控制器进行多界面搭建": { + "keywords": [], + "children": [] + } + }, + { + "导航栏UINavigationBar": { + "keywords": [], + "children": [] + } + }, + { + "导航按钮UIBarButtonItem": { + "keywords": [], + "children": [] + } + }, + { + "导航控制器的工具栏": { + "keywords": [], + "children": [] + } + }, + { + "iOS 8系统之后导航控制器的一些有趣功能": { + "keywords": [], + "children": [] + } + } + ] + } + }, + { + "标签控制器——UITabBarController": { + "keywords": [], + "children": [ + { + "标签控制器的工作原理": { + "keywords": [], + "children": [] + } + }, + { + "标签控制器的基础用法解析": { + "keywords": [], + "children": [] + } + }, + { + "关于UITabBarItem的使用": { + "keywords": [], + "children": [] + } + } + ] + } + }, + { + "滚动视图——UIScrollView": { + "keywords": [], + "children": [ + { + "使用UIScrollView展示视图内容": { + "keywords": [], + "children": [] + } + }, + { + "UIScrollView的代理方法": { + "keywords": [], + "children": [] + } + } + ] + } + }, + { + "网络视图——UIWebView": { + "keywords": [], + "children": [ + { + "App网络传输安全策略": { + "keywords": [], + "children": [] + } + }, + { + "通过网络请求加载UIWebView": { + "keywords": [], + "children": [] + } + }, + { + "通过HTML字符串加载UIWebView": { + "keywords": [], + "children": [] + } + }, + { + "通过Data数据加载UIWebView": { + "keywords": [], + "children": [] + } + }, + { + "UIWebView中常用方法解析": { + "keywords": [], + "children": [] + } + }, + { + "UIWebView的代理方法": { + "keywords": [], + "children": [] + } + } + ] + } + }, + { + "表格视图——UITableView": { + "keywords": [], + "children": [ + { + "UITableView的创建与复用机制": { + "keywords": [], + "children": [] + } + }, + { + "创建一个表格视图UITableView": { + "keywords": [], + "children": [] + } + }, + { + "关于表格数据的载体UITableViewCell": { + "keywords": [], + "children": [] + } + }, + { + "设置UITableView的行高和头尾视图": { + "keywords": [], + "children": [] + } + }, + { + "UITableView的用户交互行为": { + "keywords": [], + "children": [] + } + }, + { + "为UITableView添加索引栏": { + "keywords": [], + "children": [] + } + } + ] + } + }, + { + "复杂布局视图——UICollectionView": { + "keywords": [], + "children": [ + { + "UICollectionView控件的优势与布局方式": { + "keywords": [], + "children": [] + } + }, + { + "使用UICollectionView进行九宫格式的布局": { + "keywords": [], + "children": [] + } + }, + { + "创建更加灵活的流式布局": { + "keywords": [], + "children": [] + } + }, + { + "自定义UICollectionViewFlowLayout进行参差瀑布流布局": { + "keywords": [], + "children": [] + } + }, + { + "使用UICollectionView进行圆环布局": { + "keywords": [], + "children": [] + } + } + ] + } + }, + { + "扩展内容": { + "keywords": [], + "children": [ + { + "应用内评价组件": { + "keywords": [], + "children": [] + } + }, + { + "进行系统拨号与短信界面的调用": { + "keywords": [], + "children": [] + } + }, + { + "拖拽交互体验": { + "keywords": [], + "children": [] + } + } + ] + } + } + ] + } + }, + { + "网络编程技术": { + "keywords": [], + "children": [ + { + "使用NSURLConnection请求网络数据": { + "keywords": [], + "children": [ + { + "申请一个免费的API服务": { + "keywords": [], + "children": [] + } + }, + { + "使用NSURLConnection进行API服务数据的获取": { + "keywords": [], + "children": [] + } + }, + { + "使用NSURLConnection进行异步网络请求": { + "keywords": [], + "children": [] + } + }, + { + "使用NSURLConnection类通过代理回调的方式异步请求": { + "keywords": [], + "children": [] + } + } + ] + } + }, + { + "设计封装一个更加易用的网络请求类": { + "keywords": [], + "children": [ + { + "设计自定义的网络请求连接类": { + "keywords": [], + "children": [] + } + }, + { + "设计自定义的网络请求管理类": { + "keywords": [], + "children": [] + } + } + ] + } + }, + { + "JSON类型数据的解析与数据模型的设计": { + "keywords": [], + "children": [ + { + "JSON数据简介": { + "keywords": [], + "children": [] + } + }, + { + "在iOS中解析JSON数据": { + "keywords": [], + "children": [] + } + }, + { + "数据模型Model类的设计": { + "keywords": [], + "children": [] + } + } + ] + } + }, + { + "使用CocoaPods进行第三方库的管理": { + "keywords": [], + "children": [ + { + "在MAC上安装CocoaPods工具": { + "keywords": [], + "children": [] + } + }, + { + "用CocoaPods搭建一个使用第三方网络请求框架AlamoFire的工程": { + "keywords": [], + "children": [] + } + } + ] + } + }, + { + "使用AlamoFire进行网络请求": { + "keywords": [], + "children": [ + { + "详解HTTP/HTTPS协议": { + "keywords": [], + "children": [] + } + }, + { + "使用AlamoFire进行网络请求": { + "keywords": [], + "children": [] + } + } + ] + } + } + ] + } + }, + { + "音频、视频开发技术": { + "keywords": [], + "children": [ + { + "iOS音频开发基础——AVAudioPlayer类的使用": { + "keywords": [], + "children": [ + { + "使用AVAudioPlayer进行MP3音频文件的播放": { + "keywords": [], + "children": [] + } + }, + { + "进行音频播放相关属性的控制": { + "keywords": [], + "children": [] + } + }, + { + "后台播放音频及用户交互的优化": { + "keywords": [], + "children": [] + } + } + ] + } + }, + { + "iOS视频开发基础": { + "keywords": [], + "children": [ + { + "使用MPMoviePlayerController向应用中嵌入视频模块": { + "keywords": [], + "children": [] + } + }, + { + "MPMoviePlayerController常用属性与方法解析": { + "keywords": [], + "children": [] + } + } + ] + } + }, + { + "视频播放器视图控制器——MPMoviePlayerViewController": { + "keywords": [], + "children": [] + } + }, + { + "AVPlayViewController视频播放框架与画中画开发技术": { + "keywords": [], + "children": [ + { + "使用AVPlayerViewController进行视频播放": { + "keywords": [], + "children": [] + } + }, + { + "iPad的画中画播放技术": { + "keywords": [], + "children": [] + } + } + ] + } + } + ] + } + }, + { + "动画开发技术": { + "keywords": [], + "children": [ + { + "使用UIImageView播放图片组帧动画": { + "keywords": [], + "children": [] + } + }, + { + "UIView层动画的应用": { + "keywords": [], + "children": [ + { + "执行UIView层过渡动画的3个类方法": { + "keywords": [], + "children": [] + } + }, + { + "创建UIView层的阻尼动画": { + "keywords": [], + "children": [] + } + }, + { + "动画参数配置与组合动画": { + "keywords": [], + "children": [] + } + }, + { + "UIView层过渡动画支持的属性": { + "keywords": [], + "children": [] + } + } + ] + } + }, + { + "使用commit方式进行UIView层动画的创建": { + "keywords": [], + "children": [ + { + "使用commit方式进行UIView层过渡动画的创建": { + "keywords": [], + "children": [] + } + }, + { + "两种UIView层动画创建方式的优劣": { + "keywords": [], + "children": [] + } + } + ] + } + }, + { + "UIView的转场动画": { + "keywords": [], + "children": [ + { + "重绘UIView视图时使用的转场动画": { + "keywords": [], + "children": [] + } + }, + { + "切换UIView视图时使用的转场动画": { + "keywords": [], + "children": [] + } + } + ] + } + }, + { + "核心动画编程技术——CoreAnimation": { + "keywords": [], + "children": [ + { + "锚点对视图控件几何位置的影响": { + "keywords": [], + "children": [] + } + }, + { + "色彩梯度层——CAGradientLayer": { + "keywords": [], + "children": [] + } + }, + { + "视图拷贝层——CAReplicatorLayer": { + "keywords": [], + "children": [] + } + }, + { + "图形渲染层——CAShapeLayer": { + "keywords": [], + "children": [] + } + }, + { + "文本绘制层——CATextLayer": { + "keywords": [], + "children": [] + } + }, + { + "CAAnimation动画体系介绍": { + "keywords": [], + "children": [] + } + }, + { + "使用CABasicAnimation创建基础动画": { + "keywords": [], + "children": [] + } + }, + { + "使用CAKeyframeAnimation类创建关键帧动画": { + "keywords": [], + "children": [] + } + }, + { + "CALayer层的转场动画——CATransition": { + "keywords": [], + "children": [] + } + }, + { + "CALayer层的组合动画——CAAnimationGroup": { + "keywords": [], + "children": [] + } + }, + { + "CATransform3D变换的应用": { + "keywords": [], + "children": [] + } + } + ] + } + }, + { + "炫酷的粒子效果": { + "keywords": [], + "children": [ + { + "粒子发射器——CAEmitterLayer": { + "keywords": [], + "children": [] + } + }, + { + "粒子单元——CAEmitterCell": { + "keywords": [], + "children": [] + } + }, + { + "创建粒子火焰动画": { + "keywords": [], + "children": [] + } + } + ] + } + }, + { + "播放GIF动态图": { + "keywords": [], + "children": [ + { + "使用UIWebView进行GIF动态图播放": { + "keywords": [], + "children": [] + } + }, + { + "使用UIImageView帧动画进行GIF动态图播放": { + "keywords": [], + "children": [] + } + } + ] + } + } + ] + } + }, + { + "传感器开发技术": { + "keywords": [], + "children": [ + { + "为应用程序添加手机密码及指纹识别的安全验证": { + "keywords": [], + "children": [ + { + "使用手机密码为应用程序添加安全验证": { + "keywords": [], + "children": [] + } + }, + { + "使用用户指纹为应用程序添加安全验证": { + "keywords": [], + "children": [] + } + } + ] + } + }, + { + "使用加速度传感器、螺旋仪传感器与磁力传感器获取设备空间状态": { + "keywords": [], + "children": [] + } + }, + { + "距离传感器的应用": { + "keywords": [], + "children": [] + } + }, + { + "iOS蓝牙开发技术": { + "keywords": [], + "children": [ + { + "中心设备管理类CBCentealManager": { + "keywords": [], + "children": [] + } + }, + { + "外围设备管理类CBPeripheraManager": { + "keywords": [], + "children": [] + } + } + ] + } + }, + { + "GPS应用与地图编程技术": { + "keywords": [], + "children": [ + { + "进行设备地理位置定位": { + "keywords": [], + "children": [] + } + }, + { + "原生地图开发技术": { + "keywords": [], + "children": [] + } + }, + { + "在地图中添加大头针及标注": { + "keywords": [], + "children": [] + } + }, + { + "在地图视图中添加覆盖物": { + "keywords": [], + "children": [] + } + }, + { + "在地图中进行线路导航与附近兴趣点检索": { + "keywords": [], + "children": [] + } + } + ] + } + } + ] + } + }, + { + "界面布局技术": { + "keywords": [], + "children": [ + { + "iOS中传统的UIViewAutoresizing布局模式": { + "keywords": [], + "children": [ + { + "通过代码设置视图控件的UIViewAutoresizing模式": { + "keywords": [], + "children": [] + } + }, + { + "在xib文件中可视化地配置控件的autoresizing属性": { + "keywords": [], + "children": [] + } + } + ] + } + }, + { + "autolayout自动布局框架": { + "keywords": [], + "children": [ + { + "初识autolayout": { + "keywords": [], + "children": [] + } + }, + { + "autolayout的属性意义与一个简单的自动布局示例": { + "keywords": [], + "children": [] + } + }, + { + "使用代码进行autolayout布局": { + "keywords": [], + "children": [] + } + }, + { + "使用格式化的字符串进行autolayout布局对象的创建": { + "keywords": [], + "children": [] + } + }, + { + "与约束相关的几个方法": { + "keywords": [], + "children": [] + } + }, + { + "使用autolayout设计一个高度自适应的聊天输入框及动画优化": { + "keywords": [], + "children": [] + } + }, + { + "使用第三方库SnapKit进行autolayout约束布局": { + "keywords": [], + "children": [] + } + } + ] + } + } + ] + } + }, + { + "数据持久化技术": { + "keywords": [], + "children": [ + { + "使用plist文件进行轻量级数据持久化管理": { + "keywords": [], + "children": [ + { + "在工程中读取Plist文件数据": { + "keywords": [], + "children": [] + } + }, + { + "在程序沙盒Documents目录中创建和使用plist文件": { + "keywords": [], + "children": [] + } + }, + { + "使用NSUserDefaults类进行数据持久化": { + "keywords": [], + "children": [] + } + } + ] + } + }, + { + "使用归档技术进行数据模型持久化": { + "keywords": [], + "children": [ + { + "进行单一系统数据类型的归档与解归档操作": { + "keywords": [], + "children": [] + } + }, + { + "对多个对象进行数据归档": { + "keywords": [], + "children": [] + } + }, + { + "进行自定义数据模型的归档": { + "keywords": [], + "children": [] + } + } + ] + } + }, + { + "小型数据库SQLite在iOS开发中的应用": { + "keywords": [], + "children": [] + } + }, + { + "核心数据管理框架CoreData的使用": { + "keywords": [], + "children": [ + { + "使用CoreData设计数据模型": { + "keywords": [], + "children": [] + } + }, + { + "CoreData编程框架中3个重要的类": { + "keywords": [], + "children": [] + } + }, + { + "CoreData编程框架的数据操作": { + "keywords": [], + "children": [] + } + }, + { + "使用CoreData进行数据与页面的绑定": { + "keywords": [], + "children": [] + } + } + ] + } + }, + { + "网络缓存策略": { + "keywords": [], + "children": [ + { + "为网络请求设置缓存策略": { + "keywords": [], + "children": [] + } + }, + { + "应用缓存管理类NSURLCache简介": { + "keywords": [], + "children": [] + } + } + ] + } + } + ] + } + }, + { + "提交应用程序到App Store": { + "keywords": [], + "children": [ + { + "使用Xcode开发工具进行程序调试": { + "keywords": [], + "children": [ + { + "使用自定义断点进行代码调试": { + "keywords": [], + "children": [] + } + }, + { + "添加全局异常断点": { + "keywords": [], + "children": [] + } + }, + { + "使用LLDB调试器进行程序调试": { + "keywords": [], + "children": [] + } + } + ] + } + }, + { + "Apple开发者账号的申请": { + "keywords": [], + "children": [ + { + "几种类型的开发者账号": { + "keywords": [], + "children": [] + } + }, + { + "申请开发者账号的过程": { + "keywords": [], + "children": [] + } + } + ] + } + }, + { + "进行应用程序打包": { + "keywords": [], + "children": [ + { + "在iTunes Connect中进行应用的创建与配置": { + "keywords": [], + "children": [] + } + }, + { + "使用Xcode打包与提交iTunes": { + "keywords": [], + "children": [] + } + } + ] + } + } + ] + } + }, + { + "更多功能与进阶技巧": { + "keywords": [], + "children": [ + { + "iOS通知中心NotificaitonCenter的应用": { + "keywords": [], + "children": [ + { + "通知类Notification简介": { + "keywords": [], + "children": [] + } + }, + { + "通知中心NotificationCenter应用": { + "keywords": [], + "children": [] + } + } + ] + } + }, + { + "多线程开发技术": { + "keywords": [], + "children": [ + { + "使用Thread进行线程管理": { + "keywords": [], + "children": [] + } + }, + { + "使用Operation类与OperationQueue类进行多任务管理": { + "keywords": [], + "children": [] + } + }, + { + "iOS中GCD编程技术简介": { + "keywords": [], + "children": [] + } + } + ] + } + }, + { + "3D Touch技术的应用": { + "keywords": [], + "children": [ + { + "3D Touch的3大模块": { + "keywords": [], + "children": [] + } + }, + { + "Home Screen Quick Action使用与相关API详解": { + "keywords": [], + "children": [] + } + } + ] + } + }, + { + "iOS中语音识别技术的应用": { + "keywords": [], + "children": [ + { + "SpeechFramework框架中的重要类": { + "keywords": [], + "children": [] + } + }, + { + "申请用户语音识别权限与进行语音识别请求": { + "keywords": [], + "children": [] + } + } + ] + } + } + ] + } + } + ] + } + }, + { + "跨平台开发": { + "node_id": "569d5e11c4fc5de7844053d9a733c5e8", + "keywords": [], + "children": [ + { + "react native": { + "keywords": [], + "children": [] + } + }, + { + "NativeScript": { + "keywords": [], + "children": [] + } + }, + { + "Flutter": { + "keywords": [], + "children": [] + } + }, + { + "uni-app": { + "keywords": [], + "children": [] + } + } + ] + } + } + ] + } + }, + { + "桌面应用开发(GUI)": { + "node_id": "569d5e11c4fc5de7844053d9a733c5e8", + "keywords": [], + "children": [ + { + "Java桌面应用开发": { + "node_id": "569d5e11c4fc5de7844053d9a733c5e8", + "keywords": [], + "children": [] + } + }, + { + ".net桌面应用程序开发": { + "node_id": "569d5e11c4fc5de7844053d9a733c5e8", + "keywords": [], + "children": [] + } + }, + { + "跨平台桌面应用程序开发": { + "node_id": "569d5e11c4fc5de7844053d9a733c5e8", + "keywords": [], + "children": [ + { + "electron": { + "keywords": [], + "children": [ + { + "Electron和NW.js入门": { + "keywords": [], + "children": [ + { + "NW.js和Electron的起源": { + "keywords": [], + "children": [] + } + }, + { + "NW.js介绍": { + "keywords": [], + "children": [ + { + "使用NW.js构建Hello World应用": { + "keywords": [], + "children": [] + } + }, + { + "NW.js有哪些特性": { + "keywords": [], + "children": [] + } + } + ] + } + }, + { + "Electron介绍": { + "keywords": [], + "children": [ + { + "Electron是如何工作的以及它和NW.js的区别是什么": { + "keywords": [], + "children": [] + } + }, + { + "使用Electron开发Hello World应用": { + "keywords": [], + "children": [] + } + }, + { + "Electron有哪些特性": { + "keywords": [], + "children": [] + } + } + ] + } + }, + { + "NW.js和Electron支持创建哪类应用": { + "keywords": [], + "children": [ + { + "Slack": { + "keywords": [], + "children": [] + } + }, + { + "Light Table": { + "keywords": [], + "children": [] + } + }, + { + "Game Dev Tycoon": { + "keywords": [], + "children": [] + } + }, + { + "Gitter": { + "keywords": [], + "children": [] + } + }, + { + "Macaw": { + "keywords": [], + "children": [] + } + }, + { + "Hyper": { + "keywords": [], + "children": [] + } + } + ] + } + } + ] + } + }, + { + "为桌面应用搭建基础架构": { + "keywords": [], + "children": [ + { + "创建应用": { + "keywords": [], + "children": [ + { + "安装NW.js和Electron": { + "keywords": [], + "children": [] + } + }, + { + "为NW.js版本的应用创建文件和文件夹": { + "keywords": [], + "children": [] + } + }, + { + "为Electron版本的应用创建文件和文件夹": { + "keywords": [], + "children": [] + } + } + ] + } + }, + { + "实现启动界面": { + "keywords": [], + "children": [ + { + "在工具条中展示用户个人文件夹信息": { + "keywords": [], + "children": [] + } + }, + { + "显示用户个人文件夹中的文件和文件夹": { + "keywords": [], + "children": [] + } + } + ] + } + } + ] + } + }, + { + "构建你的桌面应用": { + "keywords": [], + "children": [ + { + "浏览文件夹": { + "keywords": [], + "children": [ + { + "重构代码": { + "keywords": [], + "children": [] + } + }, + { + "处理对文件夹的双击操作": { + "keywords": [], + "children": [] + } + } + ] + } + }, + { + "实现快速搜索": { + "keywords": [], + "children": [ + { + "在工具条中增加搜索框": { + "keywords": [], + "children": [] + } + }, + { + "引入一个内存搜索库.65": { + "keywords": [], + "children": [] + } + }, + { + "在界面上触发搜索功能.67": { + "keywords": [], + "children": [] + } + } + ] + } + }, + { + "改进应用内的导航功能": { + "keywords": [], + "children": [ + { + "实现当前文件夹路径可单击": { + "keywords": [], + "children": [] + } + }, + { + "让应用随着文件夹路径的改变显示对应的文件夹内容": { + "keywords": [], + "children": [] + } + }, + { + "实现使用默认应用打开对应的文件": { + "keywords": [], + "children": [] + } + } + ] + } + } + ] + } + }, + { + "分发你的桌面应用": { + "keywords": [], + "children": [ + { + "对应用进行与分发相关的设置": { + "keywords": [], + "children": [] + } + }, + { + "对要分发的应用进行打包": { + "keywords": [], + "children": [ + { + "使用一种NW.js的构建工具": { + "keywords": [], + "children": [] + } + }, + { + "使用一种Electron的构建工具": { + "keywords": [], + "children": [] + } + }, + { + "设置应用的图标": { + "keywords": [], + "children": [] + } + } + ] + } + }, + { + "在多个操作系统中测试应用": { + "keywords": [], + "children": [ + { + "Windows.操作系统": { + "keywords": [], + "children": [] + } + }, + { + "Linux.操作系统": { + "keywords": [], + "children": [] + } + }, + { + "Mac.OS.系统": { + "keywords": [], + "children": [] + } + } + ] + } + } + ] + } + } + ] + } + } + ] + } + } + ] + } + } + ] + } + } + ] + } +} \ No newline at end of file diff --git a/main.py b/main.py new file mode 100644 index 0000000..08e822c --- /dev/null +++ b/main.py @@ -0,0 +1,4 @@ +from src.tree import gen_tree + +if __name__ == '__main__': + gen_tree('data') diff --git a/src/tree.py b/src/tree.py new file mode 100644 index 0000000..3eba573 --- /dev/null +++ b/src/tree.py @@ -0,0 +1,122 @@ +from genericpath import exists +import json +import os +import uuid +import sys +import re + + +def load_json(p): + with open(p, 'r') 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: + print(f"{p} already exist") + sys.exit(0) + + with open(p, 'w') as f: + f.write(json.dumps(j, indent=2, ensure_ascii=False)) + + +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 gen_tree(data_path): + root = {} + + def gen_node_id(): + return ''.join(str(uuid.uuid5(uuid.NAMESPACE_URL, 'skill_tree')).split('-')) + + def list_dir(p): + v = os.listdir(p) + v.sort() + for no_name in v: + no_dir = os.path.join(p, no_name) + if os.path.isdir(no_dir): + yield no_dir, no_name + + def ensure_node_id(cfg_path, cfg): + if cfg.get('node_id') is None: + cfg['node_id'] = gen_node_id() + dump_json(cfg_path, cfg, exist_ok=True, override=True) + + def make_node(name, node_id, keywords, children=None): + node = {} + node_children = children or [] + node[name] = { + 'node_id': node_id, + 'keywords': keywords, + 'children': node_children + } + return node, node_children + + # 根节点 + cfg_path = os.path.join(data_path, 'config.json') + cfg = load_json(cfg_path) + ensure_node_id(cfg_path, cfg) + tree_node = { + "node_id": cfg['node_id'], + "keywords": cfg['keywords'], + "children": [] + } + root[cfg['tree_name']] = tree_node + + # 难度节点 + for level_no_dir, level_no_name in list_dir(data_path): + print(level_no_dir) + no, level_name = parse_no_name(level_no_name) + cfg_path = os.path.join(level_no_dir, 'config.json') + cfg = load_json(cfg_path) + ensure_node_id(cfg_path, cfg) + + level_node, level_node_children = make_node( + level_name, cfg['node_id'], cfg['keywords']) + tree_node['children'].append(level_node) + + # 章节点 + for chapter_no_dir, chapter_no_name in list_dir(level_no_dir): + no, chapter_name = parse_no_name(chapter_no_name) + cfg_path = os.path.join(chapter_no_dir, 'config.json') + ensure_node_id(cfg_path, cfg) + cfg = load_json(cfg_path) + + chapter_node, chapter_node_children = make_node( + chapter_name, cfg['node_id'], cfg['keywords']) + level_node_children.append(chapter_node) + + # 知识点 + for section_no_dir, section_no_name in list_dir(chapter_no_dir): + no, section_name = parse_no_name(section_no_name) + cfg_path = os.path.join(section_no_dir, 'config.json') + ensure_node_id(cfg_path, cfg) + cfg = load_json(cfg_path) + + section_node, section_node_children = make_node( + section_name, cfg['node_id'], cfg['keywords'], cfg['children']) + chapter_node_children.append(section_node) + + # 确保习题分配了习题ID + for export in cfg['export']: + if export.get('exercise_id') is None: + export['exercise_id'] = gen_node_id() + dump_json(cfg_path, cfg, exist_ok=True, override=True) + + # 保存技能树骨架 + tree_path = os.path.join(data_path, 'tree.json') + dump_json(tree_path, root, exist_ok=True, override=True) -- GitLab