大家是如何渲染 HTML 内容的?

本贴最后更新于 759 天前,其中的信息可能已经时移世异

我在开发一个应用,打算使用 Vditor 作为编辑器。我在数据表中分别存储从编辑器获取的 markdown_contenthtml_content

渲染的时候,直接从数据库中检索出 html_content 渲染到 HTML 页面中,如下。

<html><head><link rel="stylesheet" type="text/css" href="https://ld246.com/js/lib/vditor/dist/index.css"/> <script src="https://ld246.com/js/lib/vditor/dist/js/i18n/zh_CN.js"></script> <script src="https://ld246.com/js/lib/vditor/dist/method.min.js"></script></head> <body> <!-- 渲染HTML内容 --> <div class="vditor-reset" id="preview">${model.htmlContent}</div> <script> const previewElement = document.getElementById('preview') Vditor.setContentTheme('light', 'https://ld246.com/js/lib/vditor/dist/css/content-theme'); Vditor.codeRender(previewElement); Vditor.highlightRender({"enable":true,"lineNumber":false,"defaultLang":"","style":"github"}, previewElement, 'https://ld246.com/js/lib/vditor'); Vditor.mathRender(previewElement, { cdn: 'https://ld246.com/js/lib/vditor', math: {"engine":"KaTeX","inlineDigit":false,"macros":{}}, }); Vditor.mermaidRender(previewElement, 'https://ld246.com/js/lib/vditor', 'classic'); Vditor.markmapRender(previewElement, 'https://ld246.com/js/lib/vditor', 'classic'); Vditor.flowchartRender(previewElement, 'https://ld246.com/js/lib/vditor'); Vditor.graphvizRender(previewElement, 'https://ld246.com/js/lib/vditor'); Vditor.chartRender(previewElement, 'https://ld246.com/js/lib/vditor', 'classic'); Vditor.mindmapRender(previewElement, 'https://ld246.com/js/lib/vditor', 'classic'); Vditor.abcRender(previewElement, 'https://ld246.com/js/lib/vditor'); Vditor.mediaRender(previewElement); Vditor.speechRender(previewElement); </script> <script src="https://ld246.com/js/lib/vditor/dist/js/icons/ant.js"></script></body></html>

这样做会有什么弊端吗?

  • Vditor

    Vditor 是一款浏览器端的 Markdown 编辑器,支持所见即所得、即时渲染(类似 Typora)和分屏预览模式。它使用 TypeScript 实现,支持原生 JavaScript、Vue、React 和 Angular。

    372 引用 • 1857 回帖

相关帖子

欢迎来到这里!

我们正在构建一个小众社区,大家在这里相互信任,以平等 • 自由 • 奔放的价值观进行分享交流。最终,希望大家能够找到与自己志同道合的伙伴,共同成长。

注册 关于
请输入回帖内容 ...
  • jackandrose

    image.png

    和官网的案例看起来天差地别

  • 其他回帖
  • jackandrose

    这个渲染怎么做呀?有点没看明白。image.png

    看官网的例子,但是没有样式只有文字。最主要的问题是,慢…………好慢

  • KevinBlandy
    作者

    太棒啦,居然还是 go 写的!刚好我现在的应用就是 golang 开发。使用这个解析器的话,可以原汁原味地把 markdown 文本解析成编辑器中所见的样式哈? 👍

    1 回复
  • 88250

    后端渲染吧,用 Lute 或者 Lute HTTP

    1 回复
  • 查看全部回帖
KevinBlandy
菜鸟选手/略懂Java,Golang/CRUD开发者/Api调用工程师 海口

推荐标签 标签

  • Java

    Java 是一种可以撰写跨平台应用软件的面向对象的程序设计语言,是由 Sun Microsystems 公司于 1995 年 5 月推出的。Java 技术具有卓越的通用性、高效性、平台移植性和安全性。

    3201 引用 • 8217 回帖
  • 设计模式

    设计模式(Design pattern)代表了最佳的实践,通常被有经验的面向对象的软件开发人员所采用。设计模式是软件开发人员在软件开发过程中面临的一般问题的解决方案。这些解决方案是众多软件开发人员经过相当长的一段时间的试验和错误总结出来的。

    201 引用 • 120 回帖
  • SpaceVim

    SpaceVim 是一个社区驱动的模块化 vim/neovim 配置集合,以模块的方式组织管理插件以
    及相关配置,为不同的语言开发量身定制了相关的开发模块,该模块提供代码自动补全,
    语法检查、格式化、调试、REPL 等特性。用户仅需载入相关语言的模块即可得到一个开箱
    即用的 Vim-IDE。

    3 引用 • 31 回帖 • 111 关注
  • MyBatis

    MyBatis 本是 Apache 软件基金会 的一个开源项目 iBatis,2010 年这个项目由 Apache 软件基金会迁移到了 google code,并且改名为 MyBatis ,2013 年 11 月再次迁移到了 GitHub。

    173 引用 • 414 回帖 • 365 关注
  • 电影

    这是一个不能说的秘密。

    122 引用 • 608 回帖
  • Visio
    1 引用 • 2 回帖 • 1 关注
  • webpack

    webpack 是一个用于前端开发的模块加载器和打包工具,它能把各种资源,例如 JS、CSS(less/sass)、图片等都作为模块来使用和处理。

    42 引用 • 130 回帖 • 253 关注
  • 自由行
    3 关注
  • 招聘

    哪里都缺人,哪里都不缺人。

    188 引用 • 1057 回帖
  • Swagger

    Swagger 是一款非常流行的 API 开发工具,它遵循 OpenAPI Specification(这是一种通用的、和编程语言无关的 API 描述规范)。Swagger 贯穿整个 API 生命周期,如 API 的设计、编写文档、测试和部署。

    26 引用 • 35 回帖 • 4 关注
  • 导航

    各种网址链接、内容导航。

    45 引用 • 177 回帖 • 2 关注
  • danl
    175 关注
  • Angular

    AngularAngularJS 的新版本。

    26 引用 • 66 回帖 • 563 关注
  • Android

    Android 是一种以 Linux 为基础的开放源码操作系统,主要使用于便携设备。2005 年由 Google 收购注资,并拉拢多家制造商组成开放手机联盟开发改良,逐渐扩展到到平板电脑及其他领域上。

    336 引用 • 324 回帖
  • JVM

    JVM(Java Virtual Machine)Java 虚拟机是一个微型操作系统,有自己的硬件构架体系,还有相应的指令系统。能够识别 Java 独特的 .class 文件(字节码),能够将这些文件中的信息读取出来,使得 Java 程序只需要生成 Java 虚拟机上的字节码后就能在不同操作系统平台上进行运行。

    180 引用 • 120 回帖 • 4 关注
  • OpenShift

    红帽提供的 PaaS 云,支持多种编程语言,为开发人员提供了更为灵活的框架、存储选择。

    14 引用 • 20 回帖 • 661 关注
  • etcd

    etcd 是一个分布式、高可用的 key-value 数据存储,专门用于在分布式系统中保存关键数据。

    6 引用 • 26 回帖 • 544 关注
  • 强迫症

    强迫症(OCD)属于焦虑障碍的一种类型,是一组以强迫思维和强迫行为为主要临床表现的神经精神疾病,其特点为有意识的强迫和反强迫并存,一些毫无意义、甚至违背自己意愿的想法或冲动反反复复侵入患者的日常生活。

    15 引用 • 161 回帖 • 2 关注
  • jQuery

    jQuery 是一套跨浏览器的 JavaScript 库,强化 HTML 与 JavaScript 之间的操作。由 John Resig 在 2006 年 1 月的 BarCamp NYC 上释出第一个版本。全球约有 28% 的网站使用 jQuery,是非常受欢迎的 JavaScript 库。

    63 引用 • 134 回帖 • 734 关注
  • Ant-Design

    Ant Design 是服务于企业级产品的设计体系,基于确定和自然的设计价值观上的模块化解决方案,让设计者和开发者专注于更好的用户体验。

    17 引用 • 23 回帖 • 1 关注
  • 外包

    有空闲时间是接外包好呢还是学习好呢?

    26 引用 • 233 回帖 • 2 关注
  • OnlyOffice
    4 引用 • 17 关注
  • CentOS

    CentOS(Community Enterprise Operating System)是 Linux 发行版之一,它是来自于 Red Hat Enterprise Linux 依照开放源代码规定释出的源代码所编译而成。由于出自同样的源代码,因此有些要求高度稳定的服务器以 CentOS 替代商业版的 Red Hat Enterprise Linux 使用。两者的不同在于 CentOS 并不包含封闭源代码软件。

    240 引用 • 224 回帖 • 3 关注
  • Chrome

    Chrome 又称 Google 浏览器,是一个由谷歌公司开发的网页浏览器。该浏览器是基于其他开源软件所编写,包括 WebKit,目标是提升稳定性、速度和安全性,并创造出简单且有效率的使用者界面。

    63 引用 • 289 回帖
  • IDEA

    IDEA 全称 IntelliJ IDEA,是一款 Java 语言开发的集成环境,在业界被公认为最好的 Java 开发工具之一。IDEA 是 JetBrains 公司的产品,这家公司总部位于捷克共和国的首都布拉格,开发人员以严谨著称的东欧程序员为主。

    181 引用 • 400 回帖 • 1 关注
  • SendCloud

    SendCloud 由搜狐武汉研发中心孵化的项目,是致力于为开发者提供高质量的触发邮件服务的云端邮件发送平台,为开发者提供便利的 API 接口来调用服务,让邮件准确迅速到达用户收件箱并获得强大的追踪数据。

    2 引用 • 8 回帖 • 507 关注
  • 一些有用的避坑指南。

    69 引用 • 93 回帖