小编Joh*_*ofy的帖子

如何使用 babel / core-js 检测功能并仅延迟加载所需的 polyfills?

polyfill.io这样的 Polyfill 服务似乎只向浏览器提供小功能检测,然后只延迟加载实际需要的 polyfill。

据我了解关于 polyfillingbabel 文档,babel 总是包含全套可能需要的 polyfill:它会处理 a browserslist,然后包含最弱浏览器需要的 core-js 中的那些 polyfill。像 webpack 这样的打包器可能会将所有这些 polyfill 合并到应用程序中,但不会检测到运行时功能。

我的应用程序使用现代 ES 语言功能,但也针对各种浏览器,包括 IE10 和 IE11。这需要大量的 polyfill,并且可能会使包膨胀,尤其是对于可能不需要大部分 polyfill 的现代浏览器。

所以我想知道:我可以告诉 babel 和/或 webpack 只包含功能检测,将 polyfill 分成单独的块(单独或分成小包),然后在运行时,只“懒惰”加载实际上是什么需要吗?

lazy-loading feature-detection polyfills babeljs core-js

9
推荐指数
1
解决办法
1136
查看次数

如何使用 Sentry 捕获*所有*错误和异常?

console在 Chrome 中我的页面中出现的 24 个错误中,Sentry 只记录了一个。

我遵循了文档并确保 Sentry<head>在页面中加载和初始化,在 jQuery 之后,但在我们的 CMS 供应商代码和自定义包之前:

<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.4.1/jquery.min.js"></script>
<script src="https://browser.sentry-cdn.com/5.8.0/bundle.min.js" crossorigin="anonymous"</script>
<script>
  Sentry.init({
    dsn: "https://...@.../..."
  });
</script>
<script src="..."></script>
Run Code Online (Sandbox Code Playgroud)

我也修补哨兵描述这里复制console.error()Sentry.captureMessage(),所以,我现在看到3级在哨兵的消息。

但我仍然在为三种类型的错误而苦苦挣扎:

  • Uncaught TypeError
  • 来自我们的 CMS 的 JS 文件中的错误
  • 一些非常特殊的<img> srcset错误

控制台输出

关于srcset错误:我已经onerror为图像添加了处理程序。它们在某些情况下会被调用,但在这种特殊情况下不会被调用(该srcset属性在文件名中有一个违反语法的空格);诚然,这个问题应该报告给 Chrome 开发团队而不是在 Sentry 中修复。

我试图自己捕获这些错误并手动将它们重定向到 Sentry,但以下侦听器甚至都没有在 Chrome 中捕获它们(抱歉.join(),只是测试代码,我没有美化它):

window.onerror = function (errorMsg, url, lineNumber) {
  alert(["window.onerror", errorMsg, url, lineNumber].join());
  return true;
}; …
Run Code Online (Sandbox Code Playgroud)

javascript error-handling console sentry

9
推荐指数
0
解决办法
1236
查看次数

从 TypeScript 生成 GraphQL 模式?

我最近刚开始使用 Apollo,并希望通过新的 GraphQL 层公开一些现有的 REST API。

这些 REST 服务已经被一组广泛的自定义 Typescript 类型定义完全覆盖(请求和响应数据结构)。

我希望找到一种方法来重用这些现有类型,并且可能Query在顶部添加一些其他类型,从而能够生成 GraphQL 模式而不是复制代码。

令人惊讶的是,这似乎是一个相当罕见的用例?我发现有很多工具可以从 GraphQL 生成 Typescript 定义,但反过来似乎很难。

type-graphql只有在所有自定义类型都是classes时才有效。这对我不起作用;我没有一个单一的类,但简单的无数的type在这儿。

ts2graphql已经一年没有更新了,我什至无法让示例代码工作。

我还能尝试什么?

typescript apollo graphql

6
推荐指数
1
解决办法
555
查看次数

拥有许多 Shadow DOM 对浏览器性能是好是坏?

Shadow DOM允许我们在文档中创建独立的 DOM 树,这些 DOM 树有自己的节点树,(或多或少)独立的样式管理,并且在某种程度上,仅“渲染”到父 DOM 树中。

我想知道大规模的性能影响。与将所有内容都放在一个大文档中相比,在一个页面上拥有许多 Shadow DOM / Shadow root 是好是坏?

一方面,我猜想,浏览器可能会受益于较小的(子)DOM 树以及在渲染仅包含实际的节点和样式的隔离 Shadow DOM 的内容时必须评估的较少的样式规则。与其内容相关。这可能会对计算工作量产生积极影响。

另一方面,在渲染时额外的“类似文档”元数据或 DOM 树的“合并”是否会减慢浏览器速度或显着增加内存使用量?

web-component shadow-dom

5
推荐指数
1
解决办法
1300
查看次数