Enable custom fromatters格式化硬盘日

lxf2023-05-03 00:38:01

一、简述

vue3代码中如下所示编码:

if (__DEV__) {
  initDev()
}

// 具体调用的是
import { initCustomFormatter } from '@vue/runtime-dom'
initCustomFormatter()

在看源码之前要先看看实际效果:

Enable custom fromatters格式化硬盘日

假如关掉Custom Formatters则打印实际效果如下所示:

Enable custom fromatters格式化硬盘日

比照之上就会发现格式化硬盘以后的log日志美观性和结构型清楚许多,那这是如何实现的呢?

二、官方文档及其汉语翻译

官方文档

汉语翻译

三、源代码完成

源代码途径packages/runtime-core/src/customFormatter.ts

下列对于ref、reactive、shallowReactive、readOnly、shallowReadonly等算法设计格式化硬盘

  const formatter = {
    header(obj: unknown) {
      // TODO also format ComponentPublicInstance & ctx.slots/attrs in setup
      if (!isObject(obj)) {
        return null
      }

      if (obj.__isVue) {
        return ['div', vueStyle, `VueInstance`]
      } else if (isRef(obj)) {
        return [
          'div',
          {},
          ['span', vueStyle, genRefFlag(obj)],
          '<',
          formatValue(obj.value),
          `>`
        ]
      } else if (isReactive(obj)) {
        return [
          'div',
          {},
          ['span', vueStyle, isShallow(obj) ? 'ShallowReactive' : 'Reactive'],
          '<',
          formatValue(obj),
          `>${isReadonly(obj) ? ` (readonly)` : ``}`
        ]
      } else if (isReadonly(obj)) {
        return [
          'div',
          {},
          ['span', vueStyle, isShallow(obj) ? 'ShallowReadonly' : 'Readonly'],
          '<',
          formatValue(obj),
          '>'
        ]
      }
      return null
    },
    hasBody(obj: unknown) {
      return obj && (obj as any).__isVue
    },
    body(obj: unknown) {
      if (obj && (obj as any).__isVue) {
        return [
          'div',
          {},
          ...formatInstance((obj as ComponentPublicInstance).$)
        ]
      }
    }
  }

vue、数据、字符串数组等部件设定款式导出:

  const vueStyle = { style: 'color:#3ba776' }
  const numberStyle = { style: 'color:#0b1bc9' }
  const stringStyle = { style: 'color:#b62e24' }
  const keywordStyle = { style: 'color:#9d288c' }

四、运用

在vue3的设计中,大家打开了Enable custom fromatters以后就可以按期见到格式化硬盘以后的log日志。

打开Enable custom fromatters Enable custom fromatters格式化硬盘日

格式化硬盘日志打印质量:

Enable custom fromatters格式化硬盘日

五、汇总

在我们在具体的设计中,也可以结合一些算法设计格式化输出,以提高我们自己的研发效率。

本站是一个以CSS、JavaScript、Vue、HTML为中心的前端开发技术网址。我们的使命是为众多前端工程师者提供全方位、全方位、好用的前端工程师专业知识和技术服务。 在网站上,大家可以学到最新前端开发技术,掌握前端工程师最新发布的趋势和良好实践。大家提供大量实例教程和实例,让大家可以快速上手前端工程师的关键技术和程序。 本站还提供了一系列好用的工具软件,帮助你更高效地开展前端工程师工作中。公司提供的一种手段和软件都要经过精心策划和改进,能够帮助你节约时间精力,提高研发效率。 此外,本站还拥有一个有活力的小区,你可以在社区里与其它前端工程师者沟通交流技术性、交流经验、处理问题。我们坚信,街道的能量能够帮助你能够更好地进步与成长。 在网站上,大家可以寻找你需要的一切前端工程师网络资源,使您成为一名更加出色的网页开发者。欢迎你添加我们的大家庭,一起探索前端工程师的无限潜能!