toutiao-m项目记录一|青训营笔记

66 阅读2分钟

这是我参与「第四届青训营 」笔记创作活动的第11天

1.首页

  • 不同频道间的滚动会互相影响原因为:实际滚动的为body元素

    解决方案:为article组件设置一定的高度使得滚动的元素改为article元素

  • css3新增视口单位 vw和vh,不受父元素影响

    1vw=可视窗口的百分之一

    1vh=可视窗口高度的百分之一

  • flex:unset 意思为重置为初始值即取消flex布局

  • &:not(:last-child) 不包含最后一个子节点

  • 防止外站图片获取失败

处理相对时间的第三方库

Moment.js

Day.js 更轻量

注:默认为英文 需配置中文

由于时间在很多组件中使用因此使用过滤器

定义一个全局过滤器,可以在任何组件模板中使用,相当于一个全局可用的方法

2.频道编辑

补充

  • white-space:nowrap

  • v-bind:class 语法:一个对象

    对象中的key表示要作用的css类名

    对象中的value要计算出布尔值

    true则作用该类名,false则补作用该类名

  • // 数组的filter方法,遍历数组,把符合条件的元素储存到新数组里

    return this.allChannels.filter(channel => {

    return !this.Mychannels.find(mychannels => {

    return mychannels.id === channel.id

    })

    })

  • 计算属性会观测内部依赖数据的变化,若依赖的数据发生变化则计算属性会重新执行

  • 数组方法之 arr.includes()方法

    判断数组中是否包含括号内的内容

  • 子组件需要修改父组件传向子组件中的值(即props中的值)需通过this.$emit()触发自定义事件

  • arr.splice(a,b) a:要删除的元素的索引 b:共要删几个元素

函数防抖--Lodash

debounce函数

vue组件中如何渲染带有标签的字符串

使用v-html指令可以绑定渲染带有html标签的字符串

字符串的替换方法实现搜索字符的高亮

  • str.replace(a,b) a将要被替换的字符串 b:a替换为b字符串

  • 但只能替换一个 不修改原来的字符串,而是返回一个新的字符串

  • a可以使用正则表达式

  • 如果需要根据数据变量动态创建正则表达式,则手动new RegExp(a,b)

    • a:匹配模式字符串,根据此字符串创建正则对象
    • b:匹配模式要写到字符串中
    • 例: const reg=new RegExp(this.searchText,'gi') 注:g全局 i忽略大小写