Введение
Lute — это структурированный Markdown-движок, который полностью реализует последний стандарт GFM / CommonMark и лучше поддерживает китайский контекст.
Добро пожаловать на официальный дискуссионный форум Lute, чтобы узнать больше.
Предыстория
Раньше я использовал другие Markdown-движки, и они более или менее «дефектны»:
Цель Lute — создать структурированный Markdown-движок, реализующий спецификации GFM/CM и обеспечивающий лучшую поддержку китайского языка. Так называемая «структурированность» относится к построению абстрактного синтаксического дерева из входного MD-текста, HTML-вывода, форматирования текста и т. д. через дерево операций. Реализация спецификации заключается в том, чтобы гарантировать отсутствие двусмысленности в рендеринге Markdown, чтобы один и тот же текст Markdown мог быть обработан движком Markdown для достижения одного и того же результата, что очень важно.
Движков, которые реализуют спецификации, не так уж много. Я хочу посмотреть, смогу ли я написать один, что является одной из мотиваций Lute. В интернете есть много мнений о том, как реализовать движок Markdown:
Markdown:
Формат Markdown с автоматическим пробелом, поддерживающий китайский и английский языки.
Заниматься проектами с открытым исходным кодом на GitHub — это очень приятно, пожалуйста, не пишите Github как `github`!
В частности, этого никогда не должно происходить в вашем резюме:
> Опытный пользователь Java, JavaScript, GIT, имею определённое понимание разработки для Android и iOS, опытный пользователь MySQL, базы данных PostgreSQL.
После исправления:
Заниматься проектами с открытым исходным кодом на GitHub — это очень приятно, пожалуйста, не пишите Github как `github`!
В частности, этого никогда не должно происходить в вашем резюме:
> Опытный пользователь Java, JavaScript, Git, имею определённое понимание разработки для Android, iOS, опытный пользователь MySQL, базы данных PostgreSQL.
⚡ Производительность
См. бенчмарк производительности движка Markdown на Golang.
💪 Надёжность
Lute выполняет всю обработку Markdown на LianDi, обрабатывает миллионы запросов на синтаксический анализ и рендеринг каждый день и работает стабильно.
🔒 Безопасность
Lute не реализует запрещённое расширение необработанного HTML (GFM) , поскольку расширение всё ещё имеет определённые уязвимости (). Рекомендуется использовать другие библиотеки (например, bluemonday) для фильтрации безопасности HTML, чтобы лучше адаптировать его к сценарию применения.
🛠️ Использование
Есть три способа использования Lute:
github.com/88250/lute
на языке Go.Импортируйте библиотеку Lute:
go get -u github.com/88250/lute
Рабочий пример минимизации:
package main
import (
"fmt"
"github.com/88250/lute"
)
func main() {
luteEngine := lute.New() // Поддержка GFM и оптимизация китайского контекста включены по умолчанию
html := luteEngine.MarkdownStr("demo", "**Lute** — структурированный движок Markdown.")
fmt.Println(html)
// <p><strong>Lute</strong> — структурированный Markdown-движок.</p>
}
О синтаксической подсветке блоков кода:
lutenEngine.SetCodeSyntaxHighlightXXX()
.Простой пример см. в демо в каталоге JavaScript. Для полного использования фронтенд-редактора см. демо в Vditor.
Некоторые детали:
Lute использует открытую лицензию Mulan Permissive Software License, Version 2.
GopherJS: Компилятор из Go в JavaScript для запуска кода Go в браузере.
Неприемлемый контент может быть отображен здесь и не будет показан на странице. Вы можете проверить и изменить его с помощью соответствующей функции редактирования.
Если вы подтверждаете, что содержание не содержит непристойной лексики/перенаправления на рекламу/насилия/вульгарной порнографии/нарушений/пиратства/ложного/незначительного или незаконного контента, связанного с национальными законами и предписаниями, вы можете нажать «Отправить» для подачи апелляции, и мы обработаем ее как можно скорее.