我正在使用默认的sapper-template-rollup来创建一个基于Sapper的博客。
在博客文件夹中,确实提到了从Markdown文件生成数据的方法。但是我找不到如何实现?
我正在使用默认的sapper-template-rollup来创建一个基于Sapper的博客。
在博客文件夹中,确实提到了从Markdown文件生成数据的方法。但是我找不到如何实现?
我发布了一个示例项目 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.
.md
文件放在我的routes/文件夹中,并使用Svelte Preprocess Markdown,在我的rollup配置中设置它来处理.md
文件(将它们转换成.svelte
文件)。.md
文件按子文件夹组织在routes/文件夹中,每个文件夹都有一个索引页面,列出由文件或文件夹内部生成的页面的链接。如果您想查看,请点击此处link访问存储库。它仍然是一个正在进行中的工作。更新于2020年6月14日:
现在也有GitHub版本(自2019年11月11日起)了,它使用Netlify发布并添加了自定义域名。因此,与GitLab版本不同,它不使用Sapper的基本URL来更改基本路径,这在GitLab和GitHub页面中是必要的,除非您添加自定义域名。
原始答案为2019年10月24日:
您可能会发现此存储库有所帮助。我还在Sapper模板存储库上有一个开放PR, 首先在2019年1月修订了旧的Markdown分支,然后在2019年5月添加了Svelte 3支持,但查看和克隆我的GitLab存储库可能更容易,并且它具有我尚未添加到PR的更多当前依赖项更新。
www.example.com/post1
、www.example.com/post2
。但是,如果有人想要使用该模板对帖子进行分类怎么办?例如 www.example.com/svelte-posts/post1
、www.example.com/vuejs-posts/post1
。 - JustineKizhakjs
中做些什么来解析并将不同类别的博客保存在单独的json文件中,例如svelte-posts.json
、vue-posts.json
,因为我理解一篇文章不能属于多个类别。因此,[category]/index.svelte
只能获取相应的json
并按时间顺序呈现它。我可以看到自己同时使用分类和标签。分类作为分组,标签用于过滤。但我想对于过滤,我还需要进行服务器端设置。 - JustineKizhakmarked
或snarkdown
(我使用的是后者),只需导入并将你的Markdown代码传递给它即可。
marked
包,并且你绝对可以参考 Svelte 如何构建自己的博客页面。在这里查看 https://github.com/sveltejs/svelte/blob/master/site/src/routes/blog/_posts.js - Jerric Lyns John