cherry markdown

2025-12-11 0 901

cherry markdown Writer

English | 简体中文| 日本语

Introduction

cherry markdown Writer is a Javascript Markdown editor. It has the advantages such as out-of-the-box, lightweight and easy to extend. It can run in browser or server(with NodeJs).

Document

  • 初识cherry markdown编辑器
  • hello world
  • 配置图片&文件上传接口
  • 调整工具栏
  • 自定义语法
  • 配置项全解
  • 配置主题
  • 扩展代码块语法
  • 事件&回调
  • API

Demos

  • full model
  • basic
  • mobile
  • multiple instances
  • editor without toolbar
  • pure preview
  • XSS(Not allowed by default)
  • img wysiwyg
  • table wysiwyg
  • headers with auto num
  • 流式输入模式(AI chart场景)
  • VIM 编辑模式

Out-of-the-box

Developer can call and instantiate cherry markdown Editor in a very simple way. The instantiated cherry markdown Editor supports most commonly used markdown syntax (such as title, TOC, flowchart, formula, etc.) by default.

Easy to extend

When the syntax that cherry markdown writer support can not meet your needs, secondary development or function extention can be carried out quickly. At the same time, cherry markdown writer should be implemented by pure JavaScript, and should not rely on framework technology such as angular, vue and react. Framework only provide a container environment.

Feature

Syntax Feature

  1. Image zoom, alignment and reference
  2. Generate a chart based on the content of the table
  3. Adjust font color and size
  4. Font background color, superscript and subscript
  5. Insert checklist
  6. Insert audio or video

Multiple modes

  1. Live preview with Scroll Sync
  2. Preview-only mode
  3. No toolbar mode (minimalist editing mode)
  4. Mobile preview mode

Functional Feature

  1. Copy from rich text and paste as markdown text
  2. Classic line feed & regular line feed
  3. Multi-cursor editing
  4. Image size editing
  5. Export as image or pdf
  6. Float toolbar: appears at the beginning of a new line
  7. Bubble toolbar: appears when text is selected

Performance Feature

  1. partial rendering
  2. partial update

Security

cherry markdown has a built-in security Hook, by filtering the whitelist and DomPurify to do scan filter.

Style theme

cherry markdown has a variety of style themes to choose from.

Features Showcase

Click to view feature demonstration here

Install

Via yarn

yarn add cherry-markdown

Via npm

npm install cherry-markdown --save

If you need to enable the functions of mermaid drawing and table-to-chart, you need to add mermaid and echarts packages at the same time.

Currently, the plug-in version Cherry recommend is echarts@4.6.0 mermaid@9.4.3.

 # Install mermaid, enable mermaid and drawing function
yarn add mermaid@9.4.3
# Install echarts, turn on the table-to-chart function
yarn add echarts@4.6.0

Quick start

Browser

UMD

 < link href =\" cherry-editor.min.css \" />
< div id =\" markdown-container \" > </ div >
< script src =\" cherry-editor.min.js \" > </ script >
< script >
  new Cherry ( {
    id : \'markdown-container\' ,
    value : \'# welcome to cherry editor!\' ,
  } ) ;
</ script > 

ESM

 import \'cherry-markdown/dist/cherry-markdown.css\' ;
import Cherry from \'cherry-markdown\' ;
const cherryInstance = new Cherry ( {
  id : \'markdown-container\' ,
  value : \'# welcome to cherry editor!\' ,
} ) ;

Node

 const { default : CherryEngine } = require ( \'cherry-markdown/dist/cherry-markdown.engine.core.common\' ) ;
const cherryEngineInstance = new CherryEngine ( ) ;
const htmlContent = cherryEngineInstance . makeHtml ( \'# welcome to cherry editor!\' ) ; 

Lite Version

Because the size of the mermaid library is very large, the cherry build product contains a core build package without built-in Mermaid. The core build can be imported in the following ways.

Full mode (With UI Interface)

 import \'cherry-markdown/dist/cherry-markdown.css\' ;
import Cherry from \'cherry-markdown/dist/cherry-markdown.core\' ;
const cherryInstance = new Cherry ( {
  id : \'markdown-container\' ,
  value : \'# welcome to cherry editor!\' ,
} ) ;

Engine Mode (Just Syntax Compile)

 // Import Cherry engine core construction
// Engine configuration items are the same as Cherry configuration items, the following document content only introduces the Cherry core package
import CherryEngine from \'cherry-markdown/dist/cherry-markdown.engine.core\' ;
const cherryEngineInstance = new CherryEngine ( ) ;
const htmlContent = cherryEngineInstance . makeHtml ( \'# welcome to cherry editor!\' ) ;

// --> <h1>welcome to cherry editor!</h1>

️ About mermaid

The core build package does not contain mermaid dependency, should import related plug-ins manually.

 import \'cherry-markdown/dist/cherry-markdown.css\' ;
import Cherry from \'cherry-markdown/dist/cherry-markdown.core\' ;
import CherryMermaidPlugin from \'cherry-markdown/dist/addons/cherry-code-block-mermaid-plugin\' ;
import mermaid from \'mermaid\' ;

// Plug-in registration must be done before Cherry is instantiated
Cherry . usePlugin ( CherryMermaidPlugin , {
  mermaid , // pass in mermaid object
  // mermaidAPI: mermaid.mermaidAPI, // Can also be passed in mermaid API
  // At the same time, you can configure mermaid\'s behavior here, please refer to the official mermaid document
  // theme: \'neutral\',
  // sequence: { useMaxWidth: false, showSequenceNumbers: true }
} ) ;

const cherryInstance = new Cherry ( {
  id : \'markdown-container\' ,
  value : \'# welcome to cherry editor!\' ,
} ) ;

Dynamic import

recommend Using Dynamic import, the following is an example of webpack Dynamic import.

 import \'cherry-markdown/dist/cherry-markdown.css\' ;
import Cherry from \'cherry-markdown/dist/cherry-markdown.core\' ;

const registerPlugin = async ( ) => {
  const [ { default : CherryMermaidPlugin } , mermaid ] = await Promise . all ( [
    import ( \'cherry-markdown/src/addons/cherry-code-block-mermaid-plugin\' ) ,
    import ( \'mermaid\' ) ,
  ] ) ;
  Cherry . usePlugin ( CherryMermaidPlugin , {
    mermaid , // pass in mermaid object
  } ) ;
} ;

registerPlugin ( ) . then ( ( ) => {
  //  Plug-in registration must be done before Cherry is instantiated
  const cherryInstance = new Cherry ( {
    id : \'markdown-container\' ,
    value : \'# welcome to cherry editor!\' ,
  } ) ;
} ) ; 

Configuration

see /src/Cherry.config.js or click here

Example

Click here for more examples.

Client

Under development, please stay tuned or see /client/

Extension

Customize Syntax

click here

Customize Toolbar

click here

Unit Test

Jest is selected as a unit testing tool for its assertion, asynchronous support and snapshot. Unit test includes CommonMark test and snapshot test.

CommonMark Test

Call yarn run test:commonmark to test the official CommonMark suites. This command runs fast.

Suites are located in test/suites/commonmark.spec.json, for example:

{
  \"markdown\" : \" \\t foo \\t baz \\t\\t bim \\n \" ,
  \"html\" : \" <pre><code>foo \\t baz \\t\\t bim \\n </code></pre> \\n \" ,
  \"example\" : 2 ,
  \"start_line\" : 363 ,
  \"end_line\" : 368 ,
  \"section\" : \" Tabs \"
},

In this case, Jest will compare the html generated by Cherry.makeHtml(" \\tfoo\\tbaz\\t\\tbim\\n") with the expected result "<pre><code>foo\\tbaz\\t \\tbim\\n</code></pre>\\n". cherry markdown 's matcher has ignored private attributes like data-line.

CommonMark specifications and suites are from: commonmark.org.

Snapshot Test

Call yarn run test:snapshot to run snapshot test. You can write snapshot suite like test/core/hooks/List.spec.ts. At the first time, a snapshot will be automatically generated. After that, Jest can compare the snapshot with the generated HTML. If you need to regenerate a snapshot, delete the old snapshot under test/core/hooks/__snapshots__ and run this command again.

Snapshot test runs slower. It should only be used to test Hooks that are error-prone and contain cherry markdown special syntax.

Contribution Guidelines

Welcome to join us in building a powerful Markdown editor. You can also submit feature requests as issues. Before writing new features, you can learn about the Introduction to cherry-markdown editor. Please read the Contribution Guidelines before making contributions.

Stargazers over time

License

Apache-2.0

下载源码

通过命令行克隆项目:

git clone https://github.com/Tencent/cherry-markdown.git

收藏 (0) 打赏

感谢您的支持,我会继续努力的!

打开微信/支付宝扫一扫,即可进行扫码打赏哦,分享从这里开始,精彩与您同在
点赞 (0)

申明:本文由第三方发布,内容仅代表作者观点,与本网站无关。对本文以及其中全部或者部分内容的真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。本网发布或转载文章出于传递更多信息之目的,并不意味着赞同其观点或证实其描述,也不代表本网对其真实性负责。

左子网 建站资源 cherry markdown https://www.zuozi.net/35142.html

monaco react
上一篇: monaco react
notepad4
下一篇: notepad4
常见问题
  • 1、自动:拍下后,点击(下载)链接即可下载;2、手动:拍下后,联系卖家发放即可或者联系官方找开发者发货。
查看详情
  • 1、源码默认交易周期:手动发货商品为1-3天,并且用户付款金额将会进入平台担保直到交易完成或者3-7天即可发放,如遇纠纷无限期延长收款金额直至纠纷解决或者退款!;
查看详情
  • 1、描述:源码描述(含标题)与实际源码不一致的(例:货不对板); 2、演示:有演示站时,与实际源码小于95%一致的(但描述中有”不保证完全一样、有变化的可能性”类似显著声明的除外); 3、发货:不发货可无理由退款; 4、安装:免费提供安装服务的源码但卖家不履行的; 5、收费:价格虚标,额外收取其他费用的(但描述中有显著声明或双方交易前有商定的除外); 6、其他:如质量方面的硬性常规问题BUG等。 注:经核实符合上述任一,均支持退款,但卖家予以积极解决问题则除外。
查看详情
  • 1、左子会对双方交易的过程及交易商品的快照进行永久存档,以确保交易的真实、有效、安全! 2、左子无法对如“永久包更新”、“永久技术支持”等类似交易之后的商家承诺做担保,请买家自行鉴别; 3、在源码同时有网站演示与图片演示,且站演与图演不一致时,默认按图演作为纠纷评判依据(特别声明或有商定除外); 4、在没有”无任何正当退款依据”的前提下,商品写有”一旦售出,概不支持退款”等类似的声明,视为无效声明; 5、在未拍下前,双方在QQ上所商定的交易内容,亦可成为纠纷评判依据(商定与描述冲突时,商定为准); 6、因聊天记录可作为纠纷评判依据,故双方联系时,只与对方在左子上所留的QQ、手机号沟通,以防对方不承认自我承诺。 7、虽然交易产生纠纷的几率很小,但一定要保留如聊天记录、手机短信等这样的重要信息,以防产生纠纷时便于左子介入快速处理。
查看详情

相关文章

猜你喜欢
发表评论
暂无评论
官方客服团队

为您解决烦忧 - 24小时在线 专业服务