Optimize Prism.js code highlighting for multiple code blocks#7
Optimize Prism.js code highlighting for multiple code blocks#7ethylon wants to merge 1 commit intoaltudev:mainfrom
Conversation
Summary of ChangesHello @ethylon, I'm Gemini Code Assist1! I'm currently reviewing this pull request and will post my feedback shortly. In the meantime, here's a summary to help you and other reviewers quickly get up to speed! This pull request significantly enhances the performance and responsiveness of pages displaying multiple code blocks by optimizing the Prism.js code highlighting mechanism. Instead of using a single global highlight function that caused excessive DOM overhead, the system now supports individual code block highlighting. This is achieved by introducing a new Highlights
Using Gemini Code AssistThe full guide for Gemini Code Assist can be found on our documentation page, here are some quick tips. Invoking Gemini You can request assistance from Gemini at any point by creating a comment using either
Customization To customize Gemini Code Assist for GitHub experience, repository maintainers can create a configuration file and/or provide a custom code review style guide (such as PEP-8 for Python) by creating and adding files to a Limitations & Feedback Gemini Code Assist may make mistakes. Please leave feedback on any instances where its feedback is incorrect or counter productive. You can react with 👍 and 👎 on @gemini-code-assist comments. If you're interested in giving your feedback about your experience with Gemini Code Assist for Github and other Google products, sign up here. You can also get AI-powered code generation, chat, as well as code reviews directly in the IDE at no cost with the Gemini Code Assist IDE Extension. Footnotes
|
There was a problem hiding this comment.
Code Review
This is a great pull request that addresses a significant performance issue with a clear and effective solution. The introduction of individual code block highlighting is a smart optimization that will greatly improve page responsiveness on pages with many code blocks. The changes are well-structured across the Blazor component, C# interop, and JavaScript files.
I have one minor suggestion in the JavaScript helper to prevent a potential timer leak, but overall this is excellent work. The detailed pull request description with before/after examples is also very helpful.
Motivation
When displaying multiple code blocks on a single page, using Prism.js’s global
highlightAllfunction caused excessive DOM overhead, resulting in deeply nested fragments and poor page responsiveness. This was especially problematic for pages with many code samples, where the UI could become sluggish or even unresponsive.Real life example from my page with a dozen
<CodeBlock>Before
After
Changes
HighlightAsync(ElementReference)) in addition to the global method.AutoHighlightparameter in the Blazor<CodeBlock>component, allowing each block to highlight itself after rendering, rather than triggering a global highlight.Benefits