10 分钟内使用 Svelte 构建 Markdown 编辑器

2025-06-09

10 分钟内使用 Svelte 构建 Markdown 编辑器

Svelte.js(或简称“Svelte”)是一个现代 JavaScript 编译器,它允许您编写易于理解的 JavaScript 代码,然后将其编译为在浏览器中运行的高效代码。

Svelte 编译器将您的组件编译为 JavaScript,而不是依赖虚拟 DOM 之类的概念来更新浏览器 DOM。这可以提升性能,并为您的代码带来真正的响应式体验。

在阅读了Snipcart上的一篇文章后,我受到启发,尝试了 Svelte markdown demo。

让我们构建一个 Markdown 编辑器。我的目标是展示如何简单快速地开始使用 Svelte。

如果你想直接查看代码,可以查看我的Git repo

1. 设置

  • 首先使用以下命令创建 svelte 项目。
npx degit sveltejs/template svelte-markdown-demo
Enter fullscreen mode Exit fullscreen mode
  • 完成上述命令后,您将看到项目文件夹已创建。如下所示

替代文本

  • 然后进入项目目录并安装依赖项
cd svelte-markdown-demo
npm install
Enter fullscreen mode Exit fullscreen mode
  • 完成上述命令后,您将看到项目中已创建 node_modules 文件夹。如下所示

替代文本

  • 使用以下命令运行您的项目。
npm run dev
Enter fullscreen mode Exit fullscreen mode

替代文本

2. 安装 Marked
在这个 Svelte 项目中,我们将使用优秀的Marked库、一个 markdown 解析器和编译器。

  • 让我们使用以下命令将标记的包安装到我们的项目中
npm install marked
Enter fullscreen mode Exit fullscreen mode

3. 让我们编写代码

  • 在你的项目中,打开 App.svelte——我们将直接在这个组件中编写应用程序。为了展示 Svelte 的简洁性,我们将所有内容都写在这个组件中。
  • 删除脚本标签中的代码。
  • 然后,导入标记。在脚本标签顶部添加以下行:
import marked from 'marked';
Enter fullscreen mode Exit fullscreen mode

-然后我们将创建两个变量,包含将由标记编译的 markdown 文本,另一个包含由Marked库编译的 HTML。

let source = `
# H1 heading

## H2 heading

### H3 heading

---

**bold text**

*italicized text*

---

1. First item
2. Second item
3. Third item

- First item
- Second item
- Third item

[Svelte](https://svelte.dev/)
`;
let markdown = marked(source);
Enter fullscreen mode Exit fullscreen mode
  • 让我们编写模板。在同一个文件 (App.svelte) 中,在脚本块后添加以下几行。
<main class="container">
<header class="header">
    <h1 class="header-title">Svelte markdown editor</h1>
</header>

<div class="markdown-editor">
    <div class="left-panel">
        <textarea bind:value={source} class="source"></textarea>
    </div>

    <div class="right-panel">
        <div class="output">{@html markdown}</div>
    </div>
</div>
</main>
Enter fullscreen mode Exit fullscreen mode

  1. 我们创建了一个带有一个标题和两个面板的容器。
  2. 左侧面板是一个文本区域,我们将在其中写入源代码或 markdown。
  3. 直接使用bind:value,我们指示 Svelte 将此表单元素的值绑定到我们的源变量。
  4. 右侧面板将显示编译后的 markdown 的输出。
  5. 这里是 Svelte 中可以使用的特殊标签:{@html ...}。此标签将确保 HTML 直接在组件中呈现。
  • 最后,我们将添加一些样式。在同一个文件中,在模板后添加一个样式块。
    .container{
        background: #ff3e00d6;
        padding:10px 30px;
    }
    .header {
        height: 10vh;
        display: flex;
        align-items: center;
        justify-content: center;

    }
    .header-title {
        margin: 0;
        color:#fff;
    }
    .markdown-editor {
        width: 100%;
        display: flex;
        align-items:flex-start;
        justify-content: space-evenly;
    }
    .left-panel, .right-panel {
        width: 50%;
        border: solid 1px black;
        height: 85vh;
        background: #ffffff;
    }
    .right-panel {
        overflow: auto;
    }
    .source {
        border: none;
        width: 100%;
        height: 100%;
        background: #001628;
        color: #83ba52;
    }
    .source:focus {
        outline: none;
    }
    .output {
        width: 100%;
        padding: 0 2em;
    }

Enter fullscreen mode Exit fullscreen mode

3.最终输出
让我们的开发服务器运行。

npm run dev
Enter fullscreen mode Exit fullscreen mode

打开浏览器并访问 localhost:5000。您将看到以下输出。
替代文本

4.现在部署到 Web

now如果尚未安装,请安装:

npm install -g now
Enter fullscreen mode Exit fullscreen mode

然后,从您的项目文件夹中:

cd public
now
Enter fullscreen mode Exit fullscreen mode

now将部署您的代码并生成一个 URL。

部署网址 - https://public-6von00e3p.now.sh

Github - https://github.com/karkranikhil/svelte-markdown


参考

https://svelte.dev/
https://snipcart.com/blog/svelte-js-framework-tutorial

鏂囩珷鏉ユ簮锛�https://dev.to/karkranikhil/build-markdown-editor-using-svelte-in-10-minutes-1c69
PREV
使用 JavaScript 进行人脸识别
NEXT
使用通用表表达式 (CTE) 简化复杂的 SQL 查询