“fbcecddfce21db87ee2ccf5b6dfc23b69b70a455”上不存在“cmake/git@gitcode.net:RobotFutures/Paddle.git”
提交 e36e486a 编写于 作者: F feilong

init skill_tree_web dir, add readme

上级 fc7c62a1
.vscode
.idea
.DS_Store
__pycache__
*.pyc
*.zip
\ No newline at end of file
# skill_tree_web # 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` 字段,如果不存在则生成
{
"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
{
"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
{
"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
{
"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
{
"node_id": "569d5e11c4fc5de7844053d9a733c5e8",
"keywords": [],
"children": [
{
"EcmaScript标准": {
"keywords": [],
"children": []
}
},
{
"JavaScript标准": {
"keywords": [],
"children": []
}
}
],
"export": []
}
\ No newline at end of file
{
"node_id": "569d5e11c4fc5de7844053d9a733c5e8",
"keywords": []
}
\ No newline at end of file
{
"node_id": "569d5e11c4fc5de7844053d9a733c5e8",
"keywords": [],
"children": [
{
"Sublime Text": {
"keywords": [],
"children": []
}
},
{
"Visual Studio Code": {
"keywords": [],
"children": []
}
},
{
"WebStorm": {
"keywords": [],
"children": []
}
}
],
"export": []
}
\ No newline at end of file
{
"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
{
"node_id": "569d5e11c4fc5de7844053d9a733c5e8",
"keywords": [],
"children": [
{
"Photoshop": {
"keywords": [],
"children": []
}
},
{
"Sketch": {
"keywords": [],
"children": []
}
}
],
"export": []
}
\ No newline at end of file
{
"node_id": "569d5e11c4fc5de7844053d9a733c5e8",
"keywords": [],
"children": [
{
"Git": {
"keywords": [],
"children": []
}
},
{
"SVN": {
"keywords": [],
"children": []
}
}
],
"export": []
}
\ No newline at end of file
{
"node_id": "569d5e11c4fc5de7844053d9a733c5e8",
"keywords": []
}
\ No newline at end of file
{
"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
{
"node_id": "569d5e11c4fc5de7844053d9a733c5e8",
"keywords": [],
"children": [
{
"常用属性": {
"keywords": [],
"children": [
{
"class、id、style、title": {
"keywords": [],
"children": []
}
}
]
}
},
{
"全局属性": {
"keywords": [],
"children": []
}
}
],
"export": []
}
\ No newline at end of file
{
"node_id": "569d5e11c4fc5de7844053d9a733c5e8",
"keywords": [],
"children": [
{
"窗口事件": {
"keywords": [],
"children": []
}
},
{
"表单事件": {
"keywords": [],
"children": []
}
},
{
"键盘事件": {
"keywords": [],
"children": []
}
},
{
"鼠标事件": {
"keywords": [],
"children": []
}
},
{
"多媒体事件": {
"keywords": [],
"children": []
}
}
],
"export": []
}
\ No newline at end of file
{
"node_id": "569d5e11c4fc5de7844053d9a733c5e8",
"keywords": [],
"children": [
{
"URL编码": {
"keywords": [],
"children": []
}
},
{
"语言代码": {
"keywords": [],
"children": []
}
},
{
"字符集": {
"keywords": [],
"children": []
}
}
],
"export": []
}
\ No newline at end of file
{
"node_id": "569d5e11c4fc5de7844053d9a733c5e8",
"keywords": []
}
\ No newline at end of file
{
"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
{
"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
{
"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
{
"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
{
"node_id": "569d5e11c4fc5de7844053d9a733c5e8",
"keywords": [],
"children": [
{
"背景": {
"keywords": [],
"children": []
}
},
{
"文本": {
"keywords": [],
"children": []
}
},
{
"轮廓": {
"keywords": [],
"children": []
}
},
{
"列表": {
"keywords": [],
"children": []
}
}
],
"export": []
}
\ No newline at end of file
{
"node_id": "569d5e11c4fc5de7844053d9a733c5e8",
"keywords": [],
"children": [
{
"Animation": {
"keywords": [],
"children": []
}
},
{
"transition": {
"keywords": [],
"children": []
}
}
],
"export": []
}
\ No newline at end of file
{
"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
{
"node_id": "569d5e11c4fc5de7844053d9a733c5e8",
"keywords": []
}
\ No newline at end of file
{
"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
{
"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
{
"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
{
"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
{
"node_id": "569d5e11c4fc5de7844053d9a733c5e8",
"keywords": [],
"children": [
{
"原型链、继承": {
"keywords": [],
"children": []
}
},
{
"F.prototype": {
"keywords": [],
"children": []
}
},
{
"Object.prototype": {
"keywords": [],
"children": []
}
}
],
"export": []
}
\ No newline at end of file
{
"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
{
"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
{
"node_id": "569d5e11c4fc5de7844053d9a733c5e8",
"keywords": [],
"children": [
{
"commonJS": {
"keywords": [],
"children": []
}
},
{
"amd、cmd、umd、es-module": {
"keywords": [],
"children": []
}
}
],
"export": []
}
\ No newline at end of file
{
"node_id": "569d5e11c4fc5de7844053d9a733c5e8",
"keywords": [],
"children": [
{
"try…catch…finally": {
"keywords": [],
"children": []
}
},
{
"throw": {
"keywords": [],
"children": []
}
},
{
"Error": {
"keywords": [],
"children": []
}
}
],
"export": []
}
\ No newline at end of file
{
"node_id": "569d5e11c4fc5de7844053d9a733c5e8",
"keywords": []
}
\ No newline at end of file
{
"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
{
"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
{
"node_id": "569d5e11c4fc5de7844053d9a733c5e8",
"keywords": [],
"children": [
{
"XHR": {
"keywords": [],
"children": []
}
},
{
"Fetch": {
"keywords": [],
"children": []
}
},
{
"JSONP": {
"keywords": [],
"children": []
}
},
{
"WebSocket": {
"keywords": [],
"children": []
}
}
],
"export": []
}
\ No newline at end of file
{
"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
{
"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
{
"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
{
"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
{
"node_id": "569d5e11c4fc5de7844053d9a733c5e8",
"keywords": []
}
\ No newline at end of file
{
"node_id": "569d5e11c4fc5de7844053d9a733c5e8",
"keywords": [],
"children": [
{
"认识jQuery": {
"keywords": [],
"children": []
}
},
{
"使用jQuery": {
"keywords": [],
"children": []
}
}
],
"export": []
}
\ No newline at end of file
{
"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
{
"node_id": "569d5e11c4fc5de7844053d9a733c5e8",
"keywords": [],
"children": [
{
"拖放": {
"keywords": [],
"children": [
{
"拖动对象": {
"keywords": [],
"children": []
}
},
{
"投放对象": {
"keywords": [],
"children": []
}
}
]
}
},
{
"缩放": {
"keywords": [],
"children": []
}
},
{
"选择": {
"keywords": [],
"children": []
}
},
{
"排序": {
"keywords": [],
"children": []
}
}
],
"export": []
}
\ No newline at end of file
{
"node_id": "569d5e11c4fc5de7844053d9a733c5e8",
"keywords": [],
"children": [
{
"选项卡": {
"keywords": [],
"children": []
}
},
{
"手风琴": {
"keywords": [],
"children": []
}
},
{
"对话框": {
"keywords": [],
"children": []
}
},
{
"滑动条": {
"keywords": [],
"children": []
}
},
{
"日期选择器": {
"keywords": [],
"children": []
}
}
],
"export": []
}
\ No newline at end of file
{
"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
{
"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
{
"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
{
"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
{
"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
{
"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
{
"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
{
"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
{
"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
{
"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
{
"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
{
"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
{
"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
{
"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
{
"node_id": "569d5e11c4fc5de7844053d9a733c5e8",
"keywords": []
}
\ No newline at end of file
{
"node_id": "569d5e11c4fc5de7844053d9a733c5e8",
"keywords": [],
"children": [],
"export": []
}
\ No newline at end of file
{
"node_id": "569d5e11c4fc5de7844053d9a733c5e8",
"keywords": [],
"children": [],
"export": []
}
\ No newline at end of file
{
"node_id": "569d5e11c4fc5de7844053d9a733c5e8",
"keywords": [],
"children": [],
"export": []
}
\ No newline at end of file
{
"node_id": "569d5e11c4fc5de7844053d9a733c5e8",
"keywords": [],
"children": [],
"export": []
}
\ No newline at end of file
{
"node_id": "569d5e11c4fc5de7844053d9a733c5e8",
"keywords": [],
"children": [],
"export": []
}
\ No newline at end of file
{
"node_id": "569d5e11c4fc5de7844053d9a733c5e8",
"keywords": []
}
\ No newline at end of file
{
"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
{
"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
{
"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
{
"node_id": "569d5e11c4fc5de7844053d9a733c5e8",
"keywords": [],
"children": [],
"export": []
}
\ No newline at end of file
{
"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
{
"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
{
"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
{
"node_id": "569d5e11c4fc5de7844053d9a733c5e8",
"keywords": [],
"children": [
{
"获取当前位置": {
"keywords": [],
"children": []
}
},
{
"监视位置变化": {
"keywords": [],
"children": []
}
},
{
"来半斤Google maps尝尝": {
"keywords": [],
"children": []
}
},
{
"开发者工具": {
"keywords": [],
"children": []
}
}
],
"export": []
}
\ No newline at end of file
{
"node_id": "569d5e11c4fc5de7844053d9a733c5e8",
"keywords": [],
"children": [
{
"单线程语言之殇": {
"keywords": [],
"children": []
}
},
{
"为JavaScript引入线程技术": {
"keywords": [],
"children": []
}
},
{
"嵌入式Worker代码": {
"keywords": [],
"children": []
}
},
{
"共享Worker": {
"keywords": [],
"children": []
}
}
],
"export": []
}
\ No newline at end of file
{
"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
{
"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
{
"node_id": "569d5e11c4fc5de7844053d9a733c5e8",
"keywords": [],
"children": [
{
"感知方向(orientation)和动作(motion)": {
"keywords": [],
"children": []
}
},
{
"音视频捕获": {
"keywords": [],
"children": []
}
}
],
"export": []
}
\ No newline at end of file
{
"node_id": "569d5e11c4fc5de7844053d9a733c5e8",
"keywords": []
}
\ No newline at end of file
{
"node_id": "569d5e11c4fc5de7844053d9a733c5e8",
"keywords": []
}
\ No newline at end of file
{
"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
{
"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
{
"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
{
"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
{
"node_id": "569d5e11c4fc5de7844053d9a733c5e8",
"keywords": []
}
\ No newline at end of file
{
"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
{
"node_id": "569d5e11c4fc5de7844053d9a733c5e8",
"keywords": [],
"children": [
{
"统计学": {
"keywords": [],
"children": []
}
},
{
"平面几何": {
"keywords": [],
"children": []
}
},
{
"线性代数": {
"keywords": [],
"children": []
}
},
{
"离散数学": {
"keywords": [],
"children": []
}
}
],
"export": []
}
\ No newline at end of file
{
"node_id": "569d5e11c4fc5de7844053d9a733c5e8",
"keywords": [],
"children": [
{
"色彩": {
"keywords": [],
"children": []
}
},
{
"图形": {
"keywords": [],
"children": []
}
},
{
"动画": {
"keywords": [],
"children": []
}
},
{
"格式塔理论": {
"keywords": [],
"children": []
}
}
],
"export": []
}
\ No newline at end of file
{
"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
{
"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
{
"node_id": "569d5e11c4fc5de7844053d9a733c5e8",
"keywords": [],
"children": [
{
"监控可视化": {
"keywords": [],
"children": []
}
},
{
"关系可视分析": {
"keywords": [],
"children": []
}
},
{
"金融数据可视化": {
"keywords": [],
"children": []
}
},
{
"商业智能可视化": {
"keywords": [],
"children": []
}
}
],
"export": []
}
\ No newline at end of file
{
"node_id": "569d5e11c4fc5de7844053d9a733c5e8",
"keywords": []
}
\ No newline at end of file
{
"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
{
"node_id": "569d5e11c4fc5de7844053d9a733c5e8",
"keywords": [],
"children": [
{
"babel": {
"keywords": [],
"children": []
}
},
{
"tsc": {
"keywords": [],
"children": []
}
},
{
"esbuild": {
"keywords": [],
"children": []
}
}
],
"export": []
}
\ No newline at end of file
{
"node_id": "569d5e11c4fc5de7844053d9a733c5e8",
"keywords": [],
"children": [
{
"V8": {
"keywords": [],
"children": []
}
},
{
"SpiderMonkey": {
"keywords": [],
"children": []
}
},
{
"JavaScriptCore": {
"keywords": [],
"children": []
}
}
],
"export": []
}
\ No newline at end of file
{
"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
{
"node_id": "569d5e11c4fc5de7844053d9a733c5e8",
"keywords": []
}
\ No newline at end of file
{
"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
{
"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
{
"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
{
"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
{
"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
{
"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
{
"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
{
"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
{
"node_id": "569d5e11c4fc5de7844053d9a733c5e8",
"keywords": []
}
\ No newline at end of file
{
"node_id": "569d5e11c4fc5de7844053d9a733c5e8",
"keywords": [],
"children": [],
"export": []
}
\ No newline at end of file
{
"node_id": "569d5e11c4fc5de7844053d9a733c5e8",
"keywords": [],
"children": [],
"export": []
}
\ No newline at end of file
{
"node_id": "569d5e11c4fc5de7844053d9a733c5e8",
"keywords": [],
"children": [],
"export": []
}
\ No newline at end of file
{
"node_id": "569d5e11c4fc5de7844053d9a733c5e8",
"keywords": []
}
\ No newline at end of file
{
"node_id": "569d5e11c4fc5de7844053d9a733c5e8",
"keywords": [],
"children": [
{
"gulp": {
"keywords": [],
"children": []
}
},
{
"npm脚本": {
"keywords": [],
"children": []
}
}
],
"export": []
}
\ No newline at end of file
{
"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
{
"node_id": "569d5e11c4fc5de7844053d9a733c5e8",
"keywords": []
}
\ No newline at end of file
{
"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
{
"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
{
"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
{
"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
{
"node_id": "569d5e11c4fc5de7844053d9a733c5e8",
"keywords": []
}
\ No newline at end of file
{
"node_id": "569d5e11c4fc5de7844053d9a733c5e8",
"keywords": [],
"children": [],
"export": []
}
\ No newline at end of file
{
"node_id": "569d5e11c4fc5de7844053d9a733c5e8",
"keywords": [],
"children": [],
"export": []
}
\ No newline at end of file
{
"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
{
"node_id": "569d5e11c4fc5de7844053d9a733c5e8",
"keywords": []
}
\ No newline at end of file
{
"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
{
"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
{
"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
{
"node_id": "569d5e11c4fc5de7844053d9a733c5e8",
"keywords": []
}
\ No newline at end of file
{
"node_id": "569d5e11c4fc5de7844053d9a733c5e8",
"keywords": []
}
\ No newline at end of file
{
"node_id": "569d5e11c4fc5de7844053d9a733c5e8",
"keywords": [],
"children": [],
"export": []
}
\ No newline at end of file
{
"node_id": "569d5e11c4fc5de7844053d9a733c5e8",
"keywords": [],
"children": [],
"export": []
}
\ No newline at end of file
{
"node_id": "569d5e11c4fc5de7844053d9a733c5e8",
"keywords": [],
"children": [],
"export": []
}
\ No newline at end of file
{
"node_id": "569d5e11c4fc5de7844053d9a733c5e8",
"keywords": []
}
\ No newline at end of file
{
"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
{
"node_id": "569d5e11c4fc5de7844053d9a733c5e8",
"keywords": [],
"children": [
{
"实例属性": {
"keywords": [],
"children": [
{
"组件树访问": {
"keywords": [],
"children": []
}
},
{
"DOM访问": {
"keywords": [],
"children": []
}
},
{
"数据访问": {
"keywords": [],
"children": []
}
}
]
}
}
],
"export": []
}
\ No newline at end of file
{
"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
{
"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
{
"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
{
"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
{
"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
{
"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
{
"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
{
"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
{
"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
{
"node_id": "569d5e11c4fc5de7844053d9a733c5e8",
"keywords": [],
"children": [
{
"语法": {
"keywords": [],
"children": [
{
"插值": {
"keywords": [],
"children": []
}
},
{
"表达式": {
"keywords": [],
"children": []
}
},
{
"指令": {
"keywords": [],
"children": []
}
}
]
}
},
{
"分隔符": {
"keywords": [],
"children": []
}
}
],
"export": []
}
\ No newline at end of file
{
"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
{
"node_id": "569d5e11c4fc5de7844053d9a733c5e8",
"keywords": [],
"children": [
{
"策略是什么": {
"keywords": [],
"children": [
{
"生命周期合并策略": {
"keywords": [],
"children": []
}
},
{
"属性方法计算": {
"keywords": [],
"children": []
}
},
{
"数据合并策略": {
"keywords": [],
"children": []
}
}
]
}
}
],
"export": []
}
\ No newline at end of file
{
"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
{
"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
{
"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
{
"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
{
"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
{
"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
{
"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
{
"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
{
"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
{
"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
{
"node_id": "569d5e11c4fc5de7844053d9a733c5e8",
"keywords": []
}
\ No newline at end of file
{
"node_id": "569d5e11c4fc5de7844053d9a733c5e8",
"keywords": [],
"children": [
{
"搭建AngularJS开发环境": {
"keywords": [],
"children": [
{
"选择集成开发工具": {
"keywords": [],
"children": []
}
},
{
"下载与安装AngularJS": {
"keywords": [],
"children": []
}
},
{
"代码调试工具": {
"keywords": [],
"children": []
}
}
]
}
}
],
"export": []
}
\ No newline at end of file
{
"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
{
"node_id": "569d5e11c4fc5de7844053d9a733c5e8",
"keywords": [],
"children": [
{
"依赖注入实现": {
"keywords": [],
"children": []
}
},
{
"AngularJS中的依赖注入": {
"keywords": [],
"children": []
}
},
{
"$provide服务介绍": {
"keywords": [],
"children": []
}
},
{
"$injector服务介绍": {
"keywords": [],
"children": []
}
}
],
"export": []
}
\ No newline at end of file
{
"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
{
"node_id": "569d5e11c4fc5de7844053d9a733c5e8",
"keywords": [],
"children": [
{
"Cookie简介": {
"keywords": [],
"children": []
}
},
{
"在中操作Cookie": {
"keywords": [],
"children": []
}
},
{
"在AngularJS中操作Cookie": {
"keywords": [],
"children": []
}
}
],
"export": []
}
\ No newline at end of file
{
"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
{
"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
{
"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
{
"node_id": "569d5e11c4fc5de7844053d9a733c5e8",
"keywords": [],
"children": [
{
"AngularJS双向数据绑定": {
"keywords": [],
"children": []
}
},
{
"ng-model指令": {
"keywords": [],
"children": []
}
},
{
"ng-bind指令": {
"keywords": [],
"children": []
}
}
],
"export": []
}
\ No newline at end of file
{
"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
{
"node_id": "569d5e11c4fc5de7844053d9a733c5e8",
"keywords": [],
"children": [
{
"应用模块划分的重要性": {
"keywords": [],
"children": []
}
},
{
"AngularJS中的模块": {
"keywords": [],
"children": [
{
"AngularJS模块的定义": {
"keywords": [],
"children": []
}
},
{
"使用模块解决命名冲突问题": {
"keywords": [],
"children": []
}
}
]
}
}
],
"export": []
}
\ No newline at end of file
{
"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
{
"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
{
"node_id": "569d5e11c4fc5de7844053d9a733c5e8",
"keywords": [],
"children": [
{
"Web前端表单校验的必要性": {
"keywords": [],
"children": []
}
},
{
"AngularJS表单校验模式": {
"keywords": [],
"children": []
}
},
{
"ngMessages模块": {
"keywords": [],
"children": []
}
}
],
"export": []
}
\ No newline at end of file
{
"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
{
"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
{
"node_id": "569d5e11c4fc5de7844053d9a733c5e8",
"keywords": []
}
\ No newline at end of file
{
"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
{
"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
{
"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
{
"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
{
"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
{
"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
{
"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
{
"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
{
"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
{
"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
{
"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
{
"node_id": "569d5e11c4fc5de7844053d9a733c5e8",
"keywords": []
}
\ No newline at end of file
{
"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
{
"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
{
"node_id": "569d5e11c4fc5de7844053d9a733c5e8",
"keywords": []
}
\ No newline at end of file
{
"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
{
"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
{
"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
{
"node_id": "569d5e11c4fc5de7844053d9a733c5e8",
"keywords": []
}
\ No newline at end of file
{
"node_id": "569d5e11c4fc5de7844053d9a733c5e8",
"keywords": [],
"children": [],
"export": []
}
\ No newline at end of file
{
"node_id": "569d5e11c4fc5de7844053d9a733c5e8",
"keywords": [],
"children": [],
"export": []
}
\ No newline at end of file
{
"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
{
"node_id": "569d5e11c4fc5de7844053d9a733c5e8",
"keywords": []
}
\ No newline at end of file
{
"node_id": "569d5e11c4fc5de7844053d9a733c5e8",
"keywords": []
}
\ No newline at end of file
{
"tree_name": "web",
"keywords": [],
"node_id": "569d5e11c4fc5de7844053d9a733c5e8"
}
\ No newline at end of file
因为 它太大了无法显示 source diff 。你可以改为 查看blob
from src.tree import gen_tree
if __name__ == '__main__':
gen_tree('data')
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)
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册