提交 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
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": [
{
"页面布局": {
"keywords": [],
"children": [
{
"布局": {
"keywords": [],
"children": []
}
},
{
"颜色": {
"keywords": [],
"children": []
}
},
{
"图标": {
"keywords": [],
"children": []
}
},
{
"动画": {
"keywords": [],
"children": []
}
},
{
"按钮": {
"keywords": [],
"children": []
}
},
{
"表单": {
"keywords": [],
"children": []
}
},
{
"导航": {
"keywords": [],
"children": []
}
},
{
"菜单": {
"keywords": [],
"children": []
}
},
{
"选项卡": {
"keywords": [],
"children": []
}
},
{
"进度条": {
"keywords": [],
"children": []
}
},
{
"面板": {
"keywords": [],
"children": []
}
},
{
"表格": {
"keywords": [],
"children": []
}
},
{
"徽章": {
"keywords": [],
"children": []
}
},
{
"时间线": {
"keywords": [],
"children": []
}
},
{
"辅助": {
"keywords": [],
"children": []
}
}
]
}
},
{
"内置模块": {
"keywords": [],
"children": [
{
"弹出层": {
"keywords": [],
"children": []
}
},
{
"日期与时间选择": {
"keywords": [],
"children": []
}
},
{
"分页": {
"keywords": [],
"children": []
}
},
{
"模板引擎": {
"keywords": [],
"children": []
}
},
{
"数据表格": {
"keywords": [],
"children": []
}
},
{
"表单": {
"keywords": [],
"children": []
}
},
{
"文件上传": {
"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
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册