在单个组件中添加超过 20 个类时,性能问题
问题
葡萄JS版本 [X] 我确认使用最新版本的GrapesJS 你用的是什么浏览器? Edge v119.0.2151.72 可复制演示链接 https://grapesjs.com/demo.html 描述一下那个虫子 你好,感谢你创建了一个了不起的项目。我想报告使用GrapesJS时发现的一个问题。 如何复现这个漏洞?选择一个组件添加任意名称的类,直到组件超过20个类。选择另一个组件并重新选择该组件。 预期的行为是什么? 不应该有性能问题。 目前的行为是什么? 浏览器会卡顿一段明显的时间。新增的职业越多,卡顿时间越长。当组件有23个类时,我的浏览器会冻结10秒。 这是使用 TailwindCSS 时常见的问题,因为课程很多。例如,如果我从 TailwindCSS 库复制一个 HTML 模板,导入自定义代码时浏览器可能会卡死。 原因 于是我调查了一下,找到了问题所在。内容如下:  “合并”函数生成所有类的组合,因此得到2^n个组合(n为类的数量)。所以如果有20个职业,就会有1048576组合。 如果我理解没错的话,它生成了该函数中组件的所有组合,以过滤组件的 CSS 规则:https://g...
回答(2)
同意建议,我会相应更新。谢谢@duydvu
谢谢你举报,@duydvu。 关于在单个组件中添加超过20个职业时性能问题的好问题。推荐的 StyleManager 方法是使用事件驱动的 API。 从这里开始: 查看你所在模块的[GrapesJS文档](https://grapesjs.com/docs/) 寻找“on()”事件监听器方法 大多数操作可以通过监听编辑器和组件事件来实现 常见模式: “JavaScript 留意变化 editor.on('change', () => console.log('something changed')); 组件生命周期 editor.on('component:mount', (c) => co...
相关问答
通过相似的问题讨论继续研究。
问题 #4765
官方的解析@keyframes方法并不起作用
葡萄JS版本[X] 我确认使用最新版本的GrapesJS你用的是什么浏览器? Chrome v107描述一下那个虫子 如何复现这个漏洞?按照[这里](https://grapesjs.com/docs/guides/Custom-CSS-parser.html#rule-obj...
问题 #3235
“component:update”在组件移动时不会触发
摘自 https://github.com/artf/grapesjs/blob/dev/src/editor/index.js#L33'component:update' - 当组件被更新(移动、样式等)时触发,模型作为参数传递给回调 重现这个bug使用“move”API 移...
问题 #5173
编辑。Css.setRule API 没有按预期工作,它没有更新现有规则。
葡萄JS版本 [X] 我确认使用最新版本的GrapesJS 你用的是什么浏览器? 版本 112.0.5615.137(官方构建)(arm64) 可复制演示链接 https://jsfiddle.net/yhj6qa1u/6/ 描述一下那个虫子 如何复现这个漏洞?选择一个组件,并...
问题 #5460
从“pageManager”加载“组件”和“样式”
葡萄JS版本[X] 我确认使用最新版本的GrapesJS你用的是什么浏览器? Chrome v117.0.5938.149可复制演示链接 https://jsfiddle.net/9oLrsvya/描述一下那个虫子 如何复现这个漏洞?请参见 jsfiddle 中的“pageMa...
与此问题匹配的付费插件
根据问题关键词和标签相关性精选,助你更快交付。
正在加载付费插件推荐……
相关教程
关于同一主题的深入指南。
教程
GrapesJS DevTools: A Developer Panel Inside Your Editor
If you've ever debugged GrapesJS with console.log(editor.getSelected()) and a dozen throwaway event listeners — this post is for you.
教程
How to Build a Production GrapesJS Editor: The Complete Walkthrough of Brief, Preset, Plugins, and Services
A complete walkthrough of building a production GrapesJS editor: how to choose a preset, pick plugins, and scope setup services without burning a sprint.
教程
Big Updates: TinyMCE 8 and Placeholder 2.0 for GrapesJS
In May we shipped major updates to two of our most popular GrapesJS plugins — TinyMCE Inline Text Editor and Placeholder.
浏览插件分类
直接跳转到市场上的插件分类页面。