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

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

我在开发一个应用,打算使用 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。

    367 引用 • 1844 回帖 • 4 关注

相关帖子

欢迎来到这里!

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

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

    最好仅保存 md,不要存渲染结果,因为结果可能会变(比如要过滤某些标签或者做扩展渲染)。

    1 回复
  • KevinBlandy
    作者

    嗯嗯,我使用的是模板引擎。那我是把 markdown 文本渲染到 HTML 中?然后再调用 Vidtor 的 api 去动态地渲染为 HTML 吗?

    1 回复
  • 88250

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

    1 回复
  • KevinBlandy
    作者

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

    1 回复
  • 88250

    可以的,Vditor 用的也是这个编译的 lute.js

    1 回复
  • KevinBlandy
    作者

    Lute 对象,可以全局唯一吗?还是说必须每次渲染都要创建新的。

    1 回复
  • 88250

    可以全局唯一的,支持并发调用。

  • jackandrose

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

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

  • jackandrose

    image.png

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

请输入回帖内容 ...
KevinBlandy
菜鸟选手/略懂Java,Golang/CRUD开发者/Api调用工程师 海口

推荐标签 标签

  • 大疆创新

    深圳市大疆创新科技有限公司(DJI-Innovations,简称 DJI),成立于 2006 年,是全球领先的无人飞行器控制系统及无人机解决方案的研发和生产商,客户遍布全球 100 多个国家。通过持续的创新,大疆致力于为无人机工业、行业用户以及专业航拍应用提供性能最强、体验最佳的革命性智能飞控产品和解决方案。

    2 引用 • 14 回帖 • 1 关注
  • FreeMarker

    FreeMarker 是一款好用且功能强大的 Java 模版引擎。

    23 引用 • 20 回帖 • 461 关注
  • 友情链接

    确认过眼神后的灵魂连接,站在链在!

    24 引用 • 373 回帖 • 1 关注
  • Swagger

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

    26 引用 • 35 回帖 • 1 关注
  • Flutter

    Flutter 是谷歌的移动 UI 框架,可以快速在 iOS 和 Android 上构建高质量的原生用户界面。 Flutter 可以与现有的代码一起工作,它正在被越来越多的开发者和组织使用,并且 Flutter 是完全免费、开源的。

    39 引用 • 92 回帖
  • Excel
    31 引用 • 28 回帖 • 2 关注
  • Facebook

    Facebook 是一个联系朋友的社交工具。大家可以通过它和朋友、同事、同学以及周围的人保持互动交流,分享无限上传的图片,发布链接和视频,更可以增进对朋友的了解。

    4 引用 • 15 回帖 • 441 关注
  • CentOS

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

    239 引用 • 224 回帖 • 1 关注
  • 安装

    你若安好,便是晴天。

    132 引用 • 1184 回帖 • 1 关注
  • Mac

    Mac 是苹果公司自 1984 年起以“Macintosh”开始开发的个人消费型计算机,如:iMac、Mac mini、Macbook Air、Macbook Pro、Macbook、Mac Pro 等计算机。

    168 引用 • 597 回帖
  • 互联网

    互联网(Internet),又称网际网络,或音译因特网、英特网。互联网始于 1969 年美国的阿帕网,是网络与网络之间所串连成的庞大网络,这些网络以一组通用的协议相连,形成逻辑上的单一巨大国际网络。

    99 引用 • 367 回帖
  • JavaScript

    JavaScript 一种动态类型、弱类型、基于原型的直译式脚本语言,内置支持类型。它的解释器被称为 JavaScript 引擎,为浏览器的一部分,广泛用于客户端的脚本语言,最早是在 HTML 网页上使用,用来给 HTML 网页增加动态功能。

    730 引用 • 1280 回帖 • 4 关注
  • Dubbo

    Dubbo 是一个分布式服务框架,致力于提供高性能和透明化的 RPC 远程服务调用方案,是 [阿里巴巴] SOA 服务化治理方案的核心框架,每天为 2,000+ 个服务提供 3,000,000,000+ 次访问量支持,并被广泛应用于阿里巴巴集团的各成员站点。

    60 引用 • 82 回帖 • 612 关注
  • 微信

    腾讯公司 2011 年 1 月 21 日推出的一款手机通讯软件。用户可以通过摇一摇、搜索号码、扫描二维码等添加好友和关注公众平台,同时可以将自己看到的精彩内容分享到微信朋友圈。

    133 引用 • 796 回帖
  • Hexo

    Hexo 是一款快速、简洁且高效的博客框架,使用 Node.js 编写。

    22 引用 • 148 回帖 • 16 关注
  • 招聘

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

    189 引用 • 1057 回帖 • 5 关注
  • 一些有用的避坑指南。

    69 引用 • 93 回帖
  • 房星科技

    房星网,我们不和没有钱的程序员谈理想,我们要让程序员又有理想又有钱。我们有雄厚的房地产行业线下资源,遍布昆明全城的 100 家门店、四千地产经纪人是我们坚实的后盾。

    6 引用 • 141 回帖 • 592 关注
  • Hadoop

    Hadoop 是由 Apache 基金会所开发的一个分布式系统基础架构。用户可以在不了解分布式底层细节的情况下,开发分布式程序。充分利用集群的威力进行高速运算和存储。

    89 引用 • 122 回帖 • 617 关注
  • LeetCode

    LeetCode(力扣)是一个全球极客挚爱的高质量技术成长平台,想要学习和提升专业能力从这里开始,充足技术干货等你来啃,轻松拿下 Dream Offer!

    209 引用 • 72 回帖 • 2 关注
  • Chrome

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

    63 引用 • 289 回帖
  • Webswing

    Webswing 是一个能将任何 Swing 应用通过纯 HTML5 运行在浏览器中的 Web 服务器,详细介绍请看 将 Java Swing 应用变成 Web 应用

    1 引用 • 15 回帖 • 642 关注
  • 七牛云

    七牛云是国内领先的企业级公有云服务商,致力于打造以数据为核心的场景化 PaaS 服务。围绕富媒体场景,七牛先后推出了对象存储,融合 CDN 加速,数据通用处理,内容反垃圾服务,以及直播云服务等。

    28 引用 • 226 回帖 • 133 关注
  • 安全

    安全永远都不是一个小问题。

    203 引用 • 818 回帖
  • 笔记

    好记性不如烂笔头。

    310 引用 • 794 回帖
  • IBM

    IBM(国际商业机器公司)或万国商业机器公司,简称 IBM(International Business Machines Corporation),总公司在纽约州阿蒙克市。1911 年托马斯·沃森创立于美国,是全球最大的信息技术和业务解决方案公司,拥有全球雇员 30 多万人,业务遍及 160 多个国家和地区。

    17 引用 • 53 回帖 • 146 关注
  • Solidity

    Solidity 是一种智能合约高级语言,运行在 [以太坊] 虚拟机(EVM)之上。它的语法接近于 JavaScript,是一种面向对象的语言。

    3 引用 • 18 回帖 • 437 关注