0
点赞
收藏
分享

微信扫一扫

项目心得四

编程练习生J 2022-03-12 阅读 50

时间过滤器dayjs的使用:官网地址

import dayjs from 'dayjs'
// 导入语言包
import 'dayjs/locale/zh-cn'
// 导入相对时间
import relativeTime from 'dayjs/plugin/relativeTime'
// 使用中文语言包
dayjs.locale('zh-cn')
// 注册相对时间插件
dayjs.extend(relativeTime)
// 定义全局的时间过滤器
Vue.filter('relativeTime', time => {
  return dayjs().to(dayjs(time))
})

v-if、v-else-if、v-else的组合使用

<!-- 搜索结果 -->
<search-result v-if="isResultShow" />
<!-- /搜索结果 -->

<!-- 联想建议 -->
<search-suggestion v-else-if="searchText" />
<!-- /联想建议 -->

<!-- 搜索历史记录 -->
<search-history v-else />
<!-- /搜索历史记录 -->

防抖优化lodash的使用:官网地址

// lodash 支持按需加载,有利于打包结果优化
import { debounce } from 'lodash'
----------------------------------------
  watch: {
    searchText: {
      handler: debounce(function (val) {
        console.log(val)
        this.getSuggestions(val)
      }, 200),
      immediate: true // 页面初始化就执行
    }
  },

搜索关键字高亮

1、在 methods 中添加一个方法处理高亮

highlight (text) {
    const highlightStr = `<span style="color:red;">${this.searchText}</span>`

    // 正则表达式 // 中间的内容都会当作匹配字符来使用,而不是数据变量
    // 如果需要根据数据变量动态的创建正则表达式,则手动 new RegExp
    // RegExp 正则表达式构造函数
    //    参数1:匹配模式字符串,它会根据这个字符串创建正则对象
    //    参数2:匹配模式,要写到字符串中
    const reg = new RegExp(this.searchText, 'gi')
    return text.replace(reg, highlightStr)
}

2、调用 v-html="highlight(item)":

<div slot="title" v-html="highLight(text)"></div>

举报

相关推荐

0 条评论