PageKit — 可自托管的 GrapesJS 建站工具,附完整源码。 获取抢先体验

GrapesJS 问题

已收录 3,464 个 GitHub 问题 — 370 个已解决 · 90 个待解决 搜索、筛选并探索经过实战检验的答案。

找到 545 个问题

🔍 typescript
#61712024年9月24日作者 rhoenerSBS2 个回答
0 个反应

:用UndoManager追踪自定义存储

GrapesJS 版本 [X] 我确认使用最新版本 GrapesJS 你用的是什么浏览器? Chrome v129 可复制演示链接 不适用 描述一下那个虫子 你好@artf, 我目前正在实现一个带有 grapesjs 的编辑器,可以在已有页面旁边添加章节。我实现了一个章节存储,实现了IStorableModule,将章节存储在项目数据中。 我的问题是,让UndoManager跟踪章节更改的最佳方式是什么? 有必要以某种方式扩展ItemManagerModule吗? 行为准则 [X] 我同意遵守本项目的行为准则

artf

大家好@rhoenerSBS请避免打开bug问题。

GJS Helper

GrapesJSUndoManager主要通过监听特定事件,特别是change:state,跟踪编辑器核心模型(组件、样式、页面、资源)的变化。要让它跟踪自定义ChapterStorage模块的变更,该模块实现IStorableModule,你需要明确向编辑器提示,当章节数据被修改时其状态发生变化。这会提示UndoManager捕获整个项目数据的新快照,包括你的自定义章节数据。 以下是详细的做法: 1.建模你的自定义数据(章节) 最佳实践是使用Backbone模型和集合来建...

#61522024年9月18日作者 stpp24 个回答
1 个反应

通过自定义代码添加的CSS在移除自定义代码组件后依然存在

GrapesJS 版本 [X] 我确认使用最新版本 GrapesJS 你用的是什么浏览器? 任何 可复制演示链接 https://grapesjs.com/演示 描述一下那个虫子 如何复现这个漏洞?添加带有HTML + CSS的自定义代码组件删除自定义代码组件。 预期的行为是什么? 所有代码都应被删除,包括CSS 目前的行为是什么? 自定义CSS不会被移除,但其他部分已经被移除。 [gjs.webm](https://github.com/user-attachments/assets/3fbd9a6d-ad0e-4fc6-add8-7cf31ae9293c) 行为准则 [X] 我同意遵守本项目的行为准则

artf

这与核心无关,应在[插件](https://github.com/GrapesJS/components-custom-code)层面处理。请在那里发布问题,我们会尽力找出合适的方法。

mosh-tudor

@stpp2 这其实不算是个bug;它更像是一种功能。:) 试试用“clearStyles”: https://github.com/GrapesJS/grapesjs/blob/d48e1e34a9fa363dcb83fdcca53a89563db17063/packages/core/src/editor/config/config.ts#L260-L272

stpp2

是的,我这里已经启用了“clearStyles”,但很多情况下效果不好。 无论如何,我预计“自定义代码”组件应该有一定的“容器化”,这样移除后文档里不会留下任何东西。

#61222024年9月4日作者 mohamedsalem4013 个回答
3 个反应

修复和重构Sorter.ts

[x] 修正 StyleManager 中的排序器使用情况(包含排序属性层的回归) [x] 基于“Components.canMove”的重构分选器 [x] 更新“canMove”,检查将主符号丢弃在其自身实例内。

mohamedsalem401

这事结束了。

mohamedsalem401

其理念是重构分拣器以提升可维护性和可读性。我们可以实施以下改动:让“Sorter”类依赖抽象树结构,而不是依赖“Component”或“Layers”等具体实现,让“Sorter”类使用更通用、抽象的树结构。这样会让它更灵活、更易重复使用。将代码拆分为多个较小的类,每个类负责单一职责'ComponentManager.canMove': 使用 'ComponentManager.canMove' 方法来判断是否可以移动某个“组件”。这样可以避免代码重复,并确保应用不同部分的...

GJS Helper

此次修复和重构解决了GrapesJSSorter.ts和组件移动逻辑中的多个关键领域,解决了样式管理器中的回归问题,并提升了整体拖放体验,尤其是可重用组件(符号)方面。 1.修复StyleManager中排序器的使用(带有排序属性层的回归) 问题:引入了回归,StyleManager通过拖放排序属性层(例如多个box-shadow或text-shadow值)的能力被破坏。这通常发生在负责拖放重排序的Sorter组件配置错误或未正确集成样式管理器属性层的动态DOM结构时。 解...

#60812024年8月23日作者 MdShadabAhamad3 个回答
0 个反应

自定义组件在初次渲染时无法在 grapsjs/studio 中显示

GrapesJS 版本[X] 我确认使用最新版本 GrapesJS你用的是什么浏览器? 镀铬可复制演示链接 https://stackblitz.com/edit/vitejs-vite-4noagg?file=src%2FApp.tsx描述一下那个虫子 我第一次在 React 应用渲染时无法看到我的自定义组件,当我尝试在块块部分搜索它时,它就出现了,搜索后可以在块块块中看到它。行为准则[X] 我同意遵守本项目的行为准则

artf

当你想在 GrapesJS API 层面扩展某些东西时,可以使用这些插件 “''js <StudioEditor ref={editorRef} 选项={{ 插件:[ editor => addCustomComponent(editor) ], // ... ```

MdShadabAhamad

我还添加了自定义样式设置StyleManager,但显示是空白的,https://stackblitz.com/edit/vitejs-vite-4noagg?file=src%2FApp.tsx

GJS Helper

你遇到的问题是,你的自定义组件块在第一次渲染时看不到,但搜索后会出现,这是GrapesJS如何初始化其UI组件,特别是块管理器,以及自定义块何时被注册时有关的常见时间问题。 根本原因 在你提供的StackBlitz示例中,你是在editorInstance.on('load', ...)回调中注册自定义组件(my-component)及其对应的块(my-block): GrapesJS 中的load事件是在编辑器完成初始设置并渲染完核心界面元素(包括块管理器)之后触发的。块...

#60632024年8月16日作者 sridharK643 个回答
1 个反应

如何默认加载 Grapesjs 预览

GrapesJS 版本 [X] 我确认使用最新版本 GrapesJS 你用的是什么浏览器? 最新消息 可复制演示链接 https://stackblitz.com/edit/grapesjs-react-custom-ui-nrqcgn?file=src%2FApp.tsx 描述一下那个虫子 如何复现这个漏洞?...... 预期的行为是什么? ... 目前的行为是什么? ... 如果需要执行某些代码以重现该漏洞,请将其粘贴到下面: 行为准则 [X] 我同意遵守本项目的行为准则

danstarns

你好,@sridharK64感谢你的报告,能否详细说明一下你的问题?因为我们只有: “如何通过默认预览加载 grapesjs ”你的stack blitz 你能告诉我们你想要达到什么目标吗?

artf

@sridharK64我明白你的意思,但下次试着详细说明。 要在加载时触发预览,这就足够了 “''js editor.onReady(() => { editor.runCommand('core:preview') }); ``` 但在你的例子中,你用的是“@grapesjs/React”,并带有完整的自定义界面,这意味着你必须自己实现如何用 React 组件处理预览。

GJS Helper

要默认在预览模式下加载GrapesJS,你需要先初始化编辑器,然后执行内置的core:preview命令。该命令在编辑和预览之间切换编辑器状态,实际上隐藏了编辑器界面,只显示渲染内容。 在加载时实现这一点最可靠的方法是监听load事件,当GrapesJS编辑器完全初始化并准备交互时,事件会触发。 解决方案 像平常一样初始化GrapesJS。 在编辑器实例中监听load事件。 在load事件处理程序中执行core:preview命令。 以下是实现的方法,比如适应你提供的Sta...

#60512024年8月9日作者 SAJAD-CH2 个回答
0 个反应

插件问题

GrapesJS 版本 [X] 我确认使用最新版本 GrapesJS 你用的是什么浏览器? 铬 可复制演示链接 ASDASD 描述一下那个虫子 我在安装 NPM 插件包(如 preset-webpage、preset-newsletter)时遇到了问题,在两个地方安装时,检查 node module 文件夹时 css 文件都不见了。我想把 grapejs 集成到 Angularts 里。现在它包含了像 index.d.ts、index.ts 等页面。 行为准则 [X] 我同意遵守本项目的行为准则

artf

@SAJAD-CH,请在打开漏洞问题时提供可复现的实时演示(例如通过 stackblitz 进行)

GJS Helper

你似乎遇到了一个常见问题,比如在将GrapesJS插件集成到现代JavaScript框架(如Angular)中,CSS文件在直接链接nodemodules中不会作为独立文件出现。这是预期中的行为,不是bug。 根本原因解释 现代GrapesJS插件,尤其是通过NPM分发的,设计上是为模块捆绑器(比如Webpack,Angular CLI在底层使用)而设计。这些插件的CSS通常包含在插件的JavaScript发行版中,或者作为单独的CSS文件,旨在导入应用构建过程,而不是直接...

#60482024年8月7日作者 danstarns1 个回答
0 个反应

打字稿

代码库目前使用过时版本的 TypeScript。该票旨在: 升级到最新版本的TypeScript。 确保所有项目中的TypeScript配置一致。 将TypeScript集成到开发和CI流程中,实现自动类型检查。 更新和标准化 TypeScript 将提升类型安全性,减少错误,并提升整体代码质量。

GJS Helper

在GrapesJS代码库中升级和标准化TypeScript,是提升可维护性、早期发现错误和提升开发者体验的关键一步。本解决方案概述了实现这一目标的步骤,重点关注依赖升级、一致配置以及CI/CD集成。 1.升级到最新版本的TypeScript 首先,将typescript包和相关@types/定义更新到最新的稳定版本。建议使用像npm-check-updates(或yarn upgrade-interactive)这样的工具,方便识别过时的依赖。 安装typescript:...

#60472024年8月7日作者 danstarns1 个回答
0 个反应

释放流程

GrapesJS 仓库构建工件发布过程中存在以下问题: 工件应直接来自开发者的机器。- https://github.com/GrapesJS/grapesjs/pull/6041 该过程没有文档 我们有多个软件包要发布,也需要完善的文档。该工单旨在标准化并记录 GrapesJS OSS 仓库的发布流程,使其与行业标准工作流程保持一致。这项工作将确保所有贡献者的一致性、可靠性和易用性。

GJS Helper

GrapesJS发布流程的问题——特别是对开发者机器的依赖以及缺乏文档——凸显了对标准化、自动化和透明工作流程的需求。采用行业标准的CI/CD(持续集成/持续交付)流水线将解决这些问题,确保所有贡献者的一致性、可靠性和易用性。 根本原因分析 核心问题源于缺乏正式化、自动化且文档化的发布流程。依赖单个开发者机器来构建和发布工件会带来若干风险: 不一致: 不同的开发环境可能导致构建输出的差异。 可重复性问题: 很难保证构建能被完全复制。 安全风险: 直接从本地机器发布可能会暴露...

#60462024年8月7日作者 danstarns2 个回答
0 个反应

提交钩子

当前代码库依赖提交钩子来执行某些规则和检查。该票旨在: 移除现有的提交钩子。 配置配置配置执行器以执行这些检查,并在开发分支或拉取请求中报告问题。 将这些职责转交给CI跑者将简化开发流程,确保问题能够以集中方式持续被发现和解决。

danstarns

相关报道: https://github.com/GrapesJS/grapesjs/issues/6045

GJS Helper

移除客户端提交钩子并将其责任转交给CI执行者的请求,是提升开发工作流程一致性和可靠性的合理策略。虽然这是一种通用的软件开发实践,并非专属于GrapesJS功能,但这是维护任何稳健项目(包括使用GrapesJS构建的项目)的关键方面。这种方法集中质量检查,确保所有贡献均得到统一验证,无论开发者配置如何。 第一部分:移除现有提交钩子 提交钩子通常通过两种方式配置:在.git/hooks目录内手动配置,或通过专门的工具如 Husky 用于 JavaScript 项目。 1.手动提...

#60452024年8月7日作者 danstarns1 个回答
0 个反应

线条处理,格式化

代码库目前使用过时的线条工具和格式化库。该票旨在: 升级到最新版本的线条处理工具和格式化库。 确保所有项目的线条和格式规则保持一致。 将这些工具集成到开发和CI流程中,实现自动化执法。 标准化这些工具将提升代码质量,减少错误,并创造更为统一的开发环境。

GJS Helper

标准化linting和格式化对于维护代码质量和GrapesJS代码库内的连贯开发环境至关重要。这一举措将显著提升开发者体验并减少潜在错误。以下是实现这一目标的全面方法: 1.升级到最新的打印和格式化工具 推荐工具: ESLint: 用于 linting JavaScript/TypeScript 代码。 更漂亮: 为了保持一致的代码格式。 安装/升级步骤: 首先,确保你安装了Node.js和npm/yarn。然后,更新你的 package.json 依赖。 2.确保模板和格...

浏览所有主题