Chrome extension input 性能问题

2020-03-21 14:10:14 +08:00
 lnanddj

问题描述

input 表单再一个页面下出现非常非常严重的性能问题,输入非常卡顿,但是在其他页面引入该组件没有问题。另外,chrome 开发者工具调试性能开启后,瞬间丝滑。

问题出现的环境背景及自己尝试过哪些方法

环境 & 背景:

基于 Vue + Vue router + vuex + Vant UI 开发的 Chrome extension, 一个 popup 页面。

单独封装了一个 Reply.vue 的小组件,该组件很简单,只是显示一个输入框

<template>
  <van-popup
    v-model="showreplyPopup"
    position="bottom"
    :lock-scroll="false"
    :overlay="false"
    overlay-class="reply-popup"
    :style="{ height: '10%' }">
    <p>{{ replyContent }}</p>
    <form class="reply-popup-form">
      <textarea type="text" v-model="replyContent" placeholder="请留下您想说的" class="reply-popup-field" />
    </form>
  </van-popup>
</template>
<script>
export default {
  name: 'Reply',
  data() {
    return {
      showreplyPopup: true,
      replyContent: null,
    };
  },
  methods: {
  },
}

在另外一个路由的单页引用该组件后,出现问题。但是,在最外层放置 router-viewApp.vue 直接引用该组件却没有问题。

尝试

( 1 ) 起初怀疑是为了实现快捷键能力,监听了按键事件导致的

export function keyDown(e) {
  const ESC_KEY_CODE = 27;
  const W_KEY_CODE = 87;

  const keyCode = e.which;
  const realKey = String.fromCharCode(e.which);
  console.log('按键码: ' + keyCode + ' 字符: ' + realKey);
  // 用户按下 Esc 键
  if (keyCode === ESC_KEY_CODE) {
    e.preventDefault();
    // 关闭图片预览
    if (window.imagePreviewInstance) {
      window.imagePreviewInstance.close();
      window.imagePreviewInstance = null;
      return;
    }
    // 路由回退一步
    const meta = document.$router.history.current.meta;
    if (meta.routerLevel && meta.routerLevel > 1) {
      history.back();
    }
  }
  // 按下 ctrl + w
  if (keyCode === W_KEY_CODE && (navigator.platform.match('Mac') ? e.metaKey : e.ctrlKey)) {
    e.preventDefault();
    window.close();
  }
}

document.onkeydown = keyDown;

但是注释后问题依旧。 ( 2 )尝试使用 Chrome dev tool 的 Performance 排查,结果打开之后,瞬间就丝滑了起来,无果。 ( 3 )在打包后的 popup 文件夹直接浏览器打开页面,不使用 Chrome extension 方式打开,无卡顿。 ( 4 )不是浏览器卡了,尝试了重启浏览器。 ( 5 )怀疑是 vue 的双向绑定导致,去掉 v-model,输入还是卡顿。

期待各位前端大神解答,或者给予排查的思路,非常感谢。

1576 次点击
所在节点    前端开发
3 条回复
lnanddj
2020-03-21 14:35:50 +08:00
有点奇怪的是,为啥使用 Chrome dev tool 的 Performance 排查的时候,就不卡了。。。
lnanddj
2020-03-22 10:43:46 +08:00
在线等
lnanddj
2020-03-23 09:48:51 +08:00
1

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/654851

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX