【问题标题】:Sapper/Svelte: How do I add markdown files?Sapper/Svelte:如何添加降价文件?
【发布时间】:2020-02-13 12:06:41
【问题描述】:

我正在使用默认 sapper-template-rollup 使用 Sapper 创建博客。

在 blog 文件夹中,确实提到了从 markdown 文件生成数据。但我找不到怎么做?

【问题讨论】:

标签: markdown svelte sapper


【解决方案1】:

我发布了https://github.com/mikenikles/sapper-template-with-markdown,它展示了如何使用默认 Sapper 模板,但将*.md 文件用于博客文章内容。

主要变化是在src/routes/blog/_posts.js 中,我将内容替换为:

const fs = require('fs');
const frontMatter = require('front-matter');
const marked = require('marked');

const posts = fs.readdirSync('./src/posts').map(postFilename => {
  const postContent = fs.readFileSync(`./src/posts/${postFilename}`, {
    encoding: 'utf8'
  });
  const postFrontMatter = frontMatter(postContent);
  return {
    title: postFrontMatter.attributes.title,
    slug: postFrontMatter.attributes.slug,
    html: marked(postFrontMatter.body)
  }
});

posts.forEach(post => {
    post.html = post.html.replace(/^\t{3}/gm, '');
});

export default posts;

然后,每篇博文都以 Markdown 文件的形式存储在 src/posts 中,格式如下:

---
title: 'What is Sapper?'
slug: 'what-is-sapper'
---

Your markdown content.

【讨论】:

    【解决方案2】:

    2020 年 6 月 14 日更新:

    现在(自 2019 年 11 月 11 日起)还有一个 GitHub version 与 Netlify 一起发布并添加了一个 custom domain。因此,与 GitLab 版本不同的是,它不使用 Sapper 的 base URL to alter the base path,这是 GitLab 和 GitHub 页面所必需的,除非您添加自定义域。

    原答案2019-10-24:

    您可能会发现this repo 很有帮助。我在 Sapper 模板 repo 上也有一个 open PR,首先在 2019 年 1 月修改旧的 Markdown 分支,然后在 2019 年 5 月添加 Svelte 3 支持,但它可能更容易查看和克隆 my repo on GitLab,而且它有更多当前的依赖更新我还没有添加到 PR 中。

    【讨论】:

    • Svelte Discord 的 Sapper 频道中通过 Brittney 看到此 Sapper blog template,这是提问和聊天的好地方。
    • 我看到所有帖子都会在顶级域 Ex www.example.com/post1, www.example.com/post2 之后有一个链接。但是,如果有人使用模板想要对帖子进行分类怎么办。例如www.example.com/svelte-posts/post1www.example.com/vuejs-posts/post1
    • @JustineKizhak 所以您希望在一个博客上添加类别或拥有 2 个独立的博客?
    • 同一网站上的类别和 2 个单独的博客之间有区别吗?我正在考虑博客的类别,例如技术博客和另一个旅行博客等。现在我不在乎是否没有类别,但将来,我可能会。所以现在我想投入处理代码库的工作,然后我只需要专注于内容。
    • @JustineKizhak 如果您想要传统的 WordPress 风格的类别,我会将其添加到帖子 (Jekyll docs) 的降价前端,然后使用 dynamic parameters 创建一个类别页面模板,其中包含指向您个人帖子模板中的任何类别也是如此。
    【解决方案3】:

    您可能会使用MDsveX 获得更多乐趣,它是由核心社区成员之一创建的 Svelte Markdown 处理器。

    但是可以,您也可以只使用 markedsnarkdown(这是我使用的),就像使用任何其他库一样 - 只需导入它并将您的降价代码传递给它。

    【讨论】:

      【解决方案4】:

      我选择了@Antony Jones 的方法。我将.md 文件放在我的路由/ 文件夹中并使用Svelte Preprocess Markdown,在我的汇总配置中将其设置为处理.md 文件(将它们转换为.svelte 文件)。 .md 文件被组织到 routes/ 文件夹中的子文件夹中,每个文件夹都有一个索引页面,该页面将列出指向内部文件或文件夹创建的页面的链接。如果您想查看它,这里是回购的链接:link。它仍在进行中。

      不过,正如@rdela 在他的 cmets 中所说,这种方法不如使用您自己的代码处理帖子以像在模板存储库中那样获取头条内容,然后过滤帖子,将它们放入基于文件夹的文件夹中那样灵活。在他们前面的标签上,或者类似的东西。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2021-04-15
        • 2021-07-01
        • 2020-02-19
        • 2021-11-04
        • 2020-09-04
        • 2021-07-14
        • 1970-01-01
        • 2019-11-24
        相关资源
        最近更新 更多