{{ channel.id + channel.name }}
```
#### 21.2 引用到频道组件
+ 将 **文章列表组件** 引入到 **频道组件**,循环生成,并 将**频道数据** 传给 **文章列表组件**

## Day05.新闻列表组件
### 22.查询频道新闻列表
### 23.使用List组件渲染新闻
### 24.List组件触底加载
### 25.PullRefresh组件下拉更新
### 26.新闻去重显示
### 27.加载成功失败组件提示
## Day06.新闻列表项组件
### 文章列表组件
### 28.van-cell插槽
### 29.关于组件的Props
### 30.新闻项组件的样式和布局
### 31.图片referer属性
### 32.dayjs模块使用
### 33.过滤器与this
## Day07.频道编辑与搜索历史组件
### 34.频道编辑弹层显示
### 35.频道编辑组件
### 36.推荐频道数据来源
### 37.频道编辑组件基础样式
### 38.高亮显示选中频道
### 39.选择添加用户频道
### 40.持久化用户频道
+ 如果登录了,添加到数据库
+ 如果未登录,添加到localStroage
### 41.未登录用户频道保存
### 42.从本地读取频道数组
### 43.用户频道编辑状态
### 44.删除频道数据保持
### 45.频道白名单
### 46.搜索组件与路由配置
### 47.路由配置import易错
### 48.搜索历史组件
## Day08.搜索建议与结果组件
### 49.三个子组件的显示逻辑
### 50.取消与后退处理
### 51.搜索建议组件
### 52.通过侦听器请求建议数据
### 53.复习正则与字符串替换
### 54.高亮显示关键字
### 55.点击关键字显示搜索框
### 56.使用lodash实现关键字防抖
### 57.搜索结果组件与数据展示
## Day09.文章详情
### 58.文章详情组件
### 59.路由传参
### 60.文章数据请求与渲染
### 61.js大数字解决方案
### 62.统一请求详情状态码
### 63.模拟异常与异常处理
### 64.点击重试与重新加载
### 65.图片预览插件使用
## Day10.收藏与refreshToken
### 66.文章关注按钮组件
### 67.自定义组件与v-model
### 68.refreshToken机制1
### 69.refreshToken机制2
## 二.扩展
### 1.vue根组件替换
+ `./public/index.html` 文件 是一个模板,在**编译**和**执行**时使用

### 2.VueRouter源码的clone
```js
function clone (value) {
if (Array.isArray(value)) {
return value.map(clone)
} else if (value && typeof value === 'object') {
var res = {};
for (var key in value) {
res[key] = clone(value[key]);
}
return res
} else {
return value
}
}
```
### 3.Vue.use原理
+ 如果传入的 对象 有 install 方法,则会调用 它,完成批量组件注册

### 4.import 缓存

### 5.全局样式文件编译

### 6.格式化时修复错误
+ 显示和修复错误,需要两个 扩展插件+配置文件配合使用

#### 6.1 eslint扩展 修复代码
+ eslint 扩展工具 默认 **只检查** 规范问题,但 **不修复**
+ 为它配置开启修复功能:
+ 去 vscode 配置文件中设置

+ 代码:
```js
"editor.codeActionsOnSave": {
"source.fixAll.eslint": true
}
```
+ 配置好后,再保存代码文件时,就会自动修复了!
+ **问题:**只能修复 .js 文件,.vue 文件处理不了!
+ 如果要处理 .vue 文件,就需要 使用 格式化插件了
#### 6.2 vuter.prettier 修复代码
> vscode 的 Prettier 扩展工具专门用来格式化代码,所它也可以根据规范来格式化修复代码

+ 注意:此时,我们不需要单独安装它,因为 **vetur** 内置了 **prettier**
**如果已经单独安装了 Prettier,请禁用 或 卸载它,否则 会 影响 eslint 和 vetur 扩展的功能!**

##### 6.2.1 Vetur介绍
+ 功能:
+ 对 **.vue** 文件 做 语法着色
+ 对 **.vue** 代码做格式化( 通过 第三方的 格式化器 来做代码格式化 )
+ 什么时候做格式化呢?
+ 默认 是需要 右键菜单 `格式化文档` 来操作

+ 设置 vscode **保存时** 来格式化

##### 6.2.2 格式化时修复错误
+ 介绍:Vetur 内部模式使用 **prettier** 来格式化 .**vue 文件** 代码
+ 注意:
+ 语法规范检查 用的是 eslint 语法规范包(airbnb/standard/google/...)
+ 对.vue 格式化的 用的是 **prettier** 工具自己的语法规范
+ **这样容易产生冲突( prettiter 格式化后的 代码 不符合 eslint 的语法规范包,导致eslint报错)**
+ 解决方案:
+ 将 **prettier** 的语法规范 配置成 eslint 一致的规范!
##### 6.2.3 prettier 规范配置
+ 官网:https://prettier.io/docs/en/options.html
+ 创建 配置文件 `.prettierrc.js`
+ 配置 prettier规则:
```js
// 配置文件 -> .prettierrc.js
module.exports = {
// ------------------------最重要----------------------------
// 最大长度80个字符
printWidth: 80,
// 使用单引号, 默认false(在jsx中配置无效, 默认都是双引号)
singleQuote: true,
// 行末分号, 默认true
semi: false,
// 尽可能使用尾随逗号(包括函数参数),默认none,可选 none|es5|all
// es5 包括es5中的数组、对象
// all 包括函数对象等所有可选
trailingComma: 'none',
// ------------------------------------------------------------
// 对象字面量的大括号间使用空格(默认true) { a:1 }
bracketSpacing: true,
// 箭头函数参数括号 默认avoid 可选 avoid| always
// avoid 能省略括号的时候就省略 如x => x
// always 总是有括号 如(x) => x
arrowParens: 'always',
// tab缩进大小,默认为2
tabWidth: 2,
// 使用tab缩进还是空格,默认false
useTabs: false,
// ------------------------------------------------------------
// vue缩进脚本和样式
vueIndentScriptAndStyle: false,
// 在文件顶部插入一个特殊的 @format 标记,指定文件格式需要被格式化。
insertPragma: false,
// 行尾换行格式
endOfLine: 'auto',
// html空格敏感度
htmlWhitespaceSensitivity: 'ignore',
// jsx 中的 > 标签放在最后一行的末尾,而不是单独放在下一行 默认false
// jsxBracketSameLine: true,
// JSX双引号
// jsxSingleQuote: false,
};
```
> 大功告成,现在,项目 在打开代码文件后,会自动显示 规范错误
> 在保存代码时,可以自动格式化 并 修复代码错误啦~!
### 7.vscode代码片段
+ 作用:能快速 生成 模板代码
+ 步骤:
1. **vscode菜单**: -> 文件 -> 首选项 -> **用户片段**
2. 选择 **新建全局代码频段文件...**,并输入 文件名

3. 复制代码片段并保存:
```js
{
"vue文件结构": {
"prefix": "v2",
"body": [
"