2周年

112 阅读3分钟

1.项目主要工作

就职于商业化前端部门,开发面向公司所有一线销售使用的双端销售平台“智子”。主要负责活动,线索,试驾业务的需求开发以及工程化改造。

2.项目的前端设计方式

3.项目中遇到的难点及解决方案

1.线索与活动微前端的拆分

1.为什么是微前端

一开始商业化前端各业务的代码在一个大工程,很容易互相覆盖。且上线困难。使用微前端能够让各业务解耦,独立开发。同时可以快速的嵌套其他平台的能力(如雷神平台的数据看班,擎天柱的c端管理平台等等)

iframe缺点: dom结构不共享,通信靠postMessage比较麻烦

image.png

image.png

2.微前端配置中心(nest)

3.试驾日历排程组件

1.一开始进入:canvas绘制骨架屏时间块。
2.点选事件后,获得对应的横纵坐标,拿到具体哪一个“块”,之后触发对应事件。如果时间已过,就阻止事件冒泡。

image.png

4.h5详情页虚拟列表

5.sentry性能与错误监控报警

4.介绍一个你认为不错的项目

5.你在项目中用到的项目优化有哪些

1.如何拿到fcp,lcp这些数据的

sentry通过performanceObserver这个原生api获得

if (window.PerformanceObserver && window.performance.getEntriesByType) {  
  // 创建一个新的 PerformanceObserver 实例  
  const observer = new PerformanceObserver((list) => {  
    for (const entry of list.getEntries()) {  
      // 检查条目类型是否为 'largest-contentful-paint'  
      if (entry.entryType === 'largest-contentful-paint') {  
        // 输出 LCP 时间(以毫秒为单位)  
        console.log('LCP:', entry.startTime);  
  
        // 如果你不再需要监听,可以取消观察  
        // observer.disconnect();  
      }  
    }  
  });  
  
  // 设置观察器选项以监听 'largest-contentful-paint' 事件  
  const options = {  
    entryTypes: ['largest-contentful-paint'],  
  };  
  
  // 开始观察  
  observer.observe(window.performance, options);  
} else {  
  // 不支持 PerformanceObserver 或 getEntriesByType 的浏览器回退  
  console.log('Your browser does not support PerformanceObserver or getEntriesByType.');  
}

我们也可以通过web-vital这种第三方库获得。

2.具体在项目中是如何缩短lcp的呢

  1. 图片比较大,压缩图片,将图片转为JPEG或SVG格式(文件较小),然后将图片上传到百度云,减小项目总打包体积。
  2. cdn,一些较为静态的资源如index.js和图片等通常是不变的,频繁的向源服务器请求可能会造成服务器的负载。可以将这些存储在边缘节点(cdn)上供后续请求使用。
  3. preload,prefetxh,preconnect,dns-prefetch

preload会预先加载当前页面高优先级的资源,prefetch会在空闲时加载后续可能会用到的资源

4.vite的gzip和esbuild的treeShaking

  1. 虚拟列表(app),多选框全选卡顿(遍历树反选),异步组件加载
{ path: '/xx', component: () => import(/* webpackChunkName: "xx" */ '@/views/xx.vue') }
  1. 可能引起reflow重排的操作
  • 改变元素尺寸,比如边距、填充、边框、宽度和高度等
  • 改变元素内容,比如文字数量,图片大小等
  • 改变元素字体大小
  • 改变浏览器窗口尺寸,比如resize事件发生时
  • 激活CSS伪类(例如::hover

减少reflow的操作

使用css3动画代替js动画

合并样式修改,将多个属性写为一个类,合并多个方向的padding,margin。在尽量在父元素设置好font属性等

减少calc的使用

8.离线包的使用(待定)

image.png

1.目前工作两年半,希望在市场验证一下自身定位和水平。同时公司暂不提供晋升与涨薪途径

2.工作是开发jidu汽车双端商业化系统,主要负责所有售前业务(营销,线索,试驾),为公司1000+一线销售人员服务,提供可靠的web端和app端页面。为他们提供从接触新用户到试驾完成的全链路操作。同时也需要负责业务与中台基础架构的对接(微前端,加密,灰度,js桥等等)。

uv800,pv60000

主要成长: 微前端XXX,性能优化XXX,js桥,封装组件,骨架屏等等

评价的话:愿意接受挑战的事,负责肯干。